Skip to content
This repository was archived by the owner on Mar 23, 2023. It is now read-only.

Commit a427eca

Browse files
jacobheundaviddias
authored andcommitted
fix: upgrade level libs to resolve node 10 failure
License: MIT Signed-off-by: Jacob Heun <jacobheun@gmail.com>
1 parent fad0098 commit a427eca

File tree

5 files changed

+46
-14
lines changed

5 files changed

+46
-14
lines changed

.DS_Store

-6 KB
Binary file not shown.

package.json

+6-3
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
"version": "0.7.0",
44
"description": "Datastore implementation with level(up|down) backend",
55
"main": "src/index.js",
6+
"browser": {
7+
"leveldown": "level-js"
8+
},
69
"scripts": {
710
"lint": "aegir lint",
811
"build": "aegir build",
@@ -39,9 +42,9 @@
3942
"dependencies": {
4043
"datastore-core": "~0.4.0",
4144
"interface-datastore": "~0.4.1",
42-
"level-js": "^2.2.4",
43-
"leveldown": "^1.9.0",
44-
"levelup": "^1.3.9",
45+
"level-js": "github:timkuijsten/level.js#idbunwrapper",
46+
"leveldown": "^3.0.2",
47+
"levelup": "^2.0.2",
4548
"pull-stream": "^3.6.1"
4649
},
4750
"devDependencies": {

src/index.js

+22-5
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,24 @@ class LevelDatastore {
2424
/* :: db: levelup */
2525

2626
constructor (path /* : string */, opts /* : ?LevelOptions */) {
27-
this.db = levelup(path, Object.assign({}, opts, {
28-
compression: false, // same default as go
29-
valueEncoding: 'binary'
30-
}))
27+
// Default to leveldown db
28+
const database = opts && opts.db ? opts.db : require('leveldown')
29+
delete opts.db
30+
31+
this.db = levelup(
32+
database(
33+
path,
34+
Object.assign({}, opts, {
35+
compression: false, // same default as go
36+
valueEncoding: 'binary'
37+
})
38+
), (err) => {
39+
// Prevent an uncaught exception error on duplicate locks
40+
if (err) {
41+
throw err
42+
}
43+
}
44+
)
3145
}
3246

3347
open (callback /* : Callback<void> */) /* : void */ {
@@ -58,7 +72,10 @@ class LevelDatastore {
5872
}
5973

6074
delete (key /* : Key */, callback /* : Callback<void> */) /* : void */ {
61-
this.db.del(key.toString(), callback)
75+
this.db.del(key.toString(), (err) => {
76+
// Avoid level passing additional arguments to callback, we dont need them
77+
callback(err)
78+
})
6279
}
6380

6481
close (callback /* : Callback<void> */) /* : void */ {

test/browser.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
const each = require('async/each')
66
const MountStore = require('datastore-core').MountDatastore
77
const Key = require('interface-datastore').Key
8-
const leveljs = require('level-js')
8+
9+
// leveldown will be swapped for level-js
10+
const leveljs = require('leveldown')
911

1012
const LevelStore = require('../src')
1113

test/node.js

+15-5
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ describe('LevelDatastore', () => {
2121
const dir = utils.tmpdir()
2222
require('interface-datastore/src/tests')({
2323
setup (callback) {
24-
callback(null, new LevelStore(dir))
24+
callback(null, new LevelStore(dir, {
25+
db: require('leveldown')
26+
}))
2527
},
2628
teardown (callback) {
2729
rimraf(dir, callback)
@@ -40,13 +42,19 @@ describe('LevelDatastore', () => {
4042
setup (callback) {
4143
callback(null, new MountStore([{
4244
prefix: new Key('/a'),
43-
datastore: new LevelStore(dirs[0])
45+
datastore: new LevelStore(dirs[0], {
46+
db: require('leveldown')
47+
})
4448
}, {
4549
prefix: new Key('/q'),
46-
datastore: new LevelStore(dirs[1])
50+
datastore: new LevelStore(dirs[1], {
51+
db: require('leveldown')
52+
})
4753
}, {
4854
prefix: new Key('/z'),
49-
datastore: new LevelStore(dirs[2])
55+
datastore: new LevelStore(dirs[2], {
56+
db: require('leveldown')
57+
})
5058
}]))
5159
},
5260
teardown (callback) {
@@ -56,7 +64,9 @@ describe('LevelDatastore', () => {
5664
})
5765

5866
it.skip('interop with go', (done) => {
59-
const store = new LevelStore(path.join(__dirname, 'test-repo', 'datastore'))
67+
const store = new LevelStore(path.join(__dirname, 'test-repo', 'datastore'), {
68+
db: require('leveldown')
69+
})
6070

6171
pull(
6272
store.query({}),

0 commit comments

Comments
 (0)