forked from public/fvtt-cthulhu-eternal
39 lines
1.2 KiB
JavaScript
39 lines
1.2 KiB
JavaScript
'use strict'
|
|
|
|
const ModuleError = require('module-error')
|
|
const hasOwnProperty = Object.prototype.hasOwnProperty
|
|
const rangeOptions = new Set(['lt', 'lte', 'gt', 'gte'])
|
|
|
|
module.exports = function (options, keyEncoding) {
|
|
const result = {}
|
|
|
|
for (const k in options) {
|
|
if (!hasOwnProperty.call(options, k)) continue
|
|
if (k === 'keyEncoding' || k === 'valueEncoding') continue
|
|
|
|
if (k === 'start' || k === 'end') {
|
|
throw new ModuleError(`The legacy range option '${k}' has been removed`, {
|
|
code: 'LEVEL_LEGACY'
|
|
})
|
|
} else if (k === 'encoding') {
|
|
// To help migrating to abstract-level
|
|
throw new ModuleError("The levelup-style 'encoding' alias has been removed, use 'valueEncoding' instead", {
|
|
code: 'LEVEL_LEGACY'
|
|
})
|
|
}
|
|
|
|
if (rangeOptions.has(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.
|
|
result[k] = keyEncoding.encode(options[k])
|
|
} else {
|
|
result[k] = options[k]
|
|
}
|
|
}
|
|
|
|
result.reverse = !!result.reverse
|
|
result.limit = Number.isInteger(result.limit) && result.limit >= 0 ? result.limit : -1
|
|
|
|
return result
|
|
}
|