Skip to content

Commit

Permalink
Docs and tests for levelup v2
Browse files Browse the repository at this point in the history
  • Loading branch information
sjones6 committed Oct 29, 2017
1 parent 431795e commit c6e2560
Show file tree
Hide file tree
Showing 5 changed files with 93 additions and 62 deletions.
49 changes: 41 additions & 8 deletions README.md
Expand Up @@ -23,7 +23,7 @@ That's what this library does.

## Usage

To get started, you'll first need to install gun-level.
To get started, you'll first need to install `gun-level`.

> If you're unfamiliar with `npm`, you can get started [here](https://docs.npmjs.com/getting-started/what-is-npm)
Expand All @@ -34,23 +34,27 @@ $ npm install --save gun-level gun
Now require them from your node project.

```javascript
// Imports the `Gun` library
// Import the `Gun` library
const Gun = require('gun')

// Imported for side effects, adds level adapters.
// MUST be required after Gun to work
require('gun-level')
```

Once they're imported you can create a new database interface:
Once they're imported you can create a new Gun database:

```javascript
const gun = new Gun({
// We'll put options here in a moment.
})
```

Sweet, you're set up! However, `gun-level` won't do anything unless you pass it a levelDB instance through the constructor. For that, you'll need to download level:
Sweet, you're set up! However, `gun-level` won't do anything unless you pass it a levelDB instance through the `Gun` constructor. For that, you'll need to download the Node `levelup` package.

> There are some differences between `levelup` v1 and v2 so be sure to note which version you're using.
### `levelup` v1

```sh
$ npm install --save levelup leveldown
Expand All @@ -70,16 +74,45 @@ const levelDB = levelup('data', {
})
```

Now we pass our new levelDB instance to the `Gun` constructor.
### `levelup` >v2

```sh
$ npm install --save levelup leveldown encoding-down
```

```javascript
// Import the required libraries
const levelup = require('levelup')
const encode = require('encoding-down')
const leveldown = require('leveldown')

// Create a new level instance which saves
// to the `data/` folder.
const levelDB = levelup(
encode(
leveldown('data'),
{ valueEncoding: 'json' }
)
)
```

### Instantiating Gun with Level

Now we can pass our new levelDB instance to the `Gun` constructor.

```javascript
const Gun = require('gun')
require('gun-level')

// ... instantiate LevelDB per above

// Pass LevelDB instance into Gun
const gun = new Gun({
level: levelDB,
file: false,
level: levelDB
})
```

Done! Now your gun instance is backed up to levelDB.
Done! Now your `gun` database will store it's graph in your Level DB!

Let's try a few things...

Expand Down
3 changes: 2 additions & 1 deletion package.json
Expand Up @@ -39,13 +39,14 @@
"babel-plugin-transform-runtime": "^6.23.0",
"babel-preset-es2015": "^6.24.1",
"babel-register": "^6.24.1",
"encoding-down": "^2.3.4",
"eslint": "^4.3.0",
"eslint-config-llama": "^3.0.0",
"eslint-config-prettier": "^2.3.0",
"expect": "^1.20.2",
"gun": "^0.8",
"husky": "^0.14.3",
"levelup": "^1.3.8",
"levelup": "^2.0.0",
"lint-staged": "^4.0.2",
"memdown": "^1.2.0",
"mocha": "^3.4.2",
Expand Down
5 changes: 2 additions & 3 deletions src/Adapter/spec.js
Expand Up @@ -4,6 +4,7 @@ import expect, { spyOn } from 'expect';
import Adapter from './';
import levelup from 'levelup';
import memdown from 'memdown';
import encode from 'encoding-down';
import Gun from 'gun/gun';

