fix: Resolve TypeScript errors
Signed-off-by: Hermes Agent <hermes@nosuchhost>
This commit is contained in:
320
client/node_modules/abstract-leveldown/abstract-leveldown.js
generated
vendored
Normal file
320
client/node_modules/abstract-leveldown/abstract-leveldown.js
generated
vendored
Normal file
@@ -0,0 +1,320 @@
|
||||
var xtend = require('xtend')
|
||||
var supports = require('level-supports')
|
||||
var Buffer = require('buffer').Buffer
|
||||
var AbstractIterator = require('./abstract-iterator')
|
||||
var AbstractChainedBatch = require('./abstract-chained-batch')
|
||||
var nextTick = require('./next-tick')
|
||||
var hasOwnProperty = Object.prototype.hasOwnProperty
|
||||
var rangeOptions = 'start end gt gte lt lte'.split(' ')
|
||||
|
||||
function AbstractLevelDOWN (manifest) {
|
||||
this.status = 'new'
|
||||
|
||||
// TODO (next major): make this mandatory
|
||||
this.supports = supports(manifest, {
|
||||
status: true
|
||||
})
|
||||
}
|
||||
|
||||
AbstractLevelDOWN.prototype.open = function (options, callback) {
|
||||
var self = this
|
||||
var oldStatus = this.status
|
||||
|
||||
if (typeof options === 'function') callback = options
|
||||
|
||||
if (typeof callback !== 'function') {
|
||||
throw new Error('open() requires a callback argument')
|
||||
}
|
||||
|
||||
if (typeof options !== 'object' || options === null) options = {}
|
||||
|
||||
options.createIfMissing = options.createIfMissing !== false
|
||||
options.errorIfExists = !!options.errorIfExists
|
||||
|
||||
this.status = 'opening'
|
||||
this._open(options, function (err) {
|
||||
if (err) {
|
||||
self.status = oldStatus
|
||||
return callback(err)
|
||||
}
|
||||
self.status = 'open'
|
||||
callback()
|
||||
})
|
||||
}
|
||||
|
||||
AbstractLevelDOWN.prototype._open = function (options, callback) {
|
||||
nextTick(callback)
|
||||
}
|
||||
|
||||
AbstractLevelDOWN.prototype.close = function (callback) {
|
||||
var self = this
|
||||
var oldStatus = this.status
|
||||
|
||||
if (typeof callback !== 'function') {
|
||||
throw new Error('close() requires a callback argument')
|
||||
}
|
||||
|
||||
this.status = 'closing'
|
||||
this._close(function (err) {
|
||||
if (err) {
|
||||
self.status = oldStatus
|
||||
return callback(err)
|
||||
}
|
||||
self.status = 'closed'
|
||||
callback()
|
||||
})
|
||||
}
|
||||
|
||||
AbstractLevelDOWN.prototype._close = function (callback) {
|
||||
nextTick(callback)
|
||||
}
|
||||
|
||||
AbstractLevelDOWN.prototype.get = function (key, options, callback) {
|
||||
if (typeof options === 'function') callback = options
|
||||
|
||||
if (typeof callback !== 'function') {
|
||||
throw new Error('get() requires a callback argument')
|
||||
}
|
||||
|
||||
var err = this._checkKey(key)
|
||||
if (err) return nextTick(callback, err)
|
||||
|
||||
key = this._serializeKey(key)
|
||||
|
||||
if (typeof options !== 'object' || options === null) options = {}
|
||||
|
||||
options.asBuffer = options.asBuffer !== false
|
||||
|
||||
this._get(key, options, callback)
|
||||
}
|
||||
|
||||
AbstractLevelDOWN.prototype._get = function (key, options, callback) {
|
||||
nextTick(function () { callback(new Error('NotFound')) })
|
||||
}
|
||||
|
||||
AbstractLevelDOWN.prototype.put = function (key, value, options, callback) {
|
||||
if (typeof options === 'function') callback = options
|
||||
|
||||
if (typeof callback !== 'function') {
|
||||
throw new Error('put() requires a callback argument')
|
||||
}
|
||||
|
||||
var err = this._checkKey(key) || this._checkValue(value)
|
||||
if (err) return nextTick(callback, err)
|
||||
|
||||
key = this._serializeKey(key)
|
||||
value = this._serializeValue(value)
|
||||
|
||||
if (typeof options !== 'object' || options === null) options = {}
|
||||
|
||||
this._put(key, value, options, callback)
|
||||
}
|
||||
|
||||
AbstractLevelDOWN.prototype._put = function (key, value, options, callback) {
|
||||
nextTick(callback)
|
||||
}
|
||||
|
||||
AbstractLevelDOWN.prototype.del = function (key, options, callback) {
|
||||
if (typeof options === 'function') callback = options
|
||||
|
||||
if (typeof callback !== 'function') {
|
||||
throw new Error('del() requires a callback argument')
|
||||
}
|
||||
|
||||
var err = this._checkKey(key)
|
||||
if (err) return nextTick(callback, err)
|
||||
|
||||
key = this._serializeKey(key)
|
||||
|
||||
if (typeof options !== 'object' || options === null) options = {}
|
||||
|
||||
this._del(key, options, callback)
|
||||
}
|
||||
|
||||
AbstractLevelDOWN.prototype._del = function (key, options, callback) {
|
||||
nextTick(callback)
|
||||
}
|
||||
|
||||
AbstractLevelDOWN.prototype.batch = function (array, options, callback) {
|
||||
if (!arguments.length) return this._chainedBatch()
|
||||
|
||||
if (typeof options === 'function') callback = options
|
||||
|
||||
if (typeof array === 'function') callback = array
|
||||
|
||||
if (typeof callback !== 'function') {
|
||||
throw new Error('batch(array) requires a callback argument')
|
||||
}
|
||||
|
||||
if (!Array.isArray(array)) {
|
||||
return nextTick(callback, new Error('batch(array) requires an array argument'))
|
||||
}
|
||||
|
||||
if (array.length === 0) {
|
||||
return nextTick(callback)
|
||||
}
|
||||
|
||||
if (typeof options !== 'object' || options === null) options = {}
|
||||
|
||||
var serialized = new Array(array.length)
|
||||
|
||||
for (var i = 0; i < array.length; i++) {
|
||||
if (typeof array[i] !== 'object' || array[i] === null) {
|
||||
return nextTick(callback, new Error('batch(array) element must be an object and not `null`'))
|
||||
}
|
||||
|
||||
var e = xtend(array[i])
|
||||
|
||||
if (e.type !== 'put' && e.type !== 'del') {
|
||||
return nextTick(callback, new Error("`type` must be 'put' or 'del'"))
|
||||
}
|
||||
|
||||
var err = this._checkKey(e.key)
|
||||
if (err) return nextTick(callback, err)
|
||||
|
||||
e.key = this._serializeKey(e.key)
|
||||
|
||||
if (e.type === 'put') {
|
||||
var valueErr = this._checkValue(e.value)
|
||||
if (valueErr) return nextTick(callback, valueErr)
|
||||
|
||||
e.value = this._serializeValue(e.value)
|
||||
}
|
||||
|
||||
serialized[i] = e
|
||||
}
|
||||
|
||||
this._batch(serialized, options, callback)
|
||||
}
|
||||
|
||||
AbstractLevelDOWN.prototype._batch = function (array, options, callback) {
|
||||
nextTick(callback)
|
||||
}
|
||||
|
||||
AbstractLevelDOWN.prototype.clear = function (options, callback) {
|
||||
if (typeof options === 'function') {
|
||||
callback = options
|
||||
} else if (typeof callback !== 'function') {
|
||||
throw new Error('clear() requires a callback argument')
|
||||
}
|
||||
|
||||
options = cleanRangeOptions(this, options)
|
||||
options.reverse = !!options.reverse
|
||||
options.limit = 'limit' in options ? options.limit : -1
|
||||
|
||||
this._clear(options, callback)
|
||||
}
|
||||
|
||||
AbstractLevelDOWN.prototype._clear = function (options, callback) {
|
||||
// Avoid setupIteratorOptions, would serialize range options a second time.
|
||||
options.keys = true
|
||||
options.values = false
|
||||
options.keyAsBuffer = true
|
||||
options.valueAsBuffer = true
|
||||
|
||||
var iterator = this._iterator(options)
|
||||
var emptyOptions = {}
|
||||
var self = this
|
||||
|
||||
var next = function (err) {
|
||||
if (err) {
|
||||
return iterator.end(function () {
|
||||
callback(err)
|
||||
})
|
||||
}
|
||||
|
||||
iterator.next(function (err, key) {
|
||||
if (err) return next(err)
|
||||
if (key === undefined) return iterator.end(callback)
|
||||
|
||||
// This could be optimized by using a batch, but the default _clear
|
||||
// is not meant to be fast. Implementations have more room to optimize
|
||||
// if they override _clear. Note: using _del bypasses key serialization.
|
||||
self._del(key, emptyOptions, next)
|
||||
})
|
||||
}
|
||||
|
||||
next()
|
||||
}
|
||||
|
||||
AbstractLevelDOWN.prototype._setupIteratorOptions = function (options) {
|
||||
options = cleanRangeOptions(this, options)
|
||||
|
||||
options.reverse = !!options.reverse
|
||||
options.keys = options.keys !== false
|
||||
options.values = options.values !== false
|
||||
options.limit = 'limit' in options ? options.limit : -1
|
||||
options.keyAsBuffer = options.keyAsBuffer !== false
|
||||
options.valueAsBuffer = options.valueAsBuffer !== false
|
||||
|
||||
return options
|
||||
}
|
||||
|
||||
function cleanRangeOptions (db, options) {
|
||||
var result = {}
|
||||
|
||||
for (var k in options) {
|
||||
if (!hasOwnProperty.call(options, k)) continue
|
||||
|
||||
var opt = options[k]
|
||||
|
||||
if (isRangeOption(k)) {
|
||||
// Note that we don't reject nullish and empty options here. While
|
||||
// those types are invalid as keys, they are valid as range options.
|
||||
opt = db._serializeKey(opt)
|
||||
}
|
||||
|
||||
result[k] = opt
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
function isRangeOption (k) {
|
||||
return rangeOptions.indexOf(k) !== -1
|
||||
}
|
||||
|
||||
AbstractLevelDOWN.prototype.iterator = function (options) {
|
||||
if (typeof options !== 'object' || options === null) options = {}
|
||||
options = this._setupIteratorOptions(options)
|
||||
return this._iterator(options)
|
||||
}
|
||||
|
||||
AbstractLevelDOWN.prototype._iterator = function (options) {
|
||||
return new AbstractIterator(this)
|
||||
}
|
||||
|
||||
AbstractLevelDOWN.prototype._chainedBatch = function () {
|
||||
return new AbstractChainedBatch(this)
|
||||
}
|
||||
|
||||
AbstractLevelDOWN.prototype._serializeKey = function (key) {
|
||||
return key
|
||||
}
|
||||
|
||||
AbstractLevelDOWN.prototype._serializeValue = function (value) {
|
||||
return value
|
||||
}
|
||||
|
||||
AbstractLevelDOWN.prototype._checkKey = function (key) {
|
||||
if (key === null || key === undefined) {
|
||||
return new Error('key cannot be `null` or `undefined`')
|
||||
} else if (Buffer.isBuffer(key) && key.length === 0) {
|
||||
return new Error('key cannot be an empty Buffer')
|
||||
} else if (key === '') {
|
||||
return new Error('key cannot be an empty String')
|
||||
} else if (Array.isArray(key) && key.length === 0) {
|
||||
return new Error('key cannot be an empty Array')
|
||||
}
|
||||
}
|
||||
|
||||
AbstractLevelDOWN.prototype._checkValue = function (value) {
|
||||
if (value === null || value === undefined) {
|
||||
return new Error('value cannot be `null` or `undefined`')
|
||||
}
|
||||
}
|
||||
|
||||
// Expose browser-compatible nextTick for dependents
|
||||
AbstractLevelDOWN.prototype._nextTick = nextTick
|
||||
|
||||
module.exports = AbstractLevelDOWN
|
||||
Reference in New Issue
Block a user