diff --git a/README.md b/README.md index ccc7e08..5d04309 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# Awesome Level +# Awesome -> An open list of awesome **[Level][level-org]** modules and resources. [Add yours!](#contributing) +**An open list of awesome [Level][level-org] modules and resources. [Add yours!](#contributing)** [![level badge][level-badge]](https://github.com/level/awesome) [![Test](https://github.com/Level/awesome/actions/workflows/test.yml/badge.svg)](https://github.com/Level/awesome/actions/workflows/test.yml) @@ -10,19 +10,13 @@
Click to expand -- [Bundles](#bundles) - [Core](#core) -- [Stores](#stores) -- [Layers](#layers) +- [Storage](#storage) - [Encodings](#encodings) -- [Sublevels](#sublevels) +- [Streams](#streams) +- [Shared Access](#shared-access) - [Processing](#processing) - [Databases](#databases) -- [Shared Access](#shared-access) -- [Streams](#streams) -- [Iterators](#iterators) -- [Hooks](#hooks) -- [Range Options](#range-options) - [Data Structures](#data-structures) - [Transience](#transience) - [Atomicity](#atomicity) @@ -40,551 +34,297 @@
-## Bundles - -**Convenience modules that bundle [a store](#stores) with [`levelup`][levelup] and [`encoding-down`][encoding-down].** - -### [`level`][level] - -![levelup](https://img.shields.io/badge/levelup-5.1-brightgreen.svg) [![Last commit](https://img.shields.io/github/last-commit/Level/level)](https://github.com/Level/level) [![Contributors](https://img.shields.io/github/contributors/Level/level?color=brightgreen)](https://github.com/Level/level/graphs/contributors) - -Bundle for [`leveldown`][leveldown] and [`level-js`][level-js]. Main entry point for beginners. - -### [`level-mem`][level-mem] - -![levelup](https://img.shields.io/badge/levelup-5.1-brightgreen.svg) [![Last commit](https://img.shields.io/github/last-commit/Level/level-mem)](https://github.com/Level/level-mem) [![Contributors](https://img.shields.io/github/contributors/Level/level-mem?color=brightgreen)](https://github.com/Level/level-mem/graphs/contributors) - -Bundle for [`memdown`][memdown]. - -### [`level-rocksdb`][level-rocksdb] - -![levelup](https://img.shields.io/badge/levelup-5.1-brightgreen.svg) [![Last commit](https://img.shields.io/github/last-commit/Level/level-rocksdb)](https://github.com/Level/level-rocksdb) [![Contributors](https://img.shields.io/github/contributors/Level/level-rocksdb?color=brightgreen)](https://github.com/Level/level-rocksdb/graphs/contributors) - -Bundle for [`rocksdb`][rocksdb]. - -### [`level-hyper`][level-hyper] - -![levelup](https://img.shields.io/badge/levelup-3.0-orange.svg) [![Last commit](https://img.shields.io/github/last-commit/Level/level-hyper)](https://github.com/Level/level-hyper) [![Contributors](https://img.shields.io/github/contributors/Level/level-hyper?color=brightgreen)](https://github.com/Level/level-hyper/graphs/contributors) - -Bundle for [`leveldown-hyper`][leveldown-hyper]. - -### [`level-indexed`][level-indexed] - -![levelup](https://img.shields.io/badge/levelup-2.0-red.svg) [![Last commit](https://img.shields.io/github/last-commit/kapetan/level-indexed)](https://github.com/kapetan/level-indexed) [![Contributors](https://img.shields.io/github/contributors/kapetan/level-indexed?color=brightgreen)](https://github.com/kapetan/level-indexed/graphs/contributors) - -Bundle for [`indexeddown`][indexeddown]. Alternative to [`level`][level]. - ## Core -### [`levelup`][levelup] - -[![Last commit](https://img.shields.io/github/last-commit/Level/levelup)](https://github.com/Level/levelup) [![Contributors](https://img.shields.io/github/contributors/Level/levelup?color=brightgreen)](https://github.com/Level/levelup/graphs/contributors) - -The glue that holds everything together. Use this when you need a [custom or swappable store](#stores). - -### [`abstract-leveldown`][abstract-leveldown] - -[![Last commit](https://img.shields.io/github/last-commit/Level/abstract-leveldown)](https://github.com/Level/abstract-leveldown) [![Contributors](https://img.shields.io/github/contributors/Level/abstract-leveldown?color=brightgreen)](https://github.com/Level/abstract-leveldown/graphs/contributors) - -An abstract prototype matching the [`leveldown`][leveldown] API. Use this to implement your own store. - -### [`level-packager`][level-packager] - -[![Last commit](https://img.shields.io/github/last-commit/Level/packager)](https://github.com/Level/packager) [![Contributors](https://img.shields.io/github/contributors/Level/packager?color=brightgreen)](https://github.com/Level/packager/graphs/contributors) - -Package helper to export [a bundle](#bundles). Use this to create a new `level-*` bundle. - -## Stores - -**Modules that implement [`abstract-leveldown`][abstract-leveldown] as storage for [`levelup`][levelup].** - -### [`leveldown`][leveldown] - -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-7.2-brightgreen.svg) [![Last commit](https://img.shields.io/github/last-commit/Level/leveldown)](https://github.com/Level/leveldown) [![Contributors](https://img.shields.io/github/contributors/Level/leveldown?color=brightgreen)](https://github.com/Level/leveldown/graphs/contributors) - -Backed by [LevelDB](https://github.com/google/leveldb). - -### [`memdown`][memdown] - -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-7.2-brightgreen.svg) [![Last commit](https://img.shields.io/github/last-commit/Level/memdown)](https://github.com/Level/memdown) [![Contributors](https://img.shields.io/github/contributors/Level/memdown?color=brightgreen)](https://github.com/Level/memdown/graphs/contributors) - -Backed by [in-memory RBTree](https://www.npmjs.com/package/functional-red-black-tree). - -### [`level-js`][level-js] - -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-7.2-brightgreen.svg) [![Last commit](https://img.shields.io/github/last-commit/Level/level.js)](https://github.com/Level/level.js) [![Contributors](https://img.shields.io/github/contributors/Level/level.js?color=brightgreen)](https://github.com/Level/level.js/graphs/contributors) - -Backed by [IndexedDB](https://developer.mozilla.org/en-US/docs/IndexedDB). - -### [`rocksdb`][rocksdb] - -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-7.2-brightgreen.svg) [![Last commit](https://img.shields.io/github/last-commit/Level/rocksdb)](https://github.com/Level/rocksdb) [![Contributors](https://img.shields.io/github/contributors/Level/rocksdb?color=brightgreen)](https://github.com/Level/rocksdb/graphs/contributors) - -Backed by [RocksDB](https://github.com/facebook/rocksdb/). - -### [`leveldown-hyper`][leveldown-hyper] - -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-5.0-orange.svg) [![Last commit](https://img.shields.io/github/last-commit/Level/leveldown-hyper)](https://github.com/Level/leveldown-hyper) [![Contributors](https://img.shields.io/github/contributors/Level/leveldown-hyper?color=brightgreen)](https://github.com/Level/leveldown-hyper/graphs/contributors) - -Backed by [HyperLevelDB](https://github.com/rescrv/HyperLevelDB). - -### [`medeadown`][medeadown] - -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-3.0-red.svg) [![Last commit](https://img.shields.io/github/last-commit/kesla/medeadown)](https://github.com/kesla/medeadown) [![Contributors](https://img.shields.io/github/contributors/kesla/medeadown?color=brightgreen)](https://github.com/kesla/medeadown/graphs/contributors) - -Backed by [medea](https://github.com/argo/medea). - -### [`jsondown`][jsondown] - -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-2.7-red.svg) [![Last commit](https://img.shields.io/github/last-commit/toolness/jsondown)](https://github.com/toolness/jsondown) [![Contributors](https://img.shields.io/github/contributors/toolness/jsondown?color=brightgreen)](https://github.com/toolness/jsondown/graphs/contributors) - -Backed by JSON on disk - -### [`asyncstorage-down`][asyncstorage-down] - -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-2.6-red.svg) [![Last commit](https://img.shields.io/github/last-commit/tradle/asyncstorage-down)](https://github.com/tradle/asyncstorage-down) [![Contributors](https://img.shields.io/github/contributors/tradle/asyncstorage-down?color=brightgreen)](https://github.com/tradle/asyncstorage-down/graphs/contributors) - -Backed by [AsyncStorage](https://facebook.github.io/react-native/docs/asyncstorage.html) (React Native). - -### [`mongodown`][mongodown] - -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-2.6-red.svg) [![Last commit](https://img.shields.io/github/last-commit/watson/mongodown)](https://github.com/watson/mongodown) [![Contributors](https://img.shields.io/github/contributors/watson/mongodown?color=brightgreen)](https://github.com/watson/mongodown/graphs/contributors) - -Backed by [MongoDB](https://www.mongodb.com/). - -### [`sqldown`][sqldown] - -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-2.1-red.svg) [![Last commit](https://img.shields.io/github/last-commit/calvinmetcalf/sqldown)](https://github.com/calvinmetcalf/sqldown) [![Contributors](https://img.shields.io/github/contributors/calvinmetcalf/sqldown?color=brightgreen)](https://github.com/calvinmetcalf/sqldown/graphs/contributors) - -Backed by [`sqlite3`](https://www.npmjs.com/package/sqlite3), [`pg`](https://www.npmjs.com/package/pg), [`mysql`](https://www.npmjs.com/package/mysql) or WebSQL. - -### [`dynamo-down`][dynamo-down] - -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-2.1-red.svg) [![Last commit](https://img.shields.io/github/last-commit/jed/dynamo-down)](https://github.com/jed/dynamo-down) [![Contributors](https://img.shields.io/github/contributors/jed/dynamo-down?color=brightgreen)](https://github.com/jed/dynamo-down/graphs/contributors) - -Backed by [AWS DynamoDB](http://aws.amazon.com/dynamodb). - -### [`azureleveldown`][azureleveldown] - -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-0.11-red.svg) [![Last commit](https://img.shields.io/github/last-commit/richorama/azureleveldown)](https://github.com/richorama/azureleveldown) [![Contributors](https://img.shields.io/github/contributors/richorama/azureleveldown?color=brightgreen)](https://github.com/richorama/azureleveldown/graphs/contributors) - -Backed by Windows Azure Table Storage. - -### [`fruitdown`][fruitdown] - -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-0.12-red.svg) [![Last commit](https://img.shields.io/github/last-commit/nolanlawson/fruitdown)](https://github.com/nolanlawson/fruitdown) [![Contributors](https://img.shields.io/github/contributors/nolanlawson/fruitdown?color=brightgreen)](https://github.com/nolanlawson/fruitdown/graphs/contributors) - -Backed by IndexedDB (Apple). - -### [`localstorage-down`][localstorage-down] - -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-0.12-red.svg) [![Last commit](https://img.shields.io/github/last-commit/No9/localstorage-down)](https://github.com/No9/localstorage-down) [![Contributors](https://img.shields.io/github/contributors/No9/localstorage-down?color=brightgreen)](https://github.com/No9/localstorage-down/graphs/contributors) - -Backed by [localStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage). - -### [`riakdown`][riakdown] - -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-0.12-red.svg) [![Last commit](https://img.shields.io/github/last-commit/nlf/riakdown)](https://github.com/nlf/riakdown) [![Contributors](https://img.shields.io/github/contributors/nlf/riakdown?color=brightgreen)](https://github.com/nlf/riakdown/graphs/contributors) - -Backed by [riakpbc](https://github.com/nlf/riakpbc). - -### [`mysqldown`][mysqldown] - -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-0.7-red.svg) [![Last commit](https://img.shields.io/github/last-commit/kesla/mysqldown)](https://github.com/kesla/mysqldown) [![Contributors](https://img.shields.io/github/contributors/kesla/mysqldown?color=brightgreen)](https://github.com/kesla/mysqldown/graphs/contributors) - -Backed by [MySQL](https://www.mysql.com/). - -### [`redisdown`][redisdown] - -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-*-red.svg) [![Last commit](https://img.shields.io/github/last-commit/hmalphettes/redisdown)](https://github.com/hmalphettes/redisdown) [![Contributors](https://img.shields.io/github/contributors/hmalphettes/redisdown?color=brightgreen)](https://github.com/hmalphettes/redisdown/graphs/contributors) - -Backed by [Redis](https://redis.io/). - -### [`leveldown-basho`][leveldown-basho] - -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-missing-lightgrey.svg) - -Backed by [Basho's LevelDB fork](https://github.com/basho/leveldb). - -### [`sheet-down`][sheet-down] - -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-missing-lightgrey.svg) [![Last commit](https://img.shields.io/github/last-commit/jed/sheet-down)](https://github.com/jed/sheet-down) [![Contributors](https://img.shields.io/github/contributors/jed/sheet-down?color=brightgreen)](https://github.com/jed/sheet-down/graphs/contributors) - -Backed by [Google Sheets](https://docs.google.com/spreadsheets). - -### [`indexeddown`][indexeddown] - -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-4.0-red.svg) [![Last commit](https://img.shields.io/github/last-commit/kapetan/indexeddown)](https://github.com/kapetan/indexeddown) [![Contributors](https://img.shields.io/github/contributors/kapetan/indexeddown?color=brightgreen)](https://github.com/kapetan/indexeddown/graphs/contributors) - -Backed by IndexedDB. - -### [`lmdb-leveldown`][lmdb-leveldown] - -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-4.0-red.svg) [![Last commit](https://img.shields.io/github/last-commit/chrbala/lmdb-leveldown)](https://github.com/chrbala/lmdb-leveldown) [![Contributors](https://img.shields.io/github/contributors/chrbala/lmdb-leveldown?color=brightgreen)](https://github.com/chrbala/lmdb-leveldown/graphs/contributors) - -Backed by LMDB. - -### [`localdown`][localdown] - -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-4.0-red.svg) [![Last commit](https://img.shields.io/github/last-commit/bhoriuchi/localdown)](https://github.com/bhoriuchi/localdown) [![Contributors](https://img.shields.io/github/contributors/bhoriuchi/localdown?color=brightgreen)](https://github.com/bhoriuchi/localdown/graphs/contributors) - -Backed by localStorage in Node.js. - -### [`aerospike-leveldown`][aerospike-leveldown] - -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-2.7-red.svg) [![Last commit](https://img.shields.io/github/last-commit/ProjectThor/aerospikedown)](https://github.com/ProjectThor/aerospikedown) [![Contributors](https://img.shields.io/github/contributors/ProjectThor/aerospikedown?color=brightgreen)](https://github.com/ProjectThor/aerospikedown/graphs/contributors) - -Backed by Aerospike. - -### [`s3leveldown`][s3leveldown] - -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-6.3-orange.svg) [![Last commit](https://img.shields.io/github/last-commit/loune/s3leveldown)](https://github.com/loune/s3leveldown) [![Contributors](https://img.shields.io/github/contributors/loune/s3leveldown?color=brightgreen)](https://github.com/loune/s3leveldown/graphs/contributors) - -Backed by [AWS S3](https://aws.amazon.com/s3/). - -### [`gaiadown-ts`][gaiadown-ts] - -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-6.0-orange.svg) [![Last commit](https://img.shields.io/github/last-commit/acidleroy/gaiadown-ts)](https://github.com/acidleroy/gaiadown-ts) [![Contributors](https://img.shields.io/github/contributors/acidleroy/gaiadown-ts?color=brightgreen)](https://github.com/acidleroy/gaiadown-ts/graphs/contributors) - -Backed by [Gaia](https://github.com/blockstack/gaia). - -### [`dynamodb-leveldown`][dynamodb-leveldown] - -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-6.3-orange.svg) [![Last commit](https://img.shields.io/github/last-commit/GioCirque/DynamoDb-LevelDown)](https://github.com/GioCirque/DynamoDb-LevelDown) [![Contributors](https://img.shields.io/github/contributors/GioCirque/DynamoDb-LevelDown?color=brightgreen)](https://github.com/GioCirque/DynamoDb-LevelDown/graphs/contributors) - -Backed by [AWS DynamoDB](http://aws.amazon.com/dynamodb/). - -### [`localforagedown`][localforagedown] - -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-6.2-orange.svg) [![Last commit](https://img.shields.io/github/last-commit/KsRyY/localforagedown)](https://github.com/KsRyY/localforagedown) [![Contributors](https://img.shields.io/github/contributors/KsRyY/localforagedown?color=brightgreen)](https://github.com/KsRyY/localforagedown/graphs/contributors) - -Backed by [localForage](https://github.com/localForage/localForage/). - -### [`react-native-leveldown`][react-native-leveldown] - -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-6.3-orange.svg) [![Last commit](https://img.shields.io/github/last-commit/andymatuschak/react-native-leveldown)](https://github.com/andymatuschak/react-native-leveldown) [![Contributors](https://img.shields.io/github/contributors/andymatuschak/react-native-leveldown?color=brightgreen)](https://github.com/andymatuschak/react-native-leveldown/graphs/contributors) +### [`abstract-level`][abstract-level] -Backed by [LevelDB](https://github.com/google/leveldb) (React Native). +[![npm package version](https://img.shields.io/npm/v/abstract-level)](https://www.npmjs.com/package/abstract-level) [![npm downloads](https://img.shields.io/npm/dw/abstract-level)](https://www.npmjs.com/package/abstract-level) [![License](https://img.shields.io/npm/l/abstract-level?color=blue)](https://www.npmjs.com/package/abstract-level) [![Last commit](https://img.shields.io/github/last-commit/Level/abstract-level?color=brightgreen)](https://github.com/Level/abstract-level) [![Contributors](https://img.shields.io/github/contributors/Level/abstract-level?color=blue)](https://github.com/Level/abstract-level/graphs/contributors) -### [`networked-hyperbeedown`][networked-hyperbeedown] +Abstract class for a lexicographically sorted key-value database. -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-missing-lightgrey.svg) [![Last commit](https://img.shields.io/github/last-commit/RangerMauve/networked-hyperbeedown)](https://github.com/RangerMauve/networked-hyperbeedown) [![Contributors](https://img.shields.io/github/contributors/RangerMauve/networked-hyperbeedown?color=brightgreen)](https://github.com/RangerMauve/networked-hyperbeedown/graphs/contributors) +## Storage -Backed by [Hyperbee](https://github.com/hypercore-protocol/hyperbee/). +**Modules that implement [`abstract-level`][abstract-level].** -## Layers +### [`level`][level] -**Modules that implement [`abstract-leveldown`][abstract-leveldown] to wrap another [`abstract-leveldown`][abstract-leveldown]. This is the preferred extension point.** +[![npm package version](https://img.shields.io/npm/v/level)](https://www.npmjs.com/package/level) [![npm downloads](https://img.shields.io/npm/dw/level)](https://www.npmjs.com/package/level) [![License](https://img.shields.io/npm/l/level?color=blue)](https://www.npmjs.com/package/level) [![Last commit](https://img.shields.io/github/last-commit/Level/level?color=brightgreen)](https://github.com/Level/level) [![Contributors](https://img.shields.io/github/contributors/Level/level?color=blue)](https://github.com/Level/level/graphs/contributors) ![abstract-level](https://img.shields.io/badge/abstract--level-2.0-brightgreen.svg) -### [`encoding-down`][encoding-down] +Universal [`abstract-level`][abstract-level] database for Node.js and browsers. Main entry point for beginners. -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-7.2-brightgreen.svg) [![Last commit](https://img.shields.io/github/last-commit/Level/encoding-down)](https://github.com/Level/encoding-down) [![Contributors](https://img.shields.io/github/contributors/Level/encoding-down?color=brightgreen)](https://github.com/Level/encoding-down/graphs/contributors) +### [`classic-level`][classic-level] -Provides key/value encoding. +[![npm package version](https://img.shields.io/npm/v/classic-level)](https://www.npmjs.com/package/classic-level) [![npm downloads](https://img.shields.io/npm/dw/classic-level)](https://www.npmjs.com/package/classic-level) [![License](https://img.shields.io/npm/l/classic-level?color=blue)](https://www.npmjs.com/package/classic-level) [![Last commit](https://img.shields.io/github/last-commit/Level/classic-level?color=brightgreen)](https://github.com/Level/classic-level) [![Contributors](https://img.shields.io/github/contributors/Level/classic-level?color=blue)](https://github.com/Level/classic-level/graphs/contributors) ![abstract-level](https://img.shields.io/badge/abstract--level-2.0-brightgreen.svg) -### [`@adorsys/encrypt-down`][@adorsys/encrypt-down] +An [`abstract-level`][abstract-level] database backed by LevelDB. -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-6.3-orange.svg) [![Last commit](https://img.shields.io/github/last-commit/adorsys/encrypt-down)](https://github.com/adorsys/encrypt-down) [![Contributors](https://img.shields.io/github/contributors/adorsys/encrypt-down?color=brightgreen)](https://github.com/adorsys/encrypt-down/graphs/contributors) +### [`browser-level`][browser-level] -Provides encryption for values. +[![npm package version](https://img.shields.io/npm/v/browser-level)](https://www.npmjs.com/package/browser-level) [![npm downloads](https://img.shields.io/npm/dw/browser-level)](https://www.npmjs.com/package/browser-level) [![License](https://img.shields.io/npm/l/browser-level?color=blue)](https://www.npmjs.com/package/browser-level) [![Last commit](https://img.shields.io/github/last-commit/Level/browser-level?color=brightgreen)](https://github.com/Level/browser-level) [![Contributors](https://img.shields.io/github/contributors/Level/browser-level?color=blue)](https://github.com/Level/browser-level/graphs/contributors) ![abstract-level](https://img.shields.io/badge/abstract--level-2.0-brightgreen.svg) -### [`deferred-leveldown`][deferred-leveldown] +An [`abstract-level`][abstract-level] database for browsers, backed by IndexedDB. -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-7.2-brightgreen.svg) [![Last commit](https://img.shields.io/github/last-commit/Level/deferred-leveldown)](https://github.com/Level/deferred-leveldown) [![Contributors](https://img.shields.io/github/contributors/Level/deferred-leveldown?color=brightgreen)](https://github.com/Level/deferred-leveldown/graphs/contributors) +### [`memory-level`][memory-level] -Handles delayed-open. Built into [`levelup`][levelup]. +[![npm package version](https://img.shields.io/npm/v/memory-level)](https://www.npmjs.com/package/memory-level) [![npm downloads](https://img.shields.io/npm/dw/memory-level)](https://www.npmjs.com/package/memory-level) [![License](https://img.shields.io/npm/l/memory-level?color=blue)](https://www.npmjs.com/package/memory-level) [![Last commit](https://img.shields.io/github/last-commit/Level/memory-level?color=brightgreen)](https://github.com/Level/memory-level) [![Contributors](https://img.shields.io/github/contributors/Level/memory-level?color=blue)](https://github.com/Level/memory-level/graphs/contributors) ![abstract-level](https://img.shields.io/badge/abstract--level-2.0-brightgreen.svg) -### [`level-cowdown`][level-cowdown] +In-memory [`abstract-level`][abstract-level] database for Node.js and browsers. -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-2.4-red.svg) [![Last commit](https://img.shields.io/github/last-commit/substack/level-cowdown)](https://github.com/substack/level-cowdown) [![Contributors](https://img.shields.io/github/contributors/substack/level-cowdown?color=brightgreen)](https://github.com/substack/level-cowdown/graphs/contributors) +## Encodings -Copy-on-write [`abstract-leveldown`][abstract-leveldown] layer. +```js +// Example of a custom encoding +const { Level } = require('level') +const charwise = require('charwise') -### [`abstract-stream-leveldown`][abstract-stream-leveldown] +const db = new Level('./db', { + keyEncoding: charwise +}) -![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-2.1-red.svg) [![Last commit](https://img.shields.io/github/last-commit/jed/abstract-stream-leveldown)](https://github.com/jed/abstract-stream-leveldown) [![Contributors](https://img.shields.io/github/contributors/jed/abstract-stream-leveldown?color=brightgreen)](https://github.com/jed/abstract-stream-leveldown/graphs/contributors) +await db.put(['users', 2], 'example') +``` -A stream-based abstract prototype. +### [`protocol-buffers`][protocol-buffers] -## Encodings +[![npm package version](https://img.shields.io/npm/v/protocol-buffers)](https://www.npmjs.com/package/protocol-buffers) [![npm downloads](https://img.shields.io/npm/dw/protocol-buffers)](https://www.npmjs.com/package/protocol-buffers) [![License](https://img.shields.io/npm/l/protocol-buffers?color=blue)](https://www.npmjs.com/package/protocol-buffers) [![Last commit](https://img.shields.io/github/last-commit/mafintosh/protocol-buffers?color=brightgreen)](https://github.com/mafintosh/protocol-buffers) [![Contributors](https://img.shields.io/github/contributors/mafintosh/protocol-buffers?color=blue)](https://github.com/mafintosh/protocol-buffers/graphs/contributors) -**Custom [`level-codec`][level-codec] compatible encodings for use with [`encoding-down`][encoding-down].** +[Protocol Buffers](https://developers.google.com/protocol-buffers/) for Node.js. Compiled messages are valid as encodings. ### [`charwise`][charwise] -[![Last commit](https://img.shields.io/github/last-commit/dominictarr/charwise)](https://github.com/dominictarr/charwise) [![Contributors](https://img.shields.io/github/contributors/dominictarr/charwise?color=brightgreen)](https://github.com/dominictarr/charwise/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/charwise)](https://www.npmjs.com/package/charwise) [![npm downloads](https://img.shields.io/npm/dw/charwise)](https://www.npmjs.com/package/charwise) [![License](https://img.shields.io/npm/l/charwise?color=blue)](https://www.npmjs.com/package/charwise) [![Last commit](https://img.shields.io/github/last-commit/dominictarr/charwise?color=brightgreen)](https://github.com/dominictarr/charwise) [![Contributors](https://img.shields.io/github/contributors/dominictarr/charwise?color=blue)](https://github.com/dominictarr/charwise/graphs/contributors) -Encode/decode with same encoded sort order as [`bytewise`][bytewise]. +Encode / decode with same encoded sort order as [`bytewise`][bytewise]. ### [`bytewise`][bytewise] -[![Last commit](https://img.shields.io/github/last-commit/deanlandolt/bytewise)](https://github.com/deanlandolt/bytewise) [![Contributors](https://img.shields.io/github/contributors/deanlandolt/bytewise?color=brightgreen)](https://github.com/deanlandolt/bytewise/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/bytewise)](https://www.npmjs.com/package/bytewise) [![npm downloads](https://img.shields.io/npm/dw/bytewise)](https://www.npmjs.com/package/bytewise) [![License](https://img.shields.io/npm/l/bytewise?color=blue)](https://www.npmjs.com/package/bytewise) [![Last commit](https://img.shields.io/github/last-commit/deanlandolt/bytewise)](https://github.com/deanlandolt/bytewise) [![Contributors](https://img.shields.io/github/contributors/deanlandolt/bytewise?color=blue)](https://github.com/deanlandolt/bytewise/graphs/contributors) Binary serialization which sorts bytewise for arbitrarily complex data structures. NB. Use [`charwise`][charwise] if possible. Gives you almost everything `bytewise` does but much faster. -### [`protocol-buffers`][protocol-buffers] - -[![Last commit](https://img.shields.io/github/last-commit/mafintosh/protocol-buffers)](https://github.com/mafintosh/protocol-buffers) [![Contributors](https://img.shields.io/github/contributors/mafintosh/protocol-buffers?color=brightgreen)](https://github.com/mafintosh/protocol-buffers/graphs/contributors) - -[Protocol Buffers](https://developers.google.com/protocol-buffers/) for Node.js. Compiled messages are [`level-codec`][level-codec] compatible encodings. - ### [`lexicographic-integer-encoding`][lexicographic-integer-encoding] -[![Last commit](https://img.shields.io/github/last-commit/vweevers/lexicographic-integer-encoding)](https://github.com/vweevers/lexicographic-integer-encoding) [![Contributors](https://img.shields.io/github/contributors/vweevers/lexicographic-integer-encoding?color=brightgreen)](https://github.com/vweevers/lexicographic-integer-encoding/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/lexicographic-integer-encoding)](https://www.npmjs.com/package/lexicographic-integer-encoding) [![npm downloads](https://img.shields.io/npm/dw/lexicographic-integer-encoding)](https://www.npmjs.com/package/lexicographic-integer-encoding) [![License](https://img.shields.io/npm/l/lexicographic-integer-encoding?color=blue)](https://www.npmjs.com/package/lexicographic-integer-encoding) [![Last commit](https://img.shields.io/github/last-commit/vweevers/lexicographic-integer-encoding?color=brightgreen)](https://github.com/vweevers/lexicographic-integer-encoding) [![Contributors](https://img.shields.io/github/contributors/vweevers/lexicographic-integer-encoding?color=blue)](https://github.com/vweevers/lexicographic-integer-encoding/graphs/contributors) Wraps [`lexicographic-integer`](https://github.com/substack/lexicographic-integer). -## Sublevels - -**Modules related to splitting a database into sections a.k.a. sublevels.** - -### [`subleveldown`][subleveldown] - -[![Last commit](https://img.shields.io/github/last-commit/Level/subleveldown)](https://github.com/Level/subleveldown) [![Contributors](https://img.shields.io/github/contributors/Level/subleveldown?color=brightgreen)](https://github.com/Level/subleveldown/graphs/contributors) - -Split a [`levelup`][levelup] database into sublevels with their own keyspace, encoding and events. - -### [`level-temp`][level-temp] - -[![Last commit](https://img.shields.io/github/last-commit/mafintosh/level-temp)](https://github.com/mafintosh/level-temp) [![Contributors](https://img.shields.io/github/contributors/mafintosh/level-temp?color=brightgreen)](https://github.com/mafintosh/level-temp/graphs/contributors) - -Create a temporary [`subleveldown`][subleveldown] sublevel that is guaranteed to be empty. - -### [`level-mount`][level-mount] - -[![Last commit](https://img.shields.io/github/last-commit/u8sand/level-mount)](https://github.com/u8sand/level-mount) [![Contributors](https://img.shields.io/github/contributors/u8sand/level-mount?color=brightgreen)](https://github.com/u8sand/level-mount/graphs/contributors) - -Mount multiple [`abstract-leveldown`][abstract-leveldown] stores by key prefix onto a single store. Can be used with [`subleveldown`][subleveldown]. - -### [`bytespace`][bytespace] - -[![Last commit](https://img.shields.io/github/last-commit/deanlandolt/bytespace)](https://github.com/deanlandolt/bytespace) [![Contributors](https://img.shields.io/github/contributors/deanlandolt/bytespace?color=brightgreen)](https://github.com/deanlandolt/bytespace/graphs/contributors) - -Keypath subspaces prefixed with [`bytewise`][bytewise] tuples. Similar to [`level-sublevel`][level-sublevel]. NB. [`bytewise`][bytewise] - and thus [`bytespace`][bytespace] - can be slow. Consider using [`subleveldown`][subleveldown] paired with the [`charwise`][charwise] encoding instead. - -### [`level-sublevel`][level-sublevel] - -[![Last commit](https://img.shields.io/github/last-commit/dominictarr/level-sublevel)](https://github.com/dominictarr/level-sublevel) [![Contributors](https://img.shields.io/github/contributors/dominictarr/level-sublevel?color=brightgreen)](https://github.com/dominictarr/level-sublevel/graphs/contributors) - -Adds the ability to create subsections with the same API as [`levelup`][levelup], but only write/read to a prefixed section, or bucket, of the key-space. Each section also has [`level-hooks`][level-hooks] installed. NB. No longer maintained. We recommend [`subleveldown`][subleveldown] instead. - -### [`sublevel-prefixer`][sublevel-prefixer] +## Streams -[![Last commit](https://img.shields.io/github/last-commit/mafintosh/sublevel-prefixer)](https://github.com/mafintosh/sublevel-prefixer) [![Contributors](https://img.shields.io/github/contributors/mafintosh/sublevel-prefixer?color=brightgreen)](https://github.com/mafintosh/sublevel-prefixer/graphs/contributors) +**[Node.js stream](https://nodejs.org/api/stream.html), [Web Streams](https://developer.mozilla.org/en-US/docs/Web/API/Streams_API) or [`pull-stream`](https://github.com/pull-stream/pull-stream) implementations for reading and writing data from/to databases.** -Utility to prefix a key with a sublevel prefix. +### [`level-read-stream`][level-read-stream] -### [`level-sublevel-stream`][level-sublevel-stream] +[![npm package version](https://img.shields.io/npm/v/level-read-stream)](https://www.npmjs.com/package/level-read-stream) [![npm downloads](https://img.shields.io/npm/dw/level-read-stream)](https://www.npmjs.com/package/level-read-stream) [![License](https://img.shields.io/npm/l/level-read-stream?color=blue)](https://www.npmjs.com/package/level-read-stream) [![Last commit](https://img.shields.io/github/last-commit/Level/read-stream?color=brightgreen)](https://github.com/Level/read-stream) [![Contributors](https://img.shields.io/github/contributors/Level/read-stream?color=blue)](https://github.com/Level/read-stream/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-sublevel-stream)](https://github.com/juliangruber/level-sublevel-stream) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-sublevel-stream?color=brightgreen)](https://github.com/juliangruber/level-sublevel-stream/graphs/contributors) +Read from an [`abstract-level`][abstract-level] database using Node.js streams. -Find [`level-sublevel`][level-sublevel] sublevels, not requiring them to be in memory already. +### [`level-web-stream`][level-web-stream] -### [`level-subtree`][level-subtree] +[![npm package version](https://img.shields.io/npm/v/level-web-stream)](https://www.npmjs.com/package/level-web-stream) [![npm downloads](https://img.shields.io/npm/dw/level-web-stream)](https://www.npmjs.com/package/level-web-stream) [![License](https://img.shields.io/npm/l/level-web-stream?color=blue)](https://www.npmjs.com/package/level-web-stream) [![Last commit](https://img.shields.io/github/last-commit/Level/web-stream)](https://github.com/Level/web-stream) [![Contributors](https://img.shields.io/github/contributors/Level/web-stream?color=blue)](https://github.com/Level/web-stream/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/hij1nx/level-subtree)](https://github.com/hij1nx/level-subtree) [![Contributors](https://img.shields.io/github/contributors/hij1nx/level-subtree?color=brightgreen)](https://github.com/hij1nx/level-subtree/graphs/contributors) +Read from an [`abstract-level`][abstract-level] database using Web Streams. -Generate a tree from [`level-sublevel`][level-sublevel] sublevels, useful when there is no manifest. +### [`level-ws`][level-ws] -### [`level-superlevel`][level-superlevel] +[![npm package version](https://img.shields.io/npm/v/level-ws)](https://www.npmjs.com/package/level-ws) [![npm downloads](https://img.shields.io/npm/dw/level-ws)](https://www.npmjs.com/package/level-ws) [![License](https://img.shields.io/npm/l/level-ws?color=blue)](https://www.npmjs.com/package/level-ws) [![Last commit](https://img.shields.io/github/last-commit/Level/level-ws)](https://github.com/Level/level-ws) [![Contributors](https://img.shields.io/github/contributors/Level/level-ws?color=blue)](https://github.com/Level/level-ws/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/randymized/level-superlevel)](https://github.com/randymized/level-superlevel) [![Contributors](https://img.shields.io/github/contributors/randymized/level-superlevel?color=brightgreen)](https://github.com/randymized/level-superlevel/graphs/contributors) +A basic writable stream for [`abstract-level`][abstract-level] databases, using Node.js core streams. Has not been updated for `abstract-level` 2 yet (to use the promise API). -Superlevel adds a "super" level that allows accessing the entire database, discovering [`level-sublevel`][level-sublevel] sublevels and browsing the database without knowledge of the sublevel structure. +## Shared Access -### [`level-subkey`][level-subkey] +### [`many-level`][many-level] -[![Last commit](https://img.shields.io/github/last-commit/snowyu/level-subkey)](https://github.com/snowyu/level-subkey) [![Contributors](https://img.shields.io/github/contributors/snowyu/level-subkey?color=brightgreen)](https://github.com/snowyu/level-subkey/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/many-level)](https://www.npmjs.com/package/many-level) [![npm downloads](https://img.shields.io/npm/dw/many-level)](https://www.npmjs.com/package/many-level) [![License](https://img.shields.io/npm/l/many-level?color=blue)](https://www.npmjs.com/package/many-level) [![Last commit](https://img.shields.io/github/last-commit/Level/many-level)](https://github.com/Level/many-level) [![Contributors](https://img.shields.io/github/contributors/Level/many-level?color=blue)](https://github.com/Level/many-level/graphs/contributors) ![abstract-level](https://img.shields.io/badge/abstract--level-1.0-orange.svg) -Use path-like keys to separate sections of [`levelup`][levelup], with hooks. Adapted from [`level-sublevel`][level-sublevel]. +Share an [`abstract-level`][abstract-level] database over the network or other kind of stream. Supersedes [`multileveldown`][multileveldown] and [`multilevel`][multilevel]. -### [`level-mirror`][level-mirror] +### [`rave-level`][rave-level] -[![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-mirror)](https://github.com/juliangruber/level-mirror) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-mirror?color=brightgreen)](https://github.com/juliangruber/level-mirror/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/rave-level)](https://www.npmjs.com/package/rave-level) [![npm downloads](https://img.shields.io/npm/dw/rave-level)](https://www.npmjs.com/package/rave-level) [![License](https://img.shields.io/npm/l/rave-level?color=blue)](https://www.npmjs.com/package/rave-level) [![Last commit](https://img.shields.io/github/last-commit/Level/rave-level)](https://github.com/Level/rave-level) [![Contributors](https://img.shields.io/github/contributors/Level/rave-level?color=blue)](https://github.com/Level/rave-level/graphs/contributors) ![abstract-level](https://img.shields.io/badge/abstract--level-1.0-orange.svg) -Mirror and optionally transform data from one [`level-sublevel`][level-sublevel] sublevel into another. +Use a LevelDB database from multiple processes with seamless failover. Supersedes [`level-party`][level-party]. ## Processing -**Modules for indexing, alternative forms of querying data, MapReduce models and other forms of data processing.** +**Modules for indexing, alternative forms of querying data, MapReduce models and other forms of data processing. This section has not been updated for [`abstract-level`][abstract-level] yet.** ### [`level-auto-index`][level-auto-index] -[![Last commit](https://img.shields.io/github/last-commit/hypermodules/level-auto-index)](https://github.com/hypermodules/level-auto-index) [![Contributors](https://img.shields.io/github/contributors/hypermodules/level-auto-index?color=brightgreen)](https://github.com/hypermodules/level-auto-index/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-auto-index)](https://www.npmjs.com/package/level-auto-index) [![npm downloads](https://img.shields.io/npm/dw/level-auto-index)](https://www.npmjs.com/package/level-auto-index) [![License](https://img.shields.io/npm/l/level-auto-index?color=blue)](https://www.npmjs.com/package/level-auto-index) [![Last commit](https://img.shields.io/github/last-commit/hypermodules/level-auto-index)](https://github.com/hypermodules/level-auto-index) [![Contributors](https://img.shields.io/github/contributors/hypermodules/level-auto-index?color=blue)](https://github.com/hypermodules/level-auto-index/graphs/contributors) Automatic secondary indexing for [`levelup`][levelup] and [`subleveldown`][subleveldown]. ### [`jsonquery`][jsonquery] -[![Last commit](https://img.shields.io/github/last-commit/eugeneware/jsonquery)](https://github.com/eugeneware/jsonquery) [![Contributors](https://img.shields.io/github/contributors/eugeneware/jsonquery?color=brightgreen)](https://github.com/eugeneware/jsonquery/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/jsonquery)](https://www.npmjs.com/package/jsonquery) [![npm downloads](https://img.shields.io/npm/dw/jsonquery)](https://www.npmjs.com/package/jsonquery) [![License](https://img.shields.io/npm/l/jsonquery?color=blue)](https://www.npmjs.com/package/jsonquery) [![Last commit](https://img.shields.io/github/last-commit/eugeneware/jsonquery)](https://github.com/eugeneware/jsonquery) [![Contributors](https://img.shields.io/github/contributors/eugeneware/jsonquery?color=blue)](https://github.com/eugeneware/jsonquery/graphs/contributors) Query [`levelup`][levelup] with a MongoDB-like query API that returns streams. ### [`jsonquery-engine`][jsonquery-engine] -[![Last commit](https://img.shields.io/github/last-commit/eugeneware/jsonquery-engine)](https://github.com/eugeneware/jsonquery-engine) [![Contributors](https://img.shields.io/github/contributors/eugeneware/jsonquery-engine?color=brightgreen)](https://github.com/eugeneware/jsonquery-engine/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/jsonquery-engine)](https://www.npmjs.com/package/jsonquery-engine) [![npm downloads](https://img.shields.io/npm/dw/jsonquery-engine)](https://www.npmjs.com/package/jsonquery-engine) [![License](https://img.shields.io/npm/l/jsonquery-engine?color=blue)](https://www.npmjs.com/package/jsonquery-engine) [![Last commit](https://img.shields.io/github/last-commit/eugeneware/jsonquery-engine)](https://github.com/eugeneware/jsonquery-engine) [![Contributors](https://img.shields.io/github/contributors/eugeneware/jsonquery-engine?color=blue)](https://github.com/eugeneware/jsonquery-engine/graphs/contributors) A full MongoDB query language implementation with indexes for querying [`levelup`][levelup]. ### [`level-indico`][level-indico] -[![Last commit](https://img.shields.io/github/last-commit/mariocasciaro/level-indico)](https://github.com/mariocasciaro/level-indico) [![Contributors](https://img.shields.io/github/contributors/mariocasciaro/level-indico?color=brightgreen)](https://github.com/mariocasciaro/level-indico/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-indico)](https://www.npmjs.com/package/level-indico) [![npm downloads](https://img.shields.io/npm/dw/level-indico)](https://www.npmjs.com/package/level-indico) [![License](https://img.shields.io/npm/l/level-indico?color=blue)](https://www.npmjs.com/package/level-indico) [![Last commit](https://img.shields.io/github/last-commit/mariocasciaro/level-indico)](https://github.com/mariocasciaro/level-indico) [![Contributors](https://img.shields.io/github/contributors/mariocasciaro/level-indico?color=blue)](https://github.com/mariocasciaro/level-indico/graphs/contributors) Yet another indexing plugin for [`levelup`][levelup]. By providing only a low-level querying mechanism it gives you the power to build more complicated and optimized queries on top of it.

NB. Relies on [`bytewise`][bytewise] and [`level-sublevel`][level-sublevel], both of which have caveats. ### [`level-inverted-index`][level-inverted-index] -[![Last commit](https://img.shields.io/github/last-commit/dominictarr/level-inverted-index)](https://github.com/dominictarr/level-inverted-index) [![Contributors](https://img.shields.io/github/contributors/dominictarr/level-inverted-index?color=brightgreen)](https://github.com/dominictarr/level-inverted-index/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-inverted-index)](https://www.npmjs.com/package/level-inverted-index) [![npm downloads](https://img.shields.io/npm/dw/level-inverted-index)](https://www.npmjs.com/package/level-inverted-index) [![License](https://img.shields.io/npm/l/level-inverted-index?color=blue)](https://www.npmjs.com/package/level-inverted-index) [![Last commit](https://img.shields.io/github/last-commit/dominictarr/level-inverted-index)](https://github.com/dominictarr/level-inverted-index) [![Contributors](https://img.shields.io/github/contributors/dominictarr/level-inverted-index?color=blue)](https://github.com/dominictarr/level-inverted-index/graphs/contributors) Create an inverted index for full-text search. ### [`map-reduce`][map-reduce] -[![Last commit](https://img.shields.io/github/last-commit/dominictarr/map-reduce)](https://github.com/dominictarr/map-reduce) [![Contributors](https://img.shields.io/github/contributors/dominictarr/map-reduce?color=brightgreen)](https://github.com/dominictarr/map-reduce/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/map-reduce)](https://www.npmjs.com/package/map-reduce) [![npm downloads](https://img.shields.io/npm/dw/map-reduce)](https://www.npmjs.com/package/map-reduce) [![License](https://img.shields.io/npm/l/map-reduce?color=blue)](https://www.npmjs.com/package/map-reduce) [![Last commit](https://img.shields.io/github/last-commit/dominictarr/map-reduce)](https://github.com/dominictarr/map-reduce) [![Contributors](https://img.shields.io/github/contributors/dominictarr/map-reduce?color=blue)](https://github.com/dominictarr/map-reduce/graphs/contributors) A MapReduce implementation on top of [`levelup`][levelup]. Allows you to define a map reduce query that will run on top of your db. The map reduces are incremental, and you can query the results in real-time. ### [`level-map-merge`][level-map-merge] -[![Last commit](https://img.shields.io/github/last-commit/dominictarr/level-map-merge)](https://github.com/dominictarr/level-map-merge) [![Contributors](https://img.shields.io/github/contributors/dominictarr/level-map-merge?color=brightgreen)](https://github.com/dominictarr/level-map-merge/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-map-merge)](https://www.npmjs.com/package/level-map-merge) [![npm downloads](https://img.shields.io/npm/dw/level-map-merge)](https://www.npmjs.com/package/level-map-merge) [![License](https://img.shields.io/npm/l/level-map-merge?color=blue)](https://www.npmjs.com/package/level-map-merge) [![Last commit](https://img.shields.io/github/last-commit/dominictarr/level-map-merge)](https://github.com/dominictarr/level-map-merge) [![Contributors](https://img.shields.io/github/contributors/dominictarr/level-map-merge?color=blue)](https://github.com/dominictarr/level-map-merge/graphs/contributors) Like [`map-reduce`][map-reduce] but simpler. Has a batch component that runs periodically, and a real-time component that fills in the gaps. Good for generating inverted indexes. ### [`level-queryengine`][level-queryengine] -[![Last commit](https://img.shields.io/github/last-commit/eugeneware/level-queryengine)](https://github.com/eugeneware/level-queryengine) [![Contributors](https://img.shields.io/github/contributors/eugeneware/level-queryengine?color=brightgreen)](https://github.com/eugeneware/level-queryengine/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-queryengine)](https://www.npmjs.com/package/level-queryengine) [![npm downloads](https://img.shields.io/npm/dw/level-queryengine)](https://www.npmjs.com/package/level-queryengine) [![License](https://img.shields.io/npm/l/level-queryengine?color=blue)](https://www.npmjs.com/package/level-queryengine) [![Last commit](https://img.shields.io/github/last-commit/eugeneware/level-queryengine)](https://github.com/eugeneware/level-queryengine) [![Contributors](https://img.shields.io/github/contributors/eugeneware/level-queryengine?color=blue)](https://github.com/eugeneware/level-queryengine/graphs/contributors) A generic pluggable query-engine system (that supports indexes) for [`levelup`][levelup]. ### [`level-trigger`][level-trigger] -[![Last commit](https://img.shields.io/github/last-commit/dominictarr/level-trigger)](https://github.com/dominictarr/level-trigger) [![Contributors](https://img.shields.io/github/contributors/dominictarr/level-trigger?color=brightgreen)](https://github.com/dominictarr/level-trigger/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-trigger)](https://www.npmjs.com/package/level-trigger) [![npm downloads](https://img.shields.io/npm/dw/level-trigger)](https://www.npmjs.com/package/level-trigger) [![License](https://img.shields.io/npm/l/level-trigger?color=blue)](https://www.npmjs.com/package/level-trigger) [![Last commit](https://img.shields.io/github/last-commit/dominictarr/level-trigger)](https://github.com/dominictarr/level-trigger) [![Contributors](https://img.shields.io/github/contributors/dominictarr/level-trigger?color=blue)](https://github.com/dominictarr/level-trigger/graphs/contributors) Triggers for [`levelup`][levelup]. Runs an async job when a key changes. All jobs will eventually run, even across restarts! ### [`levels`][levels] -[![Last commit](https://img.shields.io/github/last-commit/eugeneware/levels)](https://github.com/eugeneware/levels) [![Contributors](https://img.shields.io/github/contributors/eugeneware/levels?color=brightgreen)](https://github.com/eugeneware/levels/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/levels)](https://www.npmjs.com/package/levels) [![npm downloads](https://img.shields.io/npm/dw/levels)](https://www.npmjs.com/package/levels) [![License](https://img.shields.io/npm/l/levels?color=blue)](https://www.npmjs.com/package/levels) [![Last commit](https://img.shields.io/github/last-commit/eugeneware/levels)](https://github.com/eugeneware/levels) [![Contributors](https://img.shields.io/github/contributors/eugeneware/levels?color=blue)](https://github.com/eugeneware/levels/graphs/contributors) A light-weight full text search engine for [`levelup`][levelup] (Port of TJ's [reds](https://github.com/visionmedia/reds) redis search engine). ### [`map-reduce-chained`][map-reduce-chained] -[![Last commit](https://img.shields.io/github/last-commit/ryanramage/map-reduce-chained)](https://github.com/ryanramage/map-reduce-chained) [![Contributors](https://img.shields.io/github/contributors/ryanramage/map-reduce-chained?color=brightgreen)](https://github.com/ryanramage/map-reduce-chained/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/map-reduce-chained)](https://www.npmjs.com/package/map-reduce-chained) [![npm downloads](https://img.shields.io/npm/dw/map-reduce-chained)](https://www.npmjs.com/package/map-reduce-chained) [![License](https://img.shields.io/npm/l/map-reduce-chained?color=blue)](https://www.npmjs.com/package/map-reduce-chained) [![Last commit](https://img.shields.io/github/last-commit/ryanramage/map-reduce-chained)](https://github.com/ryanramage/map-reduce-chained) [![Contributors](https://img.shields.io/github/contributors/ryanramage/map-reduce-chained?color=blue)](https://github.com/ryanramage/map-reduce-chained/graphs/contributors) Extends [`map-reduce`][map-reduce] and [`level-mapped-index`][level-mapped-index] to provide easy to setup chained MapReduce. An example use case is to find the top 10 values after a reduce. ### [`path-engine`][path-engine] -[![Last commit](https://img.shields.io/github/last-commit/eugeneware/path-engine)](https://github.com/eugeneware/path-engine) [![Contributors](https://img.shields.io/github/contributors/eugeneware/path-engine?color=brightgreen)](https://github.com/eugeneware/path-engine/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/path-engine)](https://www.npmjs.com/package/path-engine) [![npm downloads](https://img.shields.io/npm/dw/path-engine)](https://www.npmjs.com/package/path-engine) [![License](https://img.shields.io/npm/l/path-engine?color=blue)](https://www.npmjs.com/package/path-engine) [![Last commit](https://img.shields.io/github/last-commit/eugeneware/path-engine)](https://github.com/eugeneware/path-engine) [![Contributors](https://img.shields.io/github/contributors/eugeneware/path-engine?color=blue)](https://github.com/eugeneware/path-engine/graphs/contributors) Query [`levelup`][levelup] using a JavaScript property path array syntax with indexes. ### [`subindex`][subindex] -[![Last commit](https://img.shields.io/github/last-commit/eugeneware/subindex)](https://github.com/eugeneware/subindex) [![Contributors](https://img.shields.io/github/contributors/eugeneware/subindex?color=brightgreen)](https://github.com/eugeneware/subindex/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/subindex)](https://www.npmjs.com/package/subindex) [![npm downloads](https://img.shields.io/npm/dw/subindex)](https://www.npmjs.com/package/subindex) [![License](https://img.shields.io/npm/l/subindex?color=blue)](https://www.npmjs.com/package/subindex) [![Last commit](https://img.shields.io/github/last-commit/eugeneware/subindex)](https://github.com/eugeneware/subindex) [![Contributors](https://img.shields.io/github/contributors/eugeneware/subindex?color=blue)](https://github.com/eugeneware/subindex/graphs/contributors) Generic pluggable indexing system for [`levelup`][levelup]. ### [`level-sec`][level-sec] -[![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-sec)](https://github.com/juliangruber/level-sec) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-sec?color=brightgreen)](https://github.com/juliangruber/level-sec/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-sec)](https://www.npmjs.com/package/level-sec) [![npm downloads](https://img.shields.io/npm/dw/level-sec)](https://www.npmjs.com/package/level-sec) [![License](https://img.shields.io/npm/l/level-sec?color=blue)](https://www.npmjs.com/package/level-sec) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-sec)](https://github.com/juliangruber/level-sec) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-sec?color=blue)](https://github.com/juliangruber/level-sec/graphs/contributors) High-level API for creating secondary indexes. ### [`level-secondary`][level-secondary] -[![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-secondary)](https://github.com/juliangruber/level-secondary) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-secondary?color=brightgreen)](https://github.com/juliangruber/level-secondary/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-secondary)](https://www.npmjs.com/package/level-secondary) [![npm downloads](https://img.shields.io/npm/dw/level-secondary)](https://www.npmjs.com/package/level-secondary) [![License](https://img.shields.io/npm/l/level-secondary?color=blue)](https://www.npmjs.com/package/level-secondary) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-secondary)](https://github.com/juliangruber/level-secondary) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-secondary?color=blue)](https://github.com/juliangruber/level-secondary/graphs/contributors) Create and query secondary indexes. ### [`inverted-index`][inverted-index] -[![Last commit](https://img.shields.io/github/last-commit/kordon/inverted)](https://github.com/kordon/inverted) [![Contributors](https://img.shields.io/github/contributors/kordon/inverted?color=brightgreen)](https://github.com/kordon/inverted/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/inverted-index)](https://www.npmjs.com/package/inverted-index) [![npm downloads](https://img.shields.io/npm/dw/inverted-index)](https://www.npmjs.com/package/inverted-index) [![License](https://img.shields.io/npm/l/inverted-index?color=blue)](https://www.npmjs.com/package/inverted-index) [![Last commit](https://img.shields.io/github/last-commit/kordon/inverted)](https://github.com/kordon/inverted) [![Contributors](https://img.shields.io/github/contributors/kordon/inverted?color=blue)](https://github.com/kordon/inverted/graphs/contributors) Inverted index built upon [`levelup`][levelup]. ### [`level-index-update`][level-index-update] -[![Last commit](https://img.shields.io/github/last-commit/binocarlos/level-index-update)](https://github.com/binocarlos/level-index-update) [![Contributors](https://img.shields.io/github/contributors/binocarlos/level-index-update?color=brightgreen)](https://github.com/binocarlos/level-index-update/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-index-update)](https://www.npmjs.com/package/level-index-update) [![npm downloads](https://img.shields.io/npm/dw/level-index-update)](https://www.npmjs.com/package/level-index-update) [![License](https://img.shields.io/npm/l/level-index-update?color=blue)](https://www.npmjs.com/package/level-index-update) [![Last commit](https://img.shields.io/github/last-commit/binocarlos/level-index-update)](https://github.com/binocarlos/level-index-update) [![Contributors](https://img.shields.io/github/contributors/binocarlos/level-index-update?color=blue)](https://github.com/binocarlos/level-index-update/graphs/contributors) Remove the old indexes in the same batch as the new ones are inserted. ### [`range-index`][range-index] -[![Last commit](https://img.shields.io/github/last-commit/kordon/range)](https://github.com/kordon/range) [![Contributors](https://img.shields.io/github/contributors/kordon/range?color=brightgreen)](https://github.com/kordon/range/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/range-index)](https://www.npmjs.com/package/range-index) [![npm downloads](https://img.shields.io/npm/dw/range-index)](https://www.npmjs.com/package/range-index) [![License](https://img.shields.io/npm/l/range-index?color=blue)](https://www.npmjs.com/package/range-index) [![Last commit](https://img.shields.io/github/last-commit/kordon/range)](https://github.com/kordon/range) [![Contributors](https://img.shields.io/github/contributors/kordon/range?color=blue)](https://github.com/kordon/range/graphs/contributors) Range indexes for [`levelup`][levelup]. ### [`level-path-index`][level-path-index] -[![Last commit](https://img.shields.io/github/last-commit/binocarlos/level-path-index)](https://github.com/binocarlos/level-path-index) [![Contributors](https://img.shields.io/github/contributors/binocarlos/level-path-index?color=brightgreen)](https://github.com/binocarlos/level-path-index/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-path-index)](https://www.npmjs.com/package/level-path-index) [![npm downloads](https://img.shields.io/npm/dw/level-path-index)](https://www.npmjs.com/package/level-path-index) [![License](https://img.shields.io/npm/l/level-path-index?color=blue)](https://www.npmjs.com/package/level-path-index) [![Last commit](https://img.shields.io/github/last-commit/binocarlos/level-path-index)](https://github.com/binocarlos/level-path-index) [![Contributors](https://img.shields.io/github/contributors/binocarlos/level-path-index?color=blue)](https://github.com/binocarlos/level-path-index/graphs/contributors) Index properties of items that live in a tree of materialized paths. ### [`level-sql`][level-sql] -[![Last commit](https://img.shields.io/github/last-commit/hij1nx/level-sql)](https://github.com/hij1nx/level-sql) [![Contributors](https://img.shields.io/github/contributors/hij1nx/level-sql?color=brightgreen)](https://github.com/hij1nx/level-sql/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-sql)](https://www.npmjs.com/package/level-sql) [![npm downloads](https://img.shields.io/npm/dw/level-sql)](https://www.npmjs.com/package/level-sql) [![License](https://img.shields.io/npm/l/level-sql?color=blue)](https://www.npmjs.com/package/level-sql) [![Last commit](https://img.shields.io/github/last-commit/hij1nx/level-sql)](https://github.com/hij1nx/level-sql) [![Contributors](https://img.shields.io/github/contributors/hij1nx/level-sql?color=blue)](https://github.com/hij1nx/level-sql/graphs/contributors) SQL queries for [`levelup`][levelup]. ### [`level-hash-index`][level-hash-index] -[![Last commit](https://img.shields.io/github/last-commit/smallhelm/level-hash-index)](https://github.com/smallhelm/level-hash-index) [![Contributors](https://img.shields.io/github/contributors/smallhelm/level-hash-index?color=brightgreen)](https://github.com/smallhelm/level-hash-index/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-hash-index)](https://www.npmjs.com/package/level-hash-index) [![npm downloads](https://img.shields.io/npm/dw/level-hash-index)](https://www.npmjs.com/package/level-hash-index) [![License](https://img.shields.io/npm/l/level-hash-index?color=blue)](https://www.npmjs.com/package/level-hash-index) [![Last commit](https://img.shields.io/github/last-commit/smallhelm/level-hash-index)](https://github.com/smallhelm/level-hash-index) [![Contributors](https://img.shields.io/github/contributors/smallhelm/level-hash-index?color=blue)](https://github.com/smallhelm/level-hash-index/graphs/contributors) Store any string into [`levelup`][levelup], and get a collision free hash of that value that you can use in an index (or similar). ### [`level-idx`][level-idx] -[![Last commit](https://img.shields.io/github/last-commit/hypermodules/level-idx)](https://github.com/hypermodules/level-idx) [![Contributors](https://img.shields.io/github/contributors/hypermodules/level-idx?color=brightgreen)](https://github.com/hypermodules/level-idx/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-idx)](https://www.npmjs.com/package/level-idx) [![npm downloads](https://img.shields.io/npm/dw/level-idx)](https://www.npmjs.com/package/level-idx) [![License](https://img.shields.io/npm/l/level-idx?color=blue)](https://www.npmjs.com/package/level-idx) [![Last commit](https://img.shields.io/github/last-commit/hypermodules/level-idx)](https://github.com/hypermodules/level-idx) [![Contributors](https://img.shields.io/github/contributors/hypermodules/level-idx?color=blue)](https://github.com/hypermodules/level-idx/graphs/contributors) Another high-level API for creating secondary indexes, using [`level-auto-index`][level-auto-index]. ### [`level-indexer`][level-indexer] -[![Last commit](https://img.shields.io/github/last-commit/mafintosh/level-indexer)](https://github.com/mafintosh/level-indexer) [![Contributors](https://img.shields.io/github/contributors/mafintosh/level-indexer?color=brightgreen)](https://github.com/mafintosh/level-indexer/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-indexer)](https://www.npmjs.com/package/level-indexer) [![npm downloads](https://img.shields.io/npm/dw/level-indexer)](https://www.npmjs.com/package/level-indexer) [![License](https://img.shields.io/npm/l/level-indexer?color=blue)](https://www.npmjs.com/package/level-indexer) [![Last commit](https://img.shields.io/github/last-commit/mafintosh/level-indexer)](https://github.com/mafintosh/level-indexer) [![Contributors](https://img.shields.io/github/contributors/mafintosh/level-indexer?color=blue)](https://github.com/mafintosh/level-indexer/graphs/contributors) Generic indexer for [`levelup`][levelup]. Only stores document keys for space efficiency. ### [`level-librarian`][level-librarian] -[![Last commit](https://img.shields.io/github/last-commit/microstar-db/level-librarian)](https://github.com/microstar-db/level-librarian) [![Contributors](https://img.shields.io/github/contributors/microstar-db/level-librarian?color=brightgreen)](https://github.com/microstar-db/level-librarian/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-librarian)](https://www.npmjs.com/package/level-librarian) [![npm downloads](https://img.shields.io/npm/dw/level-librarian)](https://www.npmjs.com/package/level-librarian) [![License](https://img.shields.io/npm/l/level-librarian?color=blue)](https://www.npmjs.com/package/level-librarian) [![Last commit](https://img.shields.io/github/last-commit/microstar-db/level-librarian)](https://github.com/microstar-db/level-librarian) [![Contributors](https://img.shields.io/github/contributors/microstar-db/level-librarian?color=blue)](https://github.com/microstar-db/level-librarian/graphs/contributors) Lightweight indexing and querying with the LLCJ query language. ### [`level-match-index`][level-match-index] -[![Last commit](https://img.shields.io/github/last-commit/mmckegg/level-match-index)](https://github.com/mmckegg/level-match-index) [![Contributors](https://img.shields.io/github/contributors/mmckegg/level-match-index?color=brightgreen)](https://github.com/mmckegg/level-match-index/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-match-index)](https://www.npmjs.com/package/level-match-index) [![npm downloads](https://img.shields.io/npm/dw/level-match-index)](https://www.npmjs.com/package/level-match-index) [![License](https://img.shields.io/npm/l/level-match-index?color=blue)](https://www.npmjs.com/package/level-match-index) [![Last commit](https://img.shields.io/github/last-commit/mmckegg/level-match-index)](https://github.com/mmckegg/level-match-index) [![Contributors](https://img.shields.io/github/contributors/mmckegg/level-match-index?color=blue)](https://github.com/mmckegg/level-match-index/graphs/contributors) Index and filter [`level-sublevel`][level-sublevel] databases and watch for future changes. ### [`level-assoc`][level-assoc] -[![Last commit](https://img.shields.io/github/last-commit/substack/level-assoc)](https://github.com/substack/level-assoc) [![Contributors](https://img.shields.io/github/contributors/substack/level-assoc?color=brightgreen)](https://github.com/substack/level-assoc/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-assoc)](https://www.npmjs.com/package/level-assoc) [![npm downloads](https://img.shields.io/npm/dw/level-assoc)](https://www.npmjs.com/package/level-assoc) [![License](https://img.shields.io/npm/l/level-assoc?color=blue)](https://www.npmjs.com/package/level-assoc) [![Last commit](https://img.shields.io/github/last-commit/substack/level-assoc)](https://github.com/substack/level-assoc) [![Contributors](https://img.shields.io/github/contributors/substack/level-assoc?color=blue)](https://github.com/substack/level-assoc/graphs/contributors) Relational foreign key associations (`hasMany`, `belongsTo`) for [`levelup`][levelup]. ### [`level-tree-index`][level-tree-index] -[![Last commit](https://img.shields.io/github/last-commit/biobricks/level-tree-index)](https://github.com/biobricks/level-tree-index) [![Contributors](https://img.shields.io/github/contributors/biobricks/level-tree-index?color=brightgreen)](https://github.com/biobricks/level-tree-index/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-tree-index)](https://www.npmjs.com/package/level-tree-index) [![npm downloads](https://img.shields.io/npm/dw/level-tree-index)](https://www.npmjs.com/package/level-tree-index) [![License](https://img.shields.io/npm/l/level-tree-index?color=blue)](https://www.npmjs.com/package/level-tree-index) [![Last commit](https://img.shields.io/github/last-commit/biobricks/level-tree-index)](https://github.com/biobricks/level-tree-index) [![Contributors](https://img.shields.io/github/contributors/biobricks/level-tree-index?color=blue)](https://github.com/biobricks/level-tree-index/graphs/contributors) Tree indexer for [`levelup`][levelup]. ### [`changes-index`][changes-index] -[![Last commit](https://img.shields.io/github/last-commit/substack/changes-index)](https://github.com/substack/changes-index) [![Contributors](https://img.shields.io/github/contributors/substack/changes-index?color=brightgreen)](https://github.com/substack/changes-index/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/changes-index)](https://www.npmjs.com/package/changes-index) [![npm downloads](https://img.shields.io/npm/dw/changes-index)](https://www.npmjs.com/package/changes-index) [![License](https://img.shields.io/npm/l/changes-index?color=blue)](https://www.npmjs.com/package/changes-index) [![Last commit](https://img.shields.io/github/last-commit/substack/changes-index)](https://github.com/substack/changes-index) [![Contributors](https://img.shields.io/github/contributors/substack/changes-index?color=blue)](https://github.com/substack/changes-index/graphs/contributors) Create indexes from a [changes-feed](https://github.com/mafintosh/changes-feed). Provides a way to create a materialized view on top of an append-only log. ### [`changesdown`][changesdown] -[![Last commit](https://img.shields.io/github/last-commit/mafintosh/changesdown)](https://github.com/mafintosh/changesdown) [![Contributors](https://img.shields.io/github/contributors/mafintosh/changesdown?color=brightgreen)](https://github.com/mafintosh/changesdown/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/changesdown)](https://www.npmjs.com/package/changesdown) [![npm downloads](https://img.shields.io/npm/dw/changesdown)](https://www.npmjs.com/package/changesdown) [![License](https://img.shields.io/npm/l/changesdown?color=blue)](https://www.npmjs.com/package/changesdown) [![Last commit](https://img.shields.io/github/last-commit/mafintosh/changesdown)](https://github.com/mafintosh/changesdown) [![Contributors](https://img.shields.io/github/contributors/mafintosh/changesdown?color=blue)](https://github.com/mafintosh/changesdown/graphs/contributors) [`levelup`][levelup] interface that uses an [`abstract-leveldown`][abstract-leveldown] store that writes to a [changes-feed](https://github.com/mafintosh/changes-feed) to store its state. ### [`level-ordered`][level-ordered] -[![Last commit](https://img.shields.io/github/last-commit/eranbnn/level-ordered)](https://github.com/eranbnn/level-ordered) [![Contributors](https://img.shields.io/github/contributors/eranbnn/level-ordered?color=brightgreen)](https://github.com/eranbnn/level-ordered/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-ordered)](https://www.npmjs.com/package/level-ordered) [![npm downloads](https://img.shields.io/npm/dw/level-ordered)](https://www.npmjs.com/package/level-ordered) [![License](https://img.shields.io/npm/l/level-ordered?color=blue)](https://www.npmjs.com/package/level-ordered) [![Last commit](https://img.shields.io/github/last-commit/eranbnn/level-ordered)](https://github.com/eranbnn/level-ordered) [![Contributors](https://img.shields.io/github/contributors/eranbnn/level-ordered?color=blue)](https://github.com/eranbnn/level-ordered/graphs/contributors) A wrapper for [`level`][level] that keeps inserted items ordered. @@ -594,1369 +334,1714 @@ A wrapper for [`level`][level] that keeps inserted items ordered. ### [`dat`][dat] -[![Last commit](https://img.shields.io/github/last-commit/maxogden/dat)](https://github.com/maxogden/dat) [![Contributors](https://img.shields.io/github/contributors/maxogden/dat?color=brightgreen)](https://github.com/maxogden/dat/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/dat)](https://www.npmjs.com/package/dat) [![npm downloads](https://img.shields.io/npm/dw/dat)](https://www.npmjs.com/package/dat) [![License](https://img.shields.io/npm/l/dat?color=blue)](https://www.npmjs.com/package/dat) [![Last commit](https://img.shields.io/github/last-commit/maxogden/dat)](https://github.com/maxogden/dat) [![Contributors](https://img.shields.io/github/contributors/maxogden/dat?color=blue)](https://github.com/maxogden/dat/graphs/contributors) Lets you build streaming data pipelines that can be shared and replicated by others. ### [`pouchdb`][pouchdb] -PouchDB allows you to store and query data offline and then sync with CouchDB when online. For Node, browser and mobile. - -### [`couchup`][couchup] - -[![Last commit](https://img.shields.io/github/last-commit/mikeal/couchup)](https://github.com/mikeal/couchup) [![Contributors](https://img.shields.io/github/contributors/mikeal/couchup?color=brightgreen)](https://github.com/mikeal/couchup/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/pouchdb)](https://www.npmjs.com/package/pouchdb) [![npm downloads](https://img.shields.io/npm/dw/pouchdb)](https://www.npmjs.com/package/pouchdb) [![License](https://img.shields.io/npm/l/pouchdb?color=blue)](https://www.npmjs.com/package/pouchdb) -A CouchDB implementation on top of [`levelup`][levelup]. - -### [`firedup`][firedup] - -[![Last commit](https://img.shields.io/github/last-commit/eugeneware/firedup)](https://github.com/eugeneware/firedup) [![Contributors](https://img.shields.io/github/contributors/eugeneware/firedup?color=brightgreen)](https://github.com/eugeneware/firedup/graphs/contributors) - -A node.js implementation of firebase based on [`levelup`][levelup]. - -### [`len`][len] - -[![Last commit](https://img.shields.io/github/last-commit/binocarlos/len)](https://github.com/binocarlos/len) [![Contributors](https://img.shields.io/github/contributors/binocarlos/len?color=brightgreen)](https://github.com/binocarlos/len/graphs/contributors) - -Len is a resource booking database using LevelDB for storage. Useful for calendar and gantt chart apps and for questions like 'can a customer book this resource starting X and ending Y'. - -### [`lem`][lem] - -[![Last commit](https://img.shields.io/github/last-commit/binocarlos/lem)](https://github.com/binocarlos/lem) [![Contributors](https://img.shields.io/github/contributors/binocarlos/lem?color=brightgreen)](https://github.com/binocarlos/lem/graphs/contributors) - -Lem is a telemetry storage database using LevelDB. Keys are indexed by timestamp and you can read values in-between 2 points in time. +PouchDB allows you to store and query data offline and then sync with CouchDB when online. For Node, browser and mobile. ### [`levelgraph`][levelgraph] -[![Last commit](https://img.shields.io/github/last-commit/mcollina/node-levelgraph)](https://github.com/mcollina/node-levelgraph) [![Contributors](https://img.shields.io/github/contributors/mcollina/node-levelgraph?color=brightgreen)](https://github.com/mcollina/node-levelgraph/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/levelgraph)](https://www.npmjs.com/package/levelgraph) [![npm downloads](https://img.shields.io/npm/dw/levelgraph)](https://www.npmjs.com/package/levelgraph) [![License](https://img.shields.io/npm/l/levelgraph?color=blue)](https://www.npmjs.com/package/levelgraph) [![Last commit](https://img.shields.io/github/last-commit/mcollina/node-levelgraph)](https://github.com/mcollina/node-levelgraph) [![Contributors](https://img.shields.io/github/contributors/mcollina/node-levelgraph?color=blue)](https://github.com/mcollina/node-levelgraph/graphs/contributors) A Graph database built on top of [`levelup`][levelup] with pattern-matching and join support. ### [`linvodb3`][linvodb3] -[![Last commit](https://img.shields.io/github/last-commit/Ivshti/linvodb3)](https://github.com/Ivshti/linvodb3) [![Contributors](https://img.shields.io/github/contributors/Ivshti/linvodb3?color=brightgreen)](https://github.com/Ivshti/linvodb3/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/linvodb3)](https://www.npmjs.com/package/linvodb3) [![npm downloads](https://img.shields.io/npm/dw/linvodb3)](https://www.npmjs.com/package/linvodb3) [![License](https://img.shields.io/npm/l/linvodb3?color=blue)](https://www.npmjs.com/package/linvodb3) [![Last commit](https://img.shields.io/github/last-commit/Ivshti/linvodb3)](https://github.com/Ivshti/linvodb3) [![Contributors](https://img.shields.io/github/contributors/Ivshti/linvodb3?color=blue)](https://github.com/Ivshti/linvodb3/graphs/contributors) Persistent database on top of [`levelup`][levelup] for Node.js/NW.js with MongoDB-style queries, Mongoose-like models and a map/reduce system. ### [`rxdb`][rxdb] -[![Last commit](https://img.shields.io/github/last-commit/pubkey/rxdb)](https://github.com/pubkey/rxdb) [![Contributors](https://img.shields.io/github/contributors/pubkey/rxdb?color=brightgreen)](https://github.com/pubkey/rxdb/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/rxdb)](https://www.npmjs.com/package/rxdb) [![npm downloads](https://img.shields.io/npm/dw/rxdb)](https://www.npmjs.com/package/rxdb) [![License](https://img.shields.io/npm/l/rxdb?color=blue)](https://www.npmjs.com/package/rxdb) [![Last commit](https://img.shields.io/github/last-commit/pubkey/rxdb)](https://github.com/pubkey/rxdb) [![Contributors](https://img.shields.io/github/contributors/pubkey/rxdb?color=blue)](https://github.com/pubkey/rxdb/graphs/contributors) Event-driven database based on [`pouchdb`][pouchdb]. Optimized for reactive programming with observables. Events and state is automatically shared between multiple browser tabs. Queries are defined by the mongoDB mango-standard. -### [`pushdb`][pushdb] - -[![Last commit](https://img.shields.io/github/last-commit/mikeal/pushdb)](https://github.com/mikeal/pushdb) [![Contributors](https://img.shields.io/github/contributors/mikeal/pushdb?color=brightgreen)](https://github.com/mikeal/pushdb/graphs/contributors) - -A programmable database with document storage and unique indexing capabilities. - ### [`search-index`][search-index] -[![Last commit](https://img.shields.io/github/last-commit/fergiemcdowall/search-index)](https://github.com/fergiemcdowall/search-index) [![Contributors](https://img.shields.io/github/contributors/fergiemcdowall/search-index?color=brightgreen)](https://github.com/fergiemcdowall/search-index/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/search-index)](https://www.npmjs.com/package/search-index) [![npm downloads](https://img.shields.io/npm/dw/search-index)](https://www.npmjs.com/package/search-index) [![License](https://img.shields.io/npm/l/search-index?color=blue)](https://www.npmjs.com/package/search-index) [![Last commit](https://img.shields.io/github/last-commit/fergiemcdowall/search-index)](https://github.com/fergiemcdowall/search-index) [![Contributors](https://img.shields.io/github/contributors/fergiemcdowall/search-index?color=blue)](https://github.com/fergiemcdowall/search-index/graphs/contributors) A persistent full text search engine for browser and Node.js. -### [`tacodb`][tacodb] +## Data Structures -[![Last commit](https://img.shields.io/github/last-commit/dominictarr/tacodb)](https://github.com/dominictarr/tacodb) [![Contributors](https://img.shields.io/github/contributors/dominictarr/tacodb?color=brightgreen)](https://github.com/dominictarr/tacodb/graphs/contributors) +**Modules that utilize a specific key/value scheme to provide a higher-level data structure.** -A responsive, Node.js-style database ideal for realtime data. Highly modular and adaptable, allowing extension with the [Level][level-org] ecosystem. +### [`merkle-dag`][merkle-dag] -### [`timestreamdb`][timestreamdb] +[![npm package version](https://img.shields.io/npm/v/merkle-dag)](https://www.npmjs.com/package/merkle-dag) [![npm downloads](https://img.shields.io/npm/dw/merkle-dag)](https://www.npmjs.com/package/merkle-dag) [![License](https://img.shields.io/npm/l/merkle-dag?color=blue)](https://www.npmjs.com/package/merkle-dag) [![Last commit](https://img.shields.io/github/last-commit/mafintosh/merkle-dag)](https://github.com/mafintosh/merkle-dag) [![Contributors](https://img.shields.io/github/contributors/mafintosh/merkle-dag?color=blue)](https://github.com/mafintosh/merkle-dag/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/brycebaril/timestreamdb)](https://github.com/brycebaril/timestreamdb) [![Contributors](https://img.shields.io/github/contributors/brycebaril/timestreamdb?color=brightgreen)](https://github.com/brycebaril/timestreamdb/graphs/contributors) +Merkle DAG on top of LevelDB -A full-featured timeseries database on top of LevelDB. Includes a library for streaming statistical operations on timeseries data including joins, aggregates, filters, and map-like operations. +### [`merkle-patricia-tree`][merkle-patricia-tree] -### [`@nano-sql/core`][@nano-sql/core] +[![npm package version](https://img.shields.io/npm/v/merkle-patricia-tree)](https://www.npmjs.com/package/merkle-patricia-tree) [![npm downloads](https://img.shields.io/npm/dw/merkle-patricia-tree)](https://www.npmjs.com/package/merkle-patricia-tree) [![License](https://img.shields.io/npm/l/merkle-patricia-tree?color=blue)](https://www.npmjs.com/package/merkle-patricia-tree) [![Last commit](https://img.shields.io/github/last-commit/ethereumjs/merkle-patricia-tree)](https://github.com/ethereumjs/merkle-patricia-tree) [![Contributors](https://img.shields.io/github/contributors/ethereumjs/merkle-patricia-tree?color=blue)](https://github.com/ethereumjs/merkle-patricia-tree/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/ClickSimply/Nano-SQL)](https://github.com/ClickSimply/Nano-SQL) [![Contributors](https://img.shields.io/github/contributors/ClickSimply/Nano-SQL?color=brightgreen)](https://github.com/ClickSimply/Nano-SQL/graphs/contributors) +Implementation of the modified merkle patricia tree as specified in [Ethereum's yellow paper](http://gavwood.com/Paper.pdf). -A small (10Kb) RDBMS abstraction on top of [`levelup`][levelup] that also runs in the browser with undo/redo support, immutable objects and IndexedDB persistence. +### [`level-array`][level-array] -### [`vertical`][vertical] +[![npm package version](https://img.shields.io/npm/v/level-array)](https://www.npmjs.com/package/level-array) [![npm downloads](https://img.shields.io/npm/dw/level-array)](https://www.npmjs.com/package/level-array) [![License](https://img.shields.io/npm/l/level-array?color=blue)](https://www.npmjs.com/package/level-array) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-array)](https://github.com/juliangruber/level-array) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-array?color=blue)](https://github.com/juliangruber/level-array/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/zy445566/vertical)](https://github.com/zy445566/vertical) [![Contributors](https://img.shields.io/github/contributors/zy445566/vertical?color=brightgreen)](https://github.com/zy445566/vertical/graphs/contributors) +The array datatype inside [`levelup`][levelup]. -LevelDB distributed, Server and Client! +### [`level-set`][level-set] -### [`flash-store`][flash-store] +[![npm package version](https://img.shields.io/npm/v/level-set)](https://www.npmjs.com/package/level-set) [![npm downloads](https://img.shields.io/npm/dw/level-set)](https://www.npmjs.com/package/level-set) [![License](https://img.shields.io/npm/l/level-set?color=blue)](https://www.npmjs.com/package/level-set) [![Last commit](https://img.shields.io/github/last-commit/maiah/level-set)](https://github.com/maiah/level-set) [![Contributors](https://img.shields.io/github/contributors/maiah/level-set?color=blue)](https://github.com/maiah/level-set/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/zixia/flash-store)](https://github.com/zixia/flash-store) [![Contributors](https://img.shields.io/github/contributors/zixia/flash-store?color=brightgreen)](https://github.com/zixia/flash-store/graphs/contributors) +Add a `set` method to [`levelup`][levelup] for saving objects in a tree-like structure. -FlashStore is a Key-Value persistent storage with easy to use ES6 Map-like API(both Async and Sync support), powered by LevelDB and TypeScript. +### [`level-push`][level-push] -### [`level-fact-base`][level-fact-base] +[![npm package version](https://img.shields.io/npm/v/level-push)](https://www.npmjs.com/package/level-push) [![npm downloads](https://img.shields.io/npm/dw/level-push)](https://www.npmjs.com/package/level-push) [![License](https://img.shields.io/npm/l/level-push?color=blue)](https://www.npmjs.com/package/level-push) [![Last commit](https://img.shields.io/github/last-commit/maiah/level-push)](https://github.com/maiah/level-push) [![Contributors](https://img.shields.io/github/contributors/maiah/level-push?color=blue)](https://github.com/maiah/level-push/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/smallhelm/level-fact-base)](https://github.com/smallhelm/level-fact-base) [![Contributors](https://img.shields.io/github/contributors/smallhelm/level-fact-base?color=brightgreen)](https://github.com/smallhelm/level-fact-base/graphs/contributors) +Add a `push` method to [`levelup`][levelup] for saving objects using [`level-set`][level-set] with auto-generated UUID. -Store immutable facts and query them with datalog. +### [`level-version`][level-version] -### [`dulcimer`][dulcimer] +[![npm package version](https://img.shields.io/npm/v/level-version)](https://www.npmjs.com/package/level-version) [![npm downloads](https://img.shields.io/npm/dw/level-version)](https://www.npmjs.com/package/level-version) [![License](https://img.shields.io/npm/l/level-version?color=blue)](https://www.npmjs.com/package/level-version) [![Last commit](https://img.shields.io/github/last-commit/brycebaril/level-version)](https://github.com/brycebaril/level-version) [![Contributors](https://img.shields.io/github/contributors/brycebaril/level-version?color=blue)](https://github.com/brycebaril/level-version/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/fritzy/dulcimer)](https://github.com/fritzy/dulcimer) [![Contributors](https://img.shields.io/github/contributors/fritzy/dulcimer?color=brightgreen)](https://github.com/fritzy/dulcimer/graphs/contributors) +Store and retrieve versioned data in [`levelup`][levelup]. -Define JSON models and manage indexes, children, foreign keys and much more. +### [`level-queue-type`][level-queue-type] -### [`levi`][levi] +[![npm package version](https://img.shields.io/npm/v/level-queue-type)](https://www.npmjs.com/package/level-queue-type) [![npm downloads](https://img.shields.io/npm/dw/level-queue-type)](https://www.npmjs.com/package/level-queue-type) [![License](https://img.shields.io/npm/l/level-queue-type?color=blue)](https://www.npmjs.com/package/level-queue-type) [![Last commit](https://img.shields.io/github/last-commit/mcollina/level-queue-type)](https://github.com/mcollina/level-queue-type) [![Contributors](https://img.shields.io/github/contributors/mcollina/level-queue-type?color=blue)](https://github.com/mcollina/level-queue-type/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/cshum/levi)](https://github.com/cshum/levi) [![Contributors](https://img.shields.io/github/contributors/cshum/levi?color=brightgreen)](https://github.com/cshum/levi/graphs/contributors) +The queue datatype inside [`levelup`][levelup]. -Stream based full-text search for Node.js and browser using [`levelup`][levelup]. +### [`level-q`][level-q] -### [`level-mongo`][level-mongo] +[![npm package version](https://img.shields.io/npm/v/level-q)](https://www.npmjs.com/package/level-q) [![npm downloads](https://img.shields.io/npm/dw/level-q)](https://www.npmjs.com/package/level-q) [![License](https://img.shields.io/npm/l/level-q?color=blue)](https://www.npmjs.com/package/level-q) [![Last commit](https://img.shields.io/github/last-commit/eugeneware/level-q)](https://github.com/eugeneware/level-q) [![Contributors](https://img.shields.io/github/contributors/eugeneware/level-q?color=blue)](https://github.com/eugeneware/level-q/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/simon-p-r/level-mongo)](https://github.com/simon-p-r/level-mongo) [![Contributors](https://img.shields.io/github/contributors/simon-p-r/level-mongo?color=brightgreen)](https://github.com/simon-p-r/level-mongo/graphs/contributors) +Priority queuing for [`levelup`][levelup]. -MongoDB-like database backed by LevelDB. +### [`qool`][qool] -### [`level-orm`][level-orm] +[![npm package version](https://img.shields.io/npm/v/qool)](https://www.npmjs.com/package/qool) [![npm downloads](https://img.shields.io/npm/dw/qool)](https://www.npmjs.com/package/qool) [![License](https://img.shields.io/npm/l/qool?color=blue)](https://www.npmjs.com/package/qool) [![Last commit](https://img.shields.io/github/last-commit/kessler/qool)](https://github.com/kessler/qool) [![Contributors](https://img.shields.io/github/contributors/kessler/qool?color=blue)](https://github.com/kessler/qool/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/eugeneware/level-orm)](https://github.com/eugeneware/level-orm) [![Contributors](https://img.shields.io/github/contributors/eugeneware/level-orm?color=brightgreen)](https://github.com/eugeneware/level-orm/graphs/contributors) +A queue backed by [`levelup`][levelup], durable and FIFO. -Simple ORM built on [`levelup`][levelup]. +### [`level-trie`][level-trie] -### [`level-lively`][level-lively] +[![npm package version](https://img.shields.io/npm/v/level-trie)](https://www.npmjs.com/package/level-trie) [![npm downloads](https://img.shields.io/npm/dw/level-trie)](https://www.npmjs.com/package/level-trie) [![License](https://img.shields.io/npm/l/level-trie?color=blue)](https://www.npmjs.com/package/level-trie) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-trie)](https://github.com/juliangruber/level-trie) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-trie?color=blue)](https://github.com/juliangruber/level-trie/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/eugeneware/level-lively)](https://github.com/eugeneware/level-lively) [![Contributors](https://img.shields.io/github/contributors/eugeneware/level-lively?color=brightgreen)](https://github.com/eugeneware/level-lively/graphs/contributors) +The TRIE data structure and search algorithm, on top of [`levelup`][levelup]. -[`levelup`][levelup] implementation of [LivelyDb](https://github.com/eugeneware/livelydb) for doing real-time data binding of a database with local javascript objects. +### [`level-geospatial`][level-geospatial] -### [`kwdb`][kwdb] +[![npm package version](https://img.shields.io/npm/v/level-geospatial)](https://www.npmjs.com/package/level-geospatial) [![npm downloads](https://img.shields.io/npm/dw/level-geospatial)](https://www.npmjs.com/package/level-geospatial) [![License](https://img.shields.io/npm/l/level-geospatial?color=blue)](https://www.npmjs.com/package/level-geospatial) [![Last commit](https://img.shields.io/github/last-commit/richorama/level-geospatial)](https://github.com/richorama/level-geospatial) [![Contributors](https://img.shields.io/github/contributors/richorama/level-geospatial?color=blue)](https://github.com/richorama/level-geospatial/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/KsRyY/kwdb)](https://github.com/KsRyY/kwdb) [![Contributors](https://img.shields.io/github/contributors/KsRyY/kwdb?color=brightgreen)](https://github.com/KsRyY/kwdb/graphs/contributors) +Store key values pairs with lat/lon coordinates, and query using a radius. -REST wrapper for [`levelup`][levelup]. +### [`level-pathwise`][level-pathwise] -### [`level-restful`][level-restful] +[![npm package version](https://img.shields.io/npm/v/level-pathwise)](https://www.npmjs.com/package/level-pathwise) [![npm downloads](https://img.shields.io/npm/dw/level-pathwise)](https://www.npmjs.com/package/level-pathwise) [![License](https://img.shields.io/npm/l/level-pathwise?color=blue)](https://www.npmjs.com/package/level-pathwise) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-pathwise)](https://github.com/juliangruber/level-pathwise) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-pathwise?color=blue)](https://github.com/juliangruber/level-pathwise/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/karissa/level-restful)](https://github.com/karissa/level-restful) [![Contributors](https://img.shields.io/github/contributors/karissa/level-restful?color=brightgreen)](https://github.com/karissa/level-restful/graphs/contributors) +Turn [`levelup`][levelup] into one huge object of arbitrary size! Efficiently and atomically update and read parts of it. -REST wrapper for [`levelup`][levelup], as an extension to [`level-orm`][level-orm]. +### [`level-places`][level-places] -### [`level-rest`][level-rest] +[![npm package version](https://img.shields.io/npm/v/level-places)](https://www.npmjs.com/package/level-places) [![npm downloads](https://img.shields.io/npm/dw/level-places)](https://www.npmjs.com/package/level-places) [![License](https://img.shields.io/npm/l/level-places?color=blue)](https://www.npmjs.com/package/level-places) [![Last commit](https://img.shields.io/github/last-commit/Wayla/level-places)](https://github.com/Wayla/level-places) [![Contributors](https://img.shields.io/github/contributors/Wayla/level-places?color=blue)](https://github.com/Wayla/level-places/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/shama/level-rest)](https://github.com/shama/level-rest) [![Contributors](https://img.shields.io/github/contributors/shama/level-rest?color=brightgreen)](https://github.com/shama/level-rest/graphs/contributors) +Store and retrieve places near a lat/long pair. -REST wrapper for [`levelup`][levelup]. NB. Not compatible with latest [`levelup`][levelup]. +### [`level-nearby-stream`][level-nearby-stream] -## Shared Access +[![npm package version](https://img.shields.io/npm/v/level-nearby-stream)](https://www.npmjs.com/package/level-nearby-stream) [![npm downloads](https://img.shields.io/npm/dw/level-nearby-stream)](https://www.npmjs.com/package/level-nearby-stream) [![License](https://img.shields.io/npm/l/level-nearby-stream?color=blue)](https://www.npmjs.com/package/level-nearby-stream) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-nearby-stream)](https://github.com/juliangruber/level-nearby-stream) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-nearby-stream?color=blue)](https://github.com/juliangruber/level-nearby-stream/graphs/contributors) -### [`multileveldown`][multileveldown] +Stream in nearby places using the browser's geolocation and [`level-places`][level-places]. -[![Last commit](https://img.shields.io/github/last-commit/mafintosh/multileveldown)](https://github.com/mafintosh/multileveldown) [![Contributors](https://img.shields.io/github/contributors/mafintosh/multileveldown?color=brightgreen)](https://github.com/mafintosh/multileveldown/graphs/contributors) +### [`level-tree`][level-tree] -Share a [`levelup`][levelup] instance across multiple processes or over the network. An alternative to [`multilevel`][multilevel], implemented as [`abstract-leveldown`][abstract-leveldown] stores with seamless retry support. +[![npm package version](https://img.shields.io/npm/v/level-tree)](https://www.npmjs.com/package/level-tree) [![npm downloads](https://img.shields.io/npm/dw/level-tree)](https://www.npmjs.com/package/level-tree) [![License](https://img.shields.io/npm/l/level-tree?color=blue)](https://www.npmjs.com/package/level-tree) [![Last commit](https://img.shields.io/github/last-commit/calvinmetcalf/level-tree)](https://github.com/calvinmetcalf/level-tree) [![Contributors](https://img.shields.io/github/contributors/calvinmetcalf/level-tree?color=blue)](https://github.com/calvinmetcalf/level-tree/graphs/contributors) -### [`level-party`][level-party] +Geospatial indexing for GeoJSON in [`levelup`][levelup] -[![Last commit](https://img.shields.io/github/last-commit/substack/level-party)](https://github.com/substack/level-party) [![Contributors](https://img.shields.io/github/contributors/substack/level-party?color=brightgreen)](https://github.com/substack/level-party/graphs/contributors) +### [`level-list`][level-list] -Open a LevelDB ([`leveldown`][leveldown]) handle multiple times, transparently upgrading to [`multileveldown`][multileveldown] when more than 1 process try to use the same LevelDB data directory at once and re-electing a new master when the primary unix socket (or named pipe) goes down. +[![npm package version](https://img.shields.io/npm/v/level-list)](https://www.npmjs.com/package/level-list) [![npm downloads](https://img.shields.io/npm/dw/level-list)](https://www.npmjs.com/package/level-list) [![License](https://img.shields.io/npm/l/level-list?color=blue)](https://www.npmjs.com/package/level-list) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-list)](https://github.com/juliangruber/level-list) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-list?color=blue)](https://github.com/juliangruber/level-list/graphs/contributors) -### [`cluster-levelup`][cluster-levelup] +Map lists of data stored in [`levelup`][levelup] to DOM elements. -[![Last commit](https://img.shields.io/github/last-commit/chiguireitor/cluster-levelup)](https://github.com/chiguireitor/cluster-levelup) [![Contributors](https://img.shields.io/github/contributors/chiguireitor/cluster-levelup?color=brightgreen)](https://github.com/chiguireitor/cluster-levelup/graphs/contributors) +### [`level-reactive`][level-reactive] -Wrap a [`levelup`][levelup] instance for [`cluster`](https://nodejs.org/api/cluster.html) usage among multiple processes. +[![npm package version](https://img.shields.io/npm/v/level-reactive)](https://www.npmjs.com/package/level-reactive) [![npm downloads](https://img.shields.io/npm/dw/level-reactive)](https://www.npmjs.com/package/level-reactive) [![License](https://img.shields.io/npm/l/level-reactive?color=blue)](https://www.npmjs.com/package/level-reactive) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-reactive)](https://github.com/juliangruber/level-reactive) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-reactive?color=blue)](https://github.com/juliangruber/level-reactive/graphs/contributors) -### [`multilevel`][multilevel] +Reactive templating for data stored in [`levelup`][levelup]. -[![Last commit](https://img.shields.io/github/last-commit/juliangruber/multilevel)](https://github.com/juliangruber/multilevel) [![Contributors](https://img.shields.io/github/contributors/juliangruber/multilevel?color=brightgreen)](https://github.com/juliangruber/multilevel/graphs/contributors) +### [`level-paginate`][level-paginate] -Share a [`levelup`][levelup] instance over the network. +[![npm package version](https://img.shields.io/npm/v/level-paginate)](https://www.npmjs.com/package/level-paginate) [![npm downloads](https://img.shields.io/npm/dw/level-paginate)](https://www.npmjs.com/package/level-paginate) [![License](https://img.shields.io/npm/l/level-paginate?color=blue)](https://www.npmjs.com/package/level-paginate) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-paginate)](https://github.com/juliangruber/level-paginate) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-paginate?color=blue)](https://github.com/juliangruber/level-paginate/graphs/contributors) -### [`multilevel-http`][multilevel-http] +Streaming pagination for [`levelup`][levelup]. -[![Last commit](https://img.shields.io/github/last-commit/juliangruber/multilevel-http)](https://github.com/juliangruber/multilevel-http) [![Contributors](https://img.shields.io/github/contributors/juliangruber/multilevel-http?color=brightgreen)](https://github.com/juliangruber/multilevel-http/graphs/contributors) +### [`level-average`][level-average] -Expose a [`levelup`][levelup] instance via HTTP. +[![npm package version](https://img.shields.io/npm/v/level-average)](https://www.npmjs.com/package/level-average) [![npm downloads](https://img.shields.io/npm/dw/level-average)](https://www.npmjs.com/package/level-average) [![License](https://img.shields.io/npm/l/level-average?color=blue)](https://www.npmjs.com/package/level-average) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-average)](https://github.com/juliangruber/level-average) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-average?color=blue)](https://github.com/juliangruber/level-average/graphs/contributors) -### [`level-range-emitter`][level-range-emitter] +Calculate rolling averages in [`levelup`][levelup]. -[![Last commit](https://img.shields.io/github/last-commit/jameskyburz/level-range-emitter)](https://github.com/jameskyburz/level-range-emitter) [![Contributors](https://img.shields.io/github/contributors/jameskyburz/level-range-emitter?color=brightgreen)](https://github.com/jameskyburz/level-range-emitter/graphs/contributors) +### [`level-sum`][level-sum] -Client and server using [`multileveldown`][multileveldown], [`range-emitter`][range-emitter] and [`ltgt`][ltgt]. +[![npm package version](https://img.shields.io/npm/v/level-sum)](https://www.npmjs.com/package/level-sum) [![npm downloads](https://img.shields.io/npm/dw/level-sum)](https://www.npmjs.com/package/level-sum) [![License](https://img.shields.io/npm/l/level-sum?color=blue)](https://www.npmjs.com/package/level-sum) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-sum)](https://github.com/juliangruber/level-sum) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-sum?color=blue)](https://github.com/juliangruber/level-sum/graphs/contributors) -### [`level-manifest`][level-manifest] +Calculate sums in [`levelup`][levelup] and get live updates. -[![Last commit](https://img.shields.io/github/last-commit/dominictarr/level-manifest)](https://github.com/dominictarr/level-manifest) [![Contributors](https://img.shields.io/github/contributors/dominictarr/level-manifest?color=brightgreen)](https://github.com/dominictarr/level-manifest/graphs/contributors) +### [`level-historical-json`][level-historical-json] -Describe the functions that [`multilevel`][multilevel] should provide access to on the client. +[![npm package version](https://img.shields.io/npm/v/level-historical-json)](https://www.npmjs.com/package/level-historical-json) [![npm downloads](https://img.shields.io/npm/dw/level-historical-json)](https://www.npmjs.com/package/level-historical-json) [![License](https://img.shields.io/npm/l/level-historical-json?color=blue)](https://www.npmjs.com/package/level-historical-json) [![Last commit](https://img.shields.io/github/last-commit/ellell/level-historical-json)](https://github.com/ellell/level-historical-json) [![Contributors](https://img.shields.io/github/contributors/ellell/level-historical-json?color=blue)](https://github.com/ellell/level-historical-json/graphs/contributors) -### [`level-cluster-get`][level-cluster-get] +Keep a history of all the changes of a JSON document. -[![Last commit](https://img.shields.io/github/last-commit/kesla/level-cluster-get)](https://github.com/kesla/level-cluster-get) [![Contributors](https://img.shields.io/github/contributors/kesla/level-cluster-get?color=brightgreen)](https://github.com/kesla/level-cluster-get/graphs/contributors) +### [`level-immutable`][level-immutable] -Given a key, get all values from a cluster of [`multilevel`][multilevel] servers. +[![npm package version](https://img.shields.io/npm/v/level-immutable)](https://www.npmjs.com/package/level-immutable) [![npm downloads](https://img.shields.io/npm/dw/level-immutable)](https://www.npmjs.com/package/level-immutable) [![License](https://img.shields.io/npm/l/level-immutable?color=blue)](https://www.npmjs.com/package/level-immutable) [![Last commit](https://img.shields.io/github/last-commit/eugeneware/level-immutable)](https://github.com/eugeneware/level-immutable) [![Contributors](https://img.shields.io/github/contributors/eugeneware/level-immutable?color=blue)](https://github.com/eugeneware/level-immutable/graphs/contributors) -### [`level-connect`][level-connect] +[`levelup`][levelup] immutable history and database snapshotting based on ideas in `datomic`. -[![Last commit](https://img.shields.io/github/last-commit/mattstyles/level-connect)](https://github.com/mattstyles/level-connect) [![Contributors](https://img.shields.io/github/contributors/mattstyles/level-connect?color=brightgreen)](https://github.com/mattstyles/level-connect/graphs/contributors) +### [`level-model`][level-model] -Connect to a [`level-party`][level-party] and [`level-sublevel`][level-sublevel] enabled LevelDB over HTTP. +[![npm package version](https://img.shields.io/npm/v/level-model)](https://www.npmjs.com/package/level-model) [![npm downloads](https://img.shields.io/npm/dw/level-model)](https://www.npmjs.com/package/level-model) [![License](https://img.shields.io/npm/l/level-model?color=blue)](https://www.npmjs.com/package/level-model) [![Last commit](https://img.shields.io/github/last-commit/sethvincent/level-model)](https://github.com/sethvincent/level-model) [![Contributors](https://img.shields.io/github/contributors/sethvincent/level-model?color=blue)](https://github.com/sethvincent/level-model/graphs/contributors) -### [`level-sandbox`][level-sandbox] +A higher-level module for creating content models using [`levelup`][levelup] and JSON Schema validation. -[![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-sandbox)](https://github.com/juliangruber/level-sandbox) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-sandbox?color=brightgreen)](https://github.com/juliangruber/level-sandbox/graphs/contributors) +### [`level-stream`][level-stream] -A sandbox for hosting [`multilevel`][multilevel] enabled databases. +[![npm package version](https://img.shields.io/npm/v/level-stream)](https://www.npmjs.com/package/level-stream) [![npm downloads](https://img.shields.io/npm/dw/level-stream)](https://www.npmjs.com/package/level-stream) [![License](https://img.shields.io/npm/l/level-stream?color=blue)](https://www.npmjs.com/package/level-stream) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-stream)](https://github.com/juliangruber/level-stream) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-stream?color=blue)](https://github.com/juliangruber/level-stream/graphs/contributors) -### [`level2riak`][level2riak] +Persist streams in [`levelup`][levelup]. -[![Last commit](https://img.shields.io/github/last-commit/fritzy/level2git)](https://github.com/fritzy/level2git) [![Contributors](https://img.shields.io/github/contributors/fritzy/level2git?color=brightgreen)](https://github.com/fritzy/level2git/graphs/contributors) +### [`level-stay`][level-stay] -A network service that allows you to connect to a Riak database over HTTP. +[![npm package version](https://img.shields.io/npm/v/level-stay)](https://www.npmjs.com/package/level-stay) [![npm downloads](https://img.shields.io/npm/dw/level-stay)](https://www.npmjs.com/package/level-stay) [![License](https://img.shields.io/npm/l/level-stay?color=blue)](https://www.npmjs.com/package/level-stay) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-stay)](https://github.com/juliangruber/level-stay) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-stay?color=blue)](https://github.com/juliangruber/level-stay/graphs/contributors) -### [`leveldb-mount`][leveldb-mount] +An alternative approach to storing scuttlebutts in [`levelup`][levelup]. -[![Last commit](https://img.shields.io/github/last-commit/jameskyburz/leveldb-mount)](https://github.com/jameskyburz/leveldb-mount) [![Contributors](https://img.shields.io/github/contributors/jameskyburz/leveldb-mount?color=brightgreen)](https://github.com/jameskyburz/leveldb-mount/graphs/contributors) +### [`skeyma`][skeyma] -LevelDB server and client with optional client-side REPL. Built with [`subleveldown`][subleveldown] and [`multileveldown`][multileveldown]. +[![npm package version](https://img.shields.io/npm/v/skeyma)](https://www.npmjs.com/package/skeyma) [![npm downloads](https://img.shields.io/npm/dw/skeyma)](https://www.npmjs.com/package/skeyma) [![License](https://img.shields.io/npm/l/skeyma?color=blue)](https://www.npmjs.com/package/skeyma) [![Last commit](https://img.shields.io/github/last-commit/jed/skeyma)](https://github.com/jed/skeyma) [![Contributors](https://img.shields.io/github/contributors/jed/skeyma?color=blue)](https://github.com/jed/skeyma/graphs/contributors) -### [`level-pubsub`][level-pubsub] +Turns a template string (like `${forumId}/${postId}`) into parse/serialize streams that transform objects like `{forumId, postId, text}` into key-value pairs and back. -[![Last commit](https://img.shields.io/github/last-commit/hij1nx/level-pubsub)](https://github.com/hij1nx/level-pubsub) [![Contributors](https://img.shields.io/github/contributors/hij1nx/level-pubsub?color=brightgreen)](https://github.com/hij1nx/level-pubsub/graphs/contributors) +### [`level-autotable`][level-autotable] -PubSub with server and client on top of [`levelup`][levelup]. +[![npm package version](https://img.shields.io/npm/v/level-autotable)](https://www.npmjs.com/package/level-autotable) [![npm downloads](https://img.shields.io/npm/dw/level-autotable)](https://www.npmjs.com/package/level-autotable) [![License](https://img.shields.io/npm/l/level-autotable?color=blue)](https://www.npmjs.com/package/level-autotable) [![Last commit](https://img.shields.io/github/last-commit/santoshrajan/levelup-autotable)](https://github.com/santoshrajan/levelup-autotable) [![Contributors](https://img.shields.io/github/contributors/santoshrajan/levelup-autotable?color=blue)](https://github.com/santoshrajan/levelup-autotable/graphs/contributors) -### [`level-query`][level-query] +Auto incrementing keys with "fields" and "records". -[![Last commit](https://img.shields.io/github/last-commit/substack/level-query)](https://github.com/substack/level-query) [![Contributors](https://img.shields.io/github/contributors/substack/level-query?color=brightgreen)](https://github.com/substack/level-query/graphs/contributors) +### [`level-forks`][level-forks] -Expose a [`level-sublevel`][level-sublevel] database over HTTP, searchable with query strings. +[![npm package version](https://img.shields.io/npm/v/level-forks)](https://www.npmjs.com/package/level-forks) [![npm downloads](https://img.shields.io/npm/dw/level-forks)](https://www.npmjs.com/package/level-forks) [![License](https://img.shields.io/npm/l/level-forks?color=blue)](https://www.npmjs.com/package/level-forks) [![Last commit](https://img.shields.io/github/last-commit/substack/level-forks)](https://github.com/substack/level-forks) [![Contributors](https://img.shields.io/github/contributors/substack/level-forks?color=blue)](https://github.com/substack/level-forks/graphs/contributors) -### [`level-over-http`][level-over-http] +Forking graph of cascading namespaces. -[![Last commit](https://img.shields.io/github/last-commit/lakowske/level-over-http)](https://github.com/lakowske/level-over-http) [![Contributors](https://img.shields.io/github/contributors/lakowske/level-over-http?color=brightgreen)](https://github.com/lakowske/level-over-http/graphs/contributors) +### [`level-geo`][level-geo] -Another solution to expose [`levelup`][levelup] over HTTP. +[![npm package version](https://img.shields.io/npm/v/level-geo)](https://www.npmjs.com/package/level-geo) [![npm downloads](https://img.shields.io/npm/dw/level-geo)](https://www.npmjs.com/package/level-geo) [![License](https://img.shields.io/npm/l/level-geo?color=blue)](https://www.npmjs.com/package/level-geo) [![Last commit](https://img.shields.io/github/last-commit/julianduque/level-geo)](https://github.com/julianduque/level-geo) [![Contributors](https://img.shields.io/github/contributors/julianduque/level-geo?color=blue)](https://github.com/julianduque/level-geo/graphs/contributors) -### [`level-rpc`][level-rpc] +A geospatial index for [`levelup`][levelup]. -[![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-rpc)](https://github.com/juliangruber/level-rpc) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-rpc?color=brightgreen)](https://github.com/juliangruber/level-rpc/graphs/contributors) +### [`level-geography`][level-geography] -Fast RPC mechanism for [`levelup`][levelup]. Intended as binary-compatible alternative to [`multilevel`][multilevel]. +[![npm package version](https://img.shields.io/npm/v/level-geography)](https://www.npmjs.com/package/level-geography) [![npm downloads](https://img.shields.io/npm/dw/level-geography)](https://www.npmjs.com/package/level-geography) [![License](https://img.shields.io/npm/l/level-geography?color=blue)](https://www.npmjs.com/package/level-geography) [![Last commit](https://img.shields.io/github/last-commit/morganherlocker/level-geography)](https://github.com/morganherlocker/level-geography) [![Contributors](https://img.shields.io/github/contributors/morganherlocker/level-geography?color=blue)](https://github.com/morganherlocker/level-geography/graphs/contributors) -## Streams +Indexed geography storage in [`levelup`][levelup]. -**[Node.js stream](https://nodejs.org/api/stream.html) or [`pull-stream`](https://github.com/pull-stream/pull-stream) implementations for reading and writing data from/to [`levelup`][levelup].** +### [`accountdown`][accountdown] -### [`level-ws`][level-ws] +[![npm package version](https://img.shields.io/npm/v/accountdown)](https://www.npmjs.com/package/accountdown) [![npm downloads](https://img.shields.io/npm/dw/accountdown)](https://www.npmjs.com/package/accountdown) [![License](https://img.shields.io/npm/l/accountdown?color=blue)](https://www.npmjs.com/package/accountdown) [![Last commit](https://img.shields.io/github/last-commit/substack/accountdown)](https://github.com/substack/accountdown) [![Contributors](https://img.shields.io/github/contributors/substack/accountdown?color=blue)](https://github.com/substack/accountdown/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/Level/level-ws)](https://github.com/Level/level-ws) [![Contributors](https://img.shields.io/github/contributors/Level/level-ws?color=brightgreen)](https://github.com/Level/level-ws/graphs/contributors) +Persistent user accounts. -General-case, streams3 writable stream for [`levelup`][levelup]. +### [`accountdown-model`][accountdown-model] -### [`level-batch-stream`][level-batch-stream] +[![npm package version](https://img.shields.io/npm/v/accountdown-model)](https://www.npmjs.com/package/accountdown-model) [![npm downloads](https://img.shields.io/npm/dw/accountdown-model)](https://www.npmjs.com/package/accountdown-model) [![License](https://img.shields.io/npm/l/accountdown-model?color=blue)](https://www.npmjs.com/package/accountdown-model) [![Last commit](https://img.shields.io/github/last-commit/sethvincent/accountdown-model)](https://github.com/sethvincent/accountdown-model) [![Contributors](https://img.shields.io/github/contributors/sethvincent/accountdown-model?color=blue)](https://github.com/sethvincent/accountdown-model/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/jcrugzz/level-batch-stream)](https://github.com/jcrugzz/level-batch-stream) [![Contributors](https://img.shields.io/github/contributors/jcrugzz/level-batch-stream?color=brightgreen)](https://github.com/jcrugzz/level-batch-stream/graphs/contributors) +A wrapper around [`accountdown`][accountdown] that provides a few additional features -Streams2 writable stream for [`levelup`][levelup]. +## Transience -### [`level-writestream`][level-writestream] +### [`cachedown`][cachedown] -[![Last commit](https://img.shields.io/github/last-commit/pgte/level-writestream)](https://github.com/pgte/level-writestream) [![Contributors](https://img.shields.io/github/contributors/pgte/level-writestream?color=brightgreen)](https://github.com/pgte/level-writestream/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/cachedown)](https://www.npmjs.com/package/cachedown) [![npm downloads](https://img.shields.io/npm/dw/cachedown)](https://www.npmjs.com/package/cachedown) [![License](https://img.shields.io/npm/l/cachedown?color=blue)](https://www.npmjs.com/package/cachedown) [![Last commit](https://img.shields.io/github/last-commit/mvayngrib/cachedown)](https://github.com/mvayngrib/cachedown) [![Contributors](https://img.shields.io/github/contributors/mvayngrib/cachedown?color=blue)](https://github.com/mvayngrib/cachedown/graphs/contributors) -Streams2 writable stream for [`levelup`][levelup]. +LRU cache implemented as an [`abstract-leveldown`][abstract-leveldown] layer. -### [`level-write-stream`][level-write-stream] +### [`level-ttl`][level-ttl] -[![Last commit](https://img.shields.io/github/last-commit/Raynos/level-write-stream)](https://github.com/Raynos/level-write-stream) [![Contributors](https://img.shields.io/github/contributors/Raynos/level-write-stream?color=brightgreen)](https://github.com/Raynos/level-write-stream/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-ttl)](https://www.npmjs.com/package/level-ttl) [![npm downloads](https://img.shields.io/npm/dw/level-ttl)](https://www.npmjs.com/package/level-ttl) [![License](https://img.shields.io/npm/l/level-ttl?color=blue)](https://www.npmjs.com/package/level-ttl) [![Last commit](https://img.shields.io/github/last-commit/Level/level-ttl)](https://github.com/Level/level-ttl) [![Contributors](https://img.shields.io/github/contributors/Level/level-ttl?color=blue)](https://github.com/Level/level-ttl/graphs/contributors) -Streams1 writable stream for [`levelup`][levelup] or [`abstract-leveldown`][abstract-leveldown]. +Add a `ttl` (time-to-live) option to [`levelup`][levelup]. NB. Suffers from race issues. See also [`tiny-level-ttl`][tiny-level-ttl]. -### [`pull-level`][pull-level] +### [`tiny-level-ttl`][tiny-level-ttl] -[![Last commit](https://img.shields.io/github/last-commit/dominictarr/pull-level)](https://github.com/dominictarr/pull-level) [![Contributors](https://img.shields.io/github/contributors/dominictarr/pull-level?color=brightgreen)](https://github.com/dominictarr/pull-level/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/tiny-level-ttl)](https://www.npmjs.com/package/tiny-level-ttl) [![npm downloads](https://img.shields.io/npm/dw/tiny-level-ttl)](https://www.npmjs.com/package/tiny-level-ttl) [![License](https://img.shields.io/npm/l/tiny-level-ttl?color=blue)](https://www.npmjs.com/package/tiny-level-ttl) [![Last commit](https://img.shields.io/github/last-commit/ArtskydJ/tiny-level-ttl)](https://github.com/ArtskydJ/tiny-level-ttl) [![Contributors](https://img.shields.io/github/contributors/ArtskydJ/tiny-level-ttl?color=blue)](https://github.com/ArtskydJ/tiny-level-ttl/graphs/contributors) -[`pull-stream`](https://github.com/pull-stream/pull-stream) interface to [`levelup`][levelup] with read streams, write streams and realtime (tail/live) reads. +Add a `ttl` (time-to-live) option to [`levelup`][levelup], [`level-sublevel`][level-sublevel] or [`level-spaces`][level-spaces]. Also respects [`level-lock`][level-lock]. -### [`level-live-stream`][level-live-stream] +### [`level-live-cache`][level-live-cache] -[![Last commit](https://img.shields.io/github/last-commit/dominictarr/level-live-stream)](https://github.com/dominictarr/level-live-stream) [![Contributors](https://img.shields.io/github/contributors/dominictarr/level-live-stream?color=brightgreen)](https://github.com/dominictarr/level-live-stream/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-live-cache)](https://www.npmjs.com/package/level-live-cache) [![npm downloads](https://img.shields.io/npm/dw/level-live-cache)](https://www.npmjs.com/package/level-live-cache) [![License](https://img.shields.io/npm/l/level-live-cache?color=blue)](https://www.npmjs.com/package/level-live-cache) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-live-cache)](https://github.com/juliangruber/level-live-cache) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-live-cache?color=blue)](https://github.com/juliangruber/level-live-cache/graphs/contributors) -Like `db.createReadStream()` except it's live / tailable. i.e. instead of ending, it will stay open and stream changes to the database as they are inserted. +An in-memory cache that keeps up to date with its source. -### [`level-live`][level-live] +### [`level-lru-cache`][level-lru-cache] -[![Last commit](https://img.shields.io/github/last-commit/voltraco/level-live)](https://github.com/voltraco/level-live) [![Contributors](https://img.shields.io/github/contributors/voltraco/level-live?color=brightgreen)](https://github.com/voltraco/level-live/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-lru-cache)](https://www.npmjs.com/package/level-lru-cache) [![npm downloads](https://img.shields.io/npm/dw/level-lru-cache)](https://www.npmjs.com/package/level-lru-cache) [![License](https://img.shields.io/npm/l/level-lru-cache?color=blue)](https://www.npmjs.com/package/level-lru-cache) [![Last commit](https://img.shields.io/github/last-commit/kemitchell/level-lru-cache.js)](https://github.com/kemitchell/level-lru-cache.js) [![Contributors](https://img.shields.io/github/contributors/kemitchell/level-lru-cache.js?color=blue)](https://github.com/kemitchell/level-lru-cache.js/graphs/contributors) -Simple, light and correct live read stream implementation. NB. Uses an undefined streams version. +Simple LRU cache. -### [`level-livefeed`][level-livefeed] +### [`level-ttl-cache`][level-ttl-cache] -[![Last commit](https://img.shields.io/github/last-commit/Raynos/level-livefeed)](https://github.com/Raynos/level-livefeed) [![Contributors](https://img.shields.io/github/contributors/Raynos/level-livefeed?color=brightgreen)](https://github.com/Raynos/level-livefeed/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-ttl-cache)](https://www.npmjs.com/package/level-ttl-cache) [![npm downloads](https://img.shields.io/npm/dw/level-ttl-cache)](https://www.npmjs.com/package/level-ttl-cache) [![License](https://img.shields.io/npm/l/level-ttl-cache?color=blue)](https://www.npmjs.com/package/level-ttl-cache) [![Last commit](https://img.shields.io/github/last-commit/rvagg/level-ttl-cache)](https://github.com/rvagg/level-ttl-cache) [![Contributors](https://img.shields.io/github/contributors/rvagg/level-ttl-cache?color=blue)](https://github.com/rvagg/level-ttl-cache/graphs/contributors) -A live query of a range in [`levelup`][levelup]. Similar to [`level-live-stream`][level-live-stream] but with a streams2 interface. +A pass-through cache for arbitrary objects or binary data using LevelDB, expired by a TTL. -### [`level-range`][level-range] +### [`level-cache`][level-cache] -[![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-range)](https://github.com/juliangruber/level-range) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-range?color=brightgreen)](https://github.com/juliangruber/level-range/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-cache)](https://www.npmjs.com/package/level-cache) [![npm downloads](https://img.shields.io/npm/dw/level-cache)](https://www.npmjs.com/package/level-cache) [![License](https://img.shields.io/npm/l/level-cache?color=blue)](https://www.npmjs.com/package/level-cache) [![Last commit](https://img.shields.io/github/last-commit/Raynos/level-cache)](https://github.com/Raynos/level-cache) [![Contributors](https://img.shields.io/github/contributors/Raynos/level-cache?color=blue)](https://github.com/Raynos/level-cache/graphs/contributors) -Find all K/V-pairs prefixed by a certain key. Streams1. +A caching module you can place in front of a [`levelup`][levelup] database. It will cache a subset of the database in an in-memory LRU cache based on configuration. It has an optional synchronous API which will return from the cache only. -### [`level-cursor`][level-cursor] +### [`levelup-cache`][levelup-cache] -[![Last commit](https://img.shields.io/github/last-commit/kordon/cursor)](https://github.com/kordon/cursor) [![Contributors](https://img.shields.io/github/contributors/kordon/cursor?color=brightgreen)](https://github.com/kordon/cursor/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/levelup-cache)](https://www.npmjs.com/package/levelup-cache) [![npm downloads](https://img.shields.io/npm/dw/levelup-cache)](https://www.npmjs.com/package/levelup-cache) [![License](https://img.shields.io/npm/l/levelup-cache?color=blue)](https://www.npmjs.com/package/levelup-cache) [![Last commit](https://img.shields.io/github/last-commit/TehShrike/levelup-cache)](https://github.com/TehShrike/levelup-cache) [![Contributors](https://img.shields.io/github/contributors/TehShrike/levelup-cache?color=blue)](https://github.com/TehShrike/levelup-cache/graphs/contributors) -A stream "cursor" to iterate through a ReadStream / KeyStream / ValueStream. +Use [`levelup`][levelup] to cache remote data. -### [`level-glob`][level-glob] +## Atomicity -[![Last commit](https://img.shields.io/github/last-commit/vweevers/level-glob)](https://github.com/vweevers/level-glob) [![Contributors](https://img.shields.io/github/contributors/vweevers/level-glob?color=brightgreen)](https://github.com/vweevers/level-glob/graphs/contributors) +### [`level-lock`][level-lock] -A streams2 read stream filtered and ordered by glob patterns. Keys in the database should be unix-like paths. +[![npm package version](https://img.shields.io/npm/v/level-lock)](https://www.npmjs.com/package/level-lock) [![npm downloads](https://img.shields.io/npm/dw/level-lock)](https://www.npmjs.com/package/level-lock) [![License](https://img.shields.io/npm/l/level-lock?color=blue)](https://www.npmjs.com/package/level-lock) [![Last commit](https://img.shields.io/github/last-commit/substack/level-lock)](https://github.com/substack/level-lock) [![Contributors](https://img.shields.io/github/contributors/substack/level-lock?color=blue)](https://github.com/substack/level-lock/graphs/contributors) -## Iterators +In-memory advisory read/write locks for [`levelup`][levelup] keys. -**Modules that operate on [`abstract-leveldown`][abstract-leveldown] iterators.** +### [`level-mutex`][level-mutex] -### [`level-concat-iterator`][level-concat-iterator] +[![npm package version](https://img.shields.io/npm/v/level-mutex)](https://www.npmjs.com/package/level-mutex) [![npm downloads](https://img.shields.io/npm/dw/level-mutex)](https://www.npmjs.com/package/level-mutex) [![License](https://img.shields.io/npm/l/level-mutex?color=blue)](https://www.npmjs.com/package/level-mutex) [![Last commit](https://img.shields.io/github/last-commit/mikeal/level-mutex)](https://github.com/mikeal/level-mutex) [![Contributors](https://img.shields.io/github/contributors/mikeal/level-mutex?color=blue)](https://github.com/mikeal/level-mutex/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/Level/concat-iterator)](https://github.com/Level/concat-iterator) [![Contributors](https://img.shields.io/github/contributors/Level/concat-iterator?color=brightgreen)](https://github.com/Level/concat-iterator/graphs/contributors) +Mutex read/write lock for [`levelup`][levelup]. -Concatenate items from an iterator into an array. +### [`level-updater`][level-updater] -### [`level-iterator-stream`][level-iterator-stream] +[![npm package version](https://img.shields.io/npm/v/level-updater)](https://www.npmjs.com/package/level-updater) [![npm downloads](https://img.shields.io/npm/dw/level-updater)](https://www.npmjs.com/package/level-updater) [![License](https://img.shields.io/npm/l/level-updater?color=blue)](https://www.npmjs.com/package/level-updater) [![Last commit](https://img.shields.io/github/last-commit/hughsk/level-updater)](https://github.com/hughsk/level-updater) [![Contributors](https://img.shields.io/github/contributors/hughsk/level-updater?color=blue)](https://github.com/hughsk/level-updater/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/Level/iterator-stream)](https://github.com/Level/iterator-stream) [![Contributors](https://img.shields.io/github/contributors/Level/iterator-stream?color=brightgreen)](https://github.com/Level/iterator-stream/graphs/contributors) +Update keys without overlapping changes - makes it possible to implement an atomic incrementer, JSON merger, etc. -Turn an [`abstract-leveldown`][abstract-leveldown] iterator into a readable stream. Included in [`levelup`][levelup]. +### [`levelplus`][levelplus] -### [`levelup-async-iterator`][levelup-async-iterator] +[![npm package version](https://img.shields.io/npm/v/levelplus)](https://www.npmjs.com/package/levelplus) [![npm downloads](https://img.shields.io/npm/dw/levelplus)](https://www.npmjs.com/package/levelplus) [![License](https://img.shields.io/npm/l/levelplus?color=blue)](https://www.npmjs.com/package/levelplus) [![Last commit](https://img.shields.io/github/last-commit/https://github.com/eugeneware/levelplus)](https://github.com/https://github.com/eugeneware/levelplus) [![Contributors](https://img.shields.io/github/contributors/https://github.com/eugeneware/levelplus?color=blue)](https://github.com/https://github.com/eugeneware/levelplus/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/MeirionHughes/levelup-async-iterator)](https://github.com/MeirionHughes/levelup-async-iterator) [![Contributors](https://img.shields.io/github/contributors/MeirionHughes/levelup-async-iterator?color=brightgreen)](https://github.com/MeirionHughes/levelup-async-iterator/graphs/contributors) +Adds atomic updates, increments, array pushes, set additions and user-defined atomic operations to [`levelup`][levelup]. -Add an `iterator()` method to [`levelup`][levelup] with [`Symbol.asyncIterator`](https://github.com/tc39/proposal-async-iteration). NB. Conflicts with [`iterator()`](https://github.com/Level/levelup/#iterator) added in `levelup@3.1.0`. +### [`level-atomics`][level-atomics] -### [`level-iterator`][level-iterator] +[![npm package version](https://img.shields.io/npm/v/level-atomics)](https://www.npmjs.com/package/level-atomics) [![npm downloads](https://img.shields.io/npm/dw/level-atomics)](https://www.npmjs.com/package/level-atomics) [![License](https://img.shields.io/npm/l/level-atomics?color=blue)](https://www.npmjs.com/package/level-atomics) [![Last commit](https://img.shields.io/github/last-commit/IndigoUnited/node-level-atomics)](https://github.com/IndigoUnited/node-level-atomics) [![Contributors](https://img.shields.io/github/contributors/IndigoUnited/node-level-atomics?color=blue)](https://github.com/IndigoUnited/node-level-atomics/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/vweevers/level-iterator)](https://github.com/vweevers/level-iterator) [![Contributors](https://img.shields.io/github/contributors/vweevers/level-iterator?color=brightgreen)](https://github.com/vweevers/level-iterator/graphs/contributors) +Add (parallel) atomic operations like `insert`, `replace`, `increment` and `decrement` to [`levelup`][levelup]. -Decoding iterator for [`levelup`][levelup] instances. Wraps iterators like [`level-iterator-stream`][level-iterator-stream] does. NB. Not compatible with `levelup` >= 2 due to encodings having moved out to [`encoding-down`][encoding-down]. PR welcome. +### [`level-transactions`][level-transactions] -## Hooks +[![npm package version](https://img.shields.io/npm/v/level-transactions)](https://www.npmjs.com/package/level-transactions) [![npm downloads](https://img.shields.io/npm/dw/level-transactions)](https://www.npmjs.com/package/level-transactions) [![License](https://img.shields.io/npm/l/level-transactions?color=blue)](https://www.npmjs.com/package/level-transactions) [![Last commit](https://img.shields.io/github/last-commit/cshum/level-transactions)](https://github.com/cshum/level-transactions) [![Contributors](https://img.shields.io/github/contributors/cshum/level-transactions?color=blue)](https://github.com/cshum/level-transactions/graphs/contributors) -**Low-level utilities for hooking into a [`levelup`][levelup] instance.** +Transaction layer for [`levelup`][levelup]. -### [`level-events`][level-events] +## Jobs -[![Last commit](https://img.shields.io/github/last-commit/mafintosh/level-events)](https://github.com/mafintosh/level-events) [![Contributors](https://img.shields.io/github/contributors/mafintosh/level-events?color=brightgreen)](https://github.com/mafintosh/level-events/graphs/contributors) +### [`level-schedule`][level-schedule] -Get an event everytime something is written / read / deleted using [`levelup`][levelup]. +[![npm package version](https://img.shields.io/npm/v/level-schedule)](https://www.npmjs.com/package/level-schedule) [![npm downloads](https://img.shields.io/npm/dw/level-schedule)](https://www.npmjs.com/package/level-schedule) [![License](https://img.shields.io/npm/l/level-schedule?color=blue)](https://www.npmjs.com/package/level-schedule) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-schedule)](https://github.com/juliangruber/level-schedule) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-schedule?color=blue)](https://github.com/juliangruber/level-schedule/graphs/contributors) -### [`level-hookdown`][level-hookdown] +A durable job scheduler. -[![Last commit](https://img.shields.io/github/last-commit/hypermodules/level-hookdown)](https://github.com/hypermodules/level-hookdown) [![Contributors](https://img.shields.io/github/contributors/hypermodules/level-hookdown?color=brightgreen)](https://github.com/hypermodules/level-hookdown/graphs/contributors) +### [`level-jobs`][level-jobs] -Simple [`levelup`][levelup] hooks. +[![npm package version](https://img.shields.io/npm/v/level-jobs)](https://www.npmjs.com/package/level-jobs) [![npm downloads](https://img.shields.io/npm/dw/level-jobs)](https://www.npmjs.com/package/level-jobs) [![License](https://img.shields.io/npm/l/level-jobs?color=blue)](https://www.npmjs.com/package/level-jobs) [![Last commit](https://img.shields.io/github/last-commit/pgte/level-jobs)](https://github.com/pgte/level-jobs) [![Contributors](https://img.shields.io/github/contributors/pgte/level-jobs?color=blue)](https://github.com/pgte/level-jobs/graphs/contributors) -### [`level-post`][level-post] +Job Queue in [`levelup`][levelup]. -[![Last commit](https://img.shields.io/github/last-commit/dominictarr/level-post)](https://github.com/dominictarr/level-post) [![Contributors](https://img.shields.io/github/contributors/dominictarr/level-post?color=brightgreen)](https://github.com/dominictarr/level-post/graphs/contributors) +### [`batchdb`][batchdb] -Consistent post hooks for [`levelup`][levelup]. +[![npm package version](https://img.shields.io/npm/v/batchdb)](https://www.npmjs.com/package/batchdb) [![npm downloads](https://img.shields.io/npm/dw/batchdb)](https://www.npmjs.com/package/batchdb) [![License](https://img.shields.io/npm/l/batchdb?color=blue)](https://www.npmjs.com/package/batchdb) [![Last commit](https://img.shields.io/github/last-commit/substack/batchdb)](https://github.com/substack/batchdb) [![Contributors](https://img.shields.io/github/contributors/substack/batchdb?color=blue)](https://github.com/substack/batchdb/graphs/contributors) -### [`level-condition`][level-condition] +[`levelup`][levelup] and disk storage for queued batch jobs. -[![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-condition)](https://github.com/juliangruber/level-condition) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-condition?color=brightgreen)](https://github.com/juliangruber/level-condition/graphs/contributors) +## File System -Get notified when a condition is triggered inside a [`levelup`][levelup] instance. +### [`level-filesystem`][level-filesystem] -### [`level-hooks`][level-hooks] +[![npm package version](https://img.shields.io/npm/v/level-filesystem)](https://www.npmjs.com/package/level-filesystem) [![npm downloads](https://img.shields.io/npm/dw/level-filesystem)](https://www.npmjs.com/package/level-filesystem) [![License](https://img.shields.io/npm/l/level-filesystem?color=blue)](https://www.npmjs.com/package/level-filesystem) [![Last commit](https://img.shields.io/github/last-commit/mafintosh/level-filesystem)](https://github.com/mafintosh/level-filesystem) [![Contributors](https://img.shields.io/github/contributors/mafintosh/level-filesystem?color=blue)](https://github.com/mafintosh/level-filesystem/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/dominictarr/level-hooks)](https://github.com/dominictarr/level-hooks) [![Contributors](https://img.shields.io/github/contributors/dominictarr/level-hooks?color=brightgreen)](https://github.com/dominictarr/level-hooks/graphs/contributors) +Full implementation of the Node.js `fs` module on top of [`levelup`][levelup]. -Implements a hook mechanism that allows you to intercept `put`, `delete` and `batch` operations. You can then turn those operations into batches. Useful if you want to turn a `put` into an atomic batch for say an automatic map operation.

NB. Author recommends using [`level-sublevel`][level-sublevel] instead of `level-hooks` directly. Note that [`level-sublevel`][level-sublevel] is not maintained. +### [`browserify-fs`][browserify-fs] -## Range Options +[![npm package version](https://img.shields.io/npm/v/browserify-fs)](https://www.npmjs.com/package/browserify-fs) [![npm downloads](https://img.shields.io/npm/dw/browserify-fs)](https://www.npmjs.com/package/browserify-fs) [![License](https://img.shields.io/npm/l/browserify-fs?color=blue)](https://www.npmjs.com/package/browserify-fs) [![Last commit](https://img.shields.io/github/last-commit/mafintosh/browserify-fs)](https://github.com/mafintosh/browserify-fs) [![Contributors](https://img.shields.io/github/contributors/mafintosh/browserify-fs?color=blue)](https://github.com/mafintosh/browserify-fs/graphs/contributors) -**Utilities for working with range options, known as ltgt(e), common to [`levelup`][levelup] streams and [`abstract-leveldown`][abstract-leveldown] iterators.** +[`level-filesystem`][level-filesystem] as drop-in `fs` replacement for the browser, to be used with `browserify`. -### [`ltgt`][ltgt] +### [`level-fs`][level-fs] -[![Last commit](https://img.shields.io/github/last-commit/dominictarr/ltgt)](https://github.com/dominictarr/ltgt) [![Contributors](https://img.shields.io/github/contributors/dominictarr/ltgt?color=brightgreen)](https://github.com/dominictarr/ltgt/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-fs)](https://www.npmjs.com/package/level-fs) [![npm downloads](https://img.shields.io/npm/dw/level-fs)](https://www.npmjs.com/package/level-fs) [![License](https://img.shields.io/npm/l/level-fs?color=blue)](https://www.npmjs.com/package/level-fs) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-fs)](https://github.com/juliangruber/level-fs) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-fs?color=blue)](https://github.com/juliangruber/level-fs/graphs/contributors) -Tool belt to find lower or upper bounds, compare and filter keys and more. +Node's `fs` module with [`levelup`][levelup] as backend. -### [`level-option-wrap`][level-option-wrap] +### [`level-fs-browser`][level-fs-browser] -[![Last commit](https://img.shields.io/github/last-commit/substack/level-option-wrap)](https://github.com/substack/level-option-wrap) [![Contributors](https://img.shields.io/github/contributors/substack/level-option-wrap?color=brightgreen)](https://github.com/substack/level-option-wrap/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-fs-browser)](https://www.npmjs.com/package/level-fs-browser) [![npm downloads](https://img.shields.io/npm/dw/level-fs-browser)](https://www.npmjs.com/package/level-fs-browser) [![License](https://img.shields.io/npm/l/level-fs-browser?color=blue)](https://www.npmjs.com/package/level-fs-browser) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-fs-browser)](https://github.com/juliangruber/level-fs-browser) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-fs-browser?color=blue)](https://github.com/juliangruber/level-fs-browser/graphs/contributors) -Wrap `ltgt` options with functions. Expose range options without leaking information about your internal key representations. +[`level-fs`][level-fs] as drop-in `fs` replacement for the browser, to be used with `browserify`. -### [`interval-to-ltgt`][interval-to-ltgt] +### [`level-store`][level-store] -[![Last commit](https://img.shields.io/github/last-commit/nowsecure/interval-to-ltgt)](https://github.com/nowsecure/interval-to-ltgt) [![Contributors](https://img.shields.io/github/contributors/nowsecure/interval-to-ltgt?color=brightgreen)](https://github.com/nowsecure/interval-to-ltgt/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-store)](https://www.npmjs.com/package/level-store) [![npm downloads](https://img.shields.io/npm/dw/level-store)](https://www.npmjs.com/package/level-store) [![License](https://img.shields.io/npm/l/level-store?color=blue)](https://www.npmjs.com/package/level-store) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-store)](https://github.com/juliangruber/level-store) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-store?color=blue)](https://github.com/juliangruber/level-store/graphs/contributors) -Convert an interval string to an `ltgt` object. This is the counterpart to [`ltgt-to-interval`][ltgt-to-interval]. +A streaming storage engine based on [`levelup`][levelup]. -### [`ltgt-to-interval`][ltgt-to-interval] +### [`level-serve`][level-serve] -[![Last commit](https://img.shields.io/github/last-commit/juliangruber/ltgt-to-interval)](https://github.com/juliangruber/ltgt-to-interval) [![Contributors](https://img.shields.io/github/contributors/juliangruber/ltgt-to-interval?color=brightgreen)](https://github.com/juliangruber/ltgt-to-interval/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-serve)](https://www.npmjs.com/package/level-serve) [![npm downloads](https://img.shields.io/npm/dw/level-serve)](https://www.npmjs.com/package/level-serve) [![License](https://img.shields.io/npm/l/level-serve?color=blue)](https://www.npmjs.com/package/level-serve) [![Last commit](https://img.shields.io/github/last-commit/Wayla/level-serve)](https://github.com/Wayla/level-serve) [![Contributors](https://img.shields.io/github/contributors/Wayla/level-serve?color=blue)](https://github.com/Wayla/level-serve/graphs/contributors) -Convert an `ltgt` object to an interval string. This is the counterpart to [`interval-to-ltgt`][interval-to-ltgt]. +Streaming static file server based on [`levelup`][levelup]. -### [`range-emitter`][range-emitter] +### [`suckit`][suckit] -[![Last commit](https://img.shields.io/github/last-commit/jameskyburz/range-emitter)](https://github.com/jameskyburz/range-emitter) [![Contributors](https://img.shields.io/github/contributors/jameskyburz/range-emitter?color=brightgreen)](https://github.com/jameskyburz/range-emitter/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/suckit)](https://www.npmjs.com/package/suckit) [![npm downloads](https://img.shields.io/npm/dw/suckit)](https://www.npmjs.com/package/suckit) [![License](https://img.shields.io/npm/l/suckit?color=blue)](https://www.npmjs.com/package/suckit) [![Last commit](https://img.shields.io/github/last-commit/deoxxa/suckit)](https://github.com/deoxxa/suckit) [![Contributors](https://img.shields.io/github/contributors/deoxxa/suckit?color=blue)](https://github.com/deoxxa/suckit/graphs/contributors) -Range emitter. Publish keys and subscribe to ranges. +Expose a [`level-store`][level-store] over HTTP. -## Data Structures +### [`level-vinyl`][level-vinyl] -**Modules that utilize a specific key/value scheme to provide a higher-level data structure.** +[![npm package version](https://img.shields.io/npm/v/level-vinyl)](https://www.npmjs.com/package/level-vinyl) [![npm downloads](https://img.shields.io/npm/dw/level-vinyl)](https://www.npmjs.com/package/level-vinyl) [![License](https://img.shields.io/npm/l/level-vinyl?color=blue)](https://www.npmjs.com/package/level-vinyl) [![Last commit](https://img.shields.io/github/last-commit/vweevers/level-vinyl)](https://github.com/vweevers/level-vinyl) [![Contributors](https://img.shields.io/github/contributors/vweevers/level-vinyl?color=blue)](https://github.com/vweevers/level-vinyl/graphs/contributors) -### [`merkle-dag`][merkle-dag] +[Vinyl](https://github.com/gulpjs/vinyl-fs) adapter and blob store. Saves file contents in a content addressable blob store, file metadata in [`levelup`][levelup]. -[![Last commit](https://img.shields.io/github/last-commit/mafintosh/merkle-dag)](https://github.com/mafintosh/merkle-dag) [![Contributors](https://img.shields.io/github/contributors/mafintosh/merkle-dag?color=brightgreen)](https://github.com/mafintosh/merkle-dag/graphs/contributors) +### [`level-blob`][level-blob] -Merkle DAG on top of LevelDB +[![npm package version](https://img.shields.io/npm/v/level-blob)](https://www.npmjs.com/package/level-blob) [![npm downloads](https://img.shields.io/npm/dw/level-blob)](https://www.npmjs.com/package/level-blob) [![License](https://img.shields.io/npm/l/level-blob?color=blue)](https://www.npmjs.com/package/level-blob) [![Last commit](https://img.shields.io/github/last-commit/crodas/level-blob)](https://github.com/crodas/level-blob) [![Contributors](https://img.shields.io/github/contributors/crodas/level-blob?color=blue)](https://github.com/crodas/level-blob/graphs/contributors) -### [`merkle-patricia-tree`][merkle-patricia-tree] +Store blobs in [`levelup`][levelup] -[![Last commit](https://img.shields.io/github/last-commit/ethereumjs/merkle-patricia-tree)](https://github.com/ethereumjs/merkle-patricia-tree) [![Contributors](https://img.shields.io/github/contributors/ethereumjs/merkle-patricia-tree?color=brightgreen)](https://github.com/ethereumjs/merkle-patricia-tree/graphs/contributors) +### [`level-blob-store`][level-blob-store] -Implementation of the modified merkle patricia tree as specified in [Ethereum's yellow paper](http://gavwood.com/Paper.pdf). +[![npm package version](https://img.shields.io/npm/v/level-blob-store)](https://www.npmjs.com/package/level-blob-store) [![npm downloads](https://img.shields.io/npm/dw/level-blob-store)](https://www.npmjs.com/package/level-blob-store) [![License](https://img.shields.io/npm/l/level-blob-store?color=blue)](https://www.npmjs.com/package/level-blob-store) [![Last commit](https://img.shields.io/github/last-commit/diasdavid/level-blob-store)](https://github.com/diasdavid/level-blob-store) [![Contributors](https://img.shields.io/github/contributors/diasdavid/level-blob-store?color=blue)](https://github.com/diasdavid/level-blob-store/graphs/contributors) -### [`level-array`][level-array] +An [`abstract-blob-store`](https://github.com/maxogden/abstract-blob-store) using LevelDB as the storage backend -[![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-array)](https://github.com/juliangruber/level-array) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-array?color=brightgreen)](https://github.com/juliangruber/level-array/graphs/contributors) +### [`level-pull-blob-store`][level-pull-blob-store] -The array datatype inside [`levelup`][levelup]. +[![npm package version](https://img.shields.io/npm/v/level-pull-blob-store)](https://www.npmjs.com/package/level-pull-blob-store) [![npm downloads](https://img.shields.io/npm/dw/level-pull-blob-store)](https://www.npmjs.com/package/level-pull-blob-store) [![License](https://img.shields.io/npm/l/level-pull-blob-store?color=blue)](https://www.npmjs.com/package/level-pull-blob-store) [![Last commit](https://img.shields.io/github/last-commit/ipfs/js-level-pull-blob-store)](https://github.com/ipfs/js-level-pull-blob-store) [![Contributors](https://img.shields.io/github/contributors/ipfs/js-level-pull-blob-store?color=blue)](https://github.com/ipfs/js-level-pull-blob-store/graphs/contributors) -### [`level-set`][level-set] +A [`pull-blob-store`](https://github.com/ipfs/interface-pull-blob-store) implementation backed by LevelDB. -[![Last commit](https://img.shields.io/github/last-commit/maiah/level-set)](https://github.com/maiah/level-set) [![Contributors](https://img.shields.io/github/contributors/maiah/level-set?color=brightgreen)](https://github.com/maiah/level-set/graphs/contributors) +### [`level-server`][level-server] -Add a `set` method to [`levelup`][levelup] for saving objects in a tree-like structure. +[![npm package version](https://img.shields.io/npm/v/level-server)](https://www.npmjs.com/package/level-server) [![npm downloads](https://img.shields.io/npm/dw/level-server)](https://www.npmjs.com/package/level-server) [![License](https://img.shields.io/npm/l/level-server?color=blue)](https://www.npmjs.com/package/level-server) [![Last commit](https://img.shields.io/github/last-commit/Wayla/level-server)](https://github.com/Wayla/level-server) [![Contributors](https://img.shields.io/github/contributors/Wayla/level-server?color=blue)](https://github.com/Wayla/level-server/graphs/contributors) -### [`level-push`][level-push] +Standalone LevelDB file server based on [`level-serve`][level-serve], [`multilevel`][multilevel] and [`level-sublevel`][level-sublevel]. -[![Last commit](https://img.shields.io/github/last-commit/maiah/level-push)](https://github.com/maiah/level-push) [![Contributors](https://img.shields.io/github/contributors/maiah/level-push?color=brightgreen)](https://github.com/maiah/level-push/graphs/contributors) +## Utilities -Add a `push` method to [`levelup`][levelup] for saving objects using [`level-set`][level-set] with auto-generated UUID. +### [`level-transcoder`][level-transcoder] -### [`level-version`][level-version] +[![npm package version](https://img.shields.io/npm/v/level-transcoder)](https://www.npmjs.com/package/level-transcoder) [![npm downloads](https://img.shields.io/npm/dw/level-transcoder)](https://www.npmjs.com/package/level-transcoder) [![License](https://img.shields.io/npm/l/level-transcoder?color=blue)](https://www.npmjs.com/package/level-transcoder) [![Last commit](https://img.shields.io/github/last-commit/Level/transcoder)](https://github.com/Level/transcoder) [![Contributors](https://img.shields.io/github/contributors/Level/transcoder?color=blue)](https://github.com/Level/transcoder/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/brycebaril/level-version)](https://github.com/brycebaril/level-version) [![Contributors](https://img.shields.io/github/contributors/brycebaril/level-version?color=brightgreen)](https://github.com/brycebaril/level-version/graphs/contributors) +Encode data with built-in or custom encodings. Used in [`abstract-level`][abstract-level]. -Store and retrieve versioned data in [`levelup`][levelup]. +### [`level-test`][level-test] -### [`level-queue-type`][level-queue-type] +[![npm package version](https://img.shields.io/npm/v/level-test)](https://www.npmjs.com/package/level-test) [![npm downloads](https://img.shields.io/npm/dw/level-test)](https://www.npmjs.com/package/level-test) [![License](https://img.shields.io/npm/l/level-test?color=blue)](https://www.npmjs.com/package/level-test) [![Last commit](https://img.shields.io/github/last-commit/Level/level-test)](https://github.com/Level/level-test) [![Contributors](https://img.shields.io/github/contributors/Level/level-test?color=blue)](https://github.com/Level/level-test/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/mcollina/level-queue-type)](https://github.com/mcollina/level-queue-type) [![Contributors](https://img.shields.io/github/contributors/mcollina/level-queue-type?color=brightgreen)](https://github.com/mcollina/level-queue-type/graphs/contributors) +Inject temporary and isolated [`abstract-leveldown`][abstract-leveldown] stores ([`leveldown`][leveldown], [`level-js`][level-js], [`memdown`][memdown] or custom) into your tests. -The queue datatype inside [`levelup`][levelup]. +### [`level-compose`][level-compose] -### [`level-q`][level-q] +[![npm package version](https://img.shields.io/npm/v/level-compose)](https://www.npmjs.com/package/level-compose) [![npm downloads](https://img.shields.io/npm/dw/level-compose)](https://www.npmjs.com/package/level-compose) [![License](https://img.shields.io/npm/l/level-compose?color=blue)](https://www.npmjs.com/package/level-compose) [![Last commit](https://img.shields.io/github/last-commit/Level/compose)](https://github.com/Level/compose) [![Contributors](https://img.shields.io/github/contributors/Level/compose?color=blue)](https://github.com/Level/compose/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/eugeneware/level-q)](https://github.com/eugeneware/level-q) [![Contributors](https://img.shields.io/github/contributors/eugeneware/level-q?color=brightgreen)](https://github.com/eugeneware/level-q/graphs/contributors) +Compose a database factory from [`abstract-leveldown`][abstract-leveldown] and [`levelup`][levelup] layers. TBD if still relevant after [`abstract-level`][abstract-level]. -Priority queuing for [`levelup`][levelup]. +### [`level-exists`][level-exists] -### [`qool`][qool] +[![npm package version](https://img.shields.io/npm/v/level-exists)](https://www.npmjs.com/package/level-exists) [![npm downloads](https://img.shields.io/npm/dw/level-exists)](https://www.npmjs.com/package/level-exists) [![License](https://img.shields.io/npm/l/level-exists?color=blue)](https://www.npmjs.com/package/level-exists) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-exists)](https://github.com/juliangruber/level-exists) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-exists?color=blue)](https://github.com/juliangruber/level-exists/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/kessler/qool)](https://github.com/kessler/qool) [![Contributors](https://img.shields.io/github/contributors/kessler/qool?color=brightgreen)](https://github.com/kessler/qool/graphs/contributors) +Check if a datum exists without reading its value. -A queue backed by [`levelup`][levelup], durable and FIFO. +### [`level-move`][level-move] -### [`level-trie`][level-trie] +[![npm package version](https://img.shields.io/npm/v/level-move)](https://www.npmjs.com/package/level-move) [![npm downloads](https://img.shields.io/npm/dw/level-move)](https://www.npmjs.com/package/level-move) [![License](https://img.shields.io/npm/l/level-move?color=blue)](https://www.npmjs.com/package/level-move) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-move)](https://github.com/juliangruber/level-move) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-move?color=blue)](https://github.com/juliangruber/level-move/graphs/contributors) + +Move a value to another key. + +### [`level-capped`][level-capped] + +[![npm package version](https://img.shields.io/npm/v/level-capped)](https://www.npmjs.com/package/level-capped) [![npm downloads](https://img.shields.io/npm/dw/level-capped)](https://www.npmjs.com/package/level-capped) [![License](https://img.shields.io/npm/l/level-capped?color=blue)](https://www.npmjs.com/package/level-capped) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-capped)](https://github.com/juliangruber/level-capped) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-capped?color=blue)](https://github.com/juliangruber/level-capped/graphs/contributors) + +Capped collections. + +### [`level-create`][level-create] + +[![npm package version](https://img.shields.io/npm/v/level-create)](https://www.npmjs.com/package/level-create) [![npm downloads](https://img.shields.io/npm/dw/level-create)](https://www.npmjs.com/package/level-create) [![License](https://img.shields.io/npm/l/level-create?color=blue)](https://www.npmjs.com/package/level-create) [![Last commit](https://img.shields.io/github/last-commit/substack/level-create)](https://github.com/substack/level-create) [![Contributors](https://img.shields.io/github/contributors/substack/level-create?color=blue)](https://github.com/substack/level-create/graphs/contributors) + +Insert a key if and only if it doesn't already exist + +### [`level-create-batch`][level-create-batch] + +[![npm package version](https://img.shields.io/npm/v/level-create-batch)](https://www.npmjs.com/package/level-create-batch) [![npm downloads](https://img.shields.io/npm/dw/level-create-batch)](https://www.npmjs.com/package/level-create-batch) [![License](https://img.shields.io/npm/l/level-create-batch?color=blue)](https://www.npmjs.com/package/level-create-batch) [![Last commit](https://img.shields.io/github/last-commit/substack/level-create-batch)](https://github.com/substack/level-create-batch) [![Contributors](https://img.shields.io/github/contributors/substack/level-create-batch?color=blue)](https://github.com/substack/level-create-batch/graphs/contributors) + +Insert a batch of keys if and only if none of the keys already exist + +### [`level-modify`][level-modify] + +[![npm package version](https://img.shields.io/npm/v/level-modify)](https://www.npmjs.com/package/level-modify) [![npm downloads](https://img.shields.io/npm/dw/level-modify)](https://www.npmjs.com/package/level-modify) [![License](https://img.shields.io/npm/l/level-modify?color=blue)](https://www.npmjs.com/package/level-modify) [![Last commit](https://img.shields.io/github/last-commit/dskrepps/level-modify)](https://github.com/dskrepps/level-modify) [![Contributors](https://img.shields.io/github/contributors/dskrepps/level-modify?color=blue)](https://github.com/dskrepps/level-modify/graphs/contributors) + +Modify an existing key in [`levelup`][levelup]. Uses [`level-lock`][level-lock]. See also [`level-create`][level-create] and [`level-move`][level-move]. + +### [`level-random`][level-random] + +[![npm package version](https://img.shields.io/npm/v/level-random)](https://www.npmjs.com/package/level-random) [![npm downloads](https://img.shields.io/npm/dw/level-random)](https://www.npmjs.com/package/level-random) [![License](https://img.shields.io/npm/l/level-random?color=blue)](https://www.npmjs.com/package/level-random) [![Last commit](https://img.shields.io/github/last-commit/michaelnisi/level-random)](https://github.com/michaelnisi/level-random) [![Contributors](https://img.shields.io/github/contributors/michaelnisi/level-random?color=blue)](https://github.com/michaelnisi/level-random/graphs/contributors) + +Read values of random [`levelup`][levelup] keys. + +### [`level-shared-batch`][level-shared-batch] + +[![npm package version](https://img.shields.io/npm/v/level-shared-batch)](https://www.npmjs.com/package/level-shared-batch) [![npm downloads](https://img.shields.io/npm/dw/level-shared-batch)](https://www.npmjs.com/package/level-shared-batch) [![License](https://img.shields.io/npm/l/level-shared-batch?color=blue)](https://www.npmjs.com/package/level-shared-batch) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-shared-batch)](https://github.com/juliangruber/level-shared-batch) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-shared-batch?color=blue)](https://github.com/juliangruber/level-shared-batch/graphs/contributors) + +Share batches and commit collectively + +### [`batchlevel`][batchlevel] + +[![npm package version](https://img.shields.io/npm/v/batchlevel)](https://www.npmjs.com/package/batchlevel) [![npm downloads](https://img.shields.io/npm/dw/batchlevel)](https://www.npmjs.com/package/batchlevel) [![License](https://img.shields.io/npm/l/batchlevel?color=blue)](https://www.npmjs.com/package/batchlevel) [![Last commit](https://img.shields.io/github/last-commit/biobricks/batchlevel)](https://github.com/biobricks/batchlevel) [![Contributors](https://img.shields.io/github/contributors/biobricks/batchlevel?color=blue)](https://github.com/biobricks/batchlevel/graphs/contributors) + +Batch all operations made on a [`levelup`][levelup] instance. Compatible with [`subleveldown`][subleveldown]. + +### [`ltest`][ltest] + +[![npm package version](https://img.shields.io/npm/v/ltest)](https://www.npmjs.com/package/ltest) [![npm downloads](https://img.shields.io/npm/dw/ltest)](https://www.npmjs.com/package/ltest) [![License](https://img.shields.io/npm/l/ltest?color=blue)](https://www.npmjs.com/package/ltest) [![Last commit](https://img.shields.io/github/last-commit/ralphtheninja/ltest)](https://github.com/ralphtheninja/ltest) [![Contributors](https://img.shields.io/github/contributors/ralphtheninja/ltest?color=blue)](https://github.com/ralphtheninja/ltest/graphs/contributors) + +Test function for [`levelup`][levelup] testing, based on [`level-test`][level-test]. + +### [`level-probe`][level-probe] + +[![npm package version](https://img.shields.io/npm/v/level-probe)](https://www.npmjs.com/package/level-probe) [![npm downloads](https://img.shields.io/npm/dw/level-probe)](https://www.npmjs.com/package/level-probe) [![License](https://img.shields.io/npm/l/level-probe?color=blue)](https://www.npmjs.com/package/level-probe) [![Last commit](https://img.shields.io/github/last-commit/vweevers/level-probe)](https://github.com/vweevers/level-probe) [![Contributors](https://img.shields.io/github/contributors/vweevers/level-probe?color=blue)](https://github.com/vweevers/level-probe/graphs/contributors) + +Get the first record in a range, using an iterator or stream. NB. Not compatible with latest [`levelup`][levelup]. + +### [`autolevel`][autolevel] + +[![npm package version](https://img.shields.io/npm/v/autolevel)](https://www.npmjs.com/package/autolevel) [![npm downloads](https://img.shields.io/npm/dw/autolevel)](https://www.npmjs.com/package/autolevel) [![License](https://img.shields.io/npm/l/autolevel?color=blue)](https://www.npmjs.com/package/autolevel) [![Last commit](https://img.shields.io/github/last-commit/finwo/autolevel)](https://github.com/finwo/autolevel) [![Contributors](https://img.shields.io/github/contributors/finwo/autolevel?color=blue)](https://github.com/finwo/autolevel/graphs/contributors) + +Automatically combine [`levelup`][levelup] with the right [`abstract-leveldown`][abstract-leveldown] store for your configuration. + +### [`level-lazy-open`][level-lazy-open] + +[![npm package version](https://img.shields.io/npm/v/level-lazy-open)](https://www.npmjs.com/package/level-lazy-open) [![npm downloads](https://img.shields.io/npm/dw/level-lazy-open)](https://www.npmjs.com/package/level-lazy-open) [![License](https://img.shields.io/npm/l/level-lazy-open?color=blue)](https://www.npmjs.com/package/level-lazy-open) [![Last commit](https://img.shields.io/github/last-commit/Level/lazy-open)](https://github.com/Level/lazy-open) [![Contributors](https://img.shields.io/github/contributors/Level/lazy-open?color=blue)](https://github.com/Level/lazy-open/graphs/contributors) + +Lazily open a leveldown compatible backend. + +### [`changeset`][changeset] + +[![npm package version](https://img.shields.io/npm/v/changeset)](https://www.npmjs.com/package/changeset) [![npm downloads](https://img.shields.io/npm/dw/changeset)](https://www.npmjs.com/package/changeset) [![License](https://img.shields.io/npm/l/changeset?color=blue)](https://www.npmjs.com/package/changeset) [![Last commit](https://img.shields.io/github/last-commit/eugeneware/changeset)](https://github.com/eugeneware/changeset) [![Contributors](https://img.shields.io/github/contributors/eugeneware/changeset?color=blue)](https://github.com/eugeneware/changeset/graphs/contributors) + +Generate diff changesets for javascript objects, decomposing diffs into a series of puts and delete operations. The format is compatible with [`levelup`][levelup] batch operations. Useful to synchronize objects. + +### [`levelup-defaults`][levelup-defaults] + +[![npm package version](https://img.shields.io/npm/v/levelup-defaults)](https://www.npmjs.com/package/levelup-defaults) [![npm downloads](https://img.shields.io/npm/dw/levelup-defaults)](https://www.npmjs.com/package/levelup-defaults) [![License](https://img.shields.io/npm/l/levelup-defaults?color=blue)](https://www.npmjs.com/package/levelup-defaults) [![Last commit](https://img.shields.io/github/last-commit/mafintosh/levelup-defaults)](https://github.com/mafintosh/levelup-defaults) [![Contributors](https://img.shields.io/github/contributors/mafintosh/levelup-defaults?color=blue)](https://github.com/mafintosh/levelup-defaults/graphs/contributors) + +Change the defaults settings on a [`levelup`][levelup] instance by returning a new [`levelup`][levelup] instance that uses the same [`abstract-leveldown`][abstract-leveldown] but different options. + +### [`level-methods`][level-methods] + +[![npm package version](https://img.shields.io/npm/v/level-methods)](https://www.npmjs.com/package/level-methods) [![npm downloads](https://img.shields.io/npm/dw/level-methods)](https://www.npmjs.com/package/level-methods) [![License](https://img.shields.io/npm/l/level-methods?color=blue)](https://www.npmjs.com/package/level-methods) [![Last commit](https://img.shields.io/github/last-commit/Wayla/level-methods)](https://github.com/Wayla/level-methods) [![Contributors](https://img.shields.io/github/contributors/Wayla/level-methods?color=blue)](https://github.com/Wayla/level-methods/graphs/contributors) + +Useful meta information about [`levelup`][levelup] methods. + +## Replication + +### [`level-2pc`][level-2pc] + +[![npm package version](https://img.shields.io/npm/v/level-2pc)](https://www.npmjs.com/package/level-2pc) [![npm downloads](https://img.shields.io/npm/dw/level-2pc)](https://www.npmjs.com/package/level-2pc) [![License](https://img.shields.io/npm/l/level-2pc?color=blue)](https://www.npmjs.com/package/level-2pc) [![Last commit](https://img.shields.io/github/last-commit/hij1nx/level-2pc)](https://github.com/hij1nx/level-2pc) [![Contributors](https://img.shields.io/github/contributors/hij1nx/level-2pc?color=blue)](https://github.com/hij1nx/level-2pc/graphs/contributors) + +A two-phase commit protocol. + +### [`level-couch-sync`][level-couch-sync] + +[![npm package version](https://img.shields.io/npm/v/level-couch-sync)](https://www.npmjs.com/package/level-couch-sync) [![npm downloads](https://img.shields.io/npm/dw/level-couch-sync)](https://www.npmjs.com/package/level-couch-sync) [![License](https://img.shields.io/npm/l/level-couch-sync?color=blue)](https://www.npmjs.com/package/level-couch-sync) [![Last commit](https://img.shields.io/github/last-commit/dominictarr/level-couch-sync)](https://github.com/dominictarr/level-couch-sync) [![Contributors](https://img.shields.io/github/contributors/dominictarr/level-couch-sync?color=blue)](https://github.com/dominictarr/level-couch-sync/graphs/contributors) + +Replicate from CouchDB to LevelDB. + +### [`level-master`][level-master] + +[![npm package version](https://img.shields.io/npm/v/level-master)](https://www.npmjs.com/package/level-master) [![npm downloads](https://img.shields.io/npm/dw/level-master)](https://www.npmjs.com/package/level-master) [![License](https://img.shields.io/npm/l/level-master?color=blue)](https://www.npmjs.com/package/level-master) [![Last commit](https://img.shields.io/github/last-commit/dominictarr/level-master)](https://github.com/dominictarr/level-master) [![Contributors](https://img.shields.io/github/contributors/dominictarr/level-master?color=blue)](https://github.com/dominictarr/level-master/graphs/contributors) + +Master-Slave replication for [`levelup`][levelup]. + +### [`level-merkle`][level-merkle] + +[![npm package version](https://img.shields.io/npm/v/level-merkle)](https://www.npmjs.com/package/level-merkle) [![npm downloads](https://img.shields.io/npm/dw/level-merkle)](https://www.npmjs.com/package/level-merkle) [![License](https://img.shields.io/npm/l/level-merkle?color=blue)](https://www.npmjs.com/package/level-merkle) [![Last commit](https://img.shields.io/github/last-commit/dominictarr/level-merkle)](https://github.com/dominictarr/level-merkle) [![Contributors](https://img.shields.io/github/contributors/dominictarr/level-merkle?color=blue)](https://github.com/dominictarr/level-merkle/graphs/contributors) + +Uses [merkle-trees](http://en.wikipedia.org/wiki/Merkle_tree) to replicate data sets. Data must be sets and currently, deletes are not supported. + +### [`level-replicate`][level-replicate] + +[![npm package version](https://img.shields.io/npm/v/level-replicate)](https://www.npmjs.com/package/level-replicate) [![npm downloads](https://img.shields.io/npm/dw/level-replicate)](https://www.npmjs.com/package/level-replicate) [![License](https://img.shields.io/npm/l/level-replicate?color=blue)](https://www.npmjs.com/package/level-replicate) [![Last commit](https://img.shields.io/github/last-commit/dominictarr/level-replicate)](https://github.com/dominictarr/level-replicate) [![Contributors](https://img.shields.io/github/contributors/dominictarr/level-replicate?color=blue)](https://github.com/dominictarr/level-replicate/graphs/contributors) + +Master-master replication with [`levelup`][levelup]. Implements scuttlebutt style handshake, syncs data, then replicates real time changes. + +### [`level-replicator`][level-replicator] + +[![npm package version](https://img.shields.io/npm/v/level-replicator)](https://www.npmjs.com/package/level-replicator) [![npm downloads](https://img.shields.io/npm/dw/level-replicator)](https://www.npmjs.com/package/level-replicator) [![License](https://img.shields.io/npm/l/level-replicator?color=blue)](https://www.npmjs.com/package/level-replicator) [![Last commit](https://img.shields.io/github/last-commit/hij1nx/level-replicator)](https://github.com/hij1nx/level-replicator) [![Contributors](https://img.shields.io/github/contributors/hij1nx/level-replicator?color=blue)](https://github.com/hij1nx/level-replicator/graphs/contributors) + +Master-master replication. Same goal as [`level-replicate`][level-replicate] but different approach. + +## Tools + +**CLI, GUI and web interfaces for exploring data.** + +### [`lev2`][lev2] + +[![npm package version](https://img.shields.io/npm/v/lev2)](https://www.npmjs.com/package/lev2) [![npm downloads](https://img.shields.io/npm/dw/lev2)](https://www.npmjs.com/package/lev2) [![License](https://img.shields.io/npm/l/lev2?color=blue)](https://www.npmjs.com/package/lev2) [![Last commit](https://img.shields.io/github/last-commit/maxlath/lev2)](https://github.com/maxlath/lev2) [![Contributors](https://img.shields.io/github/contributors/maxlath/lev2?color=blue)](https://github.com/maxlath/lev2/graphs/contributors) + +A complete REPL & CLI for managing LevelDB instances + +### [`level-in`][level-in] + +[![npm package version](https://img.shields.io/npm/v/level-in)](https://www.npmjs.com/package/level-in) [![npm downloads](https://img.shields.io/npm/dw/level-in)](https://www.npmjs.com/package/level-in) [![License](https://img.shields.io/npm/l/level-in?color=blue)](https://www.npmjs.com/package/level-in) [![Last commit](https://img.shields.io/github/last-commit/fergiemcdowall/level-in)](https://github.com/fergiemcdowall/level-in) [![Contributors](https://img.shields.io/github/contributors/fergiemcdowall/level-in?color=blue)](https://github.com/fergiemcdowall/level-in/graphs/contributors) + +A simple command-line utility for writing data to LevelDB via [`levelup`][levelup]. + +### [`level-out`][level-out] + +[![npm package version](https://img.shields.io/npm/v/level-out)](https://www.npmjs.com/package/level-out) [![npm downloads](https://img.shields.io/npm/dw/level-out)](https://www.npmjs.com/package/level-out) [![License](https://img.shields.io/npm/l/level-out?color=blue)](https://www.npmjs.com/package/level-out) [![Last commit](https://img.shields.io/github/last-commit/fergiemcdowall/level-out)](https://github.com/fergiemcdowall/level-out) [![Contributors](https://img.shields.io/github/contributors/fergiemcdowall/level-out?color=blue)](https://github.com/fergiemcdowall/level-out/graphs/contributors) + +A simple command-line utility for reading LevelDB data via [`levelup`][levelup]. + +### [`level-key-list`][level-key-list] + +[![npm package version](https://img.shields.io/npm/v/level-key-list)](https://www.npmjs.com/package/level-key-list) [![npm downloads](https://img.shields.io/npm/dw/level-key-list)](https://www.npmjs.com/package/level-key-list) [![License](https://img.shields.io/npm/l/level-key-list?color=blue)](https://www.npmjs.com/package/level-key-list) [![Last commit](https://img.shields.io/github/last-commit/hughsk/level-key-list)](https://github.com/hughsk/level-key-list) [![Contributors](https://img.shields.io/github/contributors/hughsk/level-key-list?color=blue)](https://github.com/hughsk/level-key-list/graphs/contributors) + +Command-line tool for quickly printing a list of keys in a LevelDB database. + +### [`lev`][lev] + +[![npm package version](https://img.shields.io/npm/v/lev)](https://www.npmjs.com/package/lev) [![npm downloads](https://img.shields.io/npm/dw/lev)](https://www.npmjs.com/package/lev) [![License](https://img.shields.io/npm/l/lev?color=blue)](https://www.npmjs.com/package/lev) [![Last commit](https://img.shields.io/github/last-commit/hij1nx/lev)](https://github.com/hij1nx/lev) [![Contributors](https://img.shields.io/github/contributors/hij1nx/lev?color=blue)](https://github.com/hij1nx/lev/graphs/contributors) + +A CLI REPL interface for LevelDB. + +### [`leveldb-repl`][leveldb-repl] + +[![npm package version](https://img.shields.io/npm/v/leveldb-repl)](https://www.npmjs.com/package/leveldb-repl) [![npm downloads](https://img.shields.io/npm/dw/leveldb-repl)](https://www.npmjs.com/package/leveldb-repl) [![License](https://img.shields.io/npm/l/leveldb-repl?color=blue)](https://www.npmjs.com/package/leveldb-repl) [![Last commit](https://img.shields.io/github/last-commit/lapwinglabs/leveldb-repl)](https://github.com/lapwinglabs/leveldb-repl) [![Contributors](https://img.shields.io/github/contributors/lapwinglabs/leveldb-repl?color=blue)](https://github.com/lapwinglabs/leveldb-repl/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-trie)](https://github.com/juliangruber/level-trie) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-trie?color=brightgreen)](https://github.com/juliangruber/level-trie/graphs/contributors) +Super simple REPL for LevelDB. Supports filter globbing. + +### [`levelhud`][levelhud] + +[![npm package version](https://img.shields.io/npm/v/levelhud)](https://www.npmjs.com/package/levelhud) [![npm downloads](https://img.shields.io/npm/dw/levelhud)](https://www.npmjs.com/package/levelhud) [![License](https://img.shields.io/npm/l/levelhud?color=blue)](https://www.npmjs.com/package/levelhud) [![Last commit](https://img.shields.io/github/last-commit/ricardobeat/levelhud)](https://github.com/ricardobeat/levelhud) [![Contributors](https://img.shields.io/github/contributors/ricardobeat/levelhud?color=blue)](https://github.com/ricardobeat/levelhud/graphs/contributors) + +LevelDB GUI with an interactive console. + +### [`levelweb`][levelweb] + +[![npm package version](https://img.shields.io/npm/v/levelweb)](https://www.npmjs.com/package/levelweb) [![npm downloads](https://img.shields.io/npm/dw/levelweb)](https://www.npmjs.com/package/levelweb) [![License](https://img.shields.io/npm/l/levelweb?color=blue)](https://www.npmjs.com/package/levelweb) [![Last commit](https://img.shields.io/github/last-commit/hij1nx/levelui)](https://github.com/hij1nx/levelui) [![Contributors](https://img.shields.io/github/contributors/hij1nx/levelui?color=blue)](https://github.com/hij1nx/levelui/graphs/contributors) + +A LevelDB GUI. Includes simple data visualization tools. + +### [`level-cli`][level-cli] + +[![npm package version](https://img.shields.io/npm/v/level-cli)](https://www.npmjs.com/package/level-cli) [![npm downloads](https://img.shields.io/npm/dw/level-cli)](https://www.npmjs.com/package/level-cli) [![License](https://img.shields.io/npm/l/level-cli?color=blue)](https://www.npmjs.com/package/level-cli) [![Last commit](https://img.shields.io/github/last-commit/mablay/level-cli)](https://github.com/mablay/level-cli) [![Contributors](https://img.shields.io/github/contributors/mablay/level-cli?color=blue)](https://github.com/mablay/level-cli/graphs/contributors) + +Interact with LevelDB on the command line. + +### [`level-explore`][level-explore] + +[![npm package version](https://img.shields.io/npm/v/level-explore)](https://www.npmjs.com/package/level-explore) [![npm downloads](https://img.shields.io/npm/dw/level-explore)](https://www.npmjs.com/package/level-explore) [![License](https://img.shields.io/npm/l/level-explore?color=blue)](https://www.npmjs.com/package/level-explore) [![Last commit](https://img.shields.io/github/last-commit/jcblw/level-explore)](https://github.com/jcblw/level-explore) [![Contributors](https://img.shields.io/github/contributors/jcblw/level-explore?color=blue)](https://github.com/jcblw/level-explore/graphs/contributors) + +A terminal program to visualize LevelDB data. Early stages. + +### [`level-repair`][level-repair] + +[![npm package version](https://img.shields.io/npm/v/level-repair)](https://www.npmjs.com/package/level-repair) [![npm downloads](https://img.shields.io/npm/dw/level-repair)](https://www.npmjs.com/package/level-repair) [![License](https://img.shields.io/npm/l/level-repair?color=blue)](https://www.npmjs.com/package/level-repair) [![Last commit](https://img.shields.io/github/last-commit/kesla/level-repair)](https://github.com/kesla/level-repair) [![Contributors](https://img.shields.io/github/contributors/kesla/level-repair?color=blue)](https://github.com/kesla/level-repair/graphs/contributors) + +CLI tool to repair a LevelDB. + +### [`leveldb-editor`][leveldb-editor] + +[![npm package version](https://img.shields.io/npm/v/leveldb-editor)](https://www.npmjs.com/package/leveldb-editor) [![npm downloads](https://img.shields.io/npm/dw/leveldb-editor)](https://www.npmjs.com/package/leveldb-editor) [![License](https://img.shields.io/npm/l/leveldb-editor?color=blue)](https://www.npmjs.com/package/leveldb-editor) [![Last commit](https://img.shields.io/github/last-commit/derhuerst/leveldb-editor)](https://github.com/derhuerst/leveldb-editor) [![Contributors](https://img.shields.io/github/contributors/derhuerst/leveldb-editor?color=blue)](https://github.com/derhuerst/leveldb-editor/graphs/contributors) + +Edit a LevelDB from the command line. + +### [`levelscan`][levelscan] + +[![npm package version](https://img.shields.io/npm/v/levelscan)](https://www.npmjs.com/package/levelscan) [![npm downloads](https://img.shields.io/npm/dw/levelscan)](https://www.npmjs.com/package/levelscan) [![License](https://img.shields.io/npm/l/levelscan?color=blue)](https://www.npmjs.com/package/levelscan) [![Last commit](https://img.shields.io/github/last-commit/joeledwards/node-levelscan)](https://github.com/joeledwards/node-levelscan) [![Contributors](https://img.shields.io/github/contributors/joeledwards/node-levelscan?color=blue)](https://github.com/joeledwards/node-levelscan/graphs/contributors) + +LevelDB command line scanning utility + +### [`levelui`][levelui] + +[![npm package version](https://img.shields.io/npm/v/levelui)](https://www.npmjs.com/package/levelui) [![npm downloads](https://img.shields.io/npm/dw/levelui)](https://www.npmjs.com/package/levelui) [![License](https://img.shields.io/npm/l/levelui?color=blue)](https://www.npmjs.com/package/levelui) [![Last commit](https://img.shields.io/github/last-commit/hij1nx/levelui)](https://github.com/hij1nx/levelui) [![Contributors](https://img.shields.io/github/contributors/hij1nx/levelui?color=blue)](https://github.com/hij1nx/levelui/graphs/contributors) + +A LevelDB GUI based on [`atom-shell`](https://github.com/atom/atom-shell) (now called Electron). + +## Benchmarking & Debugging + +### [`level-bench`][level-bench] + +[![npm package version](https://img.shields.io/npm/v/level-bench)](https://www.npmjs.com/package/level-bench) [![npm downloads](https://img.shields.io/npm/dw/level-bench)](https://www.npmjs.com/package/level-bench) [![License](https://img.shields.io/npm/l/level-bench?color=blue)](https://www.npmjs.com/package/level-bench) [![Last commit](https://img.shields.io/github/last-commit/Level/bench)](https://github.com/Level/bench) [![Contributors](https://img.shields.io/github/contributors/Level/bench?color=blue)](https://github.com/Level/bench/graphs/contributors) + +Benchmark [`abstract-leveldown`][abstract-leveldown] and [`levelup`][levelup] stores. + +### [`level-compare-forks`][level-compare-forks] + +[![npm package version](https://img.shields.io/npm/v/level-compare-forks)](https://www.npmjs.com/package/level-compare-forks) [![npm downloads](https://img.shields.io/npm/dw/level-compare-forks)](https://www.npmjs.com/package/level-compare-forks) [![License](https://img.shields.io/npm/l/level-compare-forks?color=blue)](https://www.npmjs.com/package/level-compare-forks) [![Last commit](https://img.shields.io/github/last-commit/kesla/level-compare-forks)](https://github.com/kesla/level-compare-forks) [![Contributors](https://img.shields.io/github/contributors/kesla/level-compare-forks?color=blue)](https://github.com/kesla/level-compare-forks/graphs/contributors) + +Run benchmarks on different level-forks and see how they compare. + +### [`level-log`][level-log] + +[![npm package version](https://img.shields.io/npm/v/level-log)](https://www.npmjs.com/package/level-log) [![npm downloads](https://img.shields.io/npm/dw/level-log)](https://www.npmjs.com/package/level-log) [![License](https://img.shields.io/npm/l/level-log?color=blue)](https://www.npmjs.com/package/level-log) [![Last commit](https://img.shields.io/github/last-commit/micnews/level-log)](https://github.com/micnews/level-log) [![Contributors](https://img.shields.io/github/contributors/micnews/level-log?color=blue)](https://github.com/micnews/level-log/graphs/contributors) + +Log all [`levelup`][levelup] operations, including method calls. + +### [`debugdown`][debugdown] + +[![npm package version](https://img.shields.io/npm/v/debugdown)](https://www.npmjs.com/package/debugdown) [![npm downloads](https://img.shields.io/npm/dw/debugdown)](https://www.npmjs.com/package/debugdown) [![License](https://img.shields.io/npm/l/debugdown?color=blue)](https://www.npmjs.com/package/debugdown) [![Last commit](https://img.shields.io/github/last-commit/vweevers/debugdown)](https://github.com/vweevers/debugdown) [![Contributors](https://img.shields.io/github/contributors/vweevers/debugdown?color=blue)](https://github.com/vweevers/debugdown/graphs/contributors) + +Log all operations made on an [`abstract-leveldown`][abstract-leveldown] compliant store. For node and browsers. + +### [`level-time`][level-time] + +[![npm package version](https://img.shields.io/npm/v/level-time)](https://www.npmjs.com/package/level-time) [![npm downloads](https://img.shields.io/npm/dw/level-time)](https://www.npmjs.com/package/level-time) [![License](https://img.shields.io/npm/l/level-time?color=blue)](https://www.npmjs.com/package/level-time) [![Last commit](https://img.shields.io/github/last-commit/micnews/level-time)](https://github.com/micnews/level-time) [![Contributors](https://img.shields.io/github/contributors/micnews/level-time?color=blue)](https://github.com/micnews/level-time/graphs/contributors) + +Log [`levelup`][levelup] operations and their duration. + +### [`level-dump`][level-dump] + +[![npm package version](https://img.shields.io/npm/v/level-dump)](https://www.npmjs.com/package/level-dump) [![npm downloads](https://img.shields.io/npm/dw/level-dump)](https://www.npmjs.com/package/level-dump) [![License](https://img.shields.io/npm/l/level-dump?color=blue)](https://www.npmjs.com/package/level-dump) [![Last commit](https://img.shields.io/github/last-commit/thlorenz/level-dump)](https://github.com/thlorenz/level-dump) [![Contributors](https://img.shields.io/github/contributors/thlorenz/level-dump?color=blue)](https://github.com/thlorenz/level-dump/graphs/contributors) + +Dumps all values and/or keys of a [`levelup`][levelup] or [`level-sublevel`][level-sublevel] instance to the console. + +### [`level-benchmarks`][level-benchmarks] + +[![npm package version](https://img.shields.io/npm/v/level-benchmarks)](https://www.npmjs.com/package/level-benchmarks) [![npm downloads](https://img.shields.io/npm/dw/level-benchmarks)](https://www.npmjs.com/package/level-benchmarks) [![License](https://img.shields.io/npm/l/level-benchmarks?color=blue)](https://www.npmjs.com/package/level-benchmarks) [![Last commit](https://img.shields.io/github/last-commit/kesla/level-benchmarks)](https://github.com/kesla/level-benchmarks) [![Contributors](https://img.shields.io/github/contributors/kesla/level-benchmarks?color=blue)](https://github.com/kesla/level-benchmarks/graphs/contributors) + +Run benchmarks against levelup-compatible engines + +## Resources + +### [`leveljs.org`][leveljs.org] + +Website for [Level][level-org] + +### [`level-community`][level-community] + +General discussion, cross-repo efforts and common information for projects in the community + +### [`electron-demo`][electron-demo] + +Demo app loading LevelDB into an Electron context. + +### [`browserify-starter`][browserify-starter] + +Demonstrates bundling [`level`][level] for browsers using [`browserify`](https://github.com/browserify/browserify). + +### [`webpack-starter`][webpack-starter] + +Demonstrates bundling [`level`][level] for browsers using [`webpack`](https://webpack.js.org/). + +### [`level-awesome`][level-awesome] + +An open list of awesome [Level][level-org] libraries and resources. + +### [`levelmeup`][levelmeup] + +Level Me Up Scotty! An intro to Node.js databases via a set of self-guided workshops. + +## Applications + +**Applications and libraries that use Level modules under the hood.** + +### [`ipfs`][ipfs] + +A peer-to-peer hypermedia protocol to make the web faster, safer, and more open. + +### [`clocker`][clocker] -The TRIE data structure and search algorithm, on top of [`levelup`][levelup]. +Track project hours -### [`level-geospatial`][level-geospatial] +### [`copy-on-write`][copy-on-write] -[![Last commit](https://img.shields.io/github/last-commit/richorama/level-geospatial)](https://github.com/richorama/level-geospatial) [![Contributors](https://img.shields.io/github/contributors/richorama/level-geospatial?color=brightgreen)](https://github.com/richorama/level-geospatial/graphs/contributors) +A copy-on-write FUSE implementation -Store key values pairs with lat/lon coordinates, and query using a radius. +### [`chrome-localstorage`][chrome-localstorage] -### [`level-pathwise`][level-pathwise] +CLI to manipulate Chrome and Chromium's localStorage on disk. -[![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-pathwise)](https://github.com/juliangruber/level-pathwise) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-pathwise?color=brightgreen)](https://github.com/juliangruber/level-pathwise/graphs/contributors) +### [`cipherhub`][cipherhub] -Turn [`levelup`][levelup] into one huge object of arbitrary size! Efficiently and atomically update and read parts of it. +Encrypt messages based on GitHub SSH public keys -### [`level-places`][level-places] +### [`code-music-studio`][code-music-studio] -[![Last commit](https://img.shields.io/github/last-commit/Wayla/level-places)](https://github.com/Wayla/level-places) [![Contributors](https://img.shields.io/github/contributors/Wayla/level-places?color=brightgreen)](https://github.com/Wayla/level-places/graphs/contributors) +Design musical algorithms -Store and retrieve places near a lat/long pair. +### [`level-todo`][level-todo] -### [`level-nearby-stream`][level-nearby-stream] +A todo list using LevelDB. -[![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-nearby-stream)](https://github.com/juliangruber/level-nearby-stream) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-nearby-stream?color=brightgreen)](https://github.com/juliangruber/level-nearby-stream/graphs/contributors) +### [`electron-crash-report-service`][electron-crash-report-service] -Stream in nearby places using the browser's geolocation and [`level-places`][level-places]. +Aggregate crash reports for Electron apps -### [`level-tree`][level-tree] +### [`cross-street-indexer`][cross-street-indexer] -[![Last commit](https://img.shields.io/github/last-commit/calvinmetcalf/level-tree)](https://github.com/calvinmetcalf/level-tree) [![Contributors](https://img.shields.io/github/contributors/calvinmetcalf/level-tree?color=brightgreen)](https://github.com/calvinmetcalf/level-tree/graphs/contributors) +Blazing fast tile based geocoder that matches cross street (road intersections) entirely sourced by OSM QA Tiles. -Geospatial indexing for GeoJSON in [`levelup`][levelup] +### [`lt-core`][lt-core] -### [`level-list`][level-list] +Time tracking library. -[![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-list)](https://github.com/juliangruber/level-list) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-list?color=brightgreen)](https://github.com/juliangruber/level-list/graphs/contributors) +### [`npm-search`][npm-search] -Map lists of data stored in [`levelup`][levelup] to DOM elements. +An index of npm using [`levelup`][levelup]. -### [`level-reactive`][level-reactive] +### [`connect-level`][connect-level] -[![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-reactive)](https://github.com/juliangruber/level-reactive) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-reactive?color=brightgreen)](https://github.com/juliangruber/level-reactive/graphs/contributors) +A `connect` / `express` session store backed by LevelDB via [`levelup`][levelup]. -Reactive templating for data stored in [`levelup`][levelup]. +### [`hadron`][hadron] -### [`level-paginate`][level-paginate] +A hackable publishing platform using LevelDB as main database. -[![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-paginate)](https://github.com/juliangruber/level-paginate) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-paginate?color=brightgreen)](https://github.com/juliangruber/level-paginate/graphs/contributors) +### [`groove basin`][groove basin] -Streaming pagination for [`levelup`][levelup]. +Music player server with a web-based user interface. Uses [`levelup`][levelup] for the music library database. -### [`level-average`][level-average] +### [`prerender-level-cache`][prerender-level-cache] -[![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-average)](https://github.com/juliangruber/level-average) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-average?color=brightgreen)](https://github.com/juliangruber/level-average/graphs/contributors) +[Prerender](https://github.com/prerender/prerender) plugin to use level as a cache store. -Calculate rolling averages in [`levelup`][levelup]. +### [`tsd`][tsd] -### [`level-sum`][level-sum] +Spin up a quick server to visualize time series data. -[![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-sum)](https://github.com/juliangruber/level-sum) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-sum?color=brightgreen)](https://github.com/juliangruber/level-sum/graphs/contributors) +### [`appfeed`][appfeed] -Calculate sums in [`levelup`][levelup] and get live updates. +Version feed for trusted application delivery -### [`level-historical-json`][level-historical-json] +### [`arrivals-osx`][arrivals-osx] -[![Last commit](https://img.shields.io/github/last-commit/ellell/level-historical-json)](https://github.com/ellell/level-historical-json) [![Contributors](https://img.shields.io/github/contributors/ellell/level-historical-json?color=brightgreen)](https://github.com/ellell/level-historical-json/graphs/contributors) +Watch a folder for audio and video arrivals and convert them to Apple-friendly formats. -Keep a history of all the changes of a JSON document. +### [`bleach-log-server`][bleach-log-server] -### [`level-immutable`][level-immutable] +Keep track of bleach levels for a hot tub or a pool. -[![Last commit](https://img.shields.io/github/last-commit/eugeneware/level-immutable)](https://github.com/eugeneware/level-immutable) [![Contributors](https://img.shields.io/github/contributors/eugeneware/level-immutable?color=brightgreen)](https://github.com/eugeneware/level-immutable/graphs/contributors) +### [`browserify-cdn`][browserify-cdn] -[`levelup`][levelup] immutable history and database snapshotting based on ideas in `datomic`. +Browserify CDN. Caches browserify bundles in LevelDB. -### [`level-model`][level-model] +## Legacy -[![Last commit](https://img.shields.io/github/last-commit/sethvincent/level-model)](https://github.com/sethvincent/level-model) [![Contributors](https://img.shields.io/github/contributors/sethvincent/level-model?color=brightgreen)](https://github.com/sethvincent/level-model/graphs/contributors) +**Modules that are deprecated, archived or superseded. Listed here for the historical record.** -A higher-level module for creating content models using [`levelup`][levelup] and JSON Schema validation. +### [`levelup`][levelup] -### [`level-stream`][level-stream] +[![npm package version](https://img.shields.io/npm/v/levelup)](https://www.npmjs.com/package/levelup) [![npm downloads](https://img.shields.io/npm/dw/levelup)](https://www.npmjs.com/package/levelup) [![License](https://img.shields.io/npm/l/levelup?color=blue)](https://www.npmjs.com/package/levelup) [![Last commit](https://img.shields.io/github/last-commit/Level/levelup)](https://github.com/Level/levelup) [![Contributors](https://img.shields.io/github/contributors/Level/levelup?color=blue)](https://github.com/Level/levelup/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-stream)](https://github.com/juliangruber/level-stream) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-stream?color=brightgreen)](https://github.com/juliangruber/level-stream/graphs/contributors) +Wrapper for [`abstract-leveldown`][abstract-leveldown] stores. Superseded by [`abstract-level`][abstract-level]. -Persist streams in [`levelup`][levelup]. +### [`abstract-leveldown`][abstract-leveldown] -### [`level-stay`][level-stay] +[![npm package version](https://img.shields.io/npm/v/abstract-leveldown)](https://www.npmjs.com/package/abstract-leveldown) [![npm downloads](https://img.shields.io/npm/dw/abstract-leveldown)](https://www.npmjs.com/package/abstract-leveldown) [![License](https://img.shields.io/npm/l/abstract-leveldown?color=blue)](https://www.npmjs.com/package/abstract-leveldown) [![Last commit](https://img.shields.io/github/last-commit/Level/abstract-leveldown)](https://github.com/Level/abstract-leveldown) [![Contributors](https://img.shields.io/github/contributors/Level/abstract-leveldown?color=blue)](https://github.com/Level/abstract-leveldown/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-stay)](https://github.com/juliangruber/level-stay) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-stay?color=brightgreen)](https://github.com/juliangruber/level-stay/graphs/contributors) +An abstract prototype matching the [`leveldown`][leveldown] API. Superseded by [`abstract-level`][abstract-level]. -An alternative approach to storing scuttlebutts in [`levelup`][levelup]. +### [`level-mem`][level-mem] -### [`skeyma`][skeyma] +[![npm package version](https://img.shields.io/npm/v/level-mem)](https://www.npmjs.com/package/level-mem) [![npm downloads](https://img.shields.io/npm/dw/level-mem)](https://www.npmjs.com/package/level-mem) [![License](https://img.shields.io/npm/l/level-mem?color=blue)](https://www.npmjs.com/package/level-mem) [![Last commit](https://img.shields.io/github/last-commit/Level/level-mem)](https://github.com/Level/level-mem) [![Contributors](https://img.shields.io/github/contributors/Level/level-mem?color=blue)](https://github.com/Level/level-mem/graphs/contributors) ![levelup](https://img.shields.io/badge/levelup-5.1-inactive.svg) -[![Last commit](https://img.shields.io/github/last-commit/jed/skeyma)](https://github.com/jed/skeyma) [![Contributors](https://img.shields.io/github/contributors/jed/skeyma?color=brightgreen)](https://github.com/jed/skeyma/graphs/contributors) +Bundles [`memdown`][memdown] with [`levelup`][levelup] and [`encoding-down`][encoding-down]. Superseded by [`memory-level`][memory-level]. -Turns a template string (like `${forumId}/${postId}`) into parse/serialize streams that transform objects like `{forumId, postId, text}` into key-value pairs and back. +### [`level-rocksdb`][level-rocksdb] -### [`level-autotable`][level-autotable] +[![npm package version](https://img.shields.io/npm/v/level-rocksdb)](https://www.npmjs.com/package/level-rocksdb) [![npm downloads](https://img.shields.io/npm/dw/level-rocksdb)](https://www.npmjs.com/package/level-rocksdb) [![License](https://img.shields.io/npm/l/level-rocksdb?color=blue)](https://www.npmjs.com/package/level-rocksdb) [![Last commit](https://img.shields.io/github/last-commit/Level/level-rocksdb)](https://github.com/Level/level-rocksdb) [![Contributors](https://img.shields.io/github/contributors/Level/level-rocksdb?color=blue)](https://github.com/Level/level-rocksdb/graphs/contributors) ![levelup](https://img.shields.io/badge/levelup-5.1-inactive.svg) -[![Last commit](https://img.shields.io/github/last-commit/santoshrajan/levelup-autotable)](https://github.com/santoshrajan/levelup-autotable) [![Contributors](https://img.shields.io/github/contributors/santoshrajan/levelup-autotable?color=brightgreen)](https://github.com/santoshrajan/levelup-autotable/graphs/contributors) +Bundles [`rocksdb`][rocksdb] with [`levelup`][levelup] and [`encoding-down`][encoding-down]. -Auto incrementing keys with "fields" and "records". +### [`level-hyper`][level-hyper] -### [`level-forks`][level-forks] +[![npm package version](https://img.shields.io/npm/v/level-hyper)](https://www.npmjs.com/package/level-hyper) [![npm downloads](https://img.shields.io/npm/dw/level-hyper)](https://www.npmjs.com/package/level-hyper) [![License](https://img.shields.io/npm/l/level-hyper?color=blue)](https://www.npmjs.com/package/level-hyper) [![Last commit](https://img.shields.io/github/last-commit/Level/level-hyper)](https://github.com/Level/level-hyper) [![Contributors](https://img.shields.io/github/contributors/Level/level-hyper?color=blue)](https://github.com/Level/level-hyper/graphs/contributors) ![levelup](https://img.shields.io/badge/levelup-3.0-inactive.svg) -[![Last commit](https://img.shields.io/github/last-commit/substack/level-forks)](https://github.com/substack/level-forks) [![Contributors](https://img.shields.io/github/contributors/substack/level-forks?color=brightgreen)](https://github.com/substack/level-forks/graphs/contributors) +Bundles [`leveldown-hyper`][leveldown-hyper] with [`levelup`][levelup] and [`encoding-down`][encoding-down]. -Forking graph of cascading namespaces. +### [`level-indexed`][level-indexed] -### [`level-geo`][level-geo] +[![npm package version](https://img.shields.io/npm/v/level-indexed)](https://www.npmjs.com/package/level-indexed) [![npm downloads](https://img.shields.io/npm/dw/level-indexed)](https://www.npmjs.com/package/level-indexed) [![License](https://img.shields.io/npm/l/level-indexed?color=blue)](https://www.npmjs.com/package/level-indexed) [![Last commit](https://img.shields.io/github/last-commit/kapetan/level-indexed)](https://github.com/kapetan/level-indexed) [![Contributors](https://img.shields.io/github/contributors/kapetan/level-indexed?color=blue)](https://github.com/kapetan/level-indexed/graphs/contributors) ![levelup](https://img.shields.io/badge/levelup-2.0-inactive.svg) -[![Last commit](https://img.shields.io/github/last-commit/julianduque/level-geo)](https://github.com/julianduque/level-geo) [![Contributors](https://img.shields.io/github/contributors/julianduque/level-geo?color=brightgreen)](https://github.com/julianduque/level-geo/graphs/contributors) +Bundles [`indexeddown`][indexeddown] with [`levelup`][levelup] and [`encoding-down`][encoding-down]. -A geospatial index for [`levelup`][levelup]. +### [`leveldown`][leveldown] -### [`level-geography`][level-geography] +[![npm package version](https://img.shields.io/npm/v/leveldown)](https://www.npmjs.com/package/leveldown) [![npm downloads](https://img.shields.io/npm/dw/leveldown)](https://www.npmjs.com/package/leveldown) [![License](https://img.shields.io/npm/l/leveldown?color=blue)](https://www.npmjs.com/package/leveldown) [![Last commit](https://img.shields.io/github/last-commit/Level/leveldown)](https://github.com/Level/leveldown) [![Contributors](https://img.shields.io/github/contributors/Level/leveldown?color=blue)](https://github.com/Level/leveldown/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-7.2-inactive.svg) -[![Last commit](https://img.shields.io/github/last-commit/morganherlocker/level-geography)](https://github.com/morganherlocker/level-geography) [![Contributors](https://img.shields.io/github/contributors/morganherlocker/level-geography?color=brightgreen)](https://github.com/morganherlocker/level-geography/graphs/contributors) +An [`abstract-leveldown`][abstract-leveldown] implementation backed by [LevelDB](https://github.com/google/leveldb). Superseded by [`classic-level`][classic-level]. -Indexed geography storage in [`levelup`][levelup]. +### [`memdown`][memdown] -### [`accountdown`][accountdown] +[![npm package version](https://img.shields.io/npm/v/memdown)](https://www.npmjs.com/package/memdown) [![npm downloads](https://img.shields.io/npm/dw/memdown)](https://www.npmjs.com/package/memdown) [![License](https://img.shields.io/npm/l/memdown?color=blue)](https://www.npmjs.com/package/memdown) [![Last commit](https://img.shields.io/github/last-commit/Level/memdown)](https://github.com/Level/memdown) [![Contributors](https://img.shields.io/github/contributors/Level/memdown?color=blue)](https://github.com/Level/memdown/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-7.2-inactive.svg) -[![Last commit](https://img.shields.io/github/last-commit/substack/accountdown)](https://github.com/substack/accountdown) [![Contributors](https://img.shields.io/github/contributors/substack/accountdown?color=brightgreen)](https://github.com/substack/accountdown/graphs/contributors) +An [`abstract-leveldown`][abstract-leveldown] implementation backed by [in-memory RBTree](https://www.npmjs.com/package/functional-red-black-tree). Superseded by [`memory-level`][memory-level]. -Persistent user accounts. +### [`level-js`][level-js] -### [`accountdown-model`][accountdown-model] +[![npm package version](https://img.shields.io/npm/v/level-js)](https://www.npmjs.com/package/level-js) [![npm downloads](https://img.shields.io/npm/dw/level-js)](https://www.npmjs.com/package/level-js) [![License](https://img.shields.io/npm/l/level-js?color=blue)](https://www.npmjs.com/package/level-js) [![Last commit](https://img.shields.io/github/last-commit/Level/level.js)](https://github.com/Level/level.js) [![Contributors](https://img.shields.io/github/contributors/Level/level.js?color=blue)](https://github.com/Level/level.js/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-7.2-inactive.svg) -[![Last commit](https://img.shields.io/github/last-commit/sethvincent/accountdown-model)](https://github.com/sethvincent/accountdown-model) [![Contributors](https://img.shields.io/github/contributors/sethvincent/accountdown-model?color=brightgreen)](https://github.com/sethvincent/accountdown-model/graphs/contributors) +An [`abstract-leveldown`][abstract-leveldown] implementation backed by [IndexedDB](https://developer.mozilla.org/en-US/docs/IndexedDB). Superseded by [`browser-level`][browser-level]. -A wrapper around [`accountdown`][accountdown] that provides a few additional features +### [`rocksdb`][rocksdb] -## Transience +[![npm package version](https://img.shields.io/npm/v/rocksdb)](https://www.npmjs.com/package/rocksdb) [![npm downloads](https://img.shields.io/npm/dw/rocksdb)](https://www.npmjs.com/package/rocksdb) [![License](https://img.shields.io/npm/l/rocksdb?color=blue)](https://www.npmjs.com/package/rocksdb) [![Last commit](https://img.shields.io/github/last-commit/Level/rocksdb)](https://github.com/Level/rocksdb) [![Contributors](https://img.shields.io/github/contributors/Level/rocksdb?color=blue)](https://github.com/Level/rocksdb/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-7.2-inactive.svg) -### [`cachedown`][cachedown] +An [`abstract-leveldown`][abstract-leveldown] implementation backed by [RocksDB](https://github.com/facebook/rocksdb/). -[![Last commit](https://img.shields.io/github/last-commit/mvayngrib/cachedown)](https://github.com/mvayngrib/cachedown) [![Contributors](https://img.shields.io/github/contributors/mvayngrib/cachedown?color=brightgreen)](https://github.com/mvayngrib/cachedown/graphs/contributors) +### [`leveldown-hyper`][leveldown-hyper] -LRU cache implemented as an [`abstract-leveldown`][abstract-leveldown] layer. +[![npm package version](https://img.shields.io/npm/v/leveldown-hyper)](https://www.npmjs.com/package/leveldown-hyper) [![npm downloads](https://img.shields.io/npm/dw/leveldown-hyper)](https://www.npmjs.com/package/leveldown-hyper) [![License](https://img.shields.io/npm/l/leveldown-hyper?color=blue)](https://www.npmjs.com/package/leveldown-hyper) [![Last commit](https://img.shields.io/github/last-commit/Level/leveldown-hyper)](https://github.com/Level/leveldown-hyper) [![Contributors](https://img.shields.io/github/contributors/Level/leveldown-hyper?color=blue)](https://github.com/Level/leveldown-hyper/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-5.0-inactive.svg) -### [`level-ttl`][level-ttl] +An [`abstract-leveldown`][abstract-leveldown] implementation backed by [HyperLevelDB](https://github.com/rescrv/HyperLevelDB). -[![Last commit](https://img.shields.io/github/last-commit/Level/level-ttl)](https://github.com/Level/level-ttl) [![Contributors](https://img.shields.io/github/contributors/Level/level-ttl?color=brightgreen)](https://github.com/Level/level-ttl/graphs/contributors) +### [`medeadown`][medeadown] -Add a `ttl` (time-to-live) option to [`levelup`][levelup]. NB. Suffers from race issues. See also [`tiny-level-ttl`][tiny-level-ttl]. +[![npm package version](https://img.shields.io/npm/v/medeadown)](https://www.npmjs.com/package/medeadown) [![npm downloads](https://img.shields.io/npm/dw/medeadown)](https://www.npmjs.com/package/medeadown) [![License](https://img.shields.io/npm/l/medeadown?color=blue)](https://www.npmjs.com/package/medeadown) [![Last commit](https://img.shields.io/github/last-commit/kesla/medeadown)](https://github.com/kesla/medeadown) [![Contributors](https://img.shields.io/github/contributors/kesla/medeadown?color=blue)](https://github.com/kesla/medeadown/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-3.0-inactive.svg) -### [`tiny-level-ttl`][tiny-level-ttl] +An [`abstract-leveldown`][abstract-leveldown] implementation backed by [medea](https://github.com/argo/medea). -[![Last commit](https://img.shields.io/github/last-commit/ArtskydJ/tiny-level-ttl)](https://github.com/ArtskydJ/tiny-level-ttl) [![Contributors](https://img.shields.io/github/contributors/ArtskydJ/tiny-level-ttl?color=brightgreen)](https://github.com/ArtskydJ/tiny-level-ttl/graphs/contributors) +### [`jsondown`][jsondown] -Add a `ttl` (time-to-live) option to [`levelup`][levelup], [`level-sublevel`][level-sublevel] or [`level-spaces`][level-spaces]. Also respects [`level-lock`][level-lock]. +[![npm package version](https://img.shields.io/npm/v/jsondown)](https://www.npmjs.com/package/jsondown) [![npm downloads](https://img.shields.io/npm/dw/jsondown)](https://www.npmjs.com/package/jsondown) [![License](https://img.shields.io/npm/l/jsondown?color=blue)](https://www.npmjs.com/package/jsondown) [![Last commit](https://img.shields.io/github/last-commit/toolness/jsondown)](https://github.com/toolness/jsondown) [![Contributors](https://img.shields.io/github/contributors/toolness/jsondown?color=blue)](https://github.com/toolness/jsondown/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-2.7-inactive.svg) -### [`level-live-cache`][level-live-cache] +An [`abstract-leveldown`][abstract-leveldown] implementation backed by JSON on disk. -[![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-live-cache)](https://github.com/juliangruber/level-live-cache) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-live-cache?color=brightgreen)](https://github.com/juliangruber/level-live-cache/graphs/contributors) +### [`asyncstorage-down`][asyncstorage-down] -An in-memory cache that keeps up to date with its source. +[![npm package version](https://img.shields.io/npm/v/asyncstorage-down)](https://www.npmjs.com/package/asyncstorage-down) [![npm downloads](https://img.shields.io/npm/dw/asyncstorage-down)](https://www.npmjs.com/package/asyncstorage-down) [![License](https://img.shields.io/npm/l/asyncstorage-down?color=blue)](https://www.npmjs.com/package/asyncstorage-down) [![Last commit](https://img.shields.io/github/last-commit/tradle/asyncstorage-down)](https://github.com/tradle/asyncstorage-down) [![Contributors](https://img.shields.io/github/contributors/tradle/asyncstorage-down?color=blue)](https://github.com/tradle/asyncstorage-down/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-2.6-inactive.svg) -### [`level-lru-cache`][level-lru-cache] +An [`abstract-leveldown`][abstract-leveldown] implementation backed by [AsyncStorage](https://facebook.github.io/react-native/docs/asyncstorage.html) (React Native). -[![Last commit](https://img.shields.io/github/last-commit/kemitchell/level-lru-cache.js)](https://github.com/kemitchell/level-lru-cache.js) [![Contributors](https://img.shields.io/github/contributors/kemitchell/level-lru-cache.js?color=brightgreen)](https://github.com/kemitchell/level-lru-cache.js/graphs/contributors) +### [`mongodown`][mongodown] -Simple LRU cache. +[![npm package version](https://img.shields.io/npm/v/mongodown)](https://www.npmjs.com/package/mongodown) [![npm downloads](https://img.shields.io/npm/dw/mongodown)](https://www.npmjs.com/package/mongodown) [![License](https://img.shields.io/npm/l/mongodown?color=blue)](https://www.npmjs.com/package/mongodown) [![Last commit](https://img.shields.io/github/last-commit/watson/mongodown)](https://github.com/watson/mongodown) [![Contributors](https://img.shields.io/github/contributors/watson/mongodown?color=blue)](https://github.com/watson/mongodown/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-2.6-inactive.svg) -### [`level-ttl-cache`][level-ttl-cache] +An [`abstract-leveldown`][abstract-leveldown] implementation backed by [MongoDB](https://www.mongodb.com/). -[![Last commit](https://img.shields.io/github/last-commit/rvagg/level-ttl-cache)](https://github.com/rvagg/level-ttl-cache) [![Contributors](https://img.shields.io/github/contributors/rvagg/level-ttl-cache?color=brightgreen)](https://github.com/rvagg/level-ttl-cache/graphs/contributors) +### [`sqldown`][sqldown] -A pass-through cache for arbitrary objects or binary data using LevelDB, expired by a TTL. +[![npm package version](https://img.shields.io/npm/v/sqldown)](https://www.npmjs.com/package/sqldown) [![npm downloads](https://img.shields.io/npm/dw/sqldown)](https://www.npmjs.com/package/sqldown) [![License](https://img.shields.io/npm/l/sqldown?color=blue)](https://www.npmjs.com/package/sqldown) [![Last commit](https://img.shields.io/github/last-commit/calvinmetcalf/sqldown)](https://github.com/calvinmetcalf/sqldown) [![Contributors](https://img.shields.io/github/contributors/calvinmetcalf/sqldown?color=blue)](https://github.com/calvinmetcalf/sqldown/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-2.1-inactive.svg) -### [`level-cache`][level-cache] +An [`abstract-leveldown`][abstract-leveldown] implementation backed by [`sqlite3`](https://www.npmjs.com/package/sqlite3), [`pg`](https://www.npmjs.com/package/pg), [`mysql`](https://www.npmjs.com/package/mysql) or WebSQL. -[![Last commit](https://img.shields.io/github/last-commit/Raynos/level-cache)](https://github.com/Raynos/level-cache) [![Contributors](https://img.shields.io/github/contributors/Raynos/level-cache?color=brightgreen)](https://github.com/Raynos/level-cache/graphs/contributors) +### [`dynamo-down`][dynamo-down] -A caching module you can place in front of a [`levelup`][levelup] database. It will cache a subset of the database in an in-memory LRU cache based on configuration. It has an optional synchronous API which will return from the cache only. +[![npm package version](https://img.shields.io/npm/v/dynamo-down)](https://www.npmjs.com/package/dynamo-down) [![npm downloads](https://img.shields.io/npm/dw/dynamo-down)](https://www.npmjs.com/package/dynamo-down) [![License](https://img.shields.io/npm/l/dynamo-down?color=blue)](https://www.npmjs.com/package/dynamo-down) [![Last commit](https://img.shields.io/github/last-commit/jed/dynamo-down)](https://github.com/jed/dynamo-down) [![Contributors](https://img.shields.io/github/contributors/jed/dynamo-down?color=blue)](https://github.com/jed/dynamo-down/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-2.1-inactive.svg) -### [`levelup-cache`][levelup-cache] +An [`abstract-leveldown`][abstract-leveldown] implementation backed by [AWS DynamoDB](http://aws.amazon.com/dynamodb). -[![Last commit](https://img.shields.io/github/last-commit/TehShrike/levelup-cache)](https://github.com/TehShrike/levelup-cache) [![Contributors](https://img.shields.io/github/contributors/TehShrike/levelup-cache?color=brightgreen)](https://github.com/TehShrike/levelup-cache/graphs/contributors) +### [`azureleveldown`][azureleveldown] -Use [`levelup`][levelup] to cache remote data. +[![npm package version](https://img.shields.io/npm/v/azureleveldown)](https://www.npmjs.com/package/azureleveldown) [![npm downloads](https://img.shields.io/npm/dw/azureleveldown)](https://www.npmjs.com/package/azureleveldown) [![License](https://img.shields.io/npm/l/azureleveldown?color=blue)](https://www.npmjs.com/package/azureleveldown) [![Last commit](https://img.shields.io/github/last-commit/richorama/azureleveldown)](https://github.com/richorama/azureleveldown) [![Contributors](https://img.shields.io/github/contributors/richorama/azureleveldown?color=blue)](https://github.com/richorama/azureleveldown/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-0.11-inactive.svg) -## Atomicity +An [`abstract-leveldown`][abstract-leveldown] implementation backed by Windows Azure Table Storage. -### [`level-lock`][level-lock] +### [`fruitdown`][fruitdown] -[![Last commit](https://img.shields.io/github/last-commit/substack/level-lock)](https://github.com/substack/level-lock) [![Contributors](https://img.shields.io/github/contributors/substack/level-lock?color=brightgreen)](https://github.com/substack/level-lock/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/fruitdown)](https://www.npmjs.com/package/fruitdown) [![npm downloads](https://img.shields.io/npm/dw/fruitdown)](https://www.npmjs.com/package/fruitdown) [![License](https://img.shields.io/npm/l/fruitdown?color=blue)](https://www.npmjs.com/package/fruitdown) [![Last commit](https://img.shields.io/github/last-commit/nolanlawson/fruitdown)](https://github.com/nolanlawson/fruitdown) [![Contributors](https://img.shields.io/github/contributors/nolanlawson/fruitdown?color=blue)](https://github.com/nolanlawson/fruitdown/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-0.12-inactive.svg) -In-memory advisory read/write locks for [`levelup`][levelup] keys. +An [`abstract-leveldown`][abstract-leveldown] implementation backed by IndexedDB (Apple). -### [`level-mutex`][level-mutex] +### [`localstorage-down`][localstorage-down] -[![Last commit](https://img.shields.io/github/last-commit/mikeal/level-mutex)](https://github.com/mikeal/level-mutex) [![Contributors](https://img.shields.io/github/contributors/mikeal/level-mutex?color=brightgreen)](https://github.com/mikeal/level-mutex/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/localstorage-down)](https://www.npmjs.com/package/localstorage-down) [![npm downloads](https://img.shields.io/npm/dw/localstorage-down)](https://www.npmjs.com/package/localstorage-down) [![License](https://img.shields.io/npm/l/localstorage-down?color=blue)](https://www.npmjs.com/package/localstorage-down) [![Last commit](https://img.shields.io/github/last-commit/No9/localstorage-down)](https://github.com/No9/localstorage-down) [![Contributors](https://img.shields.io/github/contributors/No9/localstorage-down?color=blue)](https://github.com/No9/localstorage-down/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-0.12-inactive.svg) -Mutex read/write lock for [`levelup`][levelup]. +An [`abstract-leveldown`][abstract-leveldown] implementation backed by [localStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage). -### [`level-updater`][level-updater] +### [`riakdown`][riakdown] -[![Last commit](https://img.shields.io/github/last-commit/hughsk/level-updater)](https://github.com/hughsk/level-updater) [![Contributors](https://img.shields.io/github/contributors/hughsk/level-updater?color=brightgreen)](https://github.com/hughsk/level-updater/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/riakdown)](https://www.npmjs.com/package/riakdown) [![npm downloads](https://img.shields.io/npm/dw/riakdown)](https://www.npmjs.com/package/riakdown) [![License](https://img.shields.io/npm/l/riakdown?color=blue)](https://www.npmjs.com/package/riakdown) [![Last commit](https://img.shields.io/github/last-commit/nlf/riakdown)](https://github.com/nlf/riakdown) [![Contributors](https://img.shields.io/github/contributors/nlf/riakdown?color=blue)](https://github.com/nlf/riakdown/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-0.12-inactive.svg) -Update keys without overlapping changes - makes it possible to implement an atomic incrementer, JSON merger, etc. +An [`abstract-leveldown`][abstract-leveldown] implementation backed by [riakpbc](https://github.com/nlf/riakpbc). -### [`levelplus`][levelplus] +### [`mysqldown`][mysqldown] -[![Last commit](https://img.shields.io/github/last-commit/https://github.com/eugeneware/levelplus)](https://github.com/https://github.com/eugeneware/levelplus) [![Contributors](https://img.shields.io/github/contributors/https://github.com/eugeneware/levelplus?color=brightgreen)](https://github.com/https://github.com/eugeneware/levelplus/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/mysqldown)](https://www.npmjs.com/package/mysqldown) [![npm downloads](https://img.shields.io/npm/dw/mysqldown)](https://www.npmjs.com/package/mysqldown) [![License](https://img.shields.io/npm/l/mysqldown?color=blue)](https://www.npmjs.com/package/mysqldown) [![Last commit](https://img.shields.io/github/last-commit/kesla/mysqldown)](https://github.com/kesla/mysqldown) [![Contributors](https://img.shields.io/github/contributors/kesla/mysqldown?color=blue)](https://github.com/kesla/mysqldown/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-0.7-inactive.svg) -Adds atomic updates, increments, array pushes, set additions and user-defined atomic operations to [`levelup`][levelup]. +An [`abstract-leveldown`][abstract-leveldown] implementation backed by [MySQL](https://www.mysql.com/). -### [`level-atomics`][level-atomics] +### [`redisdown`][redisdown] -[![Last commit](https://img.shields.io/github/last-commit/IndigoUnited/node-level-atomics)](https://github.com/IndigoUnited/node-level-atomics) [![Contributors](https://img.shields.io/github/contributors/IndigoUnited/node-level-atomics?color=brightgreen)](https://github.com/IndigoUnited/node-level-atomics/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/redisdown)](https://www.npmjs.com/package/redisdown) [![npm downloads](https://img.shields.io/npm/dw/redisdown)](https://www.npmjs.com/package/redisdown) [![License](https://img.shields.io/npm/l/redisdown?color=blue)](https://www.npmjs.com/package/redisdown) [![Last commit](https://img.shields.io/github/last-commit/hmalphettes/redisdown)](https://github.com/hmalphettes/redisdown) [![Contributors](https://img.shields.io/github/contributors/hmalphettes/redisdown?color=blue)](https://github.com/hmalphettes/redisdown/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-0.0-inactive.svg) -Add (parallel) atomic operations like `insert`, `replace`, `increment` and `decrement` to [`levelup`][levelup]. +An [`abstract-leveldown`][abstract-leveldown] implementation backed by [Redis](https://redis.io/). -### [`level-transactions`][level-transactions] +### [`leveldown-basho`][leveldown-basho] -[![Last commit](https://img.shields.io/github/last-commit/cshum/level-transactions)](https://github.com/cshum/level-transactions) [![Contributors](https://img.shields.io/github/contributors/cshum/level-transactions?color=brightgreen)](https://github.com/cshum/level-transactions/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/leveldown-basho)](https://www.npmjs.com/package/leveldown-basho) [![npm downloads](https://img.shields.io/npm/dw/leveldown-basho)](https://www.npmjs.com/package/leveldown-basho) [![License](https://img.shields.io/npm/l/leveldown-basho?color=blue)](https://www.npmjs.com/package/leveldown-basho) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-missing-lightgrey.svg) -Transaction layer for [`levelup`][levelup]. +An [`abstract-leveldown`][abstract-leveldown] implementation backed by [Basho's LevelDB fork](https://github.com/basho/leveldb). -## Jobs +### [`sheet-down`][sheet-down] -### [`level-schedule`][level-schedule] +[![npm package version](https://img.shields.io/npm/v/sheet-down)](https://www.npmjs.com/package/sheet-down) [![npm downloads](https://img.shields.io/npm/dw/sheet-down)](https://www.npmjs.com/package/sheet-down) [![License](https://img.shields.io/npm/l/sheet-down?color=blue)](https://www.npmjs.com/package/sheet-down) [![Last commit](https://img.shields.io/github/last-commit/jed/sheet-down)](https://github.com/jed/sheet-down) [![Contributors](https://img.shields.io/github/contributors/jed/sheet-down?color=blue)](https://github.com/jed/sheet-down/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-missing-lightgrey.svg) -[![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-schedule)](https://github.com/juliangruber/level-schedule) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-schedule?color=brightgreen)](https://github.com/juliangruber/level-schedule/graphs/contributors) +An [`abstract-leveldown`][abstract-leveldown] implementation backed by [Google Sheets](https://docs.google.com/spreadsheets). -A durable job scheduler. +### [`indexeddown`][indexeddown] -### [`level-jobs`][level-jobs] +[![npm package version](https://img.shields.io/npm/v/indexeddown)](https://www.npmjs.com/package/indexeddown) [![npm downloads](https://img.shields.io/npm/dw/indexeddown)](https://www.npmjs.com/package/indexeddown) [![License](https://img.shields.io/npm/l/indexeddown?color=blue)](https://www.npmjs.com/package/indexeddown) [![Last commit](https://img.shields.io/github/last-commit/kapetan/indexeddown)](https://github.com/kapetan/indexeddown) [![Contributors](https://img.shields.io/github/contributors/kapetan/indexeddown?color=blue)](https://github.com/kapetan/indexeddown/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-4.0-inactive.svg) -[![Last commit](https://img.shields.io/github/last-commit/pgte/level-jobs)](https://github.com/pgte/level-jobs) [![Contributors](https://img.shields.io/github/contributors/pgte/level-jobs?color=brightgreen)](https://github.com/pgte/level-jobs/graphs/contributors) +An [`abstract-leveldown`][abstract-leveldown] implementation backed by IndexedDB. -Job Queue in [`levelup`][levelup]. +### [`lmdb-leveldown`][lmdb-leveldown] -### [`batchdb`][batchdb] +[![npm package version](https://img.shields.io/npm/v/lmdb-leveldown)](https://www.npmjs.com/package/lmdb-leveldown) [![npm downloads](https://img.shields.io/npm/dw/lmdb-leveldown)](https://www.npmjs.com/package/lmdb-leveldown) [![License](https://img.shields.io/npm/l/lmdb-leveldown?color=blue)](https://www.npmjs.com/package/lmdb-leveldown) [![Last commit](https://img.shields.io/github/last-commit/chrbala/lmdb-leveldown)](https://github.com/chrbala/lmdb-leveldown) [![Contributors](https://img.shields.io/github/contributors/chrbala/lmdb-leveldown?color=blue)](https://github.com/chrbala/lmdb-leveldown/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-4.0-inactive.svg) -[![Last commit](https://img.shields.io/github/last-commit/substack/batchdb)](https://github.com/substack/batchdb) [![Contributors](https://img.shields.io/github/contributors/substack/batchdb?color=brightgreen)](https://github.com/substack/batchdb/graphs/contributors) +An [`abstract-leveldown`][abstract-leveldown] implementation backed by LMDB. -[`levelup`][levelup] and disk storage for queued batch jobs. +### [`localdown`][localdown] -## File System +[![npm package version](https://img.shields.io/npm/v/localdown)](https://www.npmjs.com/package/localdown) [![npm downloads](https://img.shields.io/npm/dw/localdown)](https://www.npmjs.com/package/localdown) [![License](https://img.shields.io/npm/l/localdown?color=blue)](https://www.npmjs.com/package/localdown) [![Last commit](https://img.shields.io/github/last-commit/bhoriuchi/localdown)](https://github.com/bhoriuchi/localdown) [![Contributors](https://img.shields.io/github/contributors/bhoriuchi/localdown?color=blue)](https://github.com/bhoriuchi/localdown/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-4.0-inactive.svg) -### [`level-filesystem`][level-filesystem] +An [`abstract-leveldown`][abstract-leveldown] implementation backed by localStorage in Node.js. -[![Last commit](https://img.shields.io/github/last-commit/mafintosh/level-filesystem)](https://github.com/mafintosh/level-filesystem) [![Contributors](https://img.shields.io/github/contributors/mafintosh/level-filesystem?color=brightgreen)](https://github.com/mafintosh/level-filesystem/graphs/contributors) +### [`aerospike-leveldown`][aerospike-leveldown] -Full implementation of the Node.js `fs` module on top of [`levelup`][levelup]. +[![npm package version](https://img.shields.io/npm/v/aerospike-leveldown)](https://www.npmjs.com/package/aerospike-leveldown) [![npm downloads](https://img.shields.io/npm/dw/aerospike-leveldown)](https://www.npmjs.com/package/aerospike-leveldown) [![License](https://img.shields.io/npm/l/aerospike-leveldown?color=blue)](https://www.npmjs.com/package/aerospike-leveldown) [![Last commit](https://img.shields.io/github/last-commit/ProjectThor/aerospikedown)](https://github.com/ProjectThor/aerospikedown) [![Contributors](https://img.shields.io/github/contributors/ProjectThor/aerospikedown?color=blue)](https://github.com/ProjectThor/aerospikedown/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-2.7-inactive.svg) -### [`browserify-fs`][browserify-fs] +An [`abstract-leveldown`][abstract-leveldown] implementation backed by Aerospike. -[![Last commit](https://img.shields.io/github/last-commit/mafintosh/browserify-fs)](https://github.com/mafintosh/browserify-fs) [![Contributors](https://img.shields.io/github/contributors/mafintosh/browserify-fs?color=brightgreen)](https://github.com/mafintosh/browserify-fs/graphs/contributors) +### [`s3leveldown`][s3leveldown] -[`level-filesystem`][level-filesystem] as drop-in `fs` replacement for the browser, to be used with `browserify`. +[![npm package version](https://img.shields.io/npm/v/s3leveldown)](https://www.npmjs.com/package/s3leveldown) [![npm downloads](https://img.shields.io/npm/dw/s3leveldown)](https://www.npmjs.com/package/s3leveldown) [![License](https://img.shields.io/npm/l/s3leveldown?color=blue)](https://www.npmjs.com/package/s3leveldown) [![Last commit](https://img.shields.io/github/last-commit/loune/s3leveldown)](https://github.com/loune/s3leveldown) [![Contributors](https://img.shields.io/github/contributors/loune/s3leveldown?color=blue)](https://github.com/loune/s3leveldown/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-7.2-inactive.svg) -### [`level-fs`][level-fs] +An [`abstract-leveldown`][abstract-leveldown] implementation backed by [AWS S3](https://aws.amazon.com/s3/). -[![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-fs)](https://github.com/juliangruber/level-fs) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-fs?color=brightgreen)](https://github.com/juliangruber/level-fs/graphs/contributors) +### [`gaiadown-ts`][gaiadown-ts] -Node's `fs` module with [`levelup`][levelup] as backend. +[![npm package version](https://img.shields.io/npm/v/gaiadown-ts)](https://www.npmjs.com/package/gaiadown-ts) [![npm downloads](https://img.shields.io/npm/dw/gaiadown-ts)](https://www.npmjs.com/package/gaiadown-ts) [![License](https://img.shields.io/npm/l/gaiadown-ts?color=blue)](https://www.npmjs.com/package/gaiadown-ts) [![Last commit](https://img.shields.io/github/last-commit/acidleroy/gaiadown-ts)](https://github.com/acidleroy/gaiadown-ts) [![Contributors](https://img.shields.io/github/contributors/acidleroy/gaiadown-ts?color=blue)](https://github.com/acidleroy/gaiadown-ts/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-6.0-inactive.svg) -### [`level-fs-browser`][level-fs-browser] +An [`abstract-leveldown`][abstract-leveldown] implementation backed by [Gaia](https://github.com/blockstack/gaia). -[![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-fs-browser)](https://github.com/juliangruber/level-fs-browser) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-fs-browser?color=brightgreen)](https://github.com/juliangruber/level-fs-browser/graphs/contributors) +### [`dynamodb-leveldown`][dynamodb-leveldown] -[`level-fs`][level-fs] as drop-in `fs` replacement for the browser, to be used with `browserify`. +[![npm package version](https://img.shields.io/npm/v/dynamodb-leveldown)](https://www.npmjs.com/package/dynamodb-leveldown) [![npm downloads](https://img.shields.io/npm/dw/dynamodb-leveldown)](https://www.npmjs.com/package/dynamodb-leveldown) [![License](https://img.shields.io/npm/l/dynamodb-leveldown?color=blue)](https://www.npmjs.com/package/dynamodb-leveldown) [![Last commit](https://img.shields.io/github/last-commit/GioCirque/DynamoDb-LevelDown)](https://github.com/GioCirque/DynamoDb-LevelDown) [![Contributors](https://img.shields.io/github/contributors/GioCirque/DynamoDb-LevelDown?color=blue)](https://github.com/GioCirque/DynamoDb-LevelDown/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-6.3-inactive.svg) -### [`level-store`][level-store] +An [`abstract-leveldown`][abstract-leveldown] implementation backed by [AWS DynamoDB](http://aws.amazon.com/dynamodb/). -[![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-store)](https://github.com/juliangruber/level-store) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-store?color=brightgreen)](https://github.com/juliangruber/level-store/graphs/contributors) +### [`localforagedown`][localforagedown] -A streaming storage engine based on [`levelup`][levelup]. +[![npm package version](https://img.shields.io/npm/v/localforagedown)](https://www.npmjs.com/package/localforagedown) [![npm downloads](https://img.shields.io/npm/dw/localforagedown)](https://www.npmjs.com/package/localforagedown) [![License](https://img.shields.io/npm/l/localforagedown?color=blue)](https://www.npmjs.com/package/localforagedown) [![Last commit](https://img.shields.io/github/last-commit/KsRyY/localforagedown)](https://github.com/KsRyY/localforagedown) [![Contributors](https://img.shields.io/github/contributors/KsRyY/localforagedown?color=blue)](https://github.com/KsRyY/localforagedown/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-6.2-inactive.svg) -### [`level-serve`][level-serve] +An [`abstract-leveldown`][abstract-leveldown] implementation backed by [localForage](https://github.com/localForage/localForage/). -[![Last commit](https://img.shields.io/github/last-commit/Wayla/level-serve)](https://github.com/Wayla/level-serve) [![Contributors](https://img.shields.io/github/contributors/Wayla/level-serve?color=brightgreen)](https://github.com/Wayla/level-serve/graphs/contributors) +### [`react-native-leveldown`][react-native-leveldown] -Streaming static file server based on [`levelup`][levelup]. +[![npm package version](https://img.shields.io/npm/v/react-native-leveldown)](https://www.npmjs.com/package/react-native-leveldown) [![npm downloads](https://img.shields.io/npm/dw/react-native-leveldown)](https://www.npmjs.com/package/react-native-leveldown) [![License](https://img.shields.io/npm/l/react-native-leveldown?color=blue)](https://www.npmjs.com/package/react-native-leveldown) [![Last commit](https://img.shields.io/github/last-commit/andymatuschak/react-native-leveldown)](https://github.com/andymatuschak/react-native-leveldown) [![Contributors](https://img.shields.io/github/contributors/andymatuschak/react-native-leveldown?color=blue)](https://github.com/andymatuschak/react-native-leveldown/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-6.3-inactive.svg) -### [`suckit`][suckit] +An [`abstract-leveldown`][abstract-leveldown] implementation backed by [LevelDB](https://github.com/google/leveldb) (React Native). -[![Last commit](https://img.shields.io/github/last-commit/deoxxa/suckit)](https://github.com/deoxxa/suckit) [![Contributors](https://img.shields.io/github/contributors/deoxxa/suckit?color=brightgreen)](https://github.com/deoxxa/suckit/graphs/contributors) +### [`networked-hyperbeedown`][networked-hyperbeedown] -Expose a [`level-store`][level-store] over HTTP. +[![npm package version](https://img.shields.io/npm/v/networked-hyperbeedown)](https://www.npmjs.com/package/networked-hyperbeedown) [![npm downloads](https://img.shields.io/npm/dw/networked-hyperbeedown)](https://www.npmjs.com/package/networked-hyperbeedown) [![License](https://img.shields.io/npm/l/networked-hyperbeedown?color=blue)](https://www.npmjs.com/package/networked-hyperbeedown) [![Last commit](https://img.shields.io/github/last-commit/RangerMauve/networked-hyperbeedown)](https://github.com/RangerMauve/networked-hyperbeedown) [![Contributors](https://img.shields.io/github/contributors/RangerMauve/networked-hyperbeedown?color=blue)](https://github.com/RangerMauve/networked-hyperbeedown/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-missing-lightgrey.svg) -### [`level-vinyl`][level-vinyl] +An [`abstract-leveldown`][abstract-leveldown] implementation backed by [Hyperbee](https://github.com/hypercore-protocol/hyperbee/). -[![Last commit](https://img.shields.io/github/last-commit/vweevers/level-vinyl)](https://github.com/vweevers/level-vinyl) [![Contributors](https://img.shields.io/github/contributors/vweevers/level-vinyl?color=brightgreen)](https://github.com/vweevers/level-vinyl/graphs/contributors) +### [`encoding-down`][encoding-down] -[Vinyl](https://github.com/gulpjs/vinyl-fs) adapter and blob store. Saves file contents in a content addressable blob store, file metadata in [`levelup`][levelup]. +[![npm package version](https://img.shields.io/npm/v/encoding-down)](https://www.npmjs.com/package/encoding-down) [![npm downloads](https://img.shields.io/npm/dw/encoding-down)](https://www.npmjs.com/package/encoding-down) [![License](https://img.shields.io/npm/l/encoding-down?color=blue)](https://www.npmjs.com/package/encoding-down) [![Last commit](https://img.shields.io/github/last-commit/Level/encoding-down)](https://github.com/Level/encoding-down) [![Contributors](https://img.shields.io/github/contributors/Level/encoding-down?color=blue)](https://github.com/Level/encoding-down/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-7.2-inactive.svg) -### [`level-blob`][level-blob] +An [`abstract-leveldown`][abstract-leveldown] layer that provides key/value encoding. Superseded by [`abstract-level`][abstract-level]. -[![Last commit](https://img.shields.io/github/last-commit/crodas/level-blob)](https://github.com/crodas/level-blob) [![Contributors](https://img.shields.io/github/contributors/crodas/level-blob?color=brightgreen)](https://github.com/crodas/level-blob/graphs/contributors) +### [`@adorsys/encrypt-down`][@adorsys/encrypt-down] -Store blobs in [`levelup`][levelup] +[![npm package version](https://img.shields.io/npm/v/@adorsys/encrypt-down)](https://www.npmjs.com/package/@adorsys/encrypt-down) [![npm downloads](https://img.shields.io/npm/dw/@adorsys/encrypt-down)](https://www.npmjs.com/package/@adorsys/encrypt-down) [![License](https://img.shields.io/npm/l/@adorsys/encrypt-down?color=blue)](https://www.npmjs.com/package/@adorsys/encrypt-down) [![Last commit](https://img.shields.io/github/last-commit/adorsys/encrypt-down)](https://github.com/adorsys/encrypt-down) [![Contributors](https://img.shields.io/github/contributors/adorsys/encrypt-down?color=blue)](https://github.com/adorsys/encrypt-down/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-6.3-inactive.svg) -### [`level-blob-store`][level-blob-store] +An [`abstract-leveldown`][abstract-leveldown] layer that provides encryption for values. -[![Last commit](https://img.shields.io/github/last-commit/diasdavid/level-blob-store)](https://github.com/diasdavid/level-blob-store) [![Contributors](https://img.shields.io/github/contributors/diasdavid/level-blob-store?color=brightgreen)](https://github.com/diasdavid/level-blob-store/graphs/contributors) +### [`deferred-leveldown`][deferred-leveldown] -An [`abstract-blob-store`](https://github.com/maxogden/abstract-blob-store) using LevelDB as the storage backend +[![npm package version](https://img.shields.io/npm/v/deferred-leveldown)](https://www.npmjs.com/package/deferred-leveldown) [![npm downloads](https://img.shields.io/npm/dw/deferred-leveldown)](https://www.npmjs.com/package/deferred-leveldown) [![License](https://img.shields.io/npm/l/deferred-leveldown?color=blue)](https://www.npmjs.com/package/deferred-leveldown) [![Last commit](https://img.shields.io/github/last-commit/Level/deferred-leveldown)](https://github.com/Level/deferred-leveldown) [![Contributors](https://img.shields.io/github/contributors/Level/deferred-leveldown?color=blue)](https://github.com/Level/deferred-leveldown/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-7.2-inactive.svg) -### [`level-pull-blob-store`][level-pull-blob-store] +An [`abstract-leveldown`][abstract-leveldown] layer that handles delayed-open. Built into [`levelup`][levelup]. Both are superseded by [`abstract-level`][abstract-level]. -[![Last commit](https://img.shields.io/github/last-commit/ipfs/js-level-pull-blob-store)](https://github.com/ipfs/js-level-pull-blob-store) [![Contributors](https://img.shields.io/github/contributors/ipfs/js-level-pull-blob-store?color=brightgreen)](https://github.com/ipfs/js-level-pull-blob-store/graphs/contributors) +### [`level-cowdown`][level-cowdown] -A [`pull-blob-store`](https://github.com/ipfs/interface-pull-blob-store) implementation backed by LevelDB. +[![npm package version](https://img.shields.io/npm/v/level-cowdown)](https://www.npmjs.com/package/level-cowdown) [![npm downloads](https://img.shields.io/npm/dw/level-cowdown)](https://www.npmjs.com/package/level-cowdown) [![License](https://img.shields.io/npm/l/level-cowdown?color=blue)](https://www.npmjs.com/package/level-cowdown) [![Last commit](https://img.shields.io/github/last-commit/substack/level-cowdown)](https://github.com/substack/level-cowdown) [![Contributors](https://img.shields.io/github/contributors/substack/level-cowdown?color=blue)](https://github.com/substack/level-cowdown/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-2.4-inactive.svg) -### [`level-server`][level-server] +Copy-on-write [`abstract-leveldown`][abstract-leveldown] layer. -[![Last commit](https://img.shields.io/github/last-commit/Wayla/level-server)](https://github.com/Wayla/level-server) [![Contributors](https://img.shields.io/github/contributors/Wayla/level-server?color=brightgreen)](https://github.com/Wayla/level-server/graphs/contributors) +### [`abstract-stream-leveldown`][abstract-stream-leveldown] -Standalone LevelDB file server based on [`level-serve`][level-serve], [`multilevel`][multilevel] and [`level-sublevel`][level-sublevel]. +[![npm package version](https://img.shields.io/npm/v/abstract-stream-leveldown)](https://www.npmjs.com/package/abstract-stream-leveldown) [![npm downloads](https://img.shields.io/npm/dw/abstract-stream-leveldown)](https://www.npmjs.com/package/abstract-stream-leveldown) [![License](https://img.shields.io/npm/l/abstract-stream-leveldown?color=blue)](https://www.npmjs.com/package/abstract-stream-leveldown) [![Last commit](https://img.shields.io/github/last-commit/jed/abstract-stream-leveldown)](https://github.com/jed/abstract-stream-leveldown) [![Contributors](https://img.shields.io/github/contributors/jed/abstract-stream-leveldown?color=blue)](https://github.com/jed/abstract-stream-leveldown/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-2.1-inactive.svg) -## Utilities +A stream-based [`abstract-leveldown`][abstract-leveldown] prototype. -### [`level-codec`][level-codec] +### [`level-iterator-stream`][level-iterator-stream] -[![Last commit](https://img.shields.io/github/last-commit/Level/codec)](https://github.com/Level/codec) [![Contributors](https://img.shields.io/github/contributors/Level/codec?color=brightgreen)](https://github.com/Level/codec/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-iterator-stream)](https://www.npmjs.com/package/level-iterator-stream) [![npm downloads](https://img.shields.io/npm/dw/level-iterator-stream)](https://www.npmjs.com/package/level-iterator-stream) [![License](https://img.shields.io/npm/l/level-iterator-stream?color=blue)](https://www.npmjs.com/package/level-iterator-stream) [![Last commit](https://img.shields.io/github/last-commit/Level/iterator-stream)](https://github.com/Level/iterator-stream) [![Contributors](https://img.shields.io/github/contributors/Level/iterator-stream?color=blue)](https://github.com/Level/iterator-stream/graphs/contributors) -Encode keys, values and ltgte options. Used in [`encoding-down`][encoding-down]. +Turn an [`abstract-leveldown`][abstract-leveldown] iterator into a readable stream. Included in [`levelup`][levelup]. For [`abstract-level`][abstract-level] databases, this is superseded by [`level-read-stream`][level-read-stream]. -### [`level-errors`][level-errors] +### [`level-batch-stream`][level-batch-stream] -[![Last commit](https://img.shields.io/github/last-commit/Level/errors)](https://github.com/Level/errors) [![Contributors](https://img.shields.io/github/contributors/Level/errors?color=brightgreen)](https://github.com/Level/errors/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-batch-stream)](https://www.npmjs.com/package/level-batch-stream) [![npm downloads](https://img.shields.io/npm/dw/level-batch-stream)](https://www.npmjs.com/package/level-batch-stream) [![License](https://img.shields.io/npm/l/level-batch-stream?color=blue)](https://www.npmjs.com/package/level-batch-stream) [![Last commit](https://img.shields.io/github/last-commit/jcrugzz/level-batch-stream)](https://github.com/jcrugzz/level-batch-stream) [![Contributors](https://img.shields.io/github/contributors/jcrugzz/level-batch-stream?color=blue)](https://github.com/jcrugzz/level-batch-stream/graphs/contributors) -Error types for [`levelup`][levelup]. +Streams2 writable stream for [`levelup`][levelup]. -### [`level-test`][level-test] +### [`level-writestream`][level-writestream] -[![Last commit](https://img.shields.io/github/last-commit/Level/level-test)](https://github.com/Level/level-test) [![Contributors](https://img.shields.io/github/contributors/Level/level-test?color=brightgreen)](https://github.com/Level/level-test/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-writestream)](https://www.npmjs.com/package/level-writestream) [![npm downloads](https://img.shields.io/npm/dw/level-writestream)](https://www.npmjs.com/package/level-writestream) [![License](https://img.shields.io/npm/l/level-writestream?color=blue)](https://www.npmjs.com/package/level-writestream) [![Last commit](https://img.shields.io/github/last-commit/pgte/level-writestream)](https://github.com/pgte/level-writestream) [![Contributors](https://img.shields.io/github/contributors/pgte/level-writestream?color=blue)](https://github.com/pgte/level-writestream/graphs/contributors) -Easily run your `level-*` tests against [all stores](#stores). +Streams2 writable stream for [`levelup`][levelup]. -### [`level-compose`][level-compose] +### [`level-write-stream`][level-write-stream] -[![Last commit](https://img.shields.io/github/last-commit/Level/compose)](https://github.com/Level/compose) [![Contributors](https://img.shields.io/github/contributors/Level/compose?color=brightgreen)](https://github.com/Level/compose/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-write-stream)](https://www.npmjs.com/package/level-write-stream) [![npm downloads](https://img.shields.io/npm/dw/level-write-stream)](https://www.npmjs.com/package/level-write-stream) [![License](https://img.shields.io/npm/l/level-write-stream?color=blue)](https://www.npmjs.com/package/level-write-stream) [![Last commit](https://img.shields.io/github/last-commit/Raynos/level-write-stream)](https://github.com/Raynos/level-write-stream) [![Contributors](https://img.shields.io/github/contributors/Raynos/level-write-stream?color=blue)](https://github.com/Raynos/level-write-stream/graphs/contributors) -Compose a database factory from [`abstract-leveldown`][abstract-leveldown] and [`levelup`][levelup] layers. +Streams1 writable stream for [`levelup`][levelup] or [`abstract-leveldown`][abstract-leveldown]. -### [`level-exists`][level-exists] +### [`level-livefeed`][level-livefeed] -[![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-exists)](https://github.com/juliangruber/level-exists) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-exists?color=brightgreen)](https://github.com/juliangruber/level-exists/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-livefeed)](https://www.npmjs.com/package/level-livefeed) [![npm downloads](https://img.shields.io/npm/dw/level-livefeed)](https://www.npmjs.com/package/level-livefeed) [![License](https://img.shields.io/npm/l/level-livefeed?color=blue)](https://www.npmjs.com/package/level-livefeed) [![Last commit](https://img.shields.io/github/last-commit/Raynos/level-livefeed)](https://github.com/Raynos/level-livefeed) [![Contributors](https://img.shields.io/github/contributors/Raynos/level-livefeed?color=blue)](https://github.com/Raynos/level-livefeed/graphs/contributors) -Check if a datum exists without reading its value. +A live query of a range in [`levelup`][levelup]. Similar to [`level-live-stream`][level-live-stream] but with a streams2 interface. -### [`level-move`][level-move] +### [`level-range`][level-range] -[![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-move)](https://github.com/juliangruber/level-move) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-move?color=brightgreen)](https://github.com/juliangruber/level-move/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-range)](https://www.npmjs.com/package/level-range) [![npm downloads](https://img.shields.io/npm/dw/level-range)](https://www.npmjs.com/package/level-range) [![License](https://img.shields.io/npm/l/level-range?color=blue)](https://www.npmjs.com/package/level-range) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-range)](https://github.com/juliangruber/level-range) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-range?color=blue)](https://github.com/juliangruber/level-range/graphs/contributors) -Move a value to another key. +Find all K/V-pairs prefixed by a certain key. Streams1. -### [`level-capped`][level-capped] +### [`level-cursor`][level-cursor] -[![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-capped)](https://github.com/juliangruber/level-capped) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-capped?color=brightgreen)](https://github.com/juliangruber/level-capped/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-cursor)](https://www.npmjs.com/package/level-cursor) [![npm downloads](https://img.shields.io/npm/dw/level-cursor)](https://www.npmjs.com/package/level-cursor) [![License](https://img.shields.io/npm/l/level-cursor?color=blue)](https://www.npmjs.com/package/level-cursor) [![Last commit](https://img.shields.io/github/last-commit/kordon/cursor)](https://github.com/kordon/cursor) [![Contributors](https://img.shields.io/github/contributors/kordon/cursor?color=blue)](https://github.com/kordon/cursor/graphs/contributors) -Capped collections. +A stream "cursor" to iterate through a ReadStream / KeyStream / ValueStream. -### [`level-create`][level-create] +### [`level-live`][level-live] -[![Last commit](https://img.shields.io/github/last-commit/substack/level-create)](https://github.com/substack/level-create) [![Contributors](https://img.shields.io/github/contributors/substack/level-create?color=brightgreen)](https://github.com/substack/level-create/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-live)](https://www.npmjs.com/package/level-live) [![npm downloads](https://img.shields.io/npm/dw/level-live)](https://www.npmjs.com/package/level-live) [![License](https://img.shields.io/npm/l/level-live?color=blue)](https://www.npmjs.com/package/level-live) [![Last commit](https://img.shields.io/github/last-commit/voltraco/level-live)](https://github.com/voltraco/level-live) [![Contributors](https://img.shields.io/github/contributors/voltraco/level-live?color=blue)](https://github.com/voltraco/level-live/graphs/contributors) -Insert a key if and only if it doesn't already exist +Simple, light and correct live read stream implementation. NB. Uses an undefined streams version, as well as [`ltgt`][ltgt] which is not compatible with [`abstract-level`][abstract-level]. -### [`level-create-batch`][level-create-batch] +### [`level-glob`][level-glob] -[![Last commit](https://img.shields.io/github/last-commit/substack/level-create-batch)](https://github.com/substack/level-create-batch) [![Contributors](https://img.shields.io/github/contributors/substack/level-create-batch?color=brightgreen)](https://github.com/substack/level-create-batch/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-glob)](https://www.npmjs.com/package/level-glob) [![npm downloads](https://img.shields.io/npm/dw/level-glob)](https://www.npmjs.com/package/level-glob) [![License](https://img.shields.io/npm/l/level-glob?color=blue)](https://www.npmjs.com/package/level-glob) [![Last commit](https://img.shields.io/github/last-commit/vweevers/level-glob)](https://github.com/vweevers/level-glob) [![Contributors](https://img.shields.io/github/contributors/vweevers/level-glob?color=blue)](https://github.com/vweevers/level-glob/graphs/contributors) -Insert a batch of keys if and only if none of the keys already exist +A streams2 read stream filtered and ordered by glob patterns. Keys in the database should be unix-like paths. -### [`level-modify`][level-modify] +### [`pull-level`][pull-level] -[![Last commit](https://img.shields.io/github/last-commit/dskrepps/level-modify)](https://github.com/dskrepps/level-modify) [![Contributors](https://img.shields.io/github/contributors/dskrepps/level-modify?color=brightgreen)](https://github.com/dskrepps/level-modify/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/pull-level)](https://www.npmjs.com/package/pull-level) [![npm downloads](https://img.shields.io/npm/dw/pull-level)](https://www.npmjs.com/package/pull-level) [![License](https://img.shields.io/npm/l/pull-level?color=blue)](https://www.npmjs.com/package/pull-level) [![Last commit](https://img.shields.io/github/last-commit/dominictarr/pull-level)](https://github.com/dominictarr/pull-level) [![Contributors](https://img.shields.io/github/contributors/dominictarr/pull-level?color=blue)](https://github.com/dominictarr/pull-level/graphs/contributors) -Modify an existing key in [`levelup`][levelup]. Uses [`level-lock`][level-lock]. See also [`level-create`][level-create] and [`level-move`][level-move]. +[`pull-stream`](https://github.com/pull-stream/pull-stream) interface to [`levelup`][levelup] with read streams, write streams and realtime (tail/live) reads. Not compatible with [`abstract-level`][abstract-level]. -### [`level-random`][level-random] +### [`level-live-stream`][level-live-stream] -[![Last commit](https://img.shields.io/github/last-commit/michaelnisi/level-random)](https://github.com/michaelnisi/level-random) [![Contributors](https://img.shields.io/github/contributors/michaelnisi/level-random?color=brightgreen)](https://github.com/michaelnisi/level-random/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-live-stream)](https://www.npmjs.com/package/level-live-stream) [![npm downloads](https://img.shields.io/npm/dw/level-live-stream)](https://www.npmjs.com/package/level-live-stream) [![License](https://img.shields.io/npm/l/level-live-stream?color=blue)](https://www.npmjs.com/package/level-live-stream) [![Last commit](https://img.shields.io/github/last-commit/dominictarr/level-live-stream)](https://github.com/dominictarr/level-live-stream) [![Contributors](https://img.shields.io/github/contributors/dominictarr/level-live-stream?color=blue)](https://github.com/dominictarr/level-live-stream/graphs/contributors) -Read values of random [`levelup`][levelup] keys. +Like `db.createReadStream()` except it's live / tailable. i.e. instead of ending, it will stay open and stream changes to the database as they are inserted. Not compatible with [`abstract-level`][abstract-level]. -### [`level-shared-batch`][level-shared-batch] +### [`level-concat-iterator`][level-concat-iterator] -[![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-shared-batch)](https://github.com/juliangruber/level-shared-batch) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-shared-batch?color=brightgreen)](https://github.com/juliangruber/level-shared-batch/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-concat-iterator)](https://www.npmjs.com/package/level-concat-iterator) [![npm downloads](https://img.shields.io/npm/dw/level-concat-iterator)](https://www.npmjs.com/package/level-concat-iterator) [![License](https://img.shields.io/npm/l/level-concat-iterator?color=blue)](https://www.npmjs.com/package/level-concat-iterator) [![Last commit](https://img.shields.io/github/last-commit/Level/concat-iterator)](https://github.com/Level/concat-iterator) [![Contributors](https://img.shields.io/github/contributors/Level/concat-iterator?color=blue)](https://github.com/Level/concat-iterator/graphs/contributors) -Share batches and commit collectively +Concatenate items from an [`abstract-leveldown`][abstract-leveldown] iterator into an array. On [`abstract-level`][abstract-level] databases, this is superseded by `iterator.all()`. -### [`batchlevel`][batchlevel] +### [`subleveldown`][subleveldown] -[![Last commit](https://img.shields.io/github/last-commit/biobricks/batchlevel)](https://github.com/biobricks/batchlevel) [![Contributors](https://img.shields.io/github/contributors/biobricks/batchlevel?color=brightgreen)](https://github.com/biobricks/batchlevel/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/subleveldown)](https://www.npmjs.com/package/subleveldown) [![npm downloads](https://img.shields.io/npm/dw/subleveldown)](https://www.npmjs.com/package/subleveldown) [![License](https://img.shields.io/npm/l/subleveldown?color=blue)](https://www.npmjs.com/package/subleveldown) [![Last commit](https://img.shields.io/github/last-commit/Level/subleveldown)](https://github.com/Level/subleveldown) [![Contributors](https://img.shields.io/github/contributors/Level/subleveldown?color=blue)](https://github.com/Level/subleveldown/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-7.2-inactive.svg) ![levelup](https://img.shields.io/badge/levelup-5.1-inactive.svg) -Batch all operations made on a [`levelup`][levelup] instance. Compatible with [`subleveldown`][subleveldown]. +Split a [`levelup`][levelup] database into sublevels with their own keyspace, encoding and events. Superseded by [`abstract-level`][abstract-level]. -### [`ltest`][ltest] +### [`level-temp`][level-temp] -[![Last commit](https://img.shields.io/github/last-commit/ralphtheninja/ltest)](https://github.com/ralphtheninja/ltest) [![Contributors](https://img.shields.io/github/contributors/ralphtheninja/ltest?color=brightgreen)](https://github.com/ralphtheninja/ltest/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-temp)](https://www.npmjs.com/package/level-temp) [![npm downloads](https://img.shields.io/npm/dw/level-temp)](https://www.npmjs.com/package/level-temp) [![License](https://img.shields.io/npm/l/level-temp?color=blue)](https://www.npmjs.com/package/level-temp) [![Last commit](https://img.shields.io/github/last-commit/mafintosh/level-temp)](https://github.com/mafintosh/level-temp) [![Contributors](https://img.shields.io/github/contributors/mafintosh/level-temp?color=blue)](https://github.com/mafintosh/level-temp/graphs/contributors) -Test function for [`levelup`][levelup] testing, based on [`level-test`][level-test]. +Create a temporary [`subleveldown`][subleveldown] sublevel that is guaranteed to be empty. -### [`level-probe`][level-probe] +### [`level-mount`][level-mount] -[![Last commit](https://img.shields.io/github/last-commit/vweevers/level-probe)](https://github.com/vweevers/level-probe) [![Contributors](https://img.shields.io/github/contributors/vweevers/level-probe?color=brightgreen)](https://github.com/vweevers/level-probe/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-mount)](https://www.npmjs.com/package/level-mount) [![npm downloads](https://img.shields.io/npm/dw/level-mount)](https://www.npmjs.com/package/level-mount) [![License](https://img.shields.io/npm/l/level-mount?color=blue)](https://www.npmjs.com/package/level-mount) [![Last commit](https://img.shields.io/github/last-commit/u8sand/level-mount)](https://github.com/u8sand/level-mount) [![Contributors](https://img.shields.io/github/contributors/u8sand/level-mount?color=blue)](https://github.com/u8sand/level-mount/graphs/contributors) ![abstract-leveldown](https://img.shields.io/badge/abstract--leveldown-6.0-inactive.svg) -Get the first record in a range, using an iterator or stream. NB. Not compatible with latest [`levelup`][levelup]. +Mount multiple [`abstract-leveldown`][abstract-leveldown] stores by key prefix onto a single store. Can be used with [`subleveldown`][subleveldown]. -### [`autolevel`][autolevel] +### [`bytespace`][bytespace] -[![Last commit](https://img.shields.io/github/last-commit/finwo/autolevel)](https://github.com/finwo/autolevel) [![Contributors](https://img.shields.io/github/contributors/finwo/autolevel?color=brightgreen)](https://github.com/finwo/autolevel/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/bytespace)](https://www.npmjs.com/package/bytespace) [![npm downloads](https://img.shields.io/npm/dw/bytespace)](https://www.npmjs.com/package/bytespace) [![License](https://img.shields.io/npm/l/bytespace?color=blue)](https://www.npmjs.com/package/bytespace) [![Last commit](https://img.shields.io/github/last-commit/deanlandolt/bytespace)](https://github.com/deanlandolt/bytespace) [![Contributors](https://img.shields.io/github/contributors/deanlandolt/bytespace?color=blue)](https://github.com/deanlandolt/bytespace/graphs/contributors) -Automatically combine [`levelup`][levelup] with the right [`abstract-leveldown`][abstract-leveldown] store for your configuration. +Keypath subspaces prefixed with [`bytewise`][bytewise] tuples. Similar to [`level-sublevel`][level-sublevel]. NB. [`bytewise`][bytewise] - and thus [`bytespace`][bytespace] - can be slow. Consider using the [`charwise`][charwise] encoding instead. -### [`level-lazy-open`][level-lazy-open] +### [`level-sublevel`][level-sublevel] -[![Last commit](https://img.shields.io/github/last-commit/Level/lazy-open)](https://github.com/Level/lazy-open) [![Contributors](https://img.shields.io/github/contributors/Level/lazy-open?color=brightgreen)](https://github.com/Level/lazy-open/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-sublevel)](https://www.npmjs.com/package/level-sublevel) [![npm downloads](https://img.shields.io/npm/dw/level-sublevel)](https://www.npmjs.com/package/level-sublevel) [![License](https://img.shields.io/npm/l/level-sublevel?color=blue)](https://www.npmjs.com/package/level-sublevel) [![Last commit](https://img.shields.io/github/last-commit/dominictarr/level-sublevel)](https://github.com/dominictarr/level-sublevel) [![Contributors](https://img.shields.io/github/contributors/dominictarr/level-sublevel?color=blue)](https://github.com/dominictarr/level-sublevel/graphs/contributors) ![levelup](https://img.shields.io/badge/levelup-0.19-inactive.svg) -Lazily open a leveldown compatible backend. +Adds the ability to create subsections with the same API as [`levelup`][levelup], but only write/read to a prefixed section, or bucket, of the key-space. Each section also has [`level-hooks`][level-hooks] installed. NB. No longer maintained. Instead use [`subleveldown`][subleveldown] for [`levelup`][levelup], or the built-in sublevels of [`abstract-level`][abstract-level]. -### [`changeset`][changeset] +### [`sublevel-prefixer`][sublevel-prefixer] -[![Last commit](https://img.shields.io/github/last-commit/eugeneware/changeset)](https://github.com/eugeneware/changeset) [![Contributors](https://img.shields.io/github/contributors/eugeneware/changeset?color=brightgreen)](https://github.com/eugeneware/changeset/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/sublevel-prefixer)](https://www.npmjs.com/package/sublevel-prefixer) [![npm downloads](https://img.shields.io/npm/dw/sublevel-prefixer)](https://www.npmjs.com/package/sublevel-prefixer) [![License](https://img.shields.io/npm/l/sublevel-prefixer?color=blue)](https://www.npmjs.com/package/sublevel-prefixer) [![Last commit](https://img.shields.io/github/last-commit/mafintosh/sublevel-prefixer)](https://github.com/mafintosh/sublevel-prefixer) [![Contributors](https://img.shields.io/github/contributors/mafintosh/sublevel-prefixer?color=blue)](https://github.com/mafintosh/sublevel-prefixer/graphs/contributors) -Generate diff changesets for javascript objects, decomposing diffs into a series of puts and delete operations. The format is compatible with [`levelup`][levelup] batch operations. Useful to synchronize objects. +Utility to prefix a key with a sublevel prefix. -### [`levelup-defaults`][levelup-defaults] +### [`level-sublevel-stream`][level-sublevel-stream] -[![Last commit](https://img.shields.io/github/last-commit/mafintosh/levelup-defaults)](https://github.com/mafintosh/levelup-defaults) [![Contributors](https://img.shields.io/github/contributors/mafintosh/levelup-defaults?color=brightgreen)](https://github.com/mafintosh/levelup-defaults/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-sublevel-stream)](https://www.npmjs.com/package/level-sublevel-stream) [![npm downloads](https://img.shields.io/npm/dw/level-sublevel-stream)](https://www.npmjs.com/package/level-sublevel-stream) [![License](https://img.shields.io/npm/l/level-sublevel-stream?color=blue)](https://www.npmjs.com/package/level-sublevel-stream) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-sublevel-stream)](https://github.com/juliangruber/level-sublevel-stream) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-sublevel-stream?color=blue)](https://github.com/juliangruber/level-sublevel-stream/graphs/contributors) -Change the defaults settings on a [`levelup`][levelup] instance by returning a new [`levelup`][levelup] instance that uses the same [`abstract-leveldown`][abstract-leveldown] but different options. +Find [`level-sublevel`][level-sublevel] sublevels, not requiring them to be in memory already. -### [`level-methods`][level-methods] +### [`level-subtree`][level-subtree] -[![Last commit](https://img.shields.io/github/last-commit/Wayla/level-methods)](https://github.com/Wayla/level-methods) [![Contributors](https://img.shields.io/github/contributors/Wayla/level-methods?color=brightgreen)](https://github.com/Wayla/level-methods/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-subtree)](https://www.npmjs.com/package/level-subtree) [![npm downloads](https://img.shields.io/npm/dw/level-subtree)](https://www.npmjs.com/package/level-subtree) [![License](https://img.shields.io/npm/l/level-subtree?color=blue)](https://www.npmjs.com/package/level-subtree) [![Last commit](https://img.shields.io/github/last-commit/hij1nx/level-subtree)](https://github.com/hij1nx/level-subtree) [![Contributors](https://img.shields.io/github/contributors/hij1nx/level-subtree?color=blue)](https://github.com/hij1nx/level-subtree/graphs/contributors) -Useful meta information about [`levelup`][levelup] methods. +Generate a tree from [`level-sublevel`][level-sublevel] sublevels, useful when there is no manifest. -## Replication +### [`level-superlevel`][level-superlevel] -### [`level-2pc`][level-2pc] +[![npm package version](https://img.shields.io/npm/v/level-superlevel)](https://www.npmjs.com/package/level-superlevel) [![npm downloads](https://img.shields.io/npm/dw/level-superlevel)](https://www.npmjs.com/package/level-superlevel) [![License](https://img.shields.io/npm/l/level-superlevel?color=blue)](https://www.npmjs.com/package/level-superlevel) [![Last commit](https://img.shields.io/github/last-commit/randymized/level-superlevel)](https://github.com/randymized/level-superlevel) [![Contributors](https://img.shields.io/github/contributors/randymized/level-superlevel?color=blue)](https://github.com/randymized/level-superlevel/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/hij1nx/level-2pc)](https://github.com/hij1nx/level-2pc) [![Contributors](https://img.shields.io/github/contributors/hij1nx/level-2pc?color=brightgreen)](https://github.com/hij1nx/level-2pc/graphs/contributors) +Superlevel adds a "super" level that allows accessing the entire database, discovering [`level-sublevel`][level-sublevel] sublevels and browsing the database without knowledge of the sublevel structure. -A two-phase commit protocol. +### [`level-subkey`][level-subkey] -### [`level-couch-sync`][level-couch-sync] +[![npm package version](https://img.shields.io/npm/v/level-subkey)](https://www.npmjs.com/package/level-subkey) [![npm downloads](https://img.shields.io/npm/dw/level-subkey)](https://www.npmjs.com/package/level-subkey) [![License](https://img.shields.io/npm/l/level-subkey?color=blue)](https://www.npmjs.com/package/level-subkey) [![Last commit](https://img.shields.io/github/last-commit/snowyu/level-subkey)](https://github.com/snowyu/level-subkey) [![Contributors](https://img.shields.io/github/contributors/snowyu/level-subkey?color=blue)](https://github.com/snowyu/level-subkey/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/dominictarr/level-couch-sync)](https://github.com/dominictarr/level-couch-sync) [![Contributors](https://img.shields.io/github/contributors/dominictarr/level-couch-sync?color=brightgreen)](https://github.com/dominictarr/level-couch-sync/graphs/contributors) +Use path-like keys to separate sections of [`levelup`][levelup], with hooks. Adapted from [`level-sublevel`][level-sublevel]. -Replicate from CouchDB to LevelDB. +### [`level-mirror`][level-mirror] -### [`level-master`][level-master] +[![npm package version](https://img.shields.io/npm/v/level-mirror)](https://www.npmjs.com/package/level-mirror) [![npm downloads](https://img.shields.io/npm/dw/level-mirror)](https://www.npmjs.com/package/level-mirror) [![License](https://img.shields.io/npm/l/level-mirror?color=blue)](https://www.npmjs.com/package/level-mirror) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-mirror)](https://github.com/juliangruber/level-mirror) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-mirror?color=blue)](https://github.com/juliangruber/level-mirror/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/dominictarr/level-master)](https://github.com/dominictarr/level-master) [![Contributors](https://img.shields.io/github/contributors/dominictarr/level-master?color=brightgreen)](https://github.com/dominictarr/level-master/graphs/contributors) +Mirror and optionally transform data from one [`level-sublevel`][level-sublevel] sublevel into another. -Master-Slave replication for [`levelup`][levelup]. +### [`couchup`][couchup] -### [`level-merkle`][level-merkle] +[![npm package version](https://img.shields.io/npm/v/couchup)](https://www.npmjs.com/package/couchup) [![npm downloads](https://img.shields.io/npm/dw/couchup)](https://www.npmjs.com/package/couchup) [![License](https://img.shields.io/npm/l/couchup?color=blue)](https://www.npmjs.com/package/couchup) [![Last commit](https://img.shields.io/github/last-commit/mikeal/couchup)](https://github.com/mikeal/couchup) [![Contributors](https://img.shields.io/github/contributors/mikeal/couchup?color=blue)](https://github.com/mikeal/couchup/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/dominictarr/level-merkle)](https://github.com/dominictarr/level-merkle) [![Contributors](https://img.shields.io/github/contributors/dominictarr/level-merkle?color=brightgreen)](https://github.com/dominictarr/level-merkle/graphs/contributors) +A CouchDB implementation on top of [`levelup`][levelup]. -Uses [merkle-trees](http://en.wikipedia.org/wiki/Merkle_tree) to replicate data sets. Data must be sets and currently, deletes are not supported. +### [`firedup`][firedup] -### [`level-replicate`][level-replicate] +[![npm package version](https://img.shields.io/npm/v/firedup)](https://www.npmjs.com/package/firedup) [![npm downloads](https://img.shields.io/npm/dw/firedup)](https://www.npmjs.com/package/firedup) [![License](https://img.shields.io/npm/l/firedup?color=blue)](https://www.npmjs.com/package/firedup) [![Last commit](https://img.shields.io/github/last-commit/eugeneware/firedup)](https://github.com/eugeneware/firedup) [![Contributors](https://img.shields.io/github/contributors/eugeneware/firedup?color=blue)](https://github.com/eugeneware/firedup/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/dominictarr/level-replicate)](https://github.com/dominictarr/level-replicate) [![Contributors](https://img.shields.io/github/contributors/dominictarr/level-replicate?color=brightgreen)](https://github.com/dominictarr/level-replicate/graphs/contributors) +A node.js implementation of firebase based on [`levelup`][levelup]. -Master-master replication with [`levelup`][levelup]. Implements scuttlebutt style handshake, syncs data, then replicates real time changes. +### [`len`][len] -### [`level-replicator`][level-replicator] +[![npm package version](https://img.shields.io/npm/v/len)](https://www.npmjs.com/package/len) [![npm downloads](https://img.shields.io/npm/dw/len)](https://www.npmjs.com/package/len) [![License](https://img.shields.io/npm/l/len?color=blue)](https://www.npmjs.com/package/len) [![Last commit](https://img.shields.io/github/last-commit/binocarlos/len)](https://github.com/binocarlos/len) [![Contributors](https://img.shields.io/github/contributors/binocarlos/len?color=blue)](https://github.com/binocarlos/len/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/hij1nx/level-replicator)](https://github.com/hij1nx/level-replicator) [![Contributors](https://img.shields.io/github/contributors/hij1nx/level-replicator?color=brightgreen)](https://github.com/hij1nx/level-replicator/graphs/contributors) +Len is a resource booking database using LevelDB for storage. Useful for calendar and gantt chart apps and for questions like 'can a customer book this resource starting X and ending Y'. -Master-master replication. Same goal as [`level-replicate`][level-replicate] but different approach. +### [`lem`][lem] -## Tools +[![npm package version](https://img.shields.io/npm/v/lem)](https://www.npmjs.com/package/lem) [![npm downloads](https://img.shields.io/npm/dw/lem)](https://www.npmjs.com/package/lem) [![License](https://img.shields.io/npm/l/lem?color=blue)](https://www.npmjs.com/package/lem) [![Last commit](https://img.shields.io/github/last-commit/binocarlos/lem)](https://github.com/binocarlos/lem) [![Contributors](https://img.shields.io/github/contributors/binocarlos/lem?color=blue)](https://github.com/binocarlos/lem/graphs/contributors) -**CLI, GUI and web interfaces for exploring data.** +Lem is a telemetry storage database using LevelDB. Keys are indexed by timestamp and you can read values in-between 2 points in time. -### [`lev2`][lev2] +### [`pushdb`][pushdb] -[![Last commit](https://img.shields.io/github/last-commit/maxlath/lev2)](https://github.com/maxlath/lev2) [![Contributors](https://img.shields.io/github/contributors/maxlath/lev2?color=brightgreen)](https://github.com/maxlath/lev2/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/pushdb)](https://www.npmjs.com/package/pushdb) [![npm downloads](https://img.shields.io/npm/dw/pushdb)](https://www.npmjs.com/package/pushdb) [![License](https://img.shields.io/npm/l/pushdb?color=blue)](https://www.npmjs.com/package/pushdb) [![Last commit](https://img.shields.io/github/last-commit/mikeal/pushdb)](https://github.com/mikeal/pushdb) [![Contributors](https://img.shields.io/github/contributors/mikeal/pushdb?color=blue)](https://github.com/mikeal/pushdb/graphs/contributors) -A complete REPL & CLI for managing LevelDB instances +A programmable database with document storage and unique indexing capabilities. -### [`level-in`][level-in] +### [`tacodb`][tacodb] -[![Last commit](https://img.shields.io/github/last-commit/fergiemcdowall/level-in)](https://github.com/fergiemcdowall/level-in) [![Contributors](https://img.shields.io/github/contributors/fergiemcdowall/level-in?color=brightgreen)](https://github.com/fergiemcdowall/level-in/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/tacodb)](https://www.npmjs.com/package/tacodb) [![npm downloads](https://img.shields.io/npm/dw/tacodb)](https://www.npmjs.com/package/tacodb) [![License](https://img.shields.io/npm/l/tacodb?color=blue)](https://www.npmjs.com/package/tacodb) [![Last commit](https://img.shields.io/github/last-commit/dominictarr/tacodb)](https://github.com/dominictarr/tacodb) [![Contributors](https://img.shields.io/github/contributors/dominictarr/tacodb?color=blue)](https://github.com/dominictarr/tacodb/graphs/contributors) -A simple command-line utility for writing data to LevelDB via [`levelup`][levelup]. +A responsive, Node.js-style database ideal for realtime data. Highly modular and adaptable, allowing extension with the [Level][level-org] ecosystem. -### [`level-out`][level-out] +### [`timestreamdb`][timestreamdb] -[![Last commit](https://img.shields.io/github/last-commit/fergiemcdowall/level-out)](https://github.com/fergiemcdowall/level-out) [![Contributors](https://img.shields.io/github/contributors/fergiemcdowall/level-out?color=brightgreen)](https://github.com/fergiemcdowall/level-out/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/timestreamdb)](https://www.npmjs.com/package/timestreamdb) [![npm downloads](https://img.shields.io/npm/dw/timestreamdb)](https://www.npmjs.com/package/timestreamdb) [![License](https://img.shields.io/npm/l/timestreamdb?color=blue)](https://www.npmjs.com/package/timestreamdb) [![Last commit](https://img.shields.io/github/last-commit/brycebaril/timestreamdb)](https://github.com/brycebaril/timestreamdb) [![Contributors](https://img.shields.io/github/contributors/brycebaril/timestreamdb?color=blue)](https://github.com/brycebaril/timestreamdb/graphs/contributors) -A simple command-line utility for reading LevelDB data via [`levelup`][levelup]. +A full-featured timeseries database on top of LevelDB. Includes a library for streaming statistical operations on timeseries data including joins, aggregates, filters, and map-like operations. -### [`level-key-list`][level-key-list] +### [`level-orm`][level-orm] -[![Last commit](https://img.shields.io/github/last-commit/hughsk/level-key-list)](https://github.com/hughsk/level-key-list) [![Contributors](https://img.shields.io/github/contributors/hughsk/level-key-list?color=brightgreen)](https://github.com/hughsk/level-key-list/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-orm)](https://www.npmjs.com/package/level-orm) [![npm downloads](https://img.shields.io/npm/dw/level-orm)](https://www.npmjs.com/package/level-orm) [![License](https://img.shields.io/npm/l/level-orm?color=blue)](https://www.npmjs.com/package/level-orm) [![Last commit](https://img.shields.io/github/last-commit/eugeneware/level-orm)](https://github.com/eugeneware/level-orm) [![Contributors](https://img.shields.io/github/contributors/eugeneware/level-orm?color=blue)](https://github.com/eugeneware/level-orm/graphs/contributors) -Command-line tool for quickly printing a list of keys in a LevelDB database. +Simple ORM built on [`levelup`][levelup]. -### [`lev`][lev] +### [`level-restful`][level-restful] -[![Last commit](https://img.shields.io/github/last-commit/hij1nx/lev)](https://github.com/hij1nx/lev) [![Contributors](https://img.shields.io/github/contributors/hij1nx/lev?color=brightgreen)](https://github.com/hij1nx/lev/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-restful)](https://www.npmjs.com/package/level-restful) [![npm downloads](https://img.shields.io/npm/dw/level-restful)](https://www.npmjs.com/package/level-restful) [![License](https://img.shields.io/npm/l/level-restful?color=blue)](https://www.npmjs.com/package/level-restful) [![Last commit](https://img.shields.io/github/last-commit/karissa/level-restful)](https://github.com/karissa/level-restful) [![Contributors](https://img.shields.io/github/contributors/karissa/level-restful?color=blue)](https://github.com/karissa/level-restful/graphs/contributors) -A CLI REPL interface for LevelDB. +REST wrapper for [`levelup`][levelup], as an extension to [`level-orm`][level-orm]. -### [`leveldb-repl`][leveldb-repl] +### [`level-rest`][level-rest] -[![Last commit](https://img.shields.io/github/last-commit/lapwinglabs/leveldb-repl)](https://github.com/lapwinglabs/leveldb-repl) [![Contributors](https://img.shields.io/github/contributors/lapwinglabs/leveldb-repl?color=brightgreen)](https://github.com/lapwinglabs/leveldb-repl/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-rest)](https://www.npmjs.com/package/level-rest) [![npm downloads](https://img.shields.io/npm/dw/level-rest)](https://www.npmjs.com/package/level-rest) [![License](https://img.shields.io/npm/l/level-rest?color=blue)](https://www.npmjs.com/package/level-rest) [![Last commit](https://img.shields.io/github/last-commit/shama/level-rest)](https://github.com/shama/level-rest) [![Contributors](https://img.shields.io/github/contributors/shama/level-rest?color=blue)](https://github.com/shama/level-rest/graphs/contributors) -Super simple REPL for LevelDB. Supports filter globbing. +REST wrapper for [`levelup`][levelup]. Not compatible with latest [`levelup`][levelup]. -### [`levelhud`][levelhud] +### [`level-lively`][level-lively] -[![Last commit](https://img.shields.io/github/last-commit/ricardobeat/levelhud)](https://github.com/ricardobeat/levelhud) [![Contributors](https://img.shields.io/github/contributors/ricardobeat/levelhud?color=brightgreen)](https://github.com/ricardobeat/levelhud/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-lively)](https://www.npmjs.com/package/level-lively) [![npm downloads](https://img.shields.io/npm/dw/level-lively)](https://www.npmjs.com/package/level-lively) [![License](https://img.shields.io/npm/l/level-lively?color=blue)](https://www.npmjs.com/package/level-lively) [![Last commit](https://img.shields.io/github/last-commit/eugeneware/level-lively)](https://github.com/eugeneware/level-lively) [![Contributors](https://img.shields.io/github/contributors/eugeneware/level-lively?color=blue)](https://github.com/eugeneware/level-lively/graphs/contributors) -LevelDB GUI with an interactive console. +[`levelup`][levelup] implementation of [LivelyDb](https://github.com/eugeneware/livelydb) for doing real-time data binding of a database with local javascript objects. -### [`levelweb`][levelweb] +### [`level-mongo`][level-mongo] -[![Last commit](https://img.shields.io/github/last-commit/hij1nx/levelui)](https://github.com/hij1nx/levelui) [![Contributors](https://img.shields.io/github/contributors/hij1nx/levelui?color=brightgreen)](https://github.com/hij1nx/levelui/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-mongo)](https://www.npmjs.com/package/level-mongo) [![npm downloads](https://img.shields.io/npm/dw/level-mongo)](https://www.npmjs.com/package/level-mongo) [![License](https://img.shields.io/npm/l/level-mongo?color=blue)](https://www.npmjs.com/package/level-mongo) [![Last commit](https://img.shields.io/github/last-commit/simon-p-r/level-mongo)](https://github.com/simon-p-r/level-mongo) [![Contributors](https://img.shields.io/github/contributors/simon-p-r/level-mongo?color=blue)](https://github.com/simon-p-r/level-mongo/graphs/contributors) ![leveldown](https://img.shields.io/badge/leveldown-3.0-red.svg) -A LevelDB GUI. Includes simple data visualization tools. +MongoDB-like database backed by LevelDB. -### [`level-cli`][level-cli] +### [`levi`][levi] -[![Last commit](https://img.shields.io/github/last-commit/mablay/level-cli)](https://github.com/mablay/level-cli) [![Contributors](https://img.shields.io/github/contributors/mablay/level-cli?color=brightgreen)](https://github.com/mablay/level-cli/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/levi)](https://www.npmjs.com/package/levi) [![npm downloads](https://img.shields.io/npm/dw/levi)](https://www.npmjs.com/package/levi) [![License](https://img.shields.io/npm/l/levi?color=blue)](https://www.npmjs.com/package/levi) [![Last commit](https://img.shields.io/github/last-commit/cshum/levi)](https://github.com/cshum/levi) [![Contributors](https://img.shields.io/github/contributors/cshum/levi?color=blue)](https://github.com/cshum/levi/graphs/contributors) -Interact with LevelDB on the command line. +Stream based full-text search for Node.js and browser using [`levelup`][levelup]. -### [`level-explore`][level-explore] +### [`dulcimer`][dulcimer] -[![Last commit](https://img.shields.io/github/last-commit/jcblw/level-explore)](https://github.com/jcblw/level-explore) [![Contributors](https://img.shields.io/github/contributors/jcblw/level-explore?color=brightgreen)](https://github.com/jcblw/level-explore/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/dulcimer)](https://www.npmjs.com/package/dulcimer) [![npm downloads](https://img.shields.io/npm/dw/dulcimer)](https://www.npmjs.com/package/dulcimer) [![License](https://img.shields.io/npm/l/dulcimer?color=blue)](https://www.npmjs.com/package/dulcimer) [![Last commit](https://img.shields.io/github/last-commit/fritzy/dulcimer)](https://github.com/fritzy/dulcimer) [![Contributors](https://img.shields.io/github/contributors/fritzy/dulcimer?color=blue)](https://github.com/fritzy/dulcimer/graphs/contributors) -A terminal program to visualize LevelDB data. Early stages. +Define JSON models and manage indexes, children, foreign keys and much more. -### [`level-repair`][level-repair] +### [`level-fact-base`][level-fact-base] -[![Last commit](https://img.shields.io/github/last-commit/kesla/level-repair)](https://github.com/kesla/level-repair) [![Contributors](https://img.shields.io/github/contributors/kesla/level-repair?color=brightgreen)](https://github.com/kesla/level-repair/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-fact-base)](https://www.npmjs.com/package/level-fact-base) [![npm downloads](https://img.shields.io/npm/dw/level-fact-base)](https://www.npmjs.com/package/level-fact-base) [![License](https://img.shields.io/npm/l/level-fact-base?color=blue)](https://www.npmjs.com/package/level-fact-base) [![Last commit](https://img.shields.io/github/last-commit/smallhelm/level-fact-base)](https://github.com/smallhelm/level-fact-base) [![Contributors](https://img.shields.io/github/contributors/smallhelm/level-fact-base?color=blue)](https://github.com/smallhelm/level-fact-base/graphs/contributors) -CLI tool to repair a LevelDB. +Store immutable facts and query them with datalog. -### [`leveldb-editor`][leveldb-editor] +### [`ltgt`][ltgt] -[![Last commit](https://img.shields.io/github/last-commit/derhuerst/leveldb-editor)](https://github.com/derhuerst/leveldb-editor) [![Contributors](https://img.shields.io/github/contributors/derhuerst/leveldb-editor?color=brightgreen)](https://github.com/derhuerst/leveldb-editor/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/ltgt)](https://www.npmjs.com/package/ltgt) [![npm downloads](https://img.shields.io/npm/dw/ltgt)](https://www.npmjs.com/package/ltgt) [![License](https://img.shields.io/npm/l/ltgt?color=blue)](https://www.npmjs.com/package/ltgt) [![Last commit](https://img.shields.io/github/last-commit/dominictarr/ltgt)](https://github.com/dominictarr/ltgt) [![Contributors](https://img.shields.io/github/contributors/dominictarr/ltgt?color=blue)](https://github.com/dominictarr/ltgt/graphs/contributors) -Edit a LevelDB from the command line. +Tool belt to find lower or upper bounds, compare and filter keys and more. Incompatible with [`abstract-level`][abstract-level], because in [`abstract-level`][abstract-level] `gte` and `lte` range options take precedence over `gt` and `lt` respectively. -### [`levelscan`][levelscan] +### [`level-option-wrap`][level-option-wrap] -[![Last commit](https://img.shields.io/github/last-commit/joeledwards/node-levelscan)](https://github.com/joeledwards/node-levelscan) [![Contributors](https://img.shields.io/github/contributors/joeledwards/node-levelscan?color=brightgreen)](https://github.com/joeledwards/node-levelscan/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/level-option-wrap)](https://www.npmjs.com/package/level-option-wrap) [![npm downloads](https://img.shields.io/npm/dw/level-option-wrap)](https://www.npmjs.com/package/level-option-wrap) [![License](https://img.shields.io/npm/l/level-option-wrap?color=blue)](https://www.npmjs.com/package/level-option-wrap) [![Last commit](https://img.shields.io/github/last-commit/substack/level-option-wrap)](https://github.com/substack/level-option-wrap) [![Contributors](https://img.shields.io/github/contributors/substack/level-option-wrap?color=blue)](https://github.com/substack/level-option-wrap/graphs/contributors) -LevelDB command line scanning utility +Wrap `ltgt` options with functions. Expose range options without leaking information about your internal key representations. -### [`levelui`][levelui] +### [`interval-to-ltgt`][interval-to-ltgt] -[![Last commit](https://img.shields.io/github/last-commit/hij1nx/levelui)](https://github.com/hij1nx/levelui) [![Contributors](https://img.shields.io/github/contributors/hij1nx/levelui?color=brightgreen)](https://github.com/hij1nx/levelui/graphs/contributors) +[![npm package version](https://img.shields.io/npm/v/interval-to-ltgt)](https://www.npmjs.com/package/interval-to-ltgt) [![npm downloads](https://img.shields.io/npm/dw/interval-to-ltgt)](https://www.npmjs.com/package/interval-to-ltgt) [![License](https://img.shields.io/npm/l/interval-to-ltgt?color=blue)](https://www.npmjs.com/package/interval-to-ltgt) [![Last commit](https://img.shields.io/github/last-commit/nowsecure/interval-to-ltgt)](https://github.com/nowsecure/interval-to-ltgt) [![Contributors](https://img.shields.io/github/contributors/nowsecure/interval-to-ltgt?color=blue)](https://github.com/nowsecure/interval-to-ltgt/graphs/contributors) -A LevelDB GUI based on [`atom-shell`](https://github.com/atom/atom-shell) (now called Electron). +Convert an interval string to an `ltgt` object. This is the counterpart to [`ltgt-to-interval`][ltgt-to-interval]. -## Benchmarking & Debugging +### [`ltgt-to-interval`][ltgt-to-interval] -### [`level-bench`][level-bench] +[![npm package version](https://img.shields.io/npm/v/ltgt-to-interval)](https://www.npmjs.com/package/ltgt-to-interval) [![npm downloads](https://img.shields.io/npm/dw/ltgt-to-interval)](https://www.npmjs.com/package/ltgt-to-interval) [![License](https://img.shields.io/npm/l/ltgt-to-interval?color=blue)](https://www.npmjs.com/package/ltgt-to-interval) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/ltgt-to-interval)](https://github.com/juliangruber/ltgt-to-interval) [![Contributors](https://img.shields.io/github/contributors/juliangruber/ltgt-to-interval?color=blue)](https://github.com/juliangruber/ltgt-to-interval/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/Level/bench)](https://github.com/Level/bench) [![Contributors](https://img.shields.io/github/contributors/Level/bench?color=brightgreen)](https://github.com/Level/bench/graphs/contributors) +Convert an `ltgt` object to an interval string. This is the counterpart to [`interval-to-ltgt`][interval-to-ltgt]. -Benchmark [`abstract-leveldown`][abstract-leveldown] and [`levelup`][levelup] stores. +### [`range-emitter`][range-emitter] -### [`level-compare-forks`][level-compare-forks] +[![npm package version](https://img.shields.io/npm/v/range-emitter)](https://www.npmjs.com/package/range-emitter) [![npm downloads](https://img.shields.io/npm/dw/range-emitter)](https://www.npmjs.com/package/range-emitter) [![License](https://img.shields.io/npm/l/range-emitter?color=blue)](https://www.npmjs.com/package/range-emitter) [![Last commit](https://img.shields.io/github/last-commit/jameskyburz/range-emitter)](https://github.com/jameskyburz/range-emitter) [![Contributors](https://img.shields.io/github/contributors/jameskyburz/range-emitter?color=blue)](https://github.com/jameskyburz/range-emitter/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/kesla/level-compare-forks)](https://github.com/kesla/level-compare-forks) [![Contributors](https://img.shields.io/github/contributors/kesla/level-compare-forks?color=brightgreen)](https://github.com/kesla/level-compare-forks/graphs/contributors) +Range emitter. Publish keys and subscribe to ranges. -Run benchmarks on different level-forks and see how they compare. +### [`level-codec`][level-codec] -### [`level-log`][level-log] +[![npm package version](https://img.shields.io/npm/v/level-codec)](https://www.npmjs.com/package/level-codec) [![npm downloads](https://img.shields.io/npm/dw/level-codec)](https://www.npmjs.com/package/level-codec) [![License](https://img.shields.io/npm/l/level-codec?color=blue)](https://www.npmjs.com/package/level-codec) [![Last commit](https://img.shields.io/github/last-commit/Level/codec)](https://github.com/Level/codec) [![Contributors](https://img.shields.io/github/contributors/Level/codec?color=blue)](https://github.com/Level/codec/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/micnews/level-log)](https://github.com/micnews/level-log) [![Contributors](https://img.shields.io/github/contributors/micnews/level-log?color=brightgreen)](https://github.com/micnews/level-log/graphs/contributors) +Encode keys, values and ltgte options. Used in [`encoding-down`][encoding-down]. Superseded by [`level-transcoder`][level-transcoder]. -Log all [`levelup`][levelup] operations, including method calls. +### [`level-errors`][level-errors] -### [`debugdown`][debugdown] +[![npm package version](https://img.shields.io/npm/v/level-errors)](https://www.npmjs.com/package/level-errors) [![npm downloads](https://img.shields.io/npm/dw/level-errors)](https://www.npmjs.com/package/level-errors) [![License](https://img.shields.io/npm/l/level-errors?color=blue)](https://www.npmjs.com/package/level-errors) [![Last commit](https://img.shields.io/github/last-commit/Level/errors)](https://github.com/Level/errors) [![Contributors](https://img.shields.io/github/contributors/Level/errors?color=blue)](https://github.com/Level/errors/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/vweevers/debugdown)](https://github.com/vweevers/debugdown) [![Contributors](https://img.shields.io/github/contributors/vweevers/debugdown?color=brightgreen)](https://github.com/vweevers/debugdown/graphs/contributors) +Error types for [`levelup`][levelup]. Superseded by [`abstract-level`][abstract-level]. -Log all operations made on an [`abstract-leveldown`][abstract-leveldown] compliant store. For node and browsers. +### [`level-packager`][level-packager] -### [`level-time`][level-time] +[![npm package version](https://img.shields.io/npm/v/level-packager)](https://www.npmjs.com/package/level-packager) [![npm downloads](https://img.shields.io/npm/dw/level-packager)](https://www.npmjs.com/package/level-packager) [![License](https://img.shields.io/npm/l/level-packager?color=blue)](https://www.npmjs.com/package/level-packager) [![Last commit](https://img.shields.io/github/last-commit/Level/packager)](https://github.com/Level/packager) [![Contributors](https://img.shields.io/github/contributors/Level/packager?color=blue)](https://github.com/Level/packager/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/micnews/level-time)](https://github.com/micnews/level-time) [![Contributors](https://img.shields.io/github/contributors/micnews/level-time?color=brightgreen)](https://github.com/micnews/level-time/graphs/contributors) +Legacy package helper to bundle an [`abstract-leveldown`][abstract-leveldown] store with [`levelup`][levelup] and [`encoding-down`][encoding-down]. -Log [`levelup`][levelup] operations and their duration. +### [`multileveldown`][multileveldown] -### [`level-dump`][level-dump] +[![npm package version](https://img.shields.io/npm/v/multileveldown)](https://www.npmjs.com/package/multileveldown) [![npm downloads](https://img.shields.io/npm/dw/multileveldown)](https://www.npmjs.com/package/multileveldown) [![License](https://img.shields.io/npm/l/multileveldown?color=blue)](https://www.npmjs.com/package/multileveldown) [![Last commit](https://img.shields.io/github/last-commit/mafintosh/multileveldown)](https://github.com/mafintosh/multileveldown) [![Contributors](https://img.shields.io/github/contributors/mafintosh/multileveldown?color=blue)](https://github.com/mafintosh/multileveldown/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/thlorenz/level-dump)](https://github.com/thlorenz/level-dump) [![Contributors](https://img.shields.io/github/contributors/thlorenz/level-dump?color=brightgreen)](https://github.com/thlorenz/level-dump/graphs/contributors) +Share a [`levelup`][levelup] instance across multiple processes or over the network. An alternative to [`multilevel`][multilevel], implemented as [`abstract-leveldown`][abstract-leveldown] stores with seamless retry support. Superseded by [`many-level`][many-level]. -Dumps all values and/or keys of a [`levelup`][levelup] or [`level-sublevel`][level-sublevel] instance to the console. +### [`level-party`][level-party] -### [`level-benchmarks`][level-benchmarks] +[![npm package version](https://img.shields.io/npm/v/level-party)](https://www.npmjs.com/package/level-party) [![npm downloads](https://img.shields.io/npm/dw/level-party)](https://www.npmjs.com/package/level-party) [![License](https://img.shields.io/npm/l/level-party?color=blue)](https://www.npmjs.com/package/level-party) [![Last commit](https://img.shields.io/github/last-commit/substack/level-party)](https://github.com/substack/level-party) [![Contributors](https://img.shields.io/github/contributors/substack/level-party?color=blue)](https://github.com/substack/level-party/graphs/contributors) -[![Last commit](https://img.shields.io/github/last-commit/kesla/level-benchmarks)](https://github.com/kesla/level-benchmarks) [![Contributors](https://img.shields.io/github/contributors/kesla/level-benchmarks?color=brightgreen)](https://github.com/kesla/level-benchmarks/graphs/contributors) +Open a LevelDB ([`leveldown`][leveldown]) handle multiple times, transparently upgrading to [`multileveldown`][multileveldown] when more than 1 process try to use the same LevelDB data directory at once and re-electing a new master when the primary unix socket (or named pipe) goes down. Superseded by [`rave-level`][rave-level]. -Run benchmarks against levelup-compatible engines +### [`multilevel`][multilevel] -## Resources +[![npm package version](https://img.shields.io/npm/v/multilevel)](https://www.npmjs.com/package/multilevel) [![npm downloads](https://img.shields.io/npm/dw/multilevel)](https://www.npmjs.com/package/multilevel) [![License](https://img.shields.io/npm/l/multilevel?color=blue)](https://www.npmjs.com/package/multilevel) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/multilevel)](https://github.com/juliangruber/multilevel) [![Contributors](https://img.shields.io/github/contributors/juliangruber/multilevel?color=blue)](https://github.com/juliangruber/multilevel/graphs/contributors) -### [`leveljs.org`][leveljs.org] +Share a [`levelup`][levelup] instance over the network. -Website for [Level][level-org] +### [`multilevel-http`][multilevel-http] -### [`level-community`][level-community] +[![npm package version](https://img.shields.io/npm/v/multilevel-http)](https://www.npmjs.com/package/multilevel-http) [![npm downloads](https://img.shields.io/npm/dw/multilevel-http)](https://www.npmjs.com/package/multilevel-http) [![License](https://img.shields.io/npm/l/multilevel-http?color=blue)](https://www.npmjs.com/package/multilevel-http) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/multilevel-http)](https://github.com/juliangruber/multilevel-http) [![Contributors](https://img.shields.io/github/contributors/juliangruber/multilevel-http?color=blue)](https://github.com/juliangruber/multilevel-http/graphs/contributors) -General discussion, cross-repo efforts and common information for projects in the community +Expose a [`levelup`][levelup] instance via HTTP. -### [`electron-demo`][electron-demo] +### [`level-manifest`][level-manifest] -Demo app loading LevelDB into an Electron context. +[![npm package version](https://img.shields.io/npm/v/level-manifest)](https://www.npmjs.com/package/level-manifest) [![npm downloads](https://img.shields.io/npm/dw/level-manifest)](https://www.npmjs.com/package/level-manifest) [![License](https://img.shields.io/npm/l/level-manifest?color=blue)](https://www.npmjs.com/package/level-manifest) [![Last commit](https://img.shields.io/github/last-commit/dominictarr/level-manifest)](https://github.com/dominictarr/level-manifest) [![Contributors](https://img.shields.io/github/contributors/dominictarr/level-manifest?color=blue)](https://github.com/dominictarr/level-manifest/graphs/contributors) -### [`browserify-starter`][browserify-starter] +Describe the functions that [`multilevel`][multilevel] should provide access to on the client. -Demonstrates bundling [`level`][level] for browsers using [`browserify`](https://github.com/browserify/browserify). +### [`level-sandbox`][level-sandbox] -### [`webpack-starter`][webpack-starter] +[![npm package version](https://img.shields.io/npm/v/level-sandbox)](https://www.npmjs.com/package/level-sandbox) [![npm downloads](https://img.shields.io/npm/dw/level-sandbox)](https://www.npmjs.com/package/level-sandbox) [![License](https://img.shields.io/npm/l/level-sandbox?color=blue)](https://www.npmjs.com/package/level-sandbox) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-sandbox)](https://github.com/juliangruber/level-sandbox) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-sandbox?color=blue)](https://github.com/juliangruber/level-sandbox/graphs/contributors) -Demonstrates bundling [`level`][level] for browsers using [`webpack`](https://webpack.js.org/). +A sandbox for hosting [`multilevel`][multilevel] enabled databases. -### [`level-awesome`][level-awesome] +### [`level-range-emitter`][level-range-emitter] -An open list of awesome [Level][level-org] libraries and resources. +[![npm package version](https://img.shields.io/npm/v/level-range-emitter)](https://www.npmjs.com/package/level-range-emitter) [![npm downloads](https://img.shields.io/npm/dw/level-range-emitter)](https://www.npmjs.com/package/level-range-emitter) [![License](https://img.shields.io/npm/l/level-range-emitter?color=blue)](https://www.npmjs.com/package/level-range-emitter) [![Last commit](https://img.shields.io/github/last-commit/jameskyburz/level-range-emitter)](https://github.com/jameskyburz/level-range-emitter) [![Contributors](https://img.shields.io/github/contributors/jameskyburz/level-range-emitter?color=blue)](https://github.com/jameskyburz/level-range-emitter/graphs/contributors) -### [`levelmeup`][levelmeup] +Client and server using [`multileveldown`][multileveldown], [`range-emitter`][range-emitter] and [`ltgt`][ltgt]. -Level Me Up Scotty! An intro to Node.js databases via a set of self-guided workshops. +### [`leveldb-mount`][leveldb-mount] -## Applications +[![npm package version](https://img.shields.io/npm/v/leveldb-mount)](https://www.npmjs.com/package/leveldb-mount) [![npm downloads](https://img.shields.io/npm/dw/leveldb-mount)](https://www.npmjs.com/package/leveldb-mount) [![License](https://img.shields.io/npm/l/leveldb-mount?color=blue)](https://www.npmjs.com/package/leveldb-mount) [![Last commit](https://img.shields.io/github/last-commit/jameskyburz/leveldb-mount)](https://github.com/jameskyburz/leveldb-mount) [![Contributors](https://img.shields.io/github/contributors/jameskyburz/leveldb-mount?color=blue)](https://github.com/jameskyburz/leveldb-mount/graphs/contributors) -**Applications and libraries that use Level modules under the hood.** +LevelDB server and client with optional client-side REPL. Built with [`subleveldown`][subleveldown] and [`multileveldown`][multileveldown]. -### [`ipfs`][ipfs] +### [`level2riak`][level2riak] -A peer-to-peer hypermedia protocol to make the web faster, safer, and more open. +[![npm package version](https://img.shields.io/npm/v/level2riak)](https://www.npmjs.com/package/level2riak) [![npm downloads](https://img.shields.io/npm/dw/level2riak)](https://www.npmjs.com/package/level2riak) [![License](https://img.shields.io/npm/l/level2riak?color=blue)](https://www.npmjs.com/package/level2riak) [![Last commit](https://img.shields.io/github/last-commit/fritzy/level2git)](https://github.com/fritzy/level2git) [![Contributors](https://img.shields.io/github/contributors/fritzy/level2git?color=blue)](https://github.com/fritzy/level2git/graphs/contributors) -### [`clocker`][clocker] +A network service that allows you to connect to a Riak database over HTTP. -Track project hours +### [`level-cluster-get`][level-cluster-get] -### [`copy-on-write`][copy-on-write] +[![npm package version](https://img.shields.io/npm/v/level-cluster-get)](https://www.npmjs.com/package/level-cluster-get) [![npm downloads](https://img.shields.io/npm/dw/level-cluster-get)](https://www.npmjs.com/package/level-cluster-get) [![License](https://img.shields.io/npm/l/level-cluster-get?color=blue)](https://www.npmjs.com/package/level-cluster-get) [![Last commit](https://img.shields.io/github/last-commit/kesla/level-cluster-get)](https://github.com/kesla/level-cluster-get) [![Contributors](https://img.shields.io/github/contributors/kesla/level-cluster-get?color=blue)](https://github.com/kesla/level-cluster-get/graphs/contributors) -A copy-on-write FUSE implementation +Given a key, get all values from a cluster of [`multilevel`][multilevel] servers. -### [`chrome-localstorage`][chrome-localstorage] +### [`level-connect`][level-connect] -CLI to manipulate Chrome and Chromium's localStorage on disk. +[![npm package version](https://img.shields.io/npm/v/level-connect)](https://www.npmjs.com/package/level-connect) [![npm downloads](https://img.shields.io/npm/dw/level-connect)](https://www.npmjs.com/package/level-connect) [![License](https://img.shields.io/npm/l/level-connect?color=blue)](https://www.npmjs.com/package/level-connect) [![Last commit](https://img.shields.io/github/last-commit/mattstyles/level-connect)](https://github.com/mattstyles/level-connect) [![Contributors](https://img.shields.io/github/contributors/mattstyles/level-connect?color=blue)](https://github.com/mattstyles/level-connect/graphs/contributors) -### [`cipherhub`][cipherhub] +Connect to a [`level-party`][level-party] and [`level-sublevel`][level-sublevel] enabled LevelDB over HTTP. -Encrypt messages based on GitHub SSH public keys +### [`level-pubsub`][level-pubsub] -### [`code-music-studio`][code-music-studio] +[![npm package version](https://img.shields.io/npm/v/level-pubsub)](https://www.npmjs.com/package/level-pubsub) [![npm downloads](https://img.shields.io/npm/dw/level-pubsub)](https://www.npmjs.com/package/level-pubsub) [![License](https://img.shields.io/npm/l/level-pubsub?color=blue)](https://www.npmjs.com/package/level-pubsub) [![Last commit](https://img.shields.io/github/last-commit/hij1nx/level-pubsub)](https://github.com/hij1nx/level-pubsub) [![Contributors](https://img.shields.io/github/contributors/hij1nx/level-pubsub?color=blue)](https://github.com/hij1nx/level-pubsub/graphs/contributors) -Design musical algorithms +PubSub with server and client on top of [`levelup`][levelup]. -### [`level-todo`][level-todo] +### [`level-query`][level-query] -A todo list using LevelDB. +[![npm package version](https://img.shields.io/npm/v/level-query)](https://www.npmjs.com/package/level-query) [![npm downloads](https://img.shields.io/npm/dw/level-query)](https://www.npmjs.com/package/level-query) [![License](https://img.shields.io/npm/l/level-query?color=blue)](https://www.npmjs.com/package/level-query) [![Last commit](https://img.shields.io/github/last-commit/substack/level-query)](https://github.com/substack/level-query) [![Contributors](https://img.shields.io/github/contributors/substack/level-query?color=blue)](https://github.com/substack/level-query/graphs/contributors) -### [`electron-crash-report-service`][electron-crash-report-service] +Expose a [`level-sublevel`][level-sublevel] database over HTTP, searchable with query strings. -Aggregate crash reports for Electron apps +### [`level-over-http`][level-over-http] -### [`cross-street-indexer`][cross-street-indexer] +[![npm package version](https://img.shields.io/npm/v/level-over-http)](https://www.npmjs.com/package/level-over-http) [![npm downloads](https://img.shields.io/npm/dw/level-over-http)](https://www.npmjs.com/package/level-over-http) [![License](https://img.shields.io/npm/l/level-over-http?color=blue)](https://www.npmjs.com/package/level-over-http) [![Last commit](https://img.shields.io/github/last-commit/lakowske/level-over-http)](https://github.com/lakowske/level-over-http) [![Contributors](https://img.shields.io/github/contributors/lakowske/level-over-http?color=blue)](https://github.com/lakowske/level-over-http/graphs/contributors) -Blazing fast tile based geocoder that matches cross street (road intersections) entirely sourced by OSM QA Tiles. +Another solution to expose [`levelup`][levelup] over HTTP. -### [`lt-core`][lt-core] +### [`level-rpc`][level-rpc] -Time tracking library. +[![npm package version](https://img.shields.io/npm/v/level-rpc)](https://www.npmjs.com/package/level-rpc) [![npm downloads](https://img.shields.io/npm/dw/level-rpc)](https://www.npmjs.com/package/level-rpc) [![License](https://img.shields.io/npm/l/level-rpc?color=blue)](https://www.npmjs.com/package/level-rpc) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-rpc)](https://github.com/juliangruber/level-rpc) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-rpc?color=blue)](https://github.com/juliangruber/level-rpc/graphs/contributors) -### [`npm-search`][npm-search] +Fast RPC mechanism for [`levelup`][levelup]. Intended as binary-compatible alternative to [`multilevel`][multilevel]. -An index of npm using [`levelup`][levelup]. +### [`level-events`][level-events] -### [`connect-level`][connect-level] +[![npm package version](https://img.shields.io/npm/v/level-events)](https://www.npmjs.com/package/level-events) [![npm downloads](https://img.shields.io/npm/dw/level-events)](https://www.npmjs.com/package/level-events) [![License](https://img.shields.io/npm/l/level-events?color=blue)](https://www.npmjs.com/package/level-events) [![Last commit](https://img.shields.io/github/last-commit/mafintosh/level-events)](https://github.com/mafintosh/level-events) [![Contributors](https://img.shields.io/github/contributors/mafintosh/level-events?color=blue)](https://github.com/mafintosh/level-events/graphs/contributors) -A `connect` / `express` session store backed by LevelDB via [`levelup`][levelup]. +Get an event everytime something is written / read / deleted using [`levelup`][levelup]. -### [`hadron`][hadron] +### [`level-hookdown`][level-hookdown] -A hackable publishing platform using LevelDB as main database. +[![npm package version](https://img.shields.io/npm/v/level-hookdown)](https://www.npmjs.com/package/level-hookdown) [![npm downloads](https://img.shields.io/npm/dw/level-hookdown)](https://www.npmjs.com/package/level-hookdown) [![License](https://img.shields.io/npm/l/level-hookdown?color=blue)](https://www.npmjs.com/package/level-hookdown) [![Last commit](https://img.shields.io/github/last-commit/hypermodules/level-hookdown)](https://github.com/hypermodules/level-hookdown) [![Contributors](https://img.shields.io/github/contributors/hypermodules/level-hookdown?color=blue)](https://github.com/hypermodules/level-hookdown/graphs/contributors) -### [`groove basin`][groove basin] +Simple [`levelup`][levelup] hooks. -Music player server with a web-based user interface. Uses [`levelup`][levelup] for the music library database. +### [`level-post`][level-post] -### [`prerender-level-cache`][prerender-level-cache] +[![npm package version](https://img.shields.io/npm/v/level-post)](https://www.npmjs.com/package/level-post) [![npm downloads](https://img.shields.io/npm/dw/level-post)](https://www.npmjs.com/package/level-post) [![License](https://img.shields.io/npm/l/level-post?color=blue)](https://www.npmjs.com/package/level-post) [![Last commit](https://img.shields.io/github/last-commit/dominictarr/level-post)](https://github.com/dominictarr/level-post) [![Contributors](https://img.shields.io/github/contributors/dominictarr/level-post?color=blue)](https://github.com/dominictarr/level-post/graphs/contributors) -[Prerender](https://github.com/prerender/prerender) plugin to use level as a cache store. +Consistent post hooks for [`levelup`][levelup]. -### [`tsd`][tsd] +### [`level-condition`][level-condition] -Spin up a quick server to visualize time series data. +[![npm package version](https://img.shields.io/npm/v/level-condition)](https://www.npmjs.com/package/level-condition) [![npm downloads](https://img.shields.io/npm/dw/level-condition)](https://www.npmjs.com/package/level-condition) [![License](https://img.shields.io/npm/l/level-condition?color=blue)](https://www.npmjs.com/package/level-condition) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-condition)](https://github.com/juliangruber/level-condition) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-condition?color=blue)](https://github.com/juliangruber/level-condition/graphs/contributors) -### [`appfeed`][appfeed] +Get notified when a condition is triggered inside a [`levelup`][levelup] instance. -Version feed for trusted application delivery +### [`level-hooks`][level-hooks] -### [`arrivals-osx`][arrivals-osx] +[![npm package version](https://img.shields.io/npm/v/level-hooks)](https://www.npmjs.com/package/level-hooks) [![npm downloads](https://img.shields.io/npm/dw/level-hooks)](https://www.npmjs.com/package/level-hooks) [![License](https://img.shields.io/npm/l/level-hooks?color=blue)](https://www.npmjs.com/package/level-hooks) [![Last commit](https://img.shields.io/github/last-commit/dominictarr/level-hooks)](https://github.com/dominictarr/level-hooks) [![Contributors](https://img.shields.io/github/contributors/dominictarr/level-hooks?color=blue)](https://github.com/dominictarr/level-hooks/graphs/contributors) -Watch a folder for audio and video arrivals and convert them to Apple-friendly formats. +Implements a hook mechanism that allows you to intercept `put`, `delete` and `batch` operations. You can then turn those operations into batches. Useful if you want to turn a `put` into an atomic batch for say an automatic map operation.

NB. Author recommends using [`level-sublevel`][level-sublevel] instead of `level-hooks` directly. Note that [`level-sublevel`][level-sublevel] is not maintained.

Both are now (anno 2024) superseded by [`abstract-level`][abstract-level] which has builtin sublevels and hooks. -### [`bleach-log-server`][bleach-log-server] +### [`levelup-async-iterator`][levelup-async-iterator] -Keep track of bleach levels for a hot tub or a pool. +[![npm package version](https://img.shields.io/npm/v/levelup-async-iterator)](https://www.npmjs.com/package/levelup-async-iterator) [![npm downloads](https://img.shields.io/npm/dw/levelup-async-iterator)](https://www.npmjs.com/package/levelup-async-iterator) [![License](https://img.shields.io/npm/l/levelup-async-iterator?color=blue)](https://www.npmjs.com/package/levelup-async-iterator) [![Last commit](https://img.shields.io/github/last-commit/MeirionHughes/levelup-async-iterator)](https://github.com/MeirionHughes/levelup-async-iterator) [![Contributors](https://img.shields.io/github/contributors/MeirionHughes/levelup-async-iterator?color=blue)](https://github.com/MeirionHughes/levelup-async-iterator/graphs/contributors) -### [`browserify-cdn`][browserify-cdn] +Add an `iterator()` method to [`levelup`][levelup] with [`Symbol.asyncIterator`](https://github.com/tc39/proposal-async-iteration). Superseded by builtin `Symbol.asyncIterator` support on [`abstract-leveldown`][abstract-leveldown] iterators. -Browserify CDN. Caches browserify bundles in LevelDB. +### [`level-iterator`][level-iterator] -## Legacy +[![npm package version](https://img.shields.io/npm/v/level-iterator)](https://www.npmjs.com/package/level-iterator) [![npm downloads](https://img.shields.io/npm/dw/level-iterator)](https://www.npmjs.com/package/level-iterator) [![License](https://img.shields.io/npm/l/level-iterator?color=blue)](https://www.npmjs.com/package/level-iterator) [![Last commit](https://img.shields.io/github/last-commit/vweevers/level-iterator)](https://github.com/vweevers/level-iterator) [![Contributors](https://img.shields.io/github/contributors/vweevers/level-iterator?color=blue)](https://github.com/vweevers/level-iterator/graphs/contributors) -**Modules that are deprecated, archived or superseded. Listed here for the historical record.** +Decoding iterator for [`levelup`][levelup] instances. Wraps iterators like [`level-iterator-stream`][level-iterator-stream] does. Superseded by [`encoding-down`][encoding-down] and later [`abstract-level`][abstract-level]. ### [`level-delete-stream`][level-delete-stream] +[![npm package version](https://img.shields.io/npm/v/level-delete-stream)](https://www.npmjs.com/package/level-delete-stream) [![npm downloads](https://img.shields.io/npm/dw/level-delete-stream)](https://www.npmjs.com/package/level-delete-stream) [![License](https://img.shields.io/npm/l/level-delete-stream?color=blue)](https://www.npmjs.com/package/level-delete-stream) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-delete-stream)](https://github.com/juliangruber/level-delete-stream) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-delete-stream?color=blue)](https://github.com/juliangruber/level-delete-stream/graphs/contributors) + A streams1 deleteStream for [`levelup`][levelup]. Superseded by `db.clear()`. ### [`level-delete-range`][level-delete-range] +[![npm package version](https://img.shields.io/npm/v/level-delete-range)](https://www.npmjs.com/package/level-delete-range) [![npm downloads](https://img.shields.io/npm/dw/level-delete-range)](https://www.npmjs.com/package/level-delete-range) [![License](https://img.shields.io/npm/l/level-delete-range?color=blue)](https://www.npmjs.com/package/level-delete-range) [![Last commit](https://img.shields.io/github/last-commit/Raynos/level-delete-range)](https://github.com/Raynos/level-delete-range) [![Contributors](https://img.shields.io/github/contributors/Raynos/level-delete-range?color=blue)](https://github.com/Raynos/level-delete-range/graphs/contributors) + Delete a range of keys from [`levelup`][levelup]. Superseded by `db.clear()`. ### [`level-browserify`][level-browserify] +[![npm package version](https://img.shields.io/npm/v/level-browserify)](https://www.npmjs.com/package/level-browserify) [![npm downloads](https://img.shields.io/npm/dw/level-browserify)](https://www.npmjs.com/package/level-browserify) [![License](https://img.shields.io/npm/l/level-browserify?color=blue)](https://www.npmjs.com/package/level-browserify) [![Last commit](https://img.shields.io/github/last-commit/Level/level-browserify)](https://github.com/Level/level-browserify) [![Contributors](https://img.shields.io/github/contributors/Level/level-browserify?color=blue)](https://github.com/Level/level-browserify/graphs/contributors) + Bundle for [`level-js`][level-js] and [`leveldown`][leveldown]. No longer maintained: superseded by [`level`][level] v5.0.0. ### [`level-mapped-index`][level-mapped-index] +[![npm package version](https://img.shields.io/npm/v/level-mapped-index)](https://www.npmjs.com/package/level-mapped-index) [![npm downloads](https://img.shields.io/npm/dw/level-mapped-index)](https://www.npmjs.com/package/level-mapped-index) [![License](https://img.shields.io/npm/l/level-mapped-index?color=blue)](https://www.npmjs.com/package/level-mapped-index) [![Last commit](https://img.shields.io/github/last-commit/rvagg/node-level-mapped-index)](https://github.com/rvagg/node-level-mapped-index) [![Contributors](https://img.shields.io/github/contributors/rvagg/node-level-mapped-index?color=blue)](https://github.com/rvagg/node-level-mapped-index/graphs/contributors) + Indexes for [`levelup`][levelup] built on [`map-reduce`][map-reduce]. Uses a custom indexing function for each index to parse and record index values for each entry. Archived. ### [`level-encoding`][level-encoding] +[![npm package version](https://img.shields.io/npm/v/level-encoding)](https://www.npmjs.com/package/level-encoding) [![npm downloads](https://img.shields.io/npm/dw/level-encoding)](https://www.npmjs.com/package/level-encoding) [![License](https://img.shields.io/npm/l/level-encoding?color=blue)](https://www.npmjs.com/package/level-encoding) [![Last commit](https://img.shields.io/github/last-commit/Raynos/level-encoding)](https://github.com/Raynos/level-encoding) [![Contributors](https://img.shields.io/github/contributors/Raynos/level-encoding?color=blue)](https://github.com/Raynos/level-encoding/graphs/contributors) + Implements the encoding logic of a [`levelup`][levelup]-like database. This functionality lives on in [`level-codec`][level-codec]. ### [`byteup`][byteup] +[![npm package version](https://img.shields.io/npm/v/byteup)](https://www.npmjs.com/package/byteup) [![npm downloads](https://img.shields.io/npm/dw/byteup)](https://www.npmjs.com/package/byteup) [![License](https://img.shields.io/npm/l/byteup?color=blue)](https://www.npmjs.com/package/byteup) [![Last commit](https://img.shields.io/github/last-commit/eugeneware/byteup)](https://github.com/eugeneware/byteup) [![Contributors](https://img.shields.io/github/contributors/eugeneware/byteup?color=blue)](https://github.com/eugeneware/byteup/graphs/contributors) + Adds [`bytewise`][bytewise] as a native encoding for [`levelup`][levelup]. This can now be achieved with [`encoding-down`][encoding-down] and `{ keyEncoding: bytewise }`. ### [`msgpackup`][msgpackup] +[![npm package version](https://img.shields.io/npm/v/msgpackup)](https://www.npmjs.com/package/msgpackup) [![npm downloads](https://img.shields.io/npm/dw/msgpackup)](https://www.npmjs.com/package/msgpackup) [![License](https://img.shields.io/npm/l/msgpackup?color=blue)](https://www.npmjs.com/package/msgpackup) [![Last commit](https://img.shields.io/github/last-commit/eugeneware/msgpackup)](https://github.com/eugeneware/msgpackup) [![Contributors](https://img.shields.io/github/contributors/eugeneware/msgpackup?color=blue)](https://github.com/eugeneware/msgpackup/graphs/contributors) + Adds [msgpack](https://github.com/msgpack/msgpack) as a native encoding for [`levelup`][levelup]. This can now be achieved with [`encoding-down`][encoding-down] and `{ keyEncoding: msgpack }`. ### [`level-cbatch`][level-cbatch] +[![npm package version](https://img.shields.io/npm/v/level-cbatch)](https://www.npmjs.com/package/level-cbatch) [![npm downloads](https://img.shields.io/npm/dw/level-cbatch)](https://www.npmjs.com/package/level-cbatch) [![License](https://img.shields.io/npm/l/level-cbatch?color=blue)](https://www.npmjs.com/package/level-cbatch) [![Last commit](https://img.shields.io/github/last-commit/kesla/level-cbatch)](https://github.com/kesla/level-cbatch) [![Contributors](https://img.shields.io/github/contributors/kesla/level-cbatch?color=blue)](https://github.com/kesla/level-cbatch/graphs/contributors) + Provides a chainable API for `db.batch()`. This functionality is now provided by [`levelup`][levelup]. ### [`memdb`][memdb] +[![npm package version](https://img.shields.io/npm/v/memdb)](https://www.npmjs.com/package/memdb) [![npm downloads](https://img.shields.io/npm/dw/memdb)](https://www.npmjs.com/package/memdb) [![License](https://img.shields.io/npm/l/memdb?color=blue)](https://www.npmjs.com/package/memdb) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/memdb)](https://github.com/juliangruber/memdb) [![Contributors](https://img.shields.io/github/contributors/juliangruber/memdb?color=blue)](https://github.com/juliangruber/memdb/graphs/contributors) + [`levelup`][levelup] + [`memdown`][memdown]. Superseded by [`level-mem`][level-mem]. ### [`levelup-iterator`][levelup-iterator] +[![npm package version](https://img.shields.io/npm/v/levelup-iterator)](https://www.npmjs.com/package/levelup-iterator) [![npm downloads](https://img.shields.io/npm/dw/levelup-iterator)](https://www.npmjs.com/package/levelup-iterator) [![License](https://img.shields.io/npm/l/levelup-iterator?color=blue)](https://www.npmjs.com/package/levelup-iterator) [![Last commit](https://img.shields.io/github/last-commit/mirkokiefer/levelup-iterator)](https://github.com/mirkokiefer/levelup-iterator) [![Contributors](https://img.shields.io/github/contributors/mirkokiefer/levelup-iterator?color=blue)](https://github.com/mirkokiefer/levelup-iterator/graphs/contributors) + Use [`abstract-leveldown`][abstract-leveldown] iterators instead of readable streams to traverse the database. Iterators are exposed by [`levelup`][levelup] since `levelup@3.1.0`. ### [`levelidb`][levelidb] +[![npm package version](https://img.shields.io/npm/v/levelidb)](https://www.npmjs.com/package/levelidb) [![npm downloads](https://img.shields.io/npm/dw/levelidb)](https://www.npmjs.com/package/levelidb) [![License](https://img.shields.io/npm/l/levelidb?color=blue)](https://www.npmjs.com/package/levelidb) [![Last commit](https://img.shields.io/github/last-commit/Raynos/levelidb)](https://github.com/Raynos/levelidb) [![Contributors](https://img.shields.io/github/contributors/Raynos/levelidb?color=blue)](https://github.com/Raynos/levelidb/graphs/contributors) + A [`levelup`][levelup] interface on top of IndexedDB. Superseded by [`level-js`][level-js] and [`level`][level]. ### [`level-multiply`][level-multiply] +[![npm package version](https://img.shields.io/npm/v/level-multiply)](https://www.npmjs.com/package/level-multiply) [![npm downloads](https://img.shields.io/npm/dw/level-multiply)](https://www.npmjs.com/package/level-multiply) [![License](https://img.shields.io/npm/l/level-multiply?color=blue)](https://www.npmjs.com/package/level-multiply) [![Last commit](https://img.shields.io/github/last-commit/rvagg/node-level-multiply)](https://github.com/rvagg/node-level-multiply) [![Contributors](https://img.shields.io/github/contributors/rvagg/node-level-multiply?color=blue)](https://github.com/rvagg/node-level-multiply/graphs/contributors) + Make [`levelup`][levelup] `get()`, `put()` and `del()` methods accept multiples keys & values. Archived. ### [`level-namespace`][level-namespace] +[![npm package version](https://img.shields.io/npm/v/level-namespace)](https://www.npmjs.com/package/level-namespace) [![npm downloads](https://img.shields.io/npm/dw/level-namespace)](https://www.npmjs.com/package/level-namespace) [![License](https://img.shields.io/npm/l/level-namespace?color=blue)](https://www.npmjs.com/package/level-namespace) [![Last commit](https://img.shields.io/github/last-commit/kesla/level-namespace)](https://github.com/kesla/level-namespace) [![Contributors](https://img.shields.io/github/contributors/kesla/level-namespace?color=blue)](https://github.com/kesla/level-namespace/graphs/contributors) + Split your db up into multiple namespaces. Deprecated. ### [`q-level`][q-level] +[![npm package version](https://img.shields.io/npm/v/q-level)](https://www.npmjs.com/package/q-level) [![npm downloads](https://img.shields.io/npm/dw/q-level)](https://www.npmjs.com/package/q-level) [![License](https://img.shields.io/npm/l/q-level?color=blue)](https://www.npmjs.com/package/q-level) [![Last commit](https://img.shields.io/github/last-commit/mvayngrib/q-level)](https://github.com/mvayngrib/q-level) [![Contributors](https://img.shields.io/github/contributors/mvayngrib/q-level?color=blue)](https://github.com/mvayngrib/q-level/graphs/contributors) + [`levelup`][levelup] with Q promises. [`levelup`][levelup] has native Promise support now. ### [`level-static`][level-static] +[![npm package version](https://img.shields.io/npm/v/level-static)](https://www.npmjs.com/package/level-static) [![npm downloads](https://img.shields.io/npm/dw/level-static)](https://www.npmjs.com/package/level-static) [![License](https://img.shields.io/npm/l/level-static?color=blue)](https://www.npmjs.com/package/level-static) [![Last commit](https://img.shields.io/github/last-commit/dominictarr/level-static)](https://github.com/dominictarr/level-static) [![Contributors](https://img.shields.io/github/contributors/dominictarr/level-static?color=blue)](https://github.com/dominictarr/level-static/graphs/contributors) + Use [`levelup`][levelup] as a static file server. Abandoned. ### [`level-spaces`][level-spaces] +[![npm package version](https://img.shields.io/npm/v/level-spaces)](https://www.npmjs.com/package/level-spaces) [![npm downloads](https://img.shields.io/npm/dw/level-spaces)](https://www.npmjs.com/package/level-spaces) [![License](https://img.shields.io/npm/l/level-spaces?color=blue)](https://www.npmjs.com/package/level-spaces) [![Last commit](https://img.shields.io/github/last-commit/rvagg/level-spaces)](https://github.com/rvagg/level-spaces) [![Contributors](https://img.shields.io/github/contributors/rvagg/level-spaces?color=blue)](https://github.com/rvagg/level-spaces/graphs/contributors) + A simple namespacing solution for [`levelup`][levelup]. Deprecated. ### [`level-object`][level-object] +[![npm package version](https://img.shields.io/npm/v/level-object)](https://www.npmjs.com/package/level-object) [![npm downloads](https://img.shields.io/npm/dw/level-object)](https://www.npmjs.com/package/level-object) [![License](https://img.shields.io/npm/l/level-object?color=blue)](https://www.npmjs.com/package/level-object) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-object)](https://github.com/juliangruber/level-object) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-object?color=blue)](https://github.com/juliangruber/level-object/graphs/contributors) + Store objects in [`levelup`][levelup]. Author recommends [`level-pathwise`][level-pathwise] instead. ### [`level-scuttlebutt`][level-scuttlebutt] +[![npm package version](https://img.shields.io/npm/v/level-scuttlebutt)](https://www.npmjs.com/package/level-scuttlebutt) [![npm downloads](https://img.shields.io/npm/dw/level-scuttlebutt)](https://www.npmjs.com/package/level-scuttlebutt) [![License](https://img.shields.io/npm/l/level-scuttlebutt?color=blue)](https://www.npmjs.com/package/level-scuttlebutt) [![Last commit](https://img.shields.io/github/last-commit/dominictarr/level-scuttlebutt)](https://github.com/dominictarr/level-scuttlebutt) [![Contributors](https://img.shields.io/github/contributors/dominictarr/level-scuttlebutt?color=blue)](https://github.com/dominictarr/level-scuttlebutt/graphs/contributors) + Persist and query scuttlebutt documents (requires [`level-sublevel`][level-sublevel]). Abandoned. ### [`gun-level`][gun-level] +[![npm package version](https://img.shields.io/npm/v/gun-level)](https://www.npmjs.com/package/gun-level) [![npm downloads](https://img.shields.io/npm/dw/gun-level)](https://www.npmjs.com/package/gun-level) [![License](https://img.shields.io/npm/l/gun-level?color=blue)](https://www.npmjs.com/package/gun-level) [![Last commit](https://img.shields.io/github/last-commit/PsychoLlama/gun-level)](https://github.com/PsychoLlama/gun-level) [![Contributors](https://img.shields.io/github/contributors/PsychoLlama/gun-level?color=blue)](https://github.com/PsychoLlama/gun-level/graphs/contributors) + Sync graph-style data real-time between browsers and servers. Discontinued. ### [`level-co`][level-co] +[![npm package version](https://img.shields.io/npm/v/level-co)](https://www.npmjs.com/package/level-co) [![npm downloads](https://img.shields.io/npm/dw/level-co)](https://www.npmjs.com/package/level-co) [![License](https://img.shields.io/npm/l/level-co?color=blue)](https://www.npmjs.com/package/level-co) [![Last commit](https://img.shields.io/github/last-commit/juliangruber/level-co)](https://github.com/juliangruber/level-co) [![Contributors](https://img.shields.io/github/contributors/juliangruber/level-co?color=blue)](https://github.com/juliangruber/level-co/graphs/contributors) + [`levelup`][levelup] wrappers for [co](https://github.com/tj/co). Instead use native ES6 features. ### [`level-session`][level-session] +[![npm package version](https://img.shields.io/npm/v/level-session)](https://www.npmjs.com/package/level-session) [![npm downloads](https://img.shields.io/npm/dw/level-session)](https://www.npmjs.com/package/level-session) [![License](https://img.shields.io/npm/l/level-session?color=blue)](https://www.npmjs.com/package/level-session) [![Last commit](https://img.shields.io/github/last-commit/rvagg/node-level-session)](https://github.com/rvagg/node-level-session) [![Contributors](https://img.shields.io/github/contributors/rvagg/node-level-session?color=blue)](https://github.com/rvagg/node-level-session/graphs/contributors) + Framework-agnostic, LevelDB-backed web server session manager. Archived. ### [`level-socket`][level-socket] +[![npm package version](https://img.shields.io/npm/v/level-socket)](https://www.npmjs.com/package/level-socket) [![npm downloads](https://img.shields.io/npm/dw/level-socket)](https://www.npmjs.com/package/level-socket) [![License](https://img.shields.io/npm/l/level-socket?color=blue)](https://www.npmjs.com/package/level-socket) [![Last commit](https://img.shields.io/github/last-commit/maxogden/level-socket)](https://github.com/maxogden/level-socket) [![Contributors](https://img.shields.io/github/contributors/maxogden/level-socket?color=blue)](https://github.com/maxogden/level-socket/graphs/contributors) + Backend server that exposes [`levelup`][levelup] over authenticated cross domain websockets. ### [`level-user`][level-user] +[![npm package version](https://img.shields.io/npm/v/level-user)](https://www.npmjs.com/package/level-user) [![npm downloads](https://img.shields.io/npm/dw/level-user)](https://www.npmjs.com/package/level-user) [![License](https://img.shields.io/npm/l/level-user?color=blue)](https://www.npmjs.com/package/level-user) [![Last commit](https://img.shields.io/github/last-commit/maxogden/level-user)](https://github.com/maxogden/level-user) [![Contributors](https://img.shields.io/github/contributors/maxogden/level-user?color=blue)](https://github.com/maxogden/level-user/graphs/contributors) + Client side library for authenticating with and moving data over [`level-socket`][level-socket]. ### [`string-range`][string-range] +[![npm package version](https://img.shields.io/npm/v/string-range)](https://www.npmjs.com/package/string-range) [![npm downloads](https://img.shields.io/npm/dw/string-range)](https://www.npmjs.com/package/string-range) [![License](https://img.shields.io/npm/l/string-range?color=blue)](https://www.npmjs.com/package/string-range) [![Last commit](https://img.shields.io/github/last-commit/dominictarr/string-range)](https://github.com/dominictarr/string-range) [![Contributors](https://img.shields.io/github/contributors/dominictarr/string-range?color=blue)](https://github.com/dominictarr/string-range/graphs/contributors) + Manipulate string ranges for `db.createReadStream()`. Abandoned. ### [`range-bucket`][range-bucket] +[![npm package version](https://img.shields.io/npm/v/range-bucket)](https://www.npmjs.com/package/range-bucket) [![npm downloads](https://img.shields.io/npm/dw/range-bucket)](https://www.npmjs.com/package/range-bucket) [![License](https://img.shields.io/npm/l/range-bucket?color=blue)](https://www.npmjs.com/package/range-bucket) [![Last commit](https://img.shields.io/github/last-commit/dominictarr/range-bucket)](https://github.com/dominictarr/range-bucket) [![Contributors](https://img.shields.io/github/contributors/dominictarr/range-bucket?color=blue)](https://github.com/dominictarr/range-bucket/graphs/contributors) + Generate string ranges that group into ranges, suitable for use as database keys. Abandoned. ### [`level-partition-check`][level-partition-check] +[![npm package version](https://img.shields.io/npm/v/level-partition-check)](https://www.npmjs.com/package/level-partition-check) [![npm downloads](https://img.shields.io/npm/dw/level-partition-check)](https://www.npmjs.com/package/level-partition-check) [![License](https://img.shields.io/npm/l/level-partition-check?color=blue)](https://www.npmjs.com/package/level-partition-check) [![Last commit](https://img.shields.io/github/last-commit/soldair/level-partition-check)](https://github.com/soldair/level-partition-check) [![Contributors](https://img.shields.io/github/contributors/soldair/level-partition-check?color=blue)](https://github.com/soldair/level-partition-check/graphs/contributors) + Extend [`levelup`][levelup] to error if you write outside of a specified range of keys. Stalled work in progress. ### [`level-binomial-replication`][level-binomial-replication] +[![npm package version](https://img.shields.io/npm/v/level-binomial-replication)](https://www.npmjs.com/package/level-binomial-replication) [![npm downloads](https://img.shields.io/npm/dw/level-binomial-replication)](https://www.npmjs.com/package/level-binomial-replication) [![License](https://img.shields.io/npm/l/level-binomial-replication?color=blue)](https://www.npmjs.com/package/level-binomial-replication) [![Last commit](https://img.shields.io/github/last-commit/dominictarr/level-binomial-replication)](https://github.com/dominictarr/level-binomial-replication) [![Contributors](https://img.shields.io/github/contributors/dominictarr/level-binomial-replication?color=blue)](https://github.com/dominictarr/level-binomial-replication/graphs/contributors) + Biniomial replication for [`levelup`][levelup]. Abandoned. ### [`level-bytewise`][level-bytewise] +[![npm package version](https://img.shields.io/npm/v/level-bytewise)](https://www.npmjs.com/package/level-bytewise) [![npm downloads](https://img.shields.io/npm/dw/level-bytewise)](https://www.npmjs.com/package/level-bytewise) [![License](https://img.shields.io/npm/l/level-bytewise?color=blue)](https://www.npmjs.com/package/level-bytewise) [![Last commit](https://img.shields.io/github/last-commit/eugeneware/level-bytewise)](https://github.com/eugeneware/level-bytewise) [![Contributors](https://img.shields.io/github/contributors/eugeneware/level-bytewise?color=blue)](https://github.com/eugeneware/level-bytewise/graphs/contributors) + [`levelup`][levelup] with [`bytewise`][bytewise] key encoding and bytewise-friendly sublevels. ### [`level-peek`][level-peek] +[![npm package version](https://img.shields.io/npm/v/level-peek)](https://www.npmjs.com/package/level-peek) [![npm downloads](https://img.shields.io/npm/dw/level-peek)](https://www.npmjs.com/package/level-peek) [![License](https://img.shields.io/npm/l/level-peek?color=blue)](https://www.npmjs.com/package/level-peek) [![Last commit](https://img.shields.io/github/last-commit/dominictarr/level-peek)](https://github.com/dominictarr/level-peek) [![Contributors](https://img.shields.io/github/contributors/dominictarr/level-peek?color=blue)](https://github.com/dominictarr/level-peek/graphs/contributors) + Get the first or last record in a range. Abandoned. ### [`level-party-hyper`][level-party-hyper] +[![npm package version](https://img.shields.io/npm/v/level-party-hyper)](https://www.npmjs.com/package/level-party-hyper) [![npm downloads](https://img.shields.io/npm/dw/level-party-hyper)](https://www.npmjs.com/package/level-party-hyper) [![License](https://img.shields.io/npm/l/level-party-hyper?color=blue)](https://www.npmjs.com/package/level-party-hyper) [![Last commit](https://img.shields.io/github/last-commit/jcrugzz/level-party)](https://github.com/jcrugzz/level-party) [![Contributors](https://img.shields.io/github/contributors/jcrugzz/level-party?color=blue)](https://github.com/jcrugzz/level-party/graphs/contributors) + Defunct fork of [`level-party`][level-party]. ### [`level-prebuilt`][level-prebuilt] +[![npm package version](https://img.shields.io/npm/v/level-prebuilt)](https://www.npmjs.com/package/level-prebuilt) [![npm downloads](https://img.shields.io/npm/dw/level-prebuilt)](https://www.npmjs.com/package/level-prebuilt) [![License](https://img.shields.io/npm/l/level-prebuilt?color=blue)](https://www.npmjs.com/package/level-prebuilt) [![Last commit](https://img.shields.io/github/last-commit/jhermsmeier/level-prebuilt)](https://github.com/jhermsmeier/level-prebuilt) [![Contributors](https://img.shields.io/github/contributors/jhermsmeier/level-prebuilt?color=blue)](https://github.com/jhermsmeier/level-prebuilt/graphs/contributors) + Same as [`level`][level] but with prebuilt binaries. This is now provided by [`level`][level] too. ### [`level-promise`][level-promise] +[![npm package version](https://img.shields.io/npm/v/level-promise)](https://www.npmjs.com/package/level-promise) [![npm downloads](https://img.shields.io/npm/dw/level-promise)](https://www.npmjs.com/package/level-promise) [![License](https://img.shields.io/npm/l/level-promise?color=blue)](https://www.npmjs.com/package/level-promise) [![Last commit](https://img.shields.io/github/last-commit/nathan7/level-promise)](https://github.com/nathan7/level-promise) [![Contributors](https://img.shields.io/github/contributors/nathan7/level-promise?color=blue)](https://github.com/nathan7/level-promise/graphs/contributors) + [`levelup`][levelup] with Promises. This is now provided by [`levelup`][levelup] out of the box. ### [`level-search`][level-search] +[![npm package version](https://img.shields.io/npm/v/level-search)](https://www.npmjs.com/package/level-search) [![npm downloads](https://img.shields.io/npm/dw/level-search)](https://www.npmjs.com/package/level-search) [![License](https://img.shields.io/npm/l/level-search?color=blue)](https://www.npmjs.com/package/level-search) [![Last commit](https://img.shields.io/github/last-commit/dominictarr/level-search)](https://github.com/dominictarr/level-search) [![Contributors](https://img.shields.io/github/contributors/dominictarr/level-search?color=blue)](https://github.com/dominictarr/level-search/graphs/contributors) + Index and search every property in [`levelup`][levelup] containing object values. Abandoned. ### [`level-scout`][level-scout] +[![npm package version](https://img.shields.io/npm/v/level-scout)](https://www.npmjs.com/package/level-scout) [![npm downloads](https://img.shields.io/npm/dw/level-scout)](https://www.npmjs.com/package/level-scout) [![License](https://img.shields.io/npm/l/level-scout?color=blue)](https://www.npmjs.com/package/level-scout) [![Last commit](https://img.shields.io/github/last-commit/vweevers/level-scout)](https://github.com/vweevers/level-scout) [![Contributors](https://img.shields.io/github/contributors/vweevers/level-scout?color=blue)](https://github.com/vweevers/level-scout/graphs/contributors) + Range search with a query planner. Development stalled. ### [`leveldown-android-prebuilt`][leveldown-android-prebuilt] +[![npm package version](https://img.shields.io/npm/v/leveldown-android-prebuilt)](https://www.npmjs.com/package/leveldown-android-prebuilt) [![npm downloads](https://img.shields.io/npm/dw/leveldown-android-prebuilt)](https://www.npmjs.com/package/leveldown-android-prebuilt) [![License](https://img.shields.io/npm/l/leveldown-android-prebuilt?color=blue)](https://www.npmjs.com/package/leveldown-android-prebuilt) [![Last commit](https://img.shields.io/github/last-commit/level/leveldown)](https://github.com/level/leveldown) [![Contributors](https://img.shields.io/github/contributors/level/leveldown?color=blue)](https://github.com/level/leveldown/graphs/contributors) + Defunct fork of [`leveldown`][leveldown] to add Android support. Merged into `leveldown`. ### [`leveldown-prebuilt`][leveldown-prebuilt] +[![npm package version](https://img.shields.io/npm/v/leveldown-prebuilt)](https://www.npmjs.com/package/leveldown-prebuilt) [![npm downloads](https://img.shields.io/npm/dw/leveldown-prebuilt)](https://www.npmjs.com/package/leveldown-prebuilt) [![License](https://img.shields.io/npm/l/leveldown-prebuilt?color=blue)](https://www.npmjs.com/package/leveldown-prebuilt) [![Last commit](https://img.shields.io/github/last-commit/mafintosh/leveldown-prebuilt)](https://github.com/mafintosh/leveldown-prebuilt) [![Contributors](https://img.shields.io/github/contributors/mafintosh/leveldown-prebuilt?color=blue)](https://github.com/mafintosh/leveldown-prebuilt/graphs/contributors) + Defunct fork of [`leveldown`][leveldown] to add prebuilt binaries. Now provided by `leveldown`. ### [`level-map-index`][level-map-index] +[![npm package version](https://img.shields.io/npm/v/level-map-index)](https://www.npmjs.com/package/level-map-index) [![npm downloads](https://img.shields.io/npm/dw/level-map-index)](https://www.npmjs.com/package/level-map-index) [![License](https://img.shields.io/npm/l/level-map-index?color=blue)](https://www.npmjs.com/package/level-map-index) [![Last commit](https://img.shields.io/github/last-commit/vweevers/level-map-index)](https://github.com/vweevers/level-map-index) [![Contributors](https://img.shields.io/github/contributors/vweevers/level-map-index?color=blue)](https://github.com/vweevers/level-map-index/graphs/contributors) + Another indexing module. Adapted from [`map-reduce`][map-reduce]. Author recommends other solutions. ### [`level-memview`][level-memview] +[![npm package version](https://img.shields.io/npm/v/level-memview)](https://www.npmjs.com/package/level-memview) [![npm downloads](https://img.shields.io/npm/dw/level-memview)](https://www.npmjs.com/package/level-memview) [![License](https://img.shields.io/npm/l/level-memview?color=blue)](https://www.npmjs.com/package/level-memview) [![Last commit](https://img.shields.io/github/last-commit/dominictarr/level-memview)](https://github.com/dominictarr/level-memview) [![Contributors](https://img.shields.io/github/contributors/dominictarr/level-memview?color=blue)](https://github.com/dominictarr/level-memview/graphs/contributors) + In memory view on top of [`levelup`][levelup]. Abandoned. ### [`plumbdb`][plumbdb] +[![npm package version](https://img.shields.io/npm/v/plumbdb)](https://www.npmjs.com/package/plumbdb) [![npm downloads](https://img.shields.io/npm/dw/plumbdb)](https://www.npmjs.com/package/plumbdb) [![License](https://img.shields.io/npm/l/plumbdb?color=blue)](https://www.npmjs.com/package/plumbdb) [![Last commit](https://img.shields.io/github/last-commit/maxogden/plumbdb)](https://github.com/maxogden/plumbdb) [![Contributors](https://img.shields.io/github/contributors/maxogden/plumbdb?color=blue)](https://github.com/maxogden/plumbdb/graphs/contributors) + HTTP request handlers for building web services on top of LevelDB. Not in active development. ## Contributing -Module and resource authors are welcome and encouraged to add an entry for their work via a pull request. To add a module, edit `modules/*.json` and run `npm run awesome` to update `README.md`. - -[`Level/awesome`](https://github.com/Level/awesome) 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. +Module and resource authors are welcome and encouraged to add an entry for their work via a pull request. To add a module, edit `modules/*.json` and run `npm run awesome` to update `README.md`. A module can have the following properties: -See the [Contribution Guide](https://github.com/Level/community/blob/master/CONTRIBUTING.md) for more details. +- `github`: the GitHub slug, for example `Level/awesome` +- `url`: homepage if `github` is not set meaning the project is hosted elsewhere +- `description`: a short description. Supports markdown including links to other modules. +- `compatibility`: an array of npm package names, to declare compatibility with (for example) `abstract-level` versions. Best explained by looking at examples. +- `timeless`: if true, make the "last commit" badge green, to indicate that the module is feature-complete and can be used even if it seems old by lack of activity. +- `copyrightYear`, `author` and `oldCategory`: not used, kept for the historical record. ## License @@ -1964,7 +2049,7 @@ See the [Contribution Guide](https://github.com/Level/community/blob/master/CONT [@adorsys/encrypt-down]: https://github.com/adorsys/encrypt-down -[@nano-sql/core]: https://github.com/ClickSimply/Nano-SQL +[abstract-level]: https://github.com/Level/abstract-level [abstract-leveldown]: https://github.com/Level/abstract-leveldown @@ -1992,6 +2077,8 @@ See the [Contribution Guide](https://github.com/Level/community/blob/master/CONT [bleach-log-server]: https://github.com/substack/bleach-log-server +[browser-level]: https://github.com/Level/browser-level + [browserify-cdn]: https://github.com/jesusabdullah/browserify-cdn [browserify-fs]: https://github.com/mafintosh/browserify-fs @@ -2018,9 +2105,9 @@ See the [Contribution Guide](https://github.com/Level/community/blob/master/CONT [cipherhub]: https://github.com/substack/cipherhub -[clocker]: https://github.com/substack/clocker +[classic-level]: https://github.com/Level/classic-level -[cluster-levelup]: https://github.com/chiguireitor/cluster-levelup +[clocker]: https://github.com/substack/clocker [code-music-studio]: https://github.com/substack/code-music-studio @@ -2052,8 +2139,6 @@ See the [Contribution Guide](https://github.com/Level/community/blob/master/CONT [firedup]: https://github.com/eugeneware/firedup -[flash-store]: https://github.com/zixia/flash-store - [fruitdown]: https://github.com/nolanlawson/fruitdown [gaiadown-ts]: https://github.com/acidleroy/gaiadown-ts @@ -2078,8 +2163,6 @@ See the [Contribution Guide](https://github.com/Level/community/blob/master/CONT [jsonquery-engine]: https://github.com/eugeneware/jsonquery-engine -[kwdb]: https://github.com/KsRyY/kwdb - [lem]: https://github.com/binocarlos/lem [len]: https://github.com/binocarlos/len @@ -2354,6 +2437,8 @@ See the [Contribution Guide](https://github.com/Level/community/blob/master/CONT [level-reactive]: https://github.com/juliangruber/level-reactive +[level-read-stream]: https://github.com/Level/read-stream + [level-repair]: https://github.com/kesla/level-repair [level-replicate]: https://github.com/dominictarr/level-replicate @@ -2428,6 +2513,8 @@ See the [Contribution Guide](https://github.com/Level/community/blob/master/CONT [level-transactions]: https://github.com/cshum/level-transactions +[level-transcoder]: https://github.com/Level/transcoder + [level-tree]: https://github.com/calvinmetcalf/level-tree [level-tree-index]: https://github.com/biobricks/level-tree-index @@ -2448,6 +2535,8 @@ See the [Contribution Guide](https://github.com/Level/community/blob/master/CONT [level-vinyl]: https://github.com/vweevers/level-vinyl +[level-web-stream]: https://github.com/Level/web-stream + [level-write-stream]: https://github.com/Raynos/level-write-stream [level-writestream]: https://github.com/pgte/level-writestream @@ -2524,6 +2613,8 @@ See the [Contribution Guide](https://github.com/Level/community/blob/master/CONT [ltgt-to-interval]: https://github.com/juliangruber/ltgt-to-interval +[many-level]: https://github.com/Level/many-level + [map-reduce]: https://github.com/dominictarr/map-reduce [map-reduce-chained]: https://github.com/ryanramage/map-reduce-chained @@ -2534,6 +2625,8 @@ See the [Contribution Guide](https://github.com/Level/community/blob/master/CONT [memdown]: https://github.com/Level/memdown +[memory-level]: https://github.com/Level/memory-level + [merkle-dag]: https://github.com/mafintosh/merkle-dag [merkle-patricia-tree]: https://github.com/ethereumjs/merkle-patricia-tree @@ -2578,6 +2671,8 @@ See the [Contribution Guide](https://github.com/Level/community/blob/master/CONT [range-index]: https://github.com/kordon/range +[rave-level]: https://github.com/Level/rave-level + [react-native-leveldown]: https://github.com/andymatuschak/react-native-leveldown [redisdown]: https://github.com/hmalphettes/redisdown @@ -2616,6 +2711,4 @@ See the [Contribution Guide](https://github.com/Level/community/blob/master/CONT [tsd]: https://github.com/hij1nx/tsd -[vertical]: https://github.com/zy445566/vertical - [webpack-starter]: https://github.com/Level/webpack-starter diff --git a/modules/bundles.json b/modules/bundles.json deleted file mode 100644 index 290bee9..0000000 --- a/modules/bundles.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "title": "Bundles", - "description": [ - "Convenience modules that bundle [a store](#stores) with [levelup] and [encoding-down]." - ], - "compatibility": [{ - "package": "levelup", - "via": "level-packager" - }], - "modules": { - "level": { - "github": "Level/level", - "description": [ - "Bundle for [leveldown] and [level-js].", - "Main entry point for beginners." - ], - "copyrightYear": 2013, - "author": "Rod Vagg" - }, - "level-mem": { - "github": "Level/level-mem", - "description": "Bundle for [memdown].", - "copyrightYear": 2012, - "author": null - }, - "level-rocksdb": { - "github": "Level/level-rocksdb", - "description": "Bundle for [rocksdb].", - "copyrightYear": 2013, - "author": null - }, - "level-hyper": { - "github": "Level/level-hyper", - "description": "Bundle for [leveldown-hyper].", - "copyrightYear": 2012, - "author": null - }, - "level-indexed": { - "github": "kapetan/level-indexed", - "description": [ - "Bundle for [indexeddown].", - "Alternative to [level]." - ] - } - } -} diff --git a/modules/core.json b/modules/core.json index 3958125..c889cb2 100644 --- a/modules/core.json +++ b/modules/core.json @@ -1,32 +1,10 @@ { "title": "Core", "modules": { - "levelup": { - "github": "Level/levelup", - "description": [ - "The glue that holds everything together.", - "Use this when you need a [custom or swappable store](#stores)." - ], - "copyrightYear": 2012, - "author": null - }, - "abstract-leveldown": { - "github": "Level/abstract-leveldown", - "description": [ - "An abstract prototype matching the [leveldown] API.", - "Use this to implement your own store." - ], - "copyrightYear": 2013, - "author": "Rod Vagg" - }, - "level-packager": { - "github": "Level/packager", - "description": [ - "Package helper to export [a bundle](#bundles).", - "Use this to create a new `level-*` bundle." - ], - "copyrightYear": 2013, - "author": null + "abstract-level": { + "github": "Level/abstract-level", + "description": "Abstract class for a lexicographically sorted key-value database.", + "timeless": true } } } diff --git a/modules/databases.json b/modules/databases.json index 5883477..d30f95c 100644 --- a/modules/databases.json +++ b/modules/databases.json @@ -12,30 +12,6 @@ "url": "http://pouchdb.com/", "description": "PouchDB allows you to store and query data offline and then sync with CouchDB when online. For Node, browser and mobile." }, - "couchup": { - "github": "mikeal/couchup", - "description": [ - "A CouchDB implementation on top of [levelup]." - ] - }, - "firedup": { - "github": "eugeneware/firedup", - "description": [ - "A node.js implementation of firebase based on [levelup]." - ] - }, - "len": { - "github": "binocarlos/len", - "description": [ - "Len is a resource booking database using LevelDB for storage. Useful for calendar and gantt chart apps and for questions like 'can a customer book this resource starting X and ending Y'." - ] - }, - "lem": { - "github": "binocarlos/lem", - "description": [ - "Lem is a telemetry storage database using LevelDB. Keys are indexed by timestamp and you can read values in-between 2 points in time." - ] - }, "levelgraph": { "github": "mcollina/node-levelgraph", "description": [ @@ -54,88 +30,11 @@ "Event-driven database based on [pouchdb]. Optimized for reactive programming with observables. Events and state is automatically shared between multiple browser tabs. Queries are defined by the mongoDB mango-standard." ] }, - "pushdb": { - "github": "mikeal/pushdb", - "description": [ - "A programmable database with document storage and unique indexing capabilities." - ] - }, "search-index": { "github": "fergiemcdowall/search-index", "description": [ "A persistent full text search engine for browser and Node.js." ] - }, - "tacodb": { - "github": "dominictarr/tacodb", - "description": [ - "A responsive, Node.js-style database ideal for realtime data. Highly modular and adaptable, allowing extension with the [Level][level-org] ecosystem." - ] - }, - "timestreamdb": { - "github": "brycebaril/timestreamdb", - "description": [ - "A full-featured timeseries database on top of LevelDB. Includes a library for streaming statistical operations on timeseries data including joins, aggregates, filters, and map-like operations." - ] - }, - "@nano-sql/core": { - "github": "ClickSimply/Nano-SQL", - "description": [ - "A small (10Kb) RDBMS abstraction on top of [levelup] that also runs in the browser with undo/redo support, immutable objects and IndexedDB persistence." - ] - }, - "vertical": { - "github": "zy445566/vertical", - "description": [ - "LevelDB distributed, Server and Client!" - ] - }, - "flash-store": { - "github": "zixia/flash-store", - "description": [ - "FlashStore is a Key-Value persistent storage with easy to use ES6 Map-like API(both Async and Sync support), powered by LevelDB and TypeScript." - ] - }, - "level-fact-base": { - "github": "smallhelm/level-fact-base", - "description": [ - "Store immutable facts and query them with datalog." - ] - }, - "dulcimer": { - "github": "fritzy/dulcimer", - "description": "Define JSON models and manage indexes, children, foreign keys and much more." - }, - "levi": { - "github": "cshum/levi", - "description": "Stream based full-text search for Node.js and browser using [levelup]." - }, - "level-mongo": { - "github": "simon-p-r/level-mongo", - "description": "MongoDB-like database backed by LevelDB." - }, - "level-orm": { - "github": "eugeneware/level-orm", - "description": "Simple ORM built on [levelup]." - }, - "level-lively": { - "github": "eugeneware/level-lively", - "description": "[levelup] implementation of [LivelyDb](https://github.com/eugeneware/livelydb) for doing real-time data binding of a database with local javascript objects." - }, - "kwdb": { - "github": "KsRyY/kwdb", - "description": "REST wrapper for [levelup]." - }, - "level-restful": { - "github": "karissa/level-restful", - "description": "REST wrapper for [levelup], as an extension to [level-orm]." - }, - "level-rest": { - "github": "shama/level-rest", - "description": [ - "REST wrapper for [levelup].", - "NB. Not compatible with latest [levelup]." - ] } } } diff --git a/modules/encodings.js b/modules/encodings.js new file mode 100644 index 0000000..8b9fbac --- /dev/null +++ b/modules/encodings.js @@ -0,0 +1,9 @@ +// Example of a custom encoding +const { Level } = require('level') +const charwise = require('charwise') + +const db = new Level('./db', { + keyEncoding: charwise +}) + +await db.put(['users', 2], 'example') diff --git a/modules/encodings.json b/modules/encodings.json index 1e98465..853330e 100644 --- a/modules/encodings.json +++ b/modules/encodings.json @@ -1,10 +1,16 @@ { "title": "Encodings", - "description": "Custom [level-codec] compatible encodings for use with [encoding-down].", + "example": "encodings.js", "modules": { + "protocol-buffers": { + "github": "mafintosh/protocol-buffers", + "description": "[Protocol Buffers](https://developers.google.com/protocol-buffers/) for Node.js. Compiled messages are valid as encodings.", + "timeless": true + }, "charwise": { "github": "dominictarr/charwise", - "description": "Encode/decode with same encoded sort order as [bytewise]." + "description": "Encode / decode with same encoded sort order as [bytewise].", + "timeless": true }, "bytewise": { "github": "deanlandolt/bytewise", @@ -14,13 +20,10 @@ "NB. Use [charwise] if possible. Gives you almost everything `bytewise` does but much faster." ] }, - "protocol-buffers": { - "github": "mafintosh/protocol-buffers", - "description": "[Protocol Buffers](https://developers.google.com/protocol-buffers/) for Node.js. Compiled messages are [level-codec] compatible encodings." - }, "lexicographic-integer-encoding": { "github": "vweevers/lexicographic-integer-encoding", - "description": "Wraps [`lexicographic-integer`](https://github.com/substack/lexicographic-integer)." + "description": "Wraps [`lexicographic-integer`](https://github.com/substack/lexicographic-integer).", + "timeless": true } } } diff --git a/modules/hooks.json b/modules/hooks.json deleted file mode 100644 index 92a9226..0000000 --- a/modules/hooks.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "title": "Hooks", - "description": "Low-level utilities for hooking into a [levelup] instance.", - "modules": { - "level-events": { - "github": "mafintosh/level-events", - "description": "Get an event everytime something is written / read / deleted using [levelup]." - }, - "level-hookdown": { - "github": "hypermodules/level-hookdown", - "description": "Simple [levelup] hooks." - }, - "level-post": { - "github": "dominictarr/level-post", - "description": "Consistent post hooks for [levelup]." - }, - "level-condition": { - "github": "juliangruber/level-condition", - "description": "Get notified when a condition is triggered inside a [levelup] instance." - }, - "level-hooks": { - "github": "dominictarr/level-hooks", - "description": "Implements a hook mechanism that allows you to intercept `put`, `delete` and `batch` operations. You can then turn those operations into batches. Useful if you want to turn a `put` into an atomic batch for say an automatic map operation.

NB. Author recommends using [level-sublevel] instead of `level-hooks` directly. Note that [level-sublevel] is not maintained." - } - } -} diff --git a/modules/iterators.json b/modules/iterators.json deleted file mode 100644 index 09eb634..0000000 --- a/modules/iterators.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "title": "Iterators", - "description": "Modules that operate on [abstract-leveldown] iterators.", - "modules": { - "level-concat-iterator": { - "github": "Level/concat-iterator", - "description": "Concatenate items from an iterator into an array.", - "copyrightYear": 2018, - "author": null - }, - "level-iterator-stream": { - "github": "Level/iterator-stream", - "description": [ - "Turn an [abstract-leveldown] iterator into a readable stream.", - "Included in [levelup]." - ], - "copyrightYear": 2012, - "author": null - }, - "levelup-async-iterator": { - "github": "MeirionHughes/levelup-async-iterator", - "description": [ - "Add an `iterator()` method to [levelup] with [`Symbol.asyncIterator`](https://github.com/tc39/proposal-async-iteration).", - "", - "NB. Conflicts with [`iterator()`](https://github.com/Level/levelup/#iterator) added in `levelup@3.1.0`." - ] - }, - "level-iterator": { - "github": "vweevers/level-iterator", - "description": [ - "Decoding iterator for [levelup] instances. Wraps iterators like [level-iterator-stream] does.", - "", - "NB. Not compatible with `levelup` >= 2 due to encodings having moved out to [encoding-down]. PR welcome." - ] - } - } -} diff --git a/modules/layers.json b/modules/layers.json deleted file mode 100644 index c01a5a1..0000000 --- a/modules/layers.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "title": "Layers", - "description": [ - "Modules that implement [abstract-leveldown] to wrap another [abstract-leveldown].", - "This is the preferred extension point." - ], - "compatibility": ["abstract-leveldown"], - "modules": { - "encoding-down": { - "github": "Level/encoding-down", - "description": "Provides key/value encoding.", - "copyrightYear": 2012, - "author": null - }, - "@adorsys/encrypt-down": { - "github": "adorsys/encrypt-down", - "description": "Provides encryption for values." - }, - "deferred-leveldown": { - "github": "Level/deferred-leveldown", - "description": "Handles delayed-open. Built into [levelup].", - "copyrightYear": 2013, - "author": "Rod Vagg" - }, - "level-cowdown": { - "github": "substack/level-cowdown", - "description": "Copy-on-write [abstract-leveldown] layer." - }, - "abstract-stream-leveldown": { - "github": "jed/abstract-stream-leveldown", - "description": "A stream-based abstract prototype." - } - } -} diff --git a/modules/legacy.json b/modules/legacy.json index 96ac55f..c55a74c 100644 --- a/modules/legacy.json +++ b/modules/legacy.json @@ -1,8 +1,603 @@ { "title": "Legacy", "description": "Modules that are deprecated, archived or superseded. Listed here for the historical record.", - "dependencies": false, "modules": { + "levelup": { + "github": "Level/levelup", + "description": "Wrapper for [abstract-leveldown] stores. Superseded by [abstract-level].", + "oldCategory": "core", + "copyrightYear": 2012, + "author": null + }, + "abstract-leveldown": { + "github": "Level/abstract-leveldown", + "description": "An abstract prototype matching the [leveldown] API. Superseded by [abstract-level].", + "oldCategory": "core", + "copyrightYear": 2013, + "author": "Rod Vagg" + }, + "level-mem": { + "github": "Level/level-mem", + "description": "Bundles [memdown] with [levelup] and [encoding-down]. Superseded by [memory-level].", + "oldCategory": "bundles", + "copyrightYear": 2012, + "author": null, + "compatibility": [{ + "package": "levelup", + "via": "level-packager" + }] + }, + "level-rocksdb": { + "github": "Level/level-rocksdb", + "description": "Bundles [rocksdb] with [levelup] and [encoding-down].", + "oldCategory": "bundles", + "copyrightYear": 2013, + "author": null, + "compatibility": [{ + "package": "levelup", + "via": "level-packager" + }] + }, + "level-hyper": { + "github": "Level/level-hyper", + "description": "Bundles [leveldown-hyper] with [levelup] and [encoding-down].", + "oldCategory": "bundles", + "copyrightYear": 2012, + "author": null, + "compatibility": [{ + "package": "levelup", + "via": "level-packager" + }] + }, + "level-indexed": { + "github": "kapetan/level-indexed", + "description": "Bundles [indexeddown] with [levelup] and [encoding-down].", + "oldCategory": "bundles", + "compatibility": [{ + "package": "levelup", + "via": "level-packager" + }] + }, + "leveldown": { + "github": "Level/leveldown", + "description": "An [abstract-leveldown] implementation backed by [LevelDB](https://github.com/google/leveldb). Superseded by [classic-level].", + "compatibility": ["abstract-leveldown"], + "copyrightYear": 2012, + "author": "Rod Vagg" + }, + "memdown": { + "github": "Level/memdown", + "description": "An [abstract-leveldown] implementation backed by [in-memory RBTree](https://www.npmjs.com/package/functional-red-black-tree). Superseded by [memory-level].", + "compatibility": ["abstract-leveldown"], + "copyrightYear": 2013, + "author": "Rod Vagg" + }, + "level-js": { + "github": "Level/level.js", + "description": "An [abstract-leveldown] implementation backed by [IndexedDB](https://developer.mozilla.org/en-US/docs/IndexedDB). Superseded by [browser-level].", + "compatibility": ["abstract-leveldown"], + "copyrightYear": 2012, + "author": "[Max Ogden](https://github.com/maxogden)" + }, + "rocksdb": { + "github": "Level/rocksdb", + "description": "An [abstract-leveldown] implementation backed by [RocksDB](https://github.com/facebook/rocksdb/).", + "compatibility": ["abstract-leveldown"], + "copyrightYear": 2012, + "author": "Rod Vagg" + }, + "leveldown-hyper": { + "github": "Level/leveldown-hyper", + "description": "An [abstract-leveldown] implementation backed by [HyperLevelDB](https://github.com/rescrv/HyperLevelDB).", + "compatibility": ["abstract-leveldown"], + "copyrightYear": 2012, + "author": null + }, + "medeadown": { + "github": "kesla/medeadown", + "description": "An [abstract-leveldown] implementation backed by [medea](https://github.com/argo/medea).", + "compatibility": ["abstract-leveldown"] + }, + "jsondown": { + "github": "toolness/jsondown", + "description": "An [abstract-leveldown] implementation backed by JSON on disk.", + "compatibility": [ + { + "package": "abstract-leveldown", + "via": "memdown" + } + ] + }, + "asyncstorage-down": { + "github": "tradle/asyncstorage-down", + "description": "An [abstract-leveldown] implementation backed by [AsyncStorage](https://facebook.github.io/react-native/docs/asyncstorage.html) (React Native).", + "compatibility": ["abstract-leveldown"] + }, + "mongodown": { + "github": "watson/mongodown", + "description": "An [abstract-leveldown] implementation backed by [MongoDB](https://www.mongodb.com/).", + "compatibility": ["abstract-leveldown"] + }, + "sqldown": { + "github": "calvinmetcalf/sqldown", + "description": "An [abstract-leveldown] implementation backed by [`sqlite3`](https://www.npmjs.com/package/sqlite3), [`pg`](https://www.npmjs.com/package/pg), [`mysql`](https://www.npmjs.com/package/mysql) or WebSQL.", + "compatibility": ["abstract-leveldown"] + }, + "dynamo-down": { + "github": "jed/dynamo-down", + "description": "An [abstract-leveldown] implementation backed by [AWS DynamoDB](http://aws.amazon.com/dynamodb).", + "compatibility": ["abstract-leveldown"] + }, + "azureleveldown": { + "github": "richorama/azureleveldown", + "description": "An [abstract-leveldown] implementation backed by Windows Azure Table Storage.", + "compatibility": ["abstract-leveldown"] + }, + "fruitdown": { + "github": "nolanlawson/fruitdown", + "description": "An [abstract-leveldown] implementation backed by IndexedDB (Apple).", + "compatibility": ["abstract-leveldown"] + }, + "localstorage-down": { + "github": "No9/localstorage-down", + "description": "An [abstract-leveldown] implementation backed by [localStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage).", + "compatibility": ["abstract-leveldown"] + }, + "riakdown": { + "github": "nlf/riakdown", + "description": "An [abstract-leveldown] implementation backed by [riakpbc](https://github.com/nlf/riakpbc).", + "compatibility": ["abstract-leveldown"] + }, + "mysqldown": { + "github": "kesla/mysqldown", + "description": "An [abstract-leveldown] implementation backed by [MySQL](https://www.mysql.com/).", + "compatibility": ["abstract-leveldown"] + }, + "redisdown": { + "github": "hmalphettes/redisdown", + "description": "An [abstract-leveldown] implementation backed by [Redis](https://redis.io/).", + "compatibility": ["abstract-leveldown"] + }, + "leveldown-basho": { + "url": "https://www.npmjs.com/package/leveldown-basho", + "description": "An [abstract-leveldown] implementation backed by [Basho's LevelDB fork](https://github.com/basho/leveldb).", + "compatibility": ["abstract-leveldown"] + }, + "sheet-down": { + "github": "jed/sheet-down", + "description": "An [abstract-leveldown] implementation backed by [Google Sheets](https://docs.google.com/spreadsheets).", + "compatibility": ["abstract-leveldown"] + }, + "indexeddown": { + "github": "kapetan/indexeddown", + "description": "An [abstract-leveldown] implementation backed by IndexedDB.", + "compatibility": ["abstract-leveldown"] + }, + "lmdb-leveldown": { + "github": "chrbala/lmdb-leveldown", + "description": "An [abstract-leveldown] implementation backed by LMDB.", + "compatibility": ["abstract-leveldown"] + }, + "localdown": { + "github": "bhoriuchi/localdown", + "description": "An [abstract-leveldown] implementation backed by localStorage in Node.js.", + "compatibility": ["abstract-leveldown"] + }, + "aerospike-leveldown": { + "github": "ProjectThor/aerospikedown", + "description": "An [abstract-leveldown] implementation backed by Aerospike.", + "compatibility": ["abstract-leveldown"] + }, + "s3leveldown": { + "github": "loune/s3leveldown", + "description": "An [abstract-leveldown] implementation backed by [AWS S3](https://aws.amazon.com/s3/).", + "compatibility": ["abstract-leveldown"] + }, + "gaiadown-ts": { + "github": "acidleroy/gaiadown-ts", + "description": "An [abstract-leveldown] implementation backed by [Gaia](https://github.com/blockstack/gaia).", + "compatibility": ["abstract-leveldown"] + }, + "dynamodb-leveldown": { + "github": "GioCirque/DynamoDb-LevelDown", + "description": "An [abstract-leveldown] implementation backed by [AWS DynamoDB](http://aws.amazon.com/dynamodb/).", + "compatibility": ["abstract-leveldown"], + "copyrightYear": 2019, + "author": "Gio Palacino" + }, + "localforagedown": { + "github": "KsRyY/localforagedown", + "description": "An [abstract-leveldown] implementation backed by [localForage](https://github.com/localForage/localForage/).", + "compatibility": ["abstract-leveldown"] + }, + "react-native-leveldown": { + "github": "andymatuschak/react-native-leveldown", + "description": "An [abstract-leveldown] implementation backed by [LevelDB](https://github.com/google/leveldb) (React Native).", + "compatibility": ["abstract-leveldown"] + }, + "networked-hyperbeedown": { + "github": "RangerMauve/networked-hyperbeedown", + "description": "An [abstract-leveldown] implementation backed by [Hyperbee](https://github.com/hypercore-protocol/hyperbee/).", + "compatibility": ["abstract-leveldown"] + }, + "encoding-down": { + "github": "Level/encoding-down", + "description": "An [abstract-leveldown] layer that provides key/value encoding. Superseded by [abstract-level].", + "compatibility": ["abstract-leveldown"], + "copyrightYear": 2012, + "author": null + }, + "@adorsys/encrypt-down": { + "github": "adorsys/encrypt-down", + "description": "An [abstract-leveldown] layer that provides encryption for values.", + "compatibility": ["abstract-leveldown"] + }, + "deferred-leveldown": { + "github": "Level/deferred-leveldown", + "description": "An [abstract-leveldown] layer that handles delayed-open. Built into [levelup]. Both are superseded by [abstract-level].", + "compatibility": ["abstract-leveldown"], + "copyrightYear": 2013, + "author": "Rod Vagg" + }, + "level-cowdown": { + "github": "substack/level-cowdown", + "description": "Copy-on-write [abstract-leveldown] layer.", + "compatibility": ["abstract-leveldown"] + }, + "abstract-stream-leveldown": { + "github": "jed/abstract-stream-leveldown", + "description": "A stream-based [abstract-leveldown] prototype.", + "compatibility": ["abstract-leveldown"] + }, + "level-iterator-stream": { + "github": "Level/iterator-stream", + "description": [ + "Turn an [abstract-leveldown] iterator into a readable stream. Included in [levelup]. For [abstract-level] databases, this is superseded by [level-read-stream]." + ], + "copyrightYear": 2012, + "author": null + }, + "level-batch-stream": { + "github": "jcrugzz/level-batch-stream", + "description": "Streams2 writable stream for [levelup]." + }, + "level-writestream": { + "github": "pgte/level-writestream", + "description": "Streams2 writable stream for [levelup]." + }, + "level-write-stream": { + "github": "Raynos/level-write-stream", + "description": "Streams1 writable stream for [levelup] or [abstract-leveldown]." + }, + "level-livefeed": { + "github": "Raynos/level-livefeed", + "description": "A live query of a range in [levelup]. Similar to [level-live-stream] but with a streams2 interface." + }, + "level-range": { + "github": "juliangruber/level-range", + "description": "Find all K/V-pairs prefixed by a certain key. Streams1." + }, + "level-cursor": { + "github": "kordon/cursor", + "description": "A stream \"cursor\" to iterate through a ReadStream / KeyStream / ValueStream." + }, + "level-live": { + "github": "voltraco/level-live", + "description": [ + "Simple, light and correct live read stream implementation.", + "", + "NB. Uses an undefined streams version, as well as [ltgt] which is not compatible with [abstract-level]." + ] + }, + "level-glob": { + "github": "vweevers/level-glob", + "description": "A streams2 read stream filtered and ordered by glob patterns. Keys in the database should be unix-like paths." + }, + "pull-level": { + "github": "dominictarr/pull-level", + "description": "[`pull-stream`](https://github.com/pull-stream/pull-stream) interface to [levelup] with read streams, write streams and realtime (tail/live) reads. Not compatible with [abstract-level]." + }, + "level-live-stream": { + "github": "dominictarr/level-live-stream", + "description": "Like `db.createReadStream()` except it's live / tailable. i.e. instead of ending, it will stay open and stream changes to the database as they are inserted. Not compatible with [abstract-level]." + }, + "level-concat-iterator": { + "github": "Level/concat-iterator", + "description": "Concatenate items from an [abstract-leveldown] iterator into an array. On [abstract-level] databases, this is superseded by `iterator.all()`.", + "copyrightYear": 2018, + "author": null + }, + "subleveldown": { + "github": "Level/subleveldown", + "compatibility": ["abstract-leveldown", "levelup"], + "description": "Split a [levelup] database into sublevels with their own keyspace, encoding and events. Superseded by [abstract-level].", + "copyrightYear": 2014, + "author": "[Mathias Buus](https://github.com/mafintosh)" + }, + "level-temp": { + "github": "mafintosh/level-temp", + "description": "Create a temporary [subleveldown] sublevel that is guaranteed to be empty." + }, + "level-mount": { + "github": "u8sand/level-mount", + "description": "Mount multiple [abstract-leveldown] stores by key prefix onto a single store. Can be used with [subleveldown].", + "compatibility": ["abstract-leveldown"] + }, + "bytespace": { + "github": "deanlandolt/bytespace", + "description": [ + "Keypath subspaces prefixed with [bytewise] tuples. Similar to [level-sublevel].", + "", + "NB. [bytewise] - and thus [bytespace] - can be slow. Consider using the [charwise] encoding instead." + ] + }, + "level-sublevel": { + "github": "dominictarr/level-sublevel", + "compatibility": ["levelup"], + "description": [ + "Adds the ability to create subsections with the same API as [levelup], but only write/read to a prefixed section, or bucket, of the key-space. Each section also has [level-hooks] installed.", + "", + "NB. No longer maintained. Instead use [subleveldown] for [levelup], or the built-in sublevels of [abstract-level]." + ] + }, + "sublevel-prefixer": { + "github": "mafintosh/sublevel-prefixer", + "description": "Utility to prefix a key with a sublevel prefix." + }, + "level-sublevel-stream": { + "github": "juliangruber/level-sublevel-stream", + "description": [ + "Find [level-sublevel] sublevels, not requiring them to be in memory already." + ] + }, + "level-subtree": { + "github": "hij1nx/level-subtree", + "description": [ + "Generate a tree from [level-sublevel] sublevels, useful when there is no manifest." + ] + }, + "level-superlevel": { + "github": "randymized/level-superlevel", + "description": [ + "Superlevel adds a \"super\" level that allows accessing the entire database, discovering [level-sublevel] sublevels and browsing the database without knowledge of the sublevel structure." + ] + }, + "level-subkey": { + "github": "snowyu/level-subkey", + "description": [ + "Use path-like keys to separate sections of [levelup], with hooks. Adapted from [level-sublevel]." + ] + }, + "level-mirror": { + "github": "juliangruber/level-mirror", + "description": "Mirror and optionally transform data from one [level-sublevel] sublevel into another." + }, + "couchup": { + "github": "mikeal/couchup", + "description": [ + "A CouchDB implementation on top of [levelup]." + ] + }, + "firedup": { + "github": "eugeneware/firedup", + "description": [ + "A node.js implementation of firebase based on [levelup]." + ] + }, + "len": { + "github": "binocarlos/len", + "description": [ + "Len is a resource booking database using LevelDB for storage. Useful for calendar and gantt chart apps and for questions like 'can a customer book this resource starting X and ending Y'." + ] + }, + "lem": { + "github": "binocarlos/lem", + "description": [ + "Lem is a telemetry storage database using LevelDB. Keys are indexed by timestamp and you can read values in-between 2 points in time." + ] + }, + "pushdb": { + "github": "mikeal/pushdb", + "description": [ + "A programmable database with document storage and unique indexing capabilities." + ] + }, + "tacodb": { + "github": "dominictarr/tacodb", + "description": [ + "A responsive, Node.js-style database ideal for realtime data. Highly modular and adaptable, allowing extension with the [Level][level-org] ecosystem." + ] + }, + "timestreamdb": { + "github": "brycebaril/timestreamdb", + "description": [ + "A full-featured timeseries database on top of LevelDB. Includes a library for streaming statistical operations on timeseries data including joins, aggregates, filters, and map-like operations." + ] + }, + "level-orm": { + "github": "eugeneware/level-orm", + "description": "Simple ORM built on [levelup]." + }, + "level-restful": { + "github": "karissa/level-restful", + "description": "REST wrapper for [levelup], as an extension to [level-orm]." + }, + "level-rest": { + "github": "shama/level-rest", + "description": "REST wrapper for [levelup]. Not compatible with latest [levelup]." + }, + "level-lively": { + "github": "eugeneware/level-lively", + "description": "[levelup] implementation of [LivelyDb](https://github.com/eugeneware/livelydb) for doing real-time data binding of a database with local javascript objects." + }, + "level-mongo": { + "github": "simon-p-r/level-mongo", + "description": "MongoDB-like database backed by LevelDB.", + "compatibility": [{ + "package": "leveldown", + "via": "level" + }] + }, + "levi": { + "github": "cshum/levi", + "description": "Stream based full-text search for Node.js and browser using [levelup]." + }, + "dulcimer": { + "github": "fritzy/dulcimer", + "description": "Define JSON models and manage indexes, children, foreign keys and much more." + }, + "level-fact-base": { + "github": "smallhelm/level-fact-base", + "description": [ + "Store immutable facts and query them with datalog." + ] + }, + "ltgt": { + "github": "dominictarr/ltgt", + "description": "Tool belt to find lower or upper bounds, compare and filter keys and more. Incompatible with [abstract-level], because in [abstract-level] `gte` and `lte` range options take precedence over `gt` and `lt` respectively." + }, + "level-option-wrap": { + "github": "substack/level-option-wrap", + "description": "Wrap `ltgt` options with functions. Expose range options without leaking information about your internal key representations." + }, + "interval-to-ltgt": { + "github": "nowsecure/interval-to-ltgt", + "description": "Convert an interval string to an `ltgt` object. This is the counterpart to [ltgt-to-interval]." + }, + "ltgt-to-interval": { + "github": "juliangruber/ltgt-to-interval", + "description": "Convert an `ltgt` object to an interval string. This is the counterpart to [interval-to-ltgt]." + }, + "range-emitter": { + "github": "jameskyburz/range-emitter", + "description": "Range emitter. Publish keys and subscribe to ranges." + }, + "level-codec": { + "github": "Level/codec", + "description": "Encode keys, values and ltgte options. Used in [encoding-down]. Superseded by [level-transcoder].", + "copyrightYear": 2012, + "author": null + }, + "level-errors": { + "github": "Level/errors", + "description": "Error types for [levelup]. Superseded by [abstract-level].", + "copyrightYear": 2012, + "author": null + }, + "level-packager": { + "github": "Level/packager", + "description": "Legacy package helper to bundle an [abstract-leveldown] store with [levelup] and [encoding-down].", + "oldCategory": "core", + "copyrightYear": 2013, + "author": null + }, + "multileveldown": { + "github": "mafintosh/multileveldown", + "description": "Share a [levelup] instance across multiple processes or over the network. An alternative to [multilevel], implemented as [abstract-leveldown] stores with seamless retry support. Superseded by [many-level].", + "oldCategory": "shared-access" + }, + "level-party": { + "github": "substack/level-party", + "description": "Open a LevelDB ([leveldown]) handle multiple times, transparently upgrading to [multileveldown] when more than 1 process try to use the same LevelDB data directory at once and re-electing a new master when the primary unix socket (or named pipe) goes down. Superseded by [rave-level].", + "oldCategory": "shared-access" + }, + "multilevel": { + "github": "juliangruber/multilevel", + "description": "Share a [levelup] instance over the network.", + "oldCategory": "shared-access" + }, + "multilevel-http": { + "github": "juliangruber/multilevel-http", + "description": "Expose a [levelup] instance via HTTP.", + "oldCategory": "shared-access" + }, + "level-manifest": { + "github": "dominictarr/level-manifest", + "description": "Describe the functions that [multilevel] should provide access to on the client.", + "oldCategory": "shared-access" + }, + "level-sandbox": { + "github": "juliangruber/level-sandbox", + "description": "A sandbox for hosting [multilevel] enabled databases.", + "oldCategory": "shared-access" + }, + "level-range-emitter": { + "github": "jameskyburz/level-range-emitter", + "description": "Client and server using [multileveldown], [range-emitter] and [ltgt].", + "oldCategory": "shared-access" + }, + "leveldb-mount": { + "github": "jameskyburz/leveldb-mount", + "description": "LevelDB server and client with optional client-side REPL. Built with [subleveldown] and [multileveldown]." + }, + "level2riak": { + "github": "fritzy/level2git", + "description": "A network service that allows you to connect to a Riak database over HTTP." + }, + "level-cluster-get": { + "github": "kesla/level-cluster-get", + "description": "Given a key, get all values from a cluster of [multilevel] servers." + }, + "level-connect": { + "github": "mattstyles/level-connect", + "description": "Connect to a [level-party] and [level-sublevel] enabled LevelDB over HTTP." + }, + "level-pubsub": { + "github": "hij1nx/level-pubsub", + "description": "PubSub with server and client on top of [levelup]." + }, + "level-query": { + "github": "substack/level-query", + "description": "Expose a [level-sublevel] database over HTTP, searchable with query strings." + }, + "level-over-http": { + "github": "lakowske/level-over-http", + "description": "Another solution to expose [levelup] over HTTP." + }, + "level-rpc": { + "github": "juliangruber/level-rpc", + "description": "Fast RPC mechanism for [levelup]. Intended as binary-compatible alternative to [multilevel]." + }, + "level-events": { + "github": "mafintosh/level-events", + "description": "Get an event everytime something is written / read / deleted using [levelup].", + "oldCategory": "hooks" + }, + "level-hookdown": { + "github": "hypermodules/level-hookdown", + "description": "Simple [levelup] hooks.", + "oldCategory": "hooks" + }, + "level-post": { + "github": "dominictarr/level-post", + "description": "Consistent post hooks for [levelup].", + "oldCategory": "hooks" + }, + "level-condition": { + "github": "juliangruber/level-condition", + "description": "Get notified when a condition is triggered inside a [levelup] instance.", + "oldCategory": "hooks" + }, + "level-hooks": { + "github": "dominictarr/level-hooks", + "description": "Implements a hook mechanism that allows you to intercept `put`, `delete` and `batch` operations. You can then turn those operations into batches. Useful if you want to turn a `put` into an atomic batch for say an automatic map operation.

NB. Author recommends using [level-sublevel] instead of `level-hooks` directly. Note that [level-sublevel] is not maintained.

Both are now (anno 2024) superseded by [abstract-level] which has builtin sublevels and hooks.", + "oldCategory": "hooks" + }, + "levelup-async-iterator": { + "github": "MeirionHughes/levelup-async-iterator", + "description": [ + "Add an `iterator()` method to [levelup] with [`Symbol.asyncIterator`](https://github.com/tc39/proposal-async-iteration).", + "Superseded by builtin `Symbol.asyncIterator` support on [abstract-leveldown] iterators." + ] + }, + "level-iterator": { + "github": "vweevers/level-iterator", + "description": [ + "Decoding iterator for [levelup] instances. Wraps iterators like [level-iterator-stream] does.", + "", + "Superseded by [encoding-down] and later [abstract-level]." + ] + }, "level-delete-stream": { "github": "juliangruber/level-delete-stream", "description": "A streams1 deleteStream for [levelup]. Superseded by `db.clear()`." diff --git a/modules/ltgt.json b/modules/ltgt.json deleted file mode 100644 index 621aefc..0000000 --- a/modules/ltgt.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "title": "Range Options", - "description": "Utilities for working with range options, known as ltgt(e), common to [levelup] streams and [abstract-leveldown] iterators.", - "modules": { - "ltgt": { - "github": "dominictarr/ltgt", - "description": "Tool belt to find lower or upper bounds, compare and filter keys and more." - }, - "level-option-wrap": { - "github": "substack/level-option-wrap", - "description": "Wrap `ltgt` options with functions. Expose range options without leaking information about your internal key representations." - }, - "interval-to-ltgt": { - "github": "nowsecure/interval-to-ltgt", - "description": "Convert an interval string to an `ltgt` object. This is the counterpart to [ltgt-to-interval]." - }, - "ltgt-to-interval": { - "github": "juliangruber/ltgt-to-interval", - "description": "Convert an `ltgt` object to an interval string. This is the counterpart to [interval-to-ltgt]." - }, - "range-emitter": { - "github": "jameskyburz/range-emitter", - "description": "Range emitter. Publish keys and subscribe to ranges." - } - } -} diff --git a/modules/processing.json b/modules/processing.json index 62e7fba..89b0507 100644 --- a/modules/processing.json +++ b/modules/processing.json @@ -1,6 +1,6 @@ { "title": "Processing", - "description": "Modules for indexing, alternative forms of querying data, MapReduce models and other forms of data processing.", + "description": "Modules for indexing, alternative forms of querying data, MapReduce models and other forms of data processing. This section has not been updated for [abstract-level] yet.", "modules": { "level-auto-index": { "github": "hypermodules/level-auto-index", diff --git a/modules/shared-access.json b/modules/shared-access.json index 0f74ce8..6c0cbce 100644 --- a/modules/shared-access.json +++ b/modules/shared-access.json @@ -1,69 +1,18 @@ { "title": "Shared Access", "modules": { - "multileveldown": { - "github": "mafintosh/multileveldown", - "description": "Share a [levelup] instance across multiple processes or over the network. An alternative to [multilevel], implemented as [abstract-leveldown] stores with seamless retry support." - }, - "level-party": { - "github": "substack/level-party", - "description": "Open a LevelDB ([leveldown]) handle multiple times, transparently upgrading to [multileveldown] when more than 1 process try to use the same LevelDB data directory at once and re-electing a new master when the primary unix socket (or named pipe) goes down." - }, - "cluster-levelup": { - "github": "chiguireitor/cluster-levelup", - "description": "Wrap a [levelup] instance for [`cluster`](https://nodejs.org/api/cluster.html) usage among multiple processes." - }, - "multilevel": { - "github": "juliangruber/multilevel", - "description": "Share a [levelup] instance over the network." - }, - "multilevel-http": { - "github": "juliangruber/multilevel-http", - "description": "Expose a [levelup] instance via HTTP." - }, - "level-range-emitter": { - "github": "jameskyburz/level-range-emitter", - "description": "Client and server using [multileveldown], [range-emitter] and [ltgt]." - }, - "level-manifest": { - "github": "dominictarr/level-manifest", - "description": "Describe the functions that [multilevel] should provide access to on the client." - }, - "level-cluster-get": { - "github": "kesla/level-cluster-get", - "description": "Given a key, get all values from a cluster of [multilevel] servers." - }, - "level-connect": { - "github": "mattstyles/level-connect", - "description": "Connect to a [level-party] and [level-sublevel] enabled LevelDB over HTTP." - }, - "level-sandbox": { - "github": "juliangruber/level-sandbox", - "description": "A sandbox for hosting [multilevel] enabled databases." - }, - "level2riak": { - "github": "fritzy/level2git", - "description": "A network service that allows you to connect to a Riak database over HTTP." - }, - "leveldb-mount": { - "github": "jameskyburz/leveldb-mount", - "description": "LevelDB server and client with optional client-side REPL. Built with [subleveldown] and [multileveldown]." - }, - "level-pubsub": { - "github": "hij1nx/level-pubsub", - "description": "PubSub with server and client on top of [levelup]." - }, - "level-query": { - "github": "substack/level-query", - "description": "Expose a [level-sublevel] database over HTTP, searchable with query strings." - }, - "level-over-http": { - "github": "lakowske/level-over-http", - "description": "Another solution to expose [levelup] over HTTP." - }, - "level-rpc": { - "github": "juliangruber/level-rpc", - "description": "Fast RPC mechanism for [levelup]. Intended as binary-compatible alternative to [multilevel]." + "many-level": { + "github": "Level/many-level", + "description": "Share an [abstract-level] database over the network or other kind of stream. Supersedes [multileveldown] and [multilevel].", + "compatibility": ["abstract-level"] + }, + "rave-level": { + "github": "Level/rave-level", + "description": "Use a LevelDB database from multiple processes with seamless failover. Supersedes [level-party].", + "compatibility": [{ + "package": "abstract-level", + "via": "many-level" + }] } } } diff --git a/modules/storage.json b/modules/storage.json new file mode 100644 index 0000000..dcb8653 --- /dev/null +++ b/modules/storage.json @@ -0,0 +1,38 @@ +{ + "title": "Storage", + "description": "Modules that implement [abstract-level].", + "modules": { + "level": { + "github": "Level/level", + "compatibility": [{ + "package": "abstract-level", + "via": "classic-level" + }], + "description": [ + "Universal [abstract-level] database for Node.js and browsers.", + "Main entry point for beginners." + ], + "timeless": true, + "copyrightYear": 2013, + "author": "Rod Vagg" + }, + "classic-level": { + "github": "Level/classic-level", + "description": "An [abstract-level] database backed by LevelDB.", + "compatibility": ["abstract-level"], + "timeless": true + }, + "browser-level": { + "github": "Level/browser-level", + "description": "An [abstract-level] database for browsers, backed by IndexedDB.", + "compatibility": ["abstract-level"], + "timeless": true + }, + "memory-level": { + "github": "Level/memory-level", + "description": "In-memory [abstract-level] database for Node.js and browsers.", + "compatibility": ["abstract-level"], + "timeless": true + } + } +} diff --git a/modules/stores.json b/modules/stores.json deleted file mode 100644 index b8612a3..0000000 --- a/modules/stores.json +++ /dev/null @@ -1,141 +0,0 @@ -{ - "title": "Stores", - "description": "Modules that implement [abstract-leveldown] as storage for [levelup].", - "compatibility": ["abstract-leveldown"], - "modules": { - "leveldown": { - "github": "Level/leveldown", - "description": "Backed by [LevelDB](https://github.com/google/leveldb).", - "copyrightYear": 2012, - "author": "Rod Vagg" - }, - "memdown": { - "github": "Level/memdown", - "description": "Backed by [in-memory RBTree](https://www.npmjs.com/package/functional-red-black-tree).", - "copyrightYear": 2013, - "author": "Rod Vagg" - }, - "level-js": { - "github": "Level/level.js", - "description": "Backed by [IndexedDB](https://developer.mozilla.org/en-US/docs/IndexedDB).", - "copyrightYear": 2012, - "author": "[Max Ogden](https://github.com/maxogden)" - }, - "rocksdb": { - "github": "Level/rocksdb", - "description": "Backed by [RocksDB](https://github.com/facebook/rocksdb/).", - "copyrightYear": 2012, - "author": "Rod Vagg" - }, - "leveldown-hyper": { - "github": "Level/leveldown-hyper", - "description": "Backed by [HyperLevelDB](https://github.com/rescrv/HyperLevelDB).", - "copyrightYear": 2012, - "author": null - }, - "medeadown": { - "github": "kesla/medeadown", - "description": "Backed by [medea](https://github.com/argo/medea)." - }, - "jsondown": { - "github": "toolness/jsondown", - "description": "Backed by JSON on disk", - "compatibility": [ - { - "package": "abstract-leveldown", - "via": "memdown" - } - ] - }, - "asyncstorage-down": { - "github": "tradle/asyncstorage-down", - "description": "Backed by [AsyncStorage](https://facebook.github.io/react-native/docs/asyncstorage.html) (React Native)." - }, - "mongodown": { - "github": "watson/mongodown", - "description": "Backed by [MongoDB](https://www.mongodb.com/)." - }, - "sqldown": { - "github": "calvinmetcalf/sqldown", - "description": "Backed by [`sqlite3`](https://www.npmjs.com/package/sqlite3), [`pg`](https://www.npmjs.com/package/pg), [`mysql`](https://www.npmjs.com/package/mysql) or WebSQL." - }, - "dynamo-down": { - "github": "jed/dynamo-down", - "description": "Backed by [AWS DynamoDB](http://aws.amazon.com/dynamodb)." - }, - "azureleveldown": { - "github": "richorama/azureleveldown", - "description": "Backed by Windows Azure Table Storage." - }, - "fruitdown": { - "github": "nolanlawson/fruitdown", - "description": "Backed by IndexedDB (Apple)." - }, - "localstorage-down": { - "github": "No9/localstorage-down", - "description": "Backed by [localStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage)." - }, - "riakdown": { - "github": "nlf/riakdown", - "description": "Backed by [riakpbc](https://github.com/nlf/riakpbc)." - }, - "mysqldown": { - "github": "kesla/mysqldown", - "description": "Backed by [MySQL](https://www.mysql.com/)." - }, - "redisdown": { - "github": "hmalphettes/redisdown", - "description": "Backed by [Redis](https://redis.io/)." - }, - "leveldown-basho": { - "url": "https://www.npmjs.com/package/leveldown-basho", - "description": "Backed by [Basho's LevelDB fork](https://github.com/basho/leveldb)." - }, - "sheet-down": { - "github": "jed/sheet-down", - "description": "Backed by [Google Sheets](https://docs.google.com/spreadsheets)." - }, - "indexeddown": { - "github": "kapetan/indexeddown", - "description": "Backed by IndexedDB." - }, - "lmdb-leveldown": { - "github": "chrbala/lmdb-leveldown", - "description": "Backed by LMDB." - }, - "localdown": { - "github": "bhoriuchi/localdown", - "description": "Backed by localStorage in Node.js." - }, - "aerospike-leveldown": { - "github": "ProjectThor/aerospikedown", - "description": "Backed by Aerospike." - }, - "s3leveldown": { - "github": "loune/s3leveldown", - "description": "Backed by [AWS S3](https://aws.amazon.com/s3/)." - }, - "gaiadown-ts": { - "github": "acidleroy/gaiadown-ts", - "description": "Backed by [Gaia](https://github.com/blockstack/gaia)." - }, - "dynamodb-leveldown": { - "github": "GioCirque/DynamoDb-LevelDown", - "description": "Backed by [AWS DynamoDB](http://aws.amazon.com/dynamodb/).", - "copyrightYear": 2019, - "author": "Gio Palacino" - }, - "localforagedown": { - "github": "KsRyY/localforagedown", - "description": "Backed by [localForage](https://github.com/localForage/localForage/)." - }, - "react-native-leveldown": { - "github": "andymatuschak/react-native-leveldown", - "description": "Backed by [LevelDB](https://github.com/google/leveldb) (React Native)." - }, - "networked-hyperbeedown": { - "github": "RangerMauve/networked-hyperbeedown", - "description": "Backed by [Hyperbee](https://github.com/hypercore-protocol/hyperbee/)." - } - } -} diff --git a/modules/streams.json b/modules/streams.json index 9476027..94a6abc 100644 --- a/modules/streams.json +++ b/modules/streams.json @@ -1,56 +1,25 @@ { "title": "Streams", - "description": "[Node.js stream](https://nodejs.org/api/stream.html) or [`pull-stream`](https://github.com/pull-stream/pull-stream) implementations for reading and writing data from/to [levelup].", + "description": "[Node.js stream](https://nodejs.org/api/stream.html), [Web Streams](https://developer.mozilla.org/en-US/docs/Web/API/Streams_API) or [`pull-stream`](https://github.com/pull-stream/pull-stream) implementations for reading and writing data from/to databases.", "modules": { - "level-ws": { - "github": "Level/level-ws", - "description": "General-case, streams3 writable stream for [levelup].", - "copyrightYear": 2012, - "author": null - }, - "level-batch-stream": { - "github": "jcrugzz/level-batch-stream", - "description": "Streams2 writable stream for [levelup]." - }, - "level-writestream": { - "github": "pgte/level-writestream", - "description": "Streams2 writable stream for [levelup]." - }, - "level-write-stream": { - "github": "Raynos/level-write-stream", - "description": "Streams1 writable stream for [levelup] or [abstract-leveldown]." - }, - "pull-level": { - "github": "dominictarr/pull-level", - "description": "[`pull-stream`](https://github.com/pull-stream/pull-stream) interface to [levelup] with read streams, write streams and realtime (tail/live) reads." - }, - "level-live-stream": { - "github": "dominictarr/level-live-stream", - "description": "Like `db.createReadStream()` except it's live / tailable. i.e. instead of ending, it will stay open and stream changes to the database as they are inserted." + "level-read-stream": { + "github": "Level/read-stream", + "description": [ + "Read from an [abstract-level] database using Node.js streams." + ], + "timeless": true }, - "level-live": { - "github": "voltraco/level-live", + "level-web-stream": { + "github": "Level/web-stream", "description": [ - "Simple, light and correct live read stream implementation.", - "", - "NB. Uses an undefined streams version." + "Read from an [abstract-level] database using Web Streams." ] }, - "level-livefeed": { - "github": "Raynos/level-livefeed", - "description": "A live query of a range in [levelup]. Similar to [level-live-stream] but with a streams2 interface." - }, - "level-range": { - "github": "juliangruber/level-range", - "description": "Find all K/V-pairs prefixed by a certain key. Streams1." - }, - "level-cursor": { - "github": "kordon/cursor", - "description": "A stream \"cursor\" to iterate through a ReadStream / KeyStream / ValueStream." - }, - "level-glob": { - "github": "vweevers/level-glob", - "description": "A streams2 read stream filtered and ordered by glob patterns. Keys in the database should be unix-like paths." + "level-ws": { + "github": "Level/level-ws", + "description": "A basic writable stream for [abstract-level] databases, using Node.js core streams. Has not been updated for `abstract-level` 2 yet (to use the promise API).", + "copyrightYear": 2012, + "author": null } } } diff --git a/modules/sublevels.json b/modules/sublevels.json deleted file mode 100644 index 6198556..0000000 --- a/modules/sublevels.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "title": "Sublevels", - "description": "Modules related to splitting a database into sections a.k.a. sublevels.", - "modules": { - "subleveldown": { - "github": "Level/subleveldown", - "compatibility": ["abstract-leveldown", "levelup"], - "description": "Split a [levelup] database into sublevels with their own keyspace, encoding and events.", - "copyrightYear": 2014, - "author": "[Mathias Buus](https://github.com/mafintosh)" - }, - "level-temp": { - "github": "mafintosh/level-temp", - "description": "Create a temporary [subleveldown] sublevel that is guaranteed to be empty." - }, - "level-mount": { - "github": "u8sand/level-mount", - "description": "Mount multiple [abstract-leveldown] stores by key prefix onto a single store. Can be used with [subleveldown]." - }, - "bytespace": { - "github": "deanlandolt/bytespace", - "description": [ - "Keypath subspaces prefixed with [bytewise] tuples. Similar to [level-sublevel].", - "", - "NB. [bytewise] - and thus [bytespace] - can be slow. Consider using [subleveldown] paired with the [charwise] encoding instead." - ] - }, - "level-sublevel": { - "github": "dominictarr/level-sublevel", - "description": [ - "Adds the ability to create subsections with the same API as [levelup], but only write/read to a prefixed section, or bucket, of the key-space. Each section also has [level-hooks] installed.", - "", - "NB. No longer maintained. We recommend [subleveldown] instead." - ] - }, - "sublevel-prefixer": { - "github": "mafintosh/sublevel-prefixer", - "description": "Utility to prefix a key with a sublevel prefix." - }, - "level-sublevel-stream": { - "github": "juliangruber/level-sublevel-stream", - "description": [ - "Find [level-sublevel] sublevels, not requiring them to be in memory already." - ] - }, - "level-subtree": { - "github": "hij1nx/level-subtree", - "description": [ - "Generate a tree from [level-sublevel] sublevels, useful when there is no manifest." - ] - }, - "level-superlevel": { - "github": "randymized/level-superlevel", - "description": [ - "Superlevel adds a \"super\" level that allows accessing the entire database, discovering [level-sublevel] sublevels and browsing the database without knowledge of the sublevel structure." - ] - }, - "level-subkey": { - "github": "snowyu/level-subkey", - "description": [ - "Use path-like keys to separate sections of [levelup], with hooks. Adapted from [level-sublevel]." - ] - }, - "level-mirror": { - "github": "juliangruber/level-mirror", - "description": "Mirror and optionally transform data from one [level-sublevel] sublevel into another." - } - } -} diff --git a/modules/utilities.json b/modules/utilities.json index 0c332ad..6ea1ac0 100644 --- a/modules/utilities.json +++ b/modules/utilities.json @@ -1,27 +1,19 @@ { "title": "Utilities", "modules": { - "level-codec": { - "github": "Level/codec", - "description": "Encode keys, values and ltgte options. Used in [encoding-down].", - "copyrightYear": 2012, - "author": null - }, - "level-errors": { - "github": "Level/errors", - "description": "Error types for [levelup].", - "copyrightYear": 2012, - "author": null + "level-transcoder": { + "github": "Level/transcoder", + "description": "Encode data with built-in or custom encodings. Used in [abstract-level]." }, "level-test": { "github": "Level/level-test", - "description": "Easily run your `level-*` tests against [all stores](#stores).", + "description": "Inject temporary and isolated [abstract-leveldown] stores ([leveldown], [level-js], [memdown] or custom) into your tests.", "copyrightYear": 2013, "author": "Dominic Tarr" }, "level-compose": { "github": "Level/compose", - "description": "Compose a database factory from [abstract-leveldown] and [levelup] layers.", + "description": "Compose a database factory from [abstract-leveldown] and [levelup] layers. TBD if still relevant after [abstract-level].", "copyrightYear": 2019, "author": null }, diff --git a/package.json b/package.json index 5622ca0..ff12ad2 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "license": "MIT", "scripts": { "test": "standard && npm run dependency-check", - "awesome": "node src README.md modules/*", + "awesome": "node src README.md modules/*.json", "dependency-check": "dependency-check . src/*.js -i dependency-check -i standard" }, "devDependencies": { @@ -30,6 +30,9 @@ "unist-util-visit": "^2.0.0", "vfile-reporter": "^6.0.0" }, + "standard": { + "ignore": ["modules/*.js"] + }, "repository": { "type": "git", "url": "https://github.com/Level/awesome.git" diff --git a/src/mdast-generator.js b/src/mdast-generator.js index e13d722..78ce6d5 100644 --- a/src/mdast-generator.js +++ b/src/mdast-generator.js @@ -6,6 +6,8 @@ const compat = require('./shield-compat').badge const img = require('./mdast-image') const b = require('unist-builder') const processor = require('remark')() +const fs = require('fs') +const path = require('path') module.exports = function (section, done) { mapLimit(Object.entries(section.modules), 4, generateModuleSection, (err, res) => { @@ -13,6 +15,12 @@ module.exports = function (section, done) { const nodes = res.flat() + if (section.example) { + const fp = path.join('modules', section.example) + const js = fs.readFileSync(fp, 'utf8').trim() + nodes.unshift(b('code', { lang: 'js' }, js)) + } + if (section.description) { const children = parse(join(section.description, ' ')) nodes.unshift(b('paragraph', b('strong', children))) @@ -49,32 +57,63 @@ module.exports = function (section, done) { function generateBadges (id, module, done) { const fns = [] - if (section.compatibility) { - for (const target of (module.compatibility || section.compatibility)) { - fns.push((id, module, next) => { - compat(id, target, (err, badge) => { - if (err) return next(err) - next(null, img(badge.image, badge.alt, badge.link)) - }) - }) - } - } - if (section.dependencies !== false) { + fns.push(generateNpmVersionBadge) + fns.push(generateNpmDownloadsBadge) + fns.push(generateLicenseBadge) fns.push(generateLastCommitBadge) fns.push(generateContributorsBadge) } + for (const target of (module.compatibility || section.compatibility || [])) { + fns.push((id, module, next) => { + compat(id, target, (err, badge) => { + if (err) return next(err) + next(null, img(badge.image, badge.alt, badge.link)) + }) + }) + } + mapLimit(fns, 4, (fn, next) => fn(id, module, next), (err, badges) => { if (err) return done(err) done(null, badges.filter(Boolean)) }) } + function generateNpmVersionBadge (id, module, done) { + const image = `https://img.shields.io/npm/v/${id}` + const alt = 'npm package version' + const link = `https://www.npmjs.com/package/${id}` + + process.nextTick(done, null, img(image, alt, link)) + } + + function generateNpmDownloadsBadge (id, module, done) { + const image = `https://img.shields.io/npm/dw/${id}` + const alt = 'npm downloads' + const link = `https://www.npmjs.com/package/${id}` + + process.nextTick(done, null, img(image, alt, link)) + } + + function generateLicenseBadge (id, module, done) { + // Don't care for interpretation of "good" licenses so use informational color + const image = `https://img.shields.io/npm/l/${id}?color=blue` + const alt = 'License' + const link = `https://www.npmjs.com/package/${id}` + + process.nextTick(done, null, img(image, alt, link)) + } + function generateLastCommitBadge (id, module, done) { if (!module.github) return process.nextTick(done) - const image = `https://img.shields.io/github/last-commit/${module.github}` + let image = `https://img.shields.io/github/last-commit/${module.github}` + + if (module.timeless) { + image += '?color=brightgreen' + } + const alt = 'Last commit' const link = `https://github.com/${module.github}` @@ -84,7 +123,7 @@ module.exports = function (section, done) { function generateContributorsBadge (id, module, done) { if (!module.github) return process.nextTick(done) - const image = `https://img.shields.io/github/contributors/${module.github}?color=brightgreen` + const image = `https://img.shields.io/github/contributors/${module.github}?color=blue` const alt = 'Contributors' const link = `https://github.com/${module.github}/graphs/contributors` diff --git a/src/remark-generator.js b/src/remark-generator.js index 8d79fa5..b15a3fd 100644 --- a/src/remark-generator.js +++ b/src/remark-generator.js @@ -8,13 +8,21 @@ module.exports = function (options) { const sections = options.sections const modules = options.modules || {} + let totalModules = 0 + // Normalize and validate sections for (const section of sections) { if (typeof section.title !== 'string' || section.title === '') { throw new TypeError('title must be a non-empty string') } - for (const [id, module] of Object.entries(section.modules)) { + const entries = Object.entries(section.modules) + + console.error('%s modules in %s', entries.length.toString().padStart(3), section.title) + + for (const [id, module] of entries) { + totalModules++ + if (modules[id]) { throw new Error('duplicate module: ' + id) } @@ -32,6 +40,8 @@ module.exports = function (options) { } } + console.error('\n%s modules total\n', totalModules.toString().padStart(3)) + return function transformer (tree, file, next) { mapLimit(sections, 4, generator, (err, results) => { if (err) return next(err) diff --git a/src/shield-compat.js b/src/shield-compat.js index d694a00..4fe6121 100644 --- a/src/shield-compat.js +++ b/src/shield-compat.js @@ -93,9 +93,6 @@ exports.data = function (module, target, opts, callback) { } return finish(null, 'missing') - } else if (range === '*') { - // Discourage use of this specifier. - return finish(null, range, 'red') } getPackument(target.package, (err, packument) => { @@ -114,7 +111,9 @@ exports.data = function (module, target, opts, callback) { return finish(err, 'invalid') } - if (compat.major < major - 2) { + if (target.package === 'levelup' || target.package === 'abstract-leveldown') { + finish(null, compat.short, 'inactive') + } else if (compat.major < major - 2) { finish(null, compat.short, 'red') } else if (compat.major < major) { finish(null, compat.short, 'orange')