const node = obj => Gun.node.ify(obj, Gun.state.map());
Expand All @@ -12,9 +13,7 @@ describe('An adapter', function() {
this.timeout(100);

let adapter, lex, gun, ctx;
const level = levelup('test', {
db: memdown,
});
const level = levelup(encode(memdown('test'), { valueEncoding: 'json' }));
const context = new Gun({ level });

beforeEach(() => {
Expand Down
15 changes: 12 additions & 3 deletions src/spec.js
Expand Up @@ -3,6 +3,7 @@ import { describe, it, beforeEach } from 'mocha';
import expect from 'expect';
import memdown from 'memdown';
import levelup from 'levelup';
import encode from 'encoding-down';
import Gun from 'gun/gun';
import './index';

Expand All @@ -15,7 +16,7 @@ let gun, level, key;
* @returns {undefined}
*/
const makeLevel = () => {
level = levelup('test', { db: memdown });
level = levelup(encode(memdown('test'), { valueEncoding: 'json' }));
};

/**
Expand Down Expand Up @@ -71,9 +72,17 @@ describe('Gun using level', function() {
const g = makeGun();

// write initial data
g.get(key).put({ data: true }, () => {
g.get(key).put({ data: true }, res1 => {
if (res1.err) {
throw res1.err;
}

// add to it
g.get(key).put({ success: true }, () => {
g.get(key).put({ success: true }, res2 => {
if (res2.err) {
throw res2.err;
}

// verify data merge
makeGun().get(key).val(value => {
expect(value).toContain({ success: true, data: true });
Expand Down
83 changes: 36 additions & 47 deletions yarn.lock
Expand Up @@ -6,12 +6,18 @@ abbrev@1:
version "1.0.9"
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"

abstract-leveldown@2.4.1, abstract-leveldown@~2.4.0:
abstract-leveldown@2.4.1:
version "2.4.1"
resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.4.1.tgz#b3bfedb884eb693a12775f0c55e9f0a420ccee64"
dependencies:
xtend "~4.0.0"

abstract-leveldown@^2.7.1, abstract-leveldown@~2.7.0:
version "2.7.2"
resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz#87a44d7ebebc341d59665204834c8b7e0932cc93"
dependencies:
xtend "~4.0.0"

acorn-jsx@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
Expand Down Expand Up @@ -892,11 +898,11 @@ deep-is@~0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"

deferred-leveldown@~1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-1.2.1.tgz#5d25c3310f5fe909946f6240dc9f90dd109a71ef"
deferred-leveldown@~2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-2.0.2.tgz#6d3dcb066d940f01392cf310c8029a8605e7eef7"
dependencies:
abstract-leveldown "~2.4.0"
abstract-leveldown "~2.7.0"

define-properties@^1.1.2, define-properties@~1.1.2:
version "1.1.2"
Expand Down Expand Up @@ -952,6 +958,14 @@ elegant-spinner@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e"

encoding-down@^2.3.4:
version "2.3.4"
resolved "https://registry.yarnpkg.com/encoding-down/-/encoding-down-2.3.4.tgz#8ec27729aead0798144a2689fda89f303a93a5e3"
dependencies:
abstract-leveldown "^2.7.1"
level-codec "^8.0.0"
level-errors "^1.0.4"

errno@~0.1.1:
version "0.1.4"
resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d"
Expand Down Expand Up @@ -1702,10 +1716,6 @@ is-typedarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"

isarray@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"

isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
Expand Down Expand Up @@ -1820,35 +1830,31 @@ kind-of@^3.0.2:
dependencies:
is-buffer "^1.0.2"

level-codec@~6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-6.1.0.tgz#f5df0a99582f76dac43855151ab6f4e4d0d60045"
level-codec@^8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-8.0.0.tgz#3a4a0de06dae20c2f5a57b3372c7651e67083e03"

level-errors@^1.0.3, level-errors@~1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.0.4.tgz#3585e623974c737a93755492a43c0267cda4425f"
level-errors@^1.0.4, level-errors@~1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.1.1.tgz#52fdc2dbbaf395cf767db843929a38b7015678d2"
dependencies:
errno "~0.1.1"

level-iterator-stream@~1.3.0:
version "1.3.1"
resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz#e43b78b1a8143e6fa97a4f485eb8ea530352f2ed"
level-iterator-stream@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-2.0.0.tgz#e0fe4273a0322177c81bb87684016bb5b90a98b4"
dependencies:
inherits "^2.0.1"
level-errors "^1.0.3"
readable-stream "^1.0.33"
readable-stream "^2.0.5"
xtend "^4.0.0"

levelup@^1.3.8:
version "1.3.8"
resolved "https://registry.yarnpkg.com/levelup/-/levelup-1.3.8.tgz#fb442c488efbea1043f7eb9929a792a74fbd1da6"
levelup@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/levelup/-/levelup-2.0.0.tgz#6a7e2af8e4d63fa17313e922c6c8a5b81cec1d08"
dependencies:
deferred-leveldown "~1.2.1"
level-codec "~6.1.0"
level-errors "~1.0.3"
level-iterator-stream "~1.3.0"
prr "~1.0.1"
semver "~5.1.0"
deferred-leveldown "~2.0.2"
level-errors "~1.1.0"
level-iterator-stream "~2.0.0"
xtend "~4.0.0"

levn@^0.3.0, levn@~0.3.0:
Expand Down Expand Up @@ -2348,10 +2354,6 @@ prr@~0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a"

prr@~1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"

pseudomap@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
Expand Down Expand Up @@ -2388,15 +2390,6 @@ rc@~1.1.6:
minimist "^1.2.0"
strip-json-comments "~1.0.4"

readable-stream@^1.0.33:
version "1.1.14"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
dependencies:
core-util-is "~1.0.0"
inherits "~2.0.1"
isarray "0.0.1"
string_decoder "~0.10.x"

"readable-stream@^2.0.0 || ^1.1.13", readable-stream@~2.1.4:
version "2.1.5"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0"
Expand All @@ -2420,7 +2413,7 @@ readable-stream@^2.0.2:
string_decoder "~0.10.x"
util-deprecate "~1.0.1"

readable-stream@^2.2.2:
readable-stream@^2.0.5, readable-stream@^2.2.2:
version "2.3.3"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c"
dependencies:
Expand Down Expand Up @@ -2594,10 +2587,6 @@ semver@^5.3.0, semver@~5.3.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"

semver@~5.1.0:
version "5.1.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.1.1.tgz#a3292a373e6f3e0798da0b20641b9a9c5bc47e19"

set-blocking@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
Expand Down

0 comments on commit c6e2560

Please sign in to comment.