Socket
Socket
Sign inDemoInstall

abstract-leveldown

Package Overview
Dependencies
Maintainers
4
Versions
79
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

abstract-leveldown - npm Package Compare versions

Comparing version 4.0.3 to 5.0.0

.airtap.yml

10

abstract-leveldown.js
/* Copyright (c) 2017 Rod Vagg, MIT License */
const xtend = require('xtend')
const AbstractIterator = require('./abstract-iterator')
const AbstractChainedBatch = require('./abstract-chained-batch')
const hasOwnProperty = Object.prototype.hasOwnProperty
const rangeOptions = 'start end gt gte lt lte'.split(' ')
var xtend = require('xtend')
var AbstractIterator = require('./abstract-iterator')
var AbstractChainedBatch = require('./abstract-chained-batch')
var hasOwnProperty = Object.prototype.hasOwnProperty
var rangeOptions = 'start end gt gte lt lte'.split(' ')

@@ -9,0 +9,0 @@ function AbstractLevelDOWN (location) {

'use strict'
var db
const verifyNotFoundError = require('./util').verifyNotFoundError
const testBuffer = Buffer.from('testbuffer')
var verifyNotFoundError = require('./util').verifyNotFoundError
var testBuffer = Buffer.from('testbuffer')

@@ -7,0 +7,0 @@ function makeGetDelErrorTests (test, type, key, expectedError) {

@@ -5,2 +5,18 @@ # Changelog

## [5.0.0] - 2018-05-22
### Added
* Add node 10 to Travis (@ralphtheninja)
* Add `airtap` for browser tests (@vweevers)
### Changed
* Update `sinon` to `^5.0.0` (@ralphtheninja)
* Tweak README (@ralphtheninja)
* Replace `const` with `var` to support IE10 (@vweevers)
### Removed
* Remove node 4, 5 and 7 from Travis (@ralphtheninja)
* Remove TypeScript tests (@vweevers)
* Remove TypeScript typings (@ralphtheninja)
## [4.0.3] - 2018-02-21

@@ -113,4 +129,2 @@

### Removed
## [2.6.2] - 2017-07-30

@@ -548,3 +562,4 @@

[Unreleased]: https://github.com/level/abstract-leveldown/compare/v4.0.3...HEAD
[Unreleased]: https://github.com/level/abstract-leveldown/compare/v5.0.0...HEAD
[5.0.0]: https://github.com/level/abstract-leveldown/compare/v4.0.3...v5.0.0
[4.0.3]: https://github.com/level/abstract-leveldown/compare/v4.0.2...v4.0.3

@@ -551,0 +566,0 @@ [4.0.2]: https://github.com/level/abstract-leveldown/compare/v4.0.1...v4.0.2

{
"name": "abstract-leveldown",
"description": "An abstract prototype matching the LevelDOWN API",
"version": "4.0.3",
"version": "5.0.0",
"contributors": [

@@ -33,3 +33,2 @@ "Rod Vagg <r@va.gg> (https://github.com/rvagg)",

"main": "index.js",
"typings": "index.d.ts",
"dependencies": {

@@ -39,9 +38,7 @@ "xtend": "~4.0.0"

"devDependencies": {
"@types/node": "^9.3.0",
"airtap": "0.0.5",
"rimraf": "^2.6.1",
"sinon": "^4.0.0",
"sinon": "^5.0.0",
"standard": "^11.0.0",
"tape": "^4.7.0",
"ts-node": "^5.0.0",
"typescript": "^2.6.2"
"tape": "^4.7.0"
},

@@ -52,11 +49,10 @@ "browser": {

"scripts": {
"test": "standard && node test.js && npm run test-ts",
"test-ts": "npm run test-ts-types && npm run test-ts-suite",
"test-ts-types": "ts-node --type-check --no-cache test-types.ts",
"test-ts-suite": "ts-node --type-check --no-cache test.js"
"test": "standard && node test.js",
"test-browsers": "airtap --sauce-connect --loopback airtap.local --no-coverage test.js",
"test-browser-local": "airtap --local --no-coverage test.js"
},
"license": "MIT",
"engines": {
"node": ">=4"
"node": ">=6"
}
}

@@ -85,2 +85,6 @@ # abstract-leveldown

## Browser support
[![Sauce Test Status](https://saucelabs.com/browser-matrix/abstract-leveldown.svg)](https://saucelabs.com/u/abstract-leveldown)
## Extensible API

@@ -90,4 +94,4 @@

### AbstractLevelDOWN(location)
### AbstractLevelDOWN#status
### `AbstractLevelDOWN(location)`
### `AbstractLevelDOWN#status`

@@ -102,18 +106,18 @@ An `AbstractLevelDOWN` based database can be in one of the following states:

### AbstractLevelDOWN#_open(options, callback)
### AbstractLevelDOWN#_close(callback)
### AbstractLevelDOWN#_get(key, options, callback)
### AbstractLevelDOWN#_put(key, value, options, callback)
### AbstractLevelDOWN#_del(key, options, callback)
### AbstractLevelDOWN#_batch(array, options, callback)
### `AbstractLevelDOWN#_open(options, callback)`
### `AbstractLevelDOWN#_close(callback)`
### `AbstractLevelDOWN#_get(key, options, callback)`
### `AbstractLevelDOWN#_put(key, value, options, callback)`
### `AbstractLevelDOWN#_del(key, options, callback)`
### `AbstractLevelDOWN#_batch(array, options, callback)`
If `batch()` is called without arguments or with only an options object then it should return a `Batch` object with chainable methods. Otherwise it will invoke a classic batch operation.
### AbstractLevelDOWN#_chainedBatch()
### `AbstractLevelDOWN#_chainedBatch()`
By default a `batch()` operation without arguments returns a blank `AbstractChainedBatch` object. The prototype is available on the main exports for you to extend. If you want to implement chainable batch operations then you should extend the `AbstractChaindBatch` and return your object in the `_chainedBatch()` method.
### AbstractLevelDOWN#_serializeKey(key)
### AbstractLevelDOWN#_serializeValue(value)
### AbstractLevelDOWN#_iterator(options)
### `AbstractLevelDOWN#_serializeKey(key)`
### `AbstractLevelDOWN#_serializeValue(value)`
### `AbstractLevelDOWN#_iterator(options)`

@@ -135,25 +139,19 @@ By default an `iterator()` operation returns a blank `AbstractIterator` object. The prototype is available on the main exports for you to extend. If you want to implement iterator operations then you should extend the `AbstractIterator` and return your object in the `_iterator(options)` method.

### AbstractIterator(db)
### `AbstractIterator(db)`
Provided with the current instance of `AbstractLevelDOWN` by default.
### AbstractIterator#_next(callback)
### AbstractIterator#_end(callback)
### `AbstractIterator#_next(callback)`
### `AbstractIterator#_end(callback)`
### AbstractChainedBatch
### `AbstractChainedBatch`
Provided with the current instance of `AbstractLevelDOWN` by default.
### AbstractChainedBatch#_put(key, value)
### AbstractChainedBatch#_del(key)
### AbstractChainedBatch#_clear()
### AbstractChainedBatch#_write(options, callback)
### AbstractChainedBatch#_serializeKey(key)
### AbstractChainedBatch#_serializeValue(value)
### `AbstractChainedBatch#_put(key, value)`
### `AbstractChainedBatch#_del(key)`
### `AbstractChainedBatch#_clear()`
### `AbstractChainedBatch#_write(options, callback)`
### `AbstractChainedBatch#_serializeKey(key)`
### `AbstractChainedBatch#_serializeValue(value)`
## TypeScript
[![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://nodejs.org/api/documentation.html#documentation_stability_index)
Ships with TypeScript definitions that enable automatic inference of options and key-value types on a typed `abstract-leveldown` implementation.
<a name="contributing"></a>

@@ -168,6 +166,12 @@ ## Contributing

## Big Thanks
Cross-browser Testing Platform and Open Source ♥ Provided by [Sauce Labs](https://saucelabs.com).
[![Sauce Labs logo](./sauce-labs.svg)](https://saucelabs.com)
<a name="license"></a>
## License &amp; Copyright
## License
Copyright &copy; 2013-2017 `abstract-leveldown` [contributors](https://github.com/level/community#contributors).
Copyright &copy; 2013-2018 `abstract-leveldown` [contributors](https://github.com/level/community#contributors).

@@ -174,0 +178,0 @@ `abstract-leveldown` is licensed under the MIT license. All rights not explicitly granted in the MIT license are reserved. See the included `LICENSE.md` file for more details.

@@ -5,2 +5,3 @@ 'use strict'

var sinon = require('sinon')
var inherits = require('util').inherits
var testCommon = require('./testCommon')

@@ -50,2 +51,16 @@ var AbstractLevelDOWN = require('./').AbstractLevelDOWN

function implement (ctor, methods) {
function Test () {
ctor.apply(this, arguments)
}
inherits(Test, ctor)
for (var k in methods) {
Test.prototype[k] = methods[k]
}
return Test
}
/**

@@ -56,3 +71,3 @@ * Extensibility

test('test core extensibility', function (t) {
class Test extends AbstractLevelDOWN {}
var Test = implement(AbstractLevelDOWN)
var test = new Test('foobar')

@@ -64,4 +79,3 @@ t.equal(test.location, 'foobar', 'location set on instance')

test('test key/value serialization', function (t) {
class Test extends AbstractLevelDOWN {}
var Test = implement(AbstractLevelDOWN)
var buffer = Buffer.alloc(0)

@@ -94,8 +108,5 @@ var test = new Test('foobar')

var expectedOptions = { createIfMissing: true, errorIfExists: false }
var test
var Test = implement(AbstractLevelDOWN, { _open: spy })
var test = new Test('foobar')
class Test extends AbstractLevelDOWN {}
Test.prototype._open = spy
test = new Test('foobar')
test.open(expectedCb)

@@ -122,8 +133,5 @@

var expectedCb = function () {}
var test
var Test = implement(AbstractLevelDOWN, { _close: spy })
var test = new Test('foobar')
class Test extends AbstractLevelDOWN {}
Test.prototype._close = spy
test = new Test('foobar')
test.close(expectedCb)

@@ -142,8 +150,5 @@

var expectedKey = 'a key'
var test
var Test = implement(AbstractLevelDOWN, { _get: spy })
var test = new Test('foobar')
class Test extends AbstractLevelDOWN {}
Test.prototype._get = spy
test = new Test('foobar')
test.get(expectedKey, expectedCb)

@@ -176,8 +181,5 @@

var expectedKey = 'a key'
var test
var Test = implement(AbstractLevelDOWN, { _del: spy })
var test = new Test('foobar')
class Test extends AbstractLevelDOWN {}
Test.prototype._del = spy
test = new Test('foobar')
test.del(expectedKey, expectedCb)

@@ -209,8 +211,5 @@

var expectedValue = 'a value'
var test
var Test = implement(AbstractLevelDOWN, { _put: spy })
var test = new Test('foobar')
class Test extends AbstractLevelDOWN {}
Test.prototype._put = spy
test = new Test('foobar')
test.put(expectedKey, expectedValue, expectedCb)

@@ -242,3 +241,2 @@

var expectedOptions = { options: 1 }
/** @type {Array<{ type: 'put', key, value } | { type: 'del', key }>} */
var expectedArray = [

@@ -248,9 +246,5 @@ { type: 'put', key: '1', value: '1' },

]
var test
var Test = implement(AbstractLevelDOWN, { _batch: spy })
var test = new Test('foobar')
class Test extends AbstractLevelDOWN {}
Test.prototype._batch = spy
test = new Test('foobar')
test.batch(expectedArray, expectedCb)

@@ -289,9 +283,5 @@

var expectedOptions = { options: 1 }
var test
var Test = implement(AbstractLevelDOWN, { _batch: spy })
var test = new Test('foobar')
class Test extends AbstractLevelDOWN {}
Test.prototype._batch = spy
test = new Test('foobar')
test.batch().put('foo', 'bar').del('bang').write(expectedCb)

@@ -324,9 +314,5 @@

var spy = sinon.spy()
var test
var Test = implement(AbstractLevelDOWN, { _chainedBatch: spy })
var test = new Test('foobar')
class Test extends AbstractLevelDOWN {}
Test.prototype._chainedBatch = spy
test = new Test('foobar')
test.batch()

@@ -346,4 +332,3 @@

test('test AbstractChainedBatch extensibility', function (t) {
class Test extends AbstractChainedBatch {}
var Test = implement(AbstractChainedBatch)
var test = new Test('foobar')

@@ -357,9 +342,5 @@ t.equal(test._db, 'foobar', 'db set on instance')

var spycb = sinon.spy()
var test
var Test = implement(AbstractChainedBatch, { _write: spy })
var test = new Test('foobar')
class Test extends AbstractChainedBatch {}
Test.prototype._write = spy
test = new Test('foobar')
test.write(spycb)

@@ -382,11 +363,6 @@

var expectedValue = 'value'
var returnValue
var test
var Test = implement(AbstractChainedBatch, { _put: spy })
var test = new Test(factory('foobar'))
var returnValue = test.put(expectedKey, expectedValue)
class Test extends AbstractChainedBatch {}
Test.prototype._put = spy
test = new Test(factory('foobar'))
returnValue = test.put(expectedKey, expectedValue)
t.equal(spy.callCount, 1, 'got _put call')

@@ -404,10 +380,6 @@ t.equal(spy.getCall(0).thisValue, test, '`this` on _put() was correct')

var expectedKey = 'key'
var returnValue
var test
var Test = implement(AbstractChainedBatch, { _del: spy })
var test = new Test(factory('foobar'))
var returnValue = test.del(expectedKey)
class Test extends AbstractChainedBatch {}
Test.prototype._del = spy
test = new Test(factory('foobar'))
returnValue = test.del(expectedKey)
t.equal(spy.callCount, 1, 'got _del call')

@@ -423,10 +395,6 @@ t.equal(spy.getCall(0).thisValue, test, '`this` on _del() was correct')

var spy = sinon.spy()
var returnValue
var test
var Test = implement(AbstractChainedBatch, { _clear: spy })
var test = new Test(factory('foobar'))
var returnValue = test.clear()
class Test extends AbstractChainedBatch {}
Test.prototype._clear = spy
test = new Test(factory('foobar'))
returnValue = test.clear()
t.equal(spy.callCount, 1, 'got _clear call')

@@ -450,8 +418,5 @@ t.equal(spy.getCall(0).thisValue, test, '`this` on _clear() was correct')

}
var test
var Test = implement(AbstractLevelDOWN, { _iterator: spy })
var test = new Test('foobar')
class Test extends AbstractLevelDOWN {}
Test.prototype._iterator = spy
test = new Test('foobar')
test.iterator({ options: 1 })

@@ -467,3 +432,3 @@

test('test AbstractIterator extensibility', function (t) {
class Test extends AbstractIterator {}
var Test = implement(AbstractIterator)
var test = new Test('foobar')

@@ -477,8 +442,5 @@ t.equal(test.db, 'foobar', 'db set on instance')

var spycb = sinon.spy()
var test
var Test = implement(AbstractIterator, { _next: spy })
var test = new Test('foobar')
class Test extends AbstractIterator {}
Test.prototype._next = spy
test = new Test('foobar')
test.next(spycb)

@@ -500,8 +462,5 @@

var expectedCb = function () {}
var test
var Test = implement(AbstractIterator, { _end: spy })
var test = new Test('foobar')
class Test extends AbstractIterator {}
Test.prototype._end = spy
test = new Test('foobar')
test.end(expectedCb)

@@ -520,19 +479,16 @@

var spy = sinon.spy()
var test
class Test extends AbstractLevelDOWN {
_serializeKey (key) {
var Test = implement(AbstractLevelDOWN, {
_put: spy,
_serializeKey: function (key) {
t.equal(key, 'no')
return 'foo'
}
},
_serializeValue (value) {
_serializeValue: function (value) {
t.equal(value, 'nope')
return 'bar'
}
}
})
Test.prototype._put = spy
test = new Test('foobar')
var test = new Test('foobar')
test.put('no', 'nope', function () {})

@@ -549,18 +505,14 @@

var spy = sinon.spy()
var test
class Test extends AbstractLevelDOWN {
_serializeKey (key) {
var Test = implement(AbstractLevelDOWN, {
_del: spy,
_serializeKey: function (key) {
t.equal(key, 'no')
return 'foo'
}
_serializeValue (value) {
},
_serializeValue: function (value) {
t.fail('should not be called')
}
}
})
Test.prototype._del = spy
test = new Test('foobar')
var test = new Test('foobar')
test.del('no', function () {})

@@ -578,19 +530,15 @@

var spy = sinon.spy()
var test
class Test extends AbstractLevelDOWN {
_serializeKey (key) {
var Test = implement(AbstractLevelDOWN, {
_batch: spy,
_serializeKey: function (key) {
t.equal(key, 'no')
return 'foo'
}
_serializeValue (value) {
},
_serializeValue: function (value) {
t.equal(value, 'nope')
return 'bar'
}
}
})
Test.prototype._batch = spy
test = new Test('foobar')
var test = new Test('foobar')
test.batch([ { type: 'put', key: 'no', value: 'nope' } ], function () {})

@@ -607,19 +555,15 @@

var spy = sinon.spy()
var test
class Test extends AbstractLevelDOWN {
_serializeKey (key) {
var Test = implement(AbstractLevelDOWN, {
_batch: spy,
_serializeKey: function (key) {
t.equal(key, 'no')
return 'foo'
}
_serializeValue (value) {
},
_serializeValue: function (value) {
t.equal(value, 'nope')
return 'bar'
}
}
})
Test.prototype._batch = spy
test = new Test('foobar')
var test = new Test('foobar')
test.batch().put('no', 'nope').write(function () {})

@@ -636,18 +580,14 @@

var spy = sinon.spy()
var test
class Test extends AbstractLevelDOWN {
_serializeKey (key) {
var Test = implement(AbstractLevelDOWN, {
_batch: spy,
_serializeKey: function (key) {
t.equal(key, 'no')
return 'foo'
}
_serializeValue (value) {
},
_serializeValue: function (value) {
t.fail('should not be called')
}
}
})
Test.prototype._batch = spy
test = new Test('foobar')
var test = new Test('foobar')
test.batch([ { type: 'del', key: 'no' } ], function () {})

@@ -663,18 +603,14 @@

var spy = sinon.spy()
var test
class Test extends AbstractLevelDOWN {
_serializeKey (key) {
var Test = implement(AbstractLevelDOWN, {
_batch: spy,
_serializeKey: function (key) {
t.equal(key, 'no')
return 'foo'
}
_serializeValue (value) {
},
_serializeValue: function (value) {
t.fail('should not be called')
}
}
})
Test.prototype._batch = spy
test = new Test('foobar')
var test = new Test('foobar')
test.batch().del('no').write(function () {})

@@ -690,22 +626,17 @@

var spy = sinon.spy()
var test
class Test extends AbstractLevelDOWN {
_serializeKey (key) {
var Test = implement(AbstractLevelDOWN, {
_batch: spy,
_serializeKey: function (key) {
t.equal(key, 'no')
return 'foo'
}
_serializeValue (value) {
},
_serializeValue: function (value) {
t.equal(value, 'nope')
return 'bar'
}
}
})
Test.prototype._batch = spy
var test = new Test('foobar')
var op = { type: 'put', key: 'no', value: 'nope' }
test = new Test('foobar')
/** @type { { type: 'put', key, value } } */
var op = { type: 'put', key: 'no', value: 'nope' }
test.batch([op], function () {})

@@ -723,7 +654,5 @@

t.test('empty prototype', function (t) {
var test
var Test = implement(AbstractLevelDOWN)
var test = new Test('foobar')
class Test extends AbstractLevelDOWN {}
test = new Test('foobar')
t.equal(test.status, 'new')

@@ -744,11 +673,10 @@

t.test('open error', function (t) {
var test
class Test extends AbstractLevelDOWN {
_open (options, cb) {
var Test = implement(AbstractLevelDOWN, {
_open: function (options, cb) {
cb(new Error())
}
}
})
test = new Test('foobar')
var test = new Test('foobar')
test.open(function (err) {

@@ -762,11 +690,9 @@ t.ok(err)

t.test('close error', function (t) {
var test
class Test extends AbstractLevelDOWN {
_close (cb) {
var Test = implement(AbstractLevelDOWN, {
_close: function (cb) {
cb(new Error())
}
}
})
test = new Test('foobar')
var test = new Test('foobar')
test.open(function () {

@@ -782,11 +708,9 @@ test.close(function (err) {

t.test('open', function (t) {
var test
class Test extends AbstractLevelDOWN {
_open (options, cb) {
var Test = implement(AbstractLevelDOWN, {
_open: function (options, cb) {
process.nextTick(cb)
}
}
})
test = new Test('foobar')
var test = new Test('foobar')
test.open(function (err) {

@@ -801,11 +725,9 @@ t.error(err)

t.test('close', function (t) {
var test
class Test extends AbstractLevelDOWN {
_close (cb) {
var Test = implement(AbstractLevelDOWN, {
_close: function (cb) {
process.nextTick(cb)
}
}
})
test = new Test('foobar')
var test = new Test('foobar')
test.open(function (err) {

@@ -824,7 +746,7 @@ t.error(err)

test('_setupIteratorOptions', function (t) {
const keys = 'start end gt gte lt lte'.split(' ')
const db = new AbstractLevelDOWN('foolocation')
var keys = 'start end gt gte lt lte'.split(' ')
var db = new AbstractLevelDOWN('foolocation')
function setupOptions (constrFn) {
const options = {}
var options = {}
keys.forEach(function (key) {

@@ -875,3 +797,3 @@ options[key] = constrFn()

t.test('deletes empty buffers', function (t) {
const options = setupOptions(function () { return Buffer.from('') })
var options = setupOptions(function () { return Buffer.from('') })
keys.forEach(function (key) {

@@ -885,3 +807,3 @@ t.is(Buffer.isBuffer(options[key]), true, 'should be buffer')

t.test('deletes empty strings', function (t) {
const options = setupOptions(function () { return '' })
var options = setupOptions(function () { return '' })
keys.forEach(function (key) {

@@ -895,3 +817,3 @@ t.is(typeof options[key], 'string', 'should be string')

t.test('deletes null options', function (t) {
const options = setupOptions(function () { return null })
var options = setupOptions(function () { return null })
keys.forEach(function (key) {

@@ -898,0 +820,0 @@ t.same(options[key], null, 'should be null')

@@ -5,2 +5,6 @@ # Upgrade Guide

## v5
Dropped support for node 4. No other breaking changes.
## v4

@@ -7,0 +11,0 @@

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc