datastore-level
Advanced tools
Comparing version 0.7.0 to 0.8.0
@@ -0,1 +1,13 @@ | ||
<a name="0.8.0"></a> | ||
# [0.8.0](https://github.com/ipfs/js-datastore-level/compare/v0.7.0...v0.8.0) (2018-05-29) | ||
### Bug Fixes | ||
* add test and fix constructor ([396f657](https://github.com/ipfs/js-datastore-level/commit/396f657)) | ||
* update binary encoding for levelup 2 ([a5d7378](https://github.com/ipfs/js-datastore-level/commit/a5d7378)) | ||
* upgrade level libs to resolve node 10 failure ([a427eca](https://github.com/ipfs/js-datastore-level/commit/a427eca)) | ||
<a name="0.7.0"></a> | ||
@@ -2,0 +14,0 @@ # [0.7.0](https://github.com/ipfs/js-datastore-level/compare/v0.6.0...v0.7.0) (2017-11-06) |
{ | ||
"name": "datastore-level", | ||
"version": "0.7.0", | ||
"version": "0.8.0", | ||
"description": "Datastore implementation with level(up|down) backend", | ||
"main": "src/index.js", | ||
"browser": { | ||
"leveldown": "level-js" | ||
}, | ||
"scripts": { | ||
@@ -41,13 +44,14 @@ "lint": "aegir lint", | ||
"datastore-core": "~0.4.0", | ||
"encoding-down": "^5.0.2", | ||
"interface-datastore": "~0.4.1", | ||
"level-js": "^2.2.4", | ||
"leveldown": "^1.9.0", | ||
"levelup": "^1.3.9", | ||
"level-js": "github:timkuijsten/level.js#idbunwrapper", | ||
"leveldown": "^3.0.2", | ||
"levelup": "^2.0.2", | ||
"pull-stream": "^3.6.1" | ||
}, | ||
"devDependencies": { | ||
"aegir": "^12.1.3", | ||
"async": "^2.5.0", | ||
"aegir": "^13.1.0", | ||
"async": "^2.6.0", | ||
"chai": "^4.1.2", | ||
"cids": "~0.5.2", | ||
"cids": "~0.5.3", | ||
"dirty-chai": "^2.0.1", | ||
@@ -61,4 +65,6 @@ "flow-bin": "^0.58.0", | ||
"Friedel Ziegelmayer <dignifiedquire@gmail.com>", | ||
"Richard Schneider <makaretu@gmail.com>" | ||
"Jacob Heun <jacobheun@gmail.com>", | ||
"Richard Schneider <makaretu@gmail.com>", | ||
"Victor Bjelkholm <victorbjelkholm@gmail.com>" | ||
] | ||
} |
@@ -19,2 +19,3 @@ # js-datastore-level | ||
- [Usage](#usage) | ||
- [Browser Shimming Leveldown](#browser-shimming-leveldown) | ||
- [Contribute](#contribute) | ||
@@ -43,2 +44,5 @@ - [License](#license) | ||
### Browser Shimming Leveldown | ||
As `leveldown` does not work in the browser, `LevelStore` takes advantage of the browser property in package.json to shim `level-js` in its place. Most modern bundlers such as webpack, will see the shim and replace it for use in the browser. If you are using a bundler that does not support pkg.browser, you will need to handle the shimming yourself, as was the case with versions of `LevelStore` 0.7.0 and earlier. | ||
## Contribute | ||
@@ -45,0 +49,0 @@ |
@@ -12,2 +12,3 @@ /* @flow */ | ||
const Key = require('interface-datastore').Key | ||
const encode = require('encoding-down') | ||
@@ -28,6 +29,24 @@ /** | ||
constructor (path /* : string */, opts /* : ?LevelOptions */) { | ||
this.db = levelup(path, Object.assign({}, opts, { | ||
compression: false, // same default as go | ||
valueEncoding: 'binary' | ||
})) | ||
let database | ||
if (opts && opts.db) { | ||
database = opts.db | ||
delete opts.db | ||
} else { | ||
// Default to leveldown db | ||
database = require('leveldown') | ||
} | ||
this.db = levelup( | ||
encode(database(path), { valueEncoding: 'binary' }), | ||
Object.assign({}, opts, { | ||
compression: false // same default as go | ||
}), | ||
(err) => { | ||
// Prevent an uncaught exception error on duplicate locks | ||
if (err) { | ||
throw err | ||
} | ||
} | ||
) | ||
} | ||
@@ -63,3 +82,6 @@ | ||
delete (key /* : Key */, callback /* : Callback<void> */) /* : void */ { | ||
this.db.del(key.toString(), callback) | ||
this.db.del(key.toString(), (err) => { | ||
// Avoid level passing additional arguments to callback, we dont need them | ||
callback(err) | ||
}) | ||
} | ||
@@ -66,0 +88,0 @@ |
@@ -8,4 +8,6 @@ /* @flow */ | ||
const Key = require('interface-datastore').Key | ||
const leveljs = require('level-js') | ||
// leveldown will be swapped for level-js | ||
const leveljs = require('leveldown') | ||
const LevelStore = require('../src') | ||
@@ -12,0 +14,0 @@ |
@@ -5,3 +5,8 @@ /* @flow */ | ||
const chai = require('chai') | ||
chai.use(require('dirty-chai')) | ||
const expect = chai.expect | ||
const memdown = require('memdown') | ||
const LevelDown = require('leveldown') | ||
const eachSeries = require('async/eachSeries') | ||
@@ -11,13 +16,57 @@ const LevelStore = require('../src') | ||
describe('LevelDatastore', () => { | ||
describe('interface-datastore (memdown)', () => { | ||
require('interface-datastore/src/tests')({ | ||
setup (callback) { | ||
callback(null, new LevelStore('hello', {db: memdown})) | ||
}, | ||
teardown (callback) { | ||
memdown.clearGlobalStore() | ||
callback() | ||
} | ||
describe('initialization', () => { | ||
it('should default to a leveldown database', (done) => { | ||
const levelStore = new LevelStore('init-default') | ||
levelStore.open((err) => { | ||
expect(err).to.not.exist() | ||
expect(levelStore.db.db.db instanceof LevelDown).to.equal(true) | ||
expect(levelStore.db.options).to.include({ | ||
createIfMissing: true, | ||
errorIfExists: false | ||
}) | ||
expect(levelStore.db.db.codec.opts).to.include({ | ||
valueEncoding: 'binary' | ||
}) | ||
done() | ||
}) | ||
}) | ||
it('should be able to override the database', (done) => { | ||
const levelStore = new LevelStore('init-default', { | ||
db: memdown, | ||
createIfMissing: true, | ||
errorIfExists: true | ||
}) | ||
levelStore.open((err) => { | ||
expect(err).to.not.exist() | ||
expect(levelStore.db.db.db instanceof memdown).to.equal(true) | ||
expect(levelStore.db.options).to.include({ | ||
createIfMissing: true, | ||
errorIfExists: true | ||
}) | ||
done() | ||
}) | ||
}) | ||
}) | ||
eachSeries([ | ||
memdown, | ||
LevelDown | ||
], (database) => { | ||
describe(`interface-datastore ${database.name}`, () => { | ||
require('interface-datastore/src/tests')({ | ||
setup (callback) { | ||
callback(null, new LevelStore('datastore-test', {db: database})) | ||
}, | ||
teardown (callback) { | ||
memdown.clearGlobalStore() | ||
callback() | ||
} | ||
}) | ||
}) | ||
}, (err) => { | ||
expect(err).to.not.exist() | ||
}) | ||
}) |
@@ -24,3 +24,5 @@ /* @flow */ | ||
setup (callback) { | ||
callback(null, new LevelStore(dir)) | ||
callback(null, new LevelStore(dir, { | ||
db: require('leveldown') | ||
})) | ||
}, | ||
@@ -44,9 +46,15 @@ teardown (callback) { | ||
prefix: new Key('/a'), | ||
datastore: new LevelStore(dirs[0]) | ||
datastore: new LevelStore(dirs[0], { | ||
db: require('leveldown') | ||
}) | ||
}, { | ||
prefix: new Key('/q'), | ||
datastore: new LevelStore(dirs[1]) | ||
datastore: new LevelStore(dirs[1], { | ||
db: require('leveldown') | ||
}) | ||
}, { | ||
prefix: new Key('/z'), | ||
datastore: new LevelStore(dirs[2]) | ||
datastore: new LevelStore(dirs[2], { | ||
db: require('leveldown') | ||
}) | ||
}])) | ||
@@ -61,3 +69,5 @@ }, | ||
it.skip('interop with go', (done) => { | ||
const store = new LevelStore(path.join(__dirname, 'test-repo', 'datastore')) | ||
const store = new LevelStore(path.join(__dirname, 'test-repo', 'datastore'), { | ||
db: require('leveldown') | ||
}) | ||
@@ -64,0 +74,0 @@ pull( |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
GitHub dependency
Supply chain riskContains a dependency which resolves to a GitHub URL. Dependencies fetched from GitHub specifiers are not immutable can be used to inject untrusted code or reduce the likelihood of a reproducible install.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
198906
62
2871
55
0
7
1
+ Addedencoding-down@^5.0.2
+ Addedabstract-leveldown@4.0.35.0.0(transitive)
+ Addedbase64-js@1.5.1(transitive)
+ Addedbuffer@5.7.1(transitive)
+ Addeddeferred-leveldown@3.0.0(transitive)
+ Addedencoding-down@5.0.4(transitive)
+ Addedieee754@1.2.1(transitive)
+ Addedlevel-codec@9.0.2(transitive)
+ Addedlevel-errors@1.1.22.0.1(transitive)
+ Addedlevel-iterator-stream@2.0.3(transitive)
+ Addedleveldown@3.0.2(transitive)
+ Addedlevelup@2.0.2(transitive)
+ Addednan@2.10.0(transitive)
+ Addedprebuild-install@4.0.0(transitive)
+ Addedsemver@5.7.2(transitive)
- Removedabstract-leveldown@0.12.42.6.32.7.2(transitive)
- Removeddeferred-leveldown@1.2.2(transitive)
- Removedidb-wrapper@1.7.2(transitive)
- Removedisarray@0.0.1(transitive)
- Removedisbuffer@0.0.0(transitive)
- Removedlevel-codec@7.0.1(transitive)
- Removedlevel-errors@1.0.5(transitive)
- Removedlevel-iterator-stream@1.3.1(transitive)
- Removedlevel-js@2.2.4(transitive)
- Removedleveldown@1.9.0(transitive)
- Removedlevelup@1.3.9(transitive)
- Removedltgt@2.2.1(transitive)
- Removednan@2.7.0(transitive)
- Removedobject-keys@0.4.0(transitive)
- Removedprebuild-install@2.5.3(transitive)
- Removedreadable-stream@1.1.14(transitive)
- Removedsemver@5.4.1(transitive)
- Removedstring_decoder@0.10.31(transitive)
- Removedtypedarray-to-buffer@1.0.4(transitive)
- Removedxtend@2.1.23.0.0(transitive)
Updatedleveldown@^3.0.2
Updatedlevelup@^2.0.2