1 |
- {"version":3,"file":"index.cjs","sources":["../native.js","../util/when.js","../write.js","../util/RangeIterable.js","../keys.js","../read.js","../caching.js","../open.js","../level.js","../index.js","../node-index.js"],"sourcesContent":["import { dirname, join, default as pathModule } from 'path';\nimport { fileURLToPath } from 'url';\nimport loadNAPI from 'node-gyp-build-optional-packages';\nexport let Env,\n\tTxn,\n\tDbi,\n\tCompression,\n\tCursor,\n\tgetAddress,\n\tgetBufferAddress,\n\tcreateBufferForAddress,\n\tclearKeptObjects,\n\tglobalBuffer,\n\tsetGlobalBuffer,\n\tarch,\n\tfs,\n\tos,\n\tonExit,\n\ttmpdir,\n\tlmdbError,\n\tpath,\n\tEventEmitter,\n\torderedBinary,\n\tMsgpackrEncoder,\n\tWeakLRUCache,\n\tsetEnvMap,\n\tgetEnvMap,\n\tgetByBinary,\n\tdetachBuffer,\n\tstartRead,\n\tsetReadCallback,\n\twrite,\n\tposition,\n\titerate,\n\tprefetch,\n\tresetTxn,\n\tgetCurrentValue,\n\tgetCurrentShared,\n\tgetStringByBinary,\n\tgetSharedByBinary,\n\tgetSharedBuffer,\n\tcompress,\n\tdirectWrite,\n\tgetUserSharedBuffer,\n\tnotifyUserCallbacks,\n\tattemptLock,\n\tunlock,\n\tversion;\npath = pathModule;\nlet dirName = dirname(fileURLToPath(import.meta.url)).replace(/dist$/, '');\nexport let nativeAddon = loadNAPI(dirName);\n\nif (process.isBun && false) {\n\tconst { linkSymbols, FFIType } = require('bun:ffi');\n\tlet lmdbLib = linkSymbols({\n\t\tgetByBinary: {\n\t\t\targs: [FFIType.f64, FFIType.u32],\n\t\t\treturns: FFIType.u32,\n\t\t\tptr: nativeAddon.getByBinaryPtr,\n\t\t},\n\t\titerate: {\n\t\t\targs: [FFIType.f64],\n\t\t\treturns: FFIType.i32,\n\t\t\tptr: nativeAddon.iteratePtr,\n\t\t},\n\t\tposition: {\n\t\t\targs: [FFIType.f64, FFIType.u32, FFIType.u32, FFIType.u32, FFIType.f64],\n\t\t\treturns: FFIType.i32,\n\t\t\tptr: nativeAddon.positionPtr,\n\t\t},\n\t\twrite: {\n\t\t\targs: [FFIType.f64, FFIType.f64],\n\t\t\treturns: FFIType.i32,\n\t\t\tptr: nativeAddon.writePtr,\n\t\t},\n\t\tresetTxn: {\n\t\t\targs: [FFIType.f64],\n\t\t\treturns: FFIType.void,\n\t\t\tptr: nativeAddon.resetTxnPtr,\n\t\t},\n\t});\n\tfor (let key in lmdbLib.symbols) {\n\t\tnativeAddon[key] = lmdbLib.symbols[key].native;\n\t}\n}\nsetNativeFunctions(nativeAddon);\n\nexport function setNativeFunctions(externals) {\n\tEnv = externals.Env;\n\tTxn = externals.Txn;\n\tDbi = externals.Dbi;\n\tCompression = externals.Compression;\n\tgetAddress = externals.getAddress;\n\tgetBufferAddress = externals.getBufferAddress;\n\tcreateBufferForAddress = externals.createBufferForAddress;\n\tclearKeptObjects = externals.clearKeptObjects || function () {};\n\tgetByBinary = externals.getByBinary;\n\tdetachBuffer = externals.detachBuffer;\n\tstartRead = externals.startRead;\n\tsetReadCallback = externals.setReadCallback;\n\tsetGlobalBuffer = externals.setGlobalBuffer;\n\tglobalBuffer = externals.globalBuffer;\n\tgetSharedBuffer = externals.getSharedBuffer;\n\tprefetch = externals.prefetch;\n\titerate = externals.iterate;\n\tposition = externals.position;\n\tresetTxn = externals.resetTxn;\n\tdirectWrite = externals.directWrite;\n\tgetUserSharedBuffer = externals.getUserSharedBuffer;\n\tnotifyUserCallbacks = externals.notifyUserCallbacks;\n\tattemptLock = externals.attemptLock;\n\tunlock = externals.unlock;\n\tgetCurrentValue = externals.getCurrentValue;\n\tgetCurrentShared = externals.getCurrentShared;\n\tgetStringByBinary = externals.getStringByBinary;\n\tgetSharedByBinary = externals.getSharedByBinary;\n\twrite = externals.write;\n\tcompress = externals.compress;\n\tCursor = externals.Cursor;\n\tlmdbError = externals.lmdbError;\n\tversion = externals.version;\n\tif (externals.tmpdir) tmpdir = externals.tmpdir;\n}\nexport function setExternals(externals) {\n\tarch = externals.arch;\n\tfs = externals.fs;\n\tEventEmitter = externals.EventEmitter;\n\torderedBinary = externals.orderedBinary;\n\tMsgpackrEncoder = externals.MsgpackrEncoder;\n\tWeakLRUCache = externals.WeakLRUCache;\n\ttmpdir = externals.tmpdir;\n\tos = externals.os;\n\tonExit = externals.onExit;\n}\n","export function when(promise, callback, errback) {\n if (promise && promise.then) {\n return errback ?\n promise.then(callback, errback) :\n promise.then(callback);\n }\n return callback(promise);\n}\n","import {\n\tgetAddress,\n\tgetBufferAddress,\n\twrite,\n\tcompress,\n\tlmdbError,\n} from './native.js';\nimport { when } from './util/when.js';\nvar backpressureArray;\n\nconst WAITING_OPERATION = 0x2000000;\nconst BACKPRESSURE_THRESHOLD = 300000;\nconst TXN_DELIMITER = 0x8000000;\nconst TXN_COMMITTED = 0x10000000;\nconst TXN_FLUSHED = 0x20000000;\nconst TXN_FAILED = 0x40000000;\nexport const FAILED_CONDITION = 0x4000000;\nconst REUSE_BUFFER_MODE = 512;\nconst RESET_BUFFER_MODE = 1024;\nconst NO_RESOLVE = 16;\nconst HAS_TXN = 8;\nconst CONDITIONAL_VERSION_LESS_THAN = 0x800;\nconst CONDITIONAL_ALLOW_NOTFOUND = 0x800;\n\nconst SYNC_PROMISE_SUCCESS = Promise.resolve(true);\nconst SYNC_PROMISE_FAIL = Promise.resolve(false);\nSYNC_PROMISE_SUCCESS.isSync = true;\nSYNC_PROMISE_SUCCESS.result = true;\nSYNC_PROMISE_FAIL.isSync = true;\nSYNC_PROMISE_FAIL.result = false;\nconst PROMISE_SUCCESS = Promise.resolve(true);\nconst arch = process.arch;\nexport const ABORT = 4.452694326329068e-106; // random/unguessable numbers, which work across module/versions and native\nexport const IF_EXISTS = 3.542694326329068e-103;\nconst CALLBACK_THREW = {};\nconst LocalSharedArrayBuffer =\n\ttypeof Deno != 'undefined' || // Deno can't handle SharedArrayBuffer as an FFI\n\t// argument due to https://github.com/denoland/deno/issues/12678\n\ttypeof SharedArrayBuffer == 'undefined' // Sometimes electron doesn't have a SharedArrayBuffer\n\t\t? ArrayBuffer\n\t\t: SharedArrayBuffer;\nconst ByteArray =\n\ttypeof Buffer != 'undefined'\n\t\t? function (buffer) {\n\t\t\t\treturn Buffer.from(buffer);\n\t\t\t}\n\t\t: Uint8Array;\nconst queueTask =\n\ttypeof setImmediate != 'undefined' ? setImmediate : setTimeout; // TODO: Or queueMicrotask?\n//let debugLog = []\nconst WRITE_BUFFER_SIZE = 0x10000;\nvar log = [];\nexport function addWriteMethods(\n\tLMDBStore,\n\t{\n\t\tenv,\n\t\tfixedBuffer,\n\t\tresetReadTxn,\n\t\tuseWritemap,\n\t\tmaxKeySize,\n\t\teventTurnBatching,\n\t\ttxnStartThreshold,\n\t\tbatchStartThreshold,\n\t\toverlappingSync,\n\t\tcommitDelay,\n\t\tseparateFlushed,\n\t\tmaxFlushDelay,\n\t},\n) {\n\t// stands for write instructions\n\tvar dynamicBytes;\n\tfunction allocateInstructionBuffer(lastPosition) {\n\t\t// Must use a shared buffer on older node in order to use Atomics, and it is also more correct since we are\n\t\t// indeed accessing and modifying it from another thread (in C). However, Deno can't handle it for\n\t\t// FFI so aliased above\n\t\tlet buffer = new LocalSharedArrayBuffer(WRITE_BUFFER_SIZE);\n\t\tlet lastBytes = dynamicBytes;\n\t\tdynamicBytes = new ByteArray(buffer);\n\t\tlet uint32 = (dynamicBytes.uint32 = new Uint32Array(\n\t\t\tbuffer,\n\t\t\t0,\n\t\t\tWRITE_BUFFER_SIZE >> 2,\n\t\t));\n\t\tuint32[2] = 0;\n\t\tdynamicBytes.float64 = new Float64Array(buffer, 0, WRITE_BUFFER_SIZE >> 3);\n\t\tbuffer.address = getBufferAddress(dynamicBytes);\n\t\tuint32.address = buffer.address + uint32.byteOffset;\n\t\tdynamicBytes.position = 1; // we start at position 1 to save space for writing the txn id before the txn delimiter\n\t\tif (lastPosition) {\n\t\t\tlastBytes.float64[lastPosition + 1] =\n\t\t\t\tdynamicBytes.uint32.address + (dynamicBytes.position << 3);\n\t\t\tlastBytes.uint32[lastPosition << 1] = 3; // pointer instruction\n\t\t}\n\t\treturn dynamicBytes;\n\t}\n\tvar newBufferThreshold = (WRITE_BUFFER_SIZE - maxKeySize - 64) >> 3; // need to reserve more room if we do inline values\n\tvar outstandingWriteCount = 0;\n\tvar startAddress = 0;\n\tvar writeTxn = null;\n\tvar committed;\n\tvar abortedNonChildTransactionWarn;\n\tvar nextTxnCallbacks = [];\n\tvar commitPromise,\n\t\tflushPromise,\n\t\tflushResolvers = [],\n\t\tbatchFlushResolvers = [];\n\tcommitDelay = commitDelay || 0;\n\teventTurnBatching = eventTurnBatching === false ? false : true;\n\tvar enqueuedCommit;\n\tvar afterCommitCallbacks = [];\n\tvar beforeCommitCallbacks = [];\n\tvar enqueuedEventTurnBatch;\n\tvar batchDepth = 0;\n\tvar lastWritePromise;\n\tvar writeBatchStart,\n\t\toutstandingBatchCount,\n\t\tlastSyncTxnFlush,\n\t\tlastFlushTimeout,\n\t\tlastFlushCallback;\n\tvar hasUnresolvedTxns;\n\ttxnStartThreshold = txnStartThreshold || 5;\n\tbatchStartThreshold = batchStartThreshold || 1000;\n\tmaxFlushDelay = maxFlushDelay || 500;\n\n\tallocateInstructionBuffer();\n\tdynamicBytes.uint32[2] = TXN_DELIMITER | TXN_COMMITTED | TXN_FLUSHED;\n\tvar txnResolution,\n\t\tnextResolution = {\n\t\t\tuint32: dynamicBytes.uint32,\n\t\t\tflagPosition: 2,\n\t\t\tflag: 0,\n\t\t\tvalueBuffer: null,\n\t\t\tnext: null,\n\t\t\tmeta: null,\n\t\t};\n\tvar uncommittedResolution = {\n\t\tuint32: null,\n\t\tflagPosition: 2,\n\t\tflag: 0,\n\t\tvalueBuffer: null,\n\t\tnext: nextResolution,\n\t\tmeta: null,\n\t};\n\tvar unwrittenResolution = nextResolution;\n\tvar lastPromisedResolution = uncommittedResolution;\n\tvar lastQueuedResolution = uncommittedResolution;\n\tfunction writeInstructions(flags, store, key, value, version, ifVersion) {\n\t\tlet writeStatus;\n\t\tlet targetBytes, position, encoder;\n\t\tlet valueSize, valueBuffer, valueBufferStart;\n\t\tif (flags & 2) {\n\t\t\t// encode first in case we have to write a shared structure\n\t\t\tencoder = store.encoder;\n\t\t\tif (value && value['\\x10binary-data\\x02'])\n\t\t\t\tvalueBuffer = value['\\x10binary-data\\x02'];\n\t\t\telse if (encoder) {\n\t\t\t\tif (encoder.copyBuffers)\n\t\t\t\t\t// use this as indicator for support buffer reuse for now\n\t\t\t\t\tvalueBuffer = encoder.encode(\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tREUSE_BUFFER_MODE | (writeTxn ? RESET_BUFFER_MODE : 0),\n\t\t\t\t\t);\n\t\t\t\t// in addition, if we are writing sync, after using, we can immediately reset the encoder's position to reuse that space, which can improve performance\n\t\t\t\telse {\n\t\t\t\t\t// various other encoders, including JSON.stringify, that might serialize to a string\n\t\t\t\t\tvalueBuffer = encoder.encode(value);\n\t\t\t\t\tif (typeof valueBuffer == 'string')\n\t\t\t\t\t\tvalueBuffer = Buffer.from(valueBuffer); // TODO: Would be nice to write strings inline in the instructions\n\t\t\t\t}\n\t\t\t} else if (typeof value == 'string') {\n\t\t\t\tvalueBuffer = Buffer.from(value); // TODO: Would be nice to write strings inline in the instructions\n\t\t\t} else if (value instanceof Uint8Array) valueBuffer = value;\n\t\t\telse\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'Invalid value to put in database ' +\n\t\t\t\t\t\tvalue +\n\t\t\t\t\t\t' (' +\n\t\t\t\t\t\ttypeof value +\n\t\t\t\t\t\t'), consider using encoder',\n\t\t\t\t);\n\t\t\tvalueBufferStart = valueBuffer.start;\n\t\t\tif (valueBufferStart > -1)\n\t\t\t\t// if we have buffers with start/end position\n\t\t\t\tvalueSize = valueBuffer.end - valueBufferStart; // size\n\t\t\telse valueSize = valueBuffer.length;\n\t\t\tif (store.dupSort && valueSize > maxKeySize)\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'The value is larger than the maximum size (' +\n\t\t\t\t\t\tmaxKeySize +\n\t\t\t\t\t\t') for a value in a dupSort database',\n\t\t\t\t);\n\t\t} else valueSize = 0;\n\t\tif (writeTxn) {\n\t\t\ttargetBytes = fixedBuffer;\n\t\t\tposition = 0;\n\t\t} else {\n\t\t\tif (eventTurnBatching && !enqueuedEventTurnBatch && batchDepth == 0) {\n\t\t\t\tenqueuedEventTurnBatch = queueTask(() => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor (let i = 0, l = beforeCommitCallbacks.length; i < l; i++) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tbeforeCommitCallbacks[i]();\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tconsole.error('In beforecommit callback', error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error(error);\n\t\t\t\t\t}\n\t\t\t\t\tenqueuedEventTurnBatch = null;\n\t\t\t\t\tbatchDepth--;\n\t\t\t\t\tfinishBatch();\n\t\t\t\t\tif (writeBatchStart) writeBatchStart(); // TODO: When we support delay start of batch, optionally don't delay this\n\t\t\t\t});\n\t\t\t\tcommitPromise = null; // reset the commit promise, can't know if it is really a new transaction prior to finishWrite being called\n\t\t\t\tflushPromise = null;\n\t\t\t\twriteBatchStart = writeInstructions(1, store);\n\t\t\t\toutstandingBatchCount = 0;\n\t\t\t\tbatchDepth++;\n\t\t\t}\n\t\t\ttargetBytes = dynamicBytes;\n\t\t\tposition = targetBytes.position;\n\t\t}\n\t\tlet uint32 = targetBytes.uint32,\n\t\t\tfloat64 = targetBytes.float64;\n\t\tlet flagPosition = position << 1; // flagPosition is the 32-bit word starting position\n\n\t\t// don't increment position until we are sure we don't have any key writing errors\n\t\tif (!uint32) {\n\t\t\tthrow new Error('Internal buffers have been corrupted');\n\t\t}\n\t\tuint32[flagPosition + 1] = store.db.dbi;\n\t\tif (flags & 4) {\n\t\t\tlet keyStartPosition = (position << 3) + 12;\n\t\t\tlet endPosition;\n\t\t\ttry {\n\t\t\t\tendPosition = store.writeKey(key, targetBytes, keyStartPosition);\n\t\t\t\tif (!(keyStartPosition < endPosition) && (flags & 0xf) != 12)\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t'Invalid key or zero length key is not allowed in LMDB ' + key,\n\t\t\t\t\t);\n\t\t\t} catch (error) {\n\t\t\t\ttargetBytes.fill(0, keyStartPosition);\n\t\t\t\tif (error.name == 'RangeError')\n\t\t\t\t\terror = new Error(\n\t\t\t\t\t\t'Key size is larger than the maximum key size (' + maxKeySize + ')',\n\t\t\t\t\t);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tlet keySize = endPosition - keyStartPosition;\n\t\t\tif (keySize > maxKeySize) {\n\t\t\t\ttargetBytes.fill(0, keyStartPosition); // restore zeros\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'Key size is larger than the maximum key size (' + maxKeySize + ')',\n\t\t\t\t);\n\t\t\t}\n\t\t\tuint32[flagPosition + 2] = keySize;\n\t\t\tposition = (endPosition + 16) >> 3;\n\t\t\tif (flags & 2) {\n\t\t\t\tlet mustCompress;\n\t\t\t\tif (valueBufferStart > -1) {\n\t\t\t\t\t// if we have buffers with start/end position\n\t\t\t\t\t// record pointer to value buffer\n\t\t\t\t\tfloat64[position] =\n\t\t\t\t\t\t(valueBuffer.address ||\n\t\t\t\t\t\t\t(valueBuffer.address = getAddress(valueBuffer.buffer))) +\n\t\t\t\t\t\tvalueBufferStart;\n\t\t\t\t\tif (store.compression) {\n\t\t\t\t\t\tlet compressionFlagIndex =\n\t\t\t\t\t\t\tvalueBufferStart + (store.compression.startingOffset || 0);\n\t\t\t\t\t\t// this is the compression indicator, so we must compress\n\t\t\t\t\t\tmustCompress =\n\t\t\t\t\t\t\tcompressionFlagIndex < valueBuffer.end &&\n\t\t\t\t\t\t\tvalueBuffer[compressionFlagIndex] >= 250;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tlet valueArrayBuffer = valueBuffer.buffer;\n\t\t\t\t\t// record pointer to value buffer\n\t\t\t\t\tlet address =\n\t\t\t\t\t\t(valueArrayBuffer.address ||\n\t\t\t\t\t\t\t(valueBuffer.length === 0\n\t\t\t\t\t\t\t\t? 0 // externally allocated buffers of zero-length with the same non-null-pointer can crash node, #161\n\t\t\t\t\t\t\t\t: (valueArrayBuffer.address = getAddress(valueArrayBuffer)))) +\n\t\t\t\t\t\tvalueBuffer.byteOffset;\n\t\t\t\t\tif (address <= 0 && valueBuffer.length > 0)\n\t\t\t\t\t\tconsole.error('Supplied buffer had an invalid address', address);\n\t\t\t\t\tfloat64[position] = address;\n\t\t\t\t\tif (store.compression) {\n\t\t\t\t\t\tlet compressionFlagIndex = store.compression.startingOffset || 0;\n\t\t\t\t\t\t// this is the compression indicator, so we must compress\n\t\t\t\t\t\tmustCompress =\n\t\t\t\t\t\t\tcompressionFlagIndex < valueBuffer.length &&\n\t\t\t\t\t\t\tvalueBuffer[compressionFlagIndex] >= 250;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tuint32[(position++ << 1) - 1] = valueSize;\n\t\t\t\tif (\n\t\t\t\t\tstore.compression &&\n\t\t\t\t\t(valueSize >= store.compression.threshold || mustCompress)\n\t\t\t\t) {\n\t\t\t\t\tflags |= 0x100000;\n\t\t\t\t\tfloat64[position] = store.compression.address;\n\t\t\t\t\tif (!writeTxn)\n\t\t\t\t\t\tcompress(env.address, uint32.address + (position << 3), () => {\n\t\t\t\t\t\t\t// this is never actually called in NodeJS, just use to pin the buffer in memory until it is finished\n\t\t\t\t\t\t\t// and is a no-op in Deno\n\t\t\t\t\t\t\tif (!float64) throw new Error('No float64 available');\n\t\t\t\t\t\t});\n\t\t\t\t\tposition++;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (ifVersion !== undefined) {\n\t\t\t\tif (ifVersion === null)\n\t\t\t\t\tflags |= 0x10; // if it does not exist, MDB_NOOVERWRITE\n\t\t\t\telse {\n\t\t\t\t\tflags |= 0x100;\n\t\t\t\t\tfloat64[position++] = ifVersion;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (version !== undefined) {\n\t\t\t\tflags |= 0x200;\n\t\t\t\tfloat64[position++] = version || 0;\n\t\t\t}\n\t\t} else position++;\n\t\ttargetBytes.position = position;\n\t\tif (writeTxn) {\n\t\t\tuint32[0] = flags;\n\t\t\twrite(env.address, uint32.address);\n\t\t\treturn () =>\n\t\t\t\tuint32[0] & FAILED_CONDITION ? SYNC_PROMISE_FAIL : SYNC_PROMISE_SUCCESS;\n\t\t}\n\t\t// if we ever use buffers that haven't been zero'ed, need to clear out the next slot like this:\n\t\t// uint32[position << 1] = 0 // clear out the next slot\n\t\tlet nextUint32;\n\t\tif (position > newBufferThreshold) {\n\t\t\t// make new buffer and make pointer to it\n\t\t\tlet lastPosition = position;\n\t\t\ttargetBytes = allocateInstructionBuffer(position);\n\t\t\tposition = targetBytes.position;\n\t\t\tnextUint32 = targetBytes.uint32;\n\t\t} else nextUint32 = uint32;\n\t\tlet resolution = nextResolution;\n\t\t// create the placeholder next resolution\n\t\tnextResolution = resolution.next = {\n\t\t\t// we try keep resolutions exactly the same object type\n\t\t\tuint32: nextUint32,\n\t\t\tflagPosition: position << 1,\n\t\t\tflag: 0, // TODO: eventually eliminate this, as we can probably signify HAS_TXN/NO_RESOLVE/FAILED_CONDITION in upper bits\n\t\t\tvalueBuffer: fixedBuffer, // these are all just placeholders so that we have the right hidden class initially allocated\n\t\t\tnext: null,\n\t\t\tmeta: null,\n\t\t};\n\t\tlastQueuedResolution = resolution;\n\n\t\tlet writtenBatchDepth = batchDepth;\n\n\t\treturn (callback) => {\n\t\t\tif (writtenBatchDepth) {\n\t\t\t\t// If we are in a batch, the transaction can't close, so we do the faster,\n\t\t\t\t// but non-deterministic updates, knowing that the write thread can\n\t\t\t\t// just poll for the status change if we miss a status update.\n\t\t\t\t// That is, if we are on x64 architecture...\n\t\t\t\tif (arch === 'x64') {\n\t\t\t\t\twriteStatus = uint32[flagPosition];\n\t\t\t\t\tuint32[flagPosition] = flags;\n\t\t\t\t} else {\n\t\t\t\t\t// However, on ARM processors, apparently more radical memory reordering can occur\n\t\t\t\t\t// so we need to use the slower atomic operation to ensure that a memory barrier is set\n\t\t\t\t\t// and that the value pointer is actually written before the flag is updated\n\t\t\t\t\twriteStatus = Atomics.or(uint32, flagPosition, flags);\n\t\t\t\t}\n\t\t\t\tif (writeBatchStart && !writeStatus) {\n\t\t\t\t\toutstandingBatchCount += 1 + (valueSize >> 12);\n\t\t\t\t\tif (outstandingBatchCount > batchStartThreshold) {\n\t\t\t\t\t\toutstandingBatchCount = 0;\n\t\t\t\t\t\twriteBatchStart();\n\t\t\t\t\t\twriteBatchStart = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} // otherwise the transaction could end at any time and we need to know the\n\t\t\t// deterministically if it is ending, so we can reset the commit promise\n\t\t\t// so we use the slower atomic operation\n\t\t\telse writeStatus = Atomics.or(uint32, flagPosition, flags);\n\n\t\t\toutstandingWriteCount++;\n\t\t\tif (writeStatus & TXN_DELIMITER) {\n\t\t\t\tcommitPromise = null; // TODO: Don't reset these if this comes from the batch start operation on an event turn batch\n\t\t\t\tflushPromise = null;\n\t\t\t\tflushResolvers = [];\n\t\t\t\tqueueCommitResolution(resolution);\n\t\t\t\tif (!startAddress) {\n\t\t\t\t\tstartAddress = uint32.address + (flagPosition << 2);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!writtenBatchDepth && batchFlushResolvers.length > 0) {\n\t\t\t\tflushResolvers.push(...batchFlushResolvers);\n\t\t\t\tbatchFlushResolvers = [];\n\t\t\t}\n\t\t\tif (!flushPromise && overlappingSync) {\n\t\t\t\tflushPromise = new Promise((resolve) => {\n\t\t\t\t\tif (writtenBatchDepth) {\n\t\t\t\t\t\tbatchFlushResolvers.push(resolve);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tflushResolvers.push(resolve);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (writeStatus & WAITING_OPERATION) {\n\t\t\t\t// write thread is waiting\n\t\t\t\twrite(env.address, 0);\n\t\t\t}\n\t\t\tif (outstandingWriteCount > BACKPRESSURE_THRESHOLD && !writeBatchStart) {\n\t\t\t\tif (!backpressureArray)\n\t\t\t\t\tbackpressureArray = new Int32Array(new SharedArrayBuffer(4), 0, 1);\n\t\t\t\tAtomics.wait(\n\t\t\t\t\tbackpressureArray,\n\t\t\t\t\t0,\n\t\t\t\t\t0,\n\t\t\t\t\tMath.round(outstandingWriteCount / BACKPRESSURE_THRESHOLD),\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (startAddress) {\n\t\t\t\tif (eventTurnBatching)\n\t\t\t\t\tstartWriting(); // start writing immediately because this has already been batched/queued\n\t\t\t\telse if (!enqueuedCommit && txnStartThreshold) {\n\t\t\t\t\tenqueuedCommit =\n\t\t\t\t\t\tcommitDelay == 0 && typeof setImmediate != 'undefined'\n\t\t\t\t\t\t\t? setImmediate(() => startWriting())\n\t\t\t\t\t\t\t: setTimeout(() => startWriting(), commitDelay);\n\t\t\t\t} else if (outstandingWriteCount > txnStartThreshold) startWriting();\n\t\t\t}\n\n\t\t\tif ((outstandingWriteCount & 7) === 0) resolveWrites();\n\n\t\t\tif (store.cache) {\n\t\t\t\tresolution.meta = {\n\t\t\t\t\tkey,\n\t\t\t\t\tstore,\n\t\t\t\t\tvalueSize: valueBuffer ? valueBuffer.length : 0,\n\t\t\t\t};\n\t\t\t}\n\t\t\tresolution.valueBuffer = valueBuffer;\n\n\t\t\tif (callback) {\n\t\t\t\tif (callback === IF_EXISTS) ifVersion = IF_EXISTS;\n\t\t\t\telse {\n\t\t\t\t\tlet meta = resolution.meta || (resolution.meta = {});\n\t\t\t\t\tmeta.reject = callback;\n\t\t\t\t\tmeta.resolve = (value) => callback(null, value);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// if it is not conditional because of ifVersion or has any flags that can make the write conditional\n\t\t\tif (ifVersion === undefined && !(flags & 0x22030)) {\n\t\t\t\tif (writtenBatchDepth > 1) {\n\t\t\t\t\tif (!resolution.flag && !store.cache) resolution.flag = NO_RESOLVE;\n\t\t\t\t\treturn PROMISE_SUCCESS; // or return undefined?\n\t\t\t\t}\n\t\t\t\tif (commitPromise) {\n\t\t\t\t\tif (!resolution.flag) resolution.flag = NO_RESOLVE;\n\t\t\t\t} else {\n\t\t\t\t\tcommitPromise = new Promise((resolve, reject) => {\n\t\t\t\t\t\tlet meta = resolution.meta || (resolution.meta = {});\n\t\t\t\t\t\tmeta.resolve = resolve;\n\t\t\t\t\t\tresolve.unconditional = true;\n\t\t\t\t\t\tmeta.reject = reject;\n\t\t\t\t\t});\n\t\t\t\t\tif (separateFlushed)\n\t\t\t\t\t\tcommitPromise.flushed = overlappingSync\n\t\t\t\t\t\t\t? flushPromise\n\t\t\t\t\t\t\t: commitPromise;\n\t\t\t\t}\n\t\t\t\treturn commitPromise;\n\t\t\t}\n\t\t\tlastWritePromise = new Promise((resolve, reject) => {\n\t\t\t\tlet meta = resolution.meta || (resolution.meta = {});\n\t\t\t\tmeta.resolve = resolve;\n\t\t\t\tmeta.reject = reject;\n\t\t\t});\n\t\t\tif (separateFlushed)\n\t\t\t\tlastWritePromise.flushed = overlappingSync\n\t\t\t\t\t? flushPromise\n\t\t\t\t\t: lastWritePromise;\n\t\t\treturn lastWritePromise;\n\t\t};\n\t}\n\tlet committedFlushResolvers,\n\t\tlastSync = Promise.resolve();\n\tfunction startWriting() {\n\t\tif (enqueuedCommit) {\n\t\t\tclearImmediate(enqueuedCommit);\n\t\t\tenqueuedCommit = null;\n\t\t}\n\t\tlet resolvers = flushResolvers;\n\t\tlet start = Date.now();\n\t\tenv.startWriting(startAddress, (status) => {\n\t\t\tif (dynamicBytes.uint32[dynamicBytes.position << 1] & TXN_DELIMITER)\n\t\t\t\tqueueCommitResolution(nextResolution);\n\n\t\t\tresolveWrites(true);\n\t\t\tswitch (status) {\n\t\t\t\tcase 0:\n\t\t\t\t\tfor (let resolver of resolvers) {\n\t\t\t\t\t\tresolver();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\thasUnresolvedTxns = false;\n\t\t\t\t\texecuteTxnCallbacks();\n\t\t\t\t\treturn hasUnresolvedTxns;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlmdbError(status);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error(error);\n\t\t\t\t\t\tif (commitRejectPromise) {\n\t\t\t\t\t\t\tcommitRejectPromise.reject(error);\n\t\t\t\t\t\t\tcommitRejectPromise = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tstartAddress = 0;\n\t}\n\n\tfunction queueCommitResolution(resolution) {\n\t\tif (!(resolution.flag & HAS_TXN)) {\n\t\t\tresolution.flag = HAS_TXN;\n\t\t\tif (txnResolution) {\n\t\t\t\ttxnResolution.nextTxn = resolution;\n\t\t\t\t//outstandingWriteCount = 0\n\t\t\t} else txnResolution = resolution;\n\t\t}\n\t}\n\tvar TXN_DONE = TXN_COMMITTED | TXN_FAILED;\n\tfunction resolveWrites(async) {\n\t\t// clean up finished instructions\n\t\tlet instructionStatus;\n\t\twhile (\n\t\t\t(instructionStatus =\n\t\t\t\tunwrittenResolution.uint32[unwrittenResolution.flagPosition]) &\n\t\t\t0x1000000\n\t\t) {\n\t\t\tif (unwrittenResolution.callbacks) {\n\t\t\t\tnextTxnCallbacks.push(unwrittenResolution.callbacks);\n\t\t\t\tunwrittenResolution.callbacks = null;\n\t\t\t}\n\t\t\toutstandingWriteCount--;\n\t\t\tif (unwrittenResolution.flag !== HAS_TXN) {\n\t\t\t\tif (\n\t\t\t\t\tunwrittenResolution.flag === NO_RESOLVE &&\n\t\t\t\t\t!unwrittenResolution.meta\n\t\t\t\t) {\n\t\t\t\t\t// in this case we can completely remove from the linked list, clearing more memory\n\t\t\t\t\tlastPromisedResolution.next = unwrittenResolution =\n\t\t\t\t\t\tunwrittenResolution.next;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tunwrittenResolution.uint32 = null;\n\t\t\t}\n\t\t\tunwrittenResolution.valueBuffer = null;\n\t\t\tunwrittenResolution.flag = instructionStatus;\n\t\t\tlastPromisedResolution = unwrittenResolution;\n\t\t\tunwrittenResolution = unwrittenResolution.next;\n\t\t}\n\t\twhile (\n\t\t\ttxnResolution &&\n\t\t\t(instructionStatus =\n\t\t\t\ttxnResolution.uint32[txnResolution.flagPosition] & TXN_DONE)\n\t\t) {\n\t\t\tif (instructionStatus & TXN_FAILED) rejectCommit();\n\t\t\telse resolveCommit(async);\n\t\t}\n\t}\n\n\tfunction resolveCommit(async) {\n\t\tafterCommit(txnResolution.uint32[txnResolution.flagPosition - 1]);\n\t\tif (async) resetReadTxn();\n\t\telse queueMicrotask(resetReadTxn); // TODO: only do this if there are actually committed writes?\n\t\tdo {\n\t\t\tif (uncommittedResolution.meta && uncommittedResolution.meta.resolve) {\n\t\t\t\tlet resolve = uncommittedResolution.meta.resolve;\n\t\t\t\tif (\n\t\t\t\t\tuncommittedResolution.flag & FAILED_CONDITION &&\n\t\t\t\t\t!resolve.unconditional\n\t\t\t\t)\n\t\t\t\t\tresolve(false);\n\t\t\t\telse resolve(true);\n\t\t\t}\n\t\t} while (\n\t\t\t(uncommittedResolution = uncommittedResolution.next) &&\n\t\t\tuncommittedResolution != txnResolution\n\t\t);\n\t\ttxnResolution = txnResolution.nextTxn;\n\t}\n\tvar commitRejectPromise;\n\tfunction rejectCommit() {\n\t\tafterCommit();\n\t\tif (!commitRejectPromise) {\n\t\t\tlet rejectFunction;\n\t\t\tcommitRejectPromise = new Promise(\n\t\t\t\t(resolve, reject) => (rejectFunction = reject),\n\t\t\t);\n\t\t\tcommitRejectPromise.reject = rejectFunction;\n\t\t}\n\t\tdo {\n\t\t\tif (uncommittedResolution.meta && uncommittedResolution.meta.reject) {\n\t\t\t\tlet flag = uncommittedResolution.flag & 0xf;\n\t\t\t\tlet error = new Error('Commit failed (see commitError for details)');\n\t\t\t\terror.commitError = commitRejectPromise;\n\t\t\t\tuncommittedResolution.meta.reject(error);\n\t\t\t}\n\t\t} while (\n\t\t\t(uncommittedResolution = uncommittedResolution.next) &&\n\t\t\tuncommittedResolution != txnResolution\n\t\t);\n\t\ttxnResolution = txnResolution.nextTxn;\n\t}\n\tfunction atomicStatus(uint32, flagPosition, newStatus) {\n\t\tif (batchDepth) {\n\t\t\t// if we are in a batch, the transaction can't close, so we do the faster,\n\t\t\t// but non-deterministic updates, knowing that the write thread can\n\t\t\t// just poll for the status change if we miss a status update\n\t\t\tlet writeStatus = uint32[flagPosition];\n\t\t\tuint32[flagPosition] = newStatus;\n\t\t\treturn writeStatus;\n\t\t\t//return Atomics.or(uint32, flagPosition, newStatus)\n\t\t} // otherwise the transaction could end at any time and we need to know the\n\t\t// deterministically if it is ending, so we can reset the commit promise\n\t\t// so we use the slower atomic operation\n\t\telse\n\t\t\ttry {\n\t\t\t\treturn Atomics.or(uint32, flagPosition, newStatus);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error);\n\t\t\t\treturn;\n\t\t\t}\n\t}\n\tfunction afterCommit(txnId) {\n\t\tfor (let i = 0, l = afterCommitCallbacks.length; i < l; i++) {\n\t\t\ttry {\n\t\t\t\tafterCommitCallbacks[i]({\n\t\t\t\t\tnext: uncommittedResolution,\n\t\t\t\t\tlast: txnResolution,\n\t\t\t\t\ttxnId,\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('In aftercommit callback', error);\n\t\t\t}\n\t\t}\n\t}\n\tasync function executeTxnCallbacks() {\n\t\tenv.writeTxn = writeTxn = { write: true };\n\t\tnextTxnCallbacks.isExecuting = true;\n\t\tfor (let i = 0; i < nextTxnCallbacks.length; i++) {\n\t\t\tlet txnCallbacks = nextTxnCallbacks[i];\n\t\t\tfor (let j = 0, l = txnCallbacks.length; j < l; j++) {\n\t\t\t\tlet userTxnCallback = txnCallbacks[j];\n\t\t\t\tlet asChild = userTxnCallback.asChild;\n\t\t\t\tif (asChild) {\n\t\t\t\t\tenv.beginTxn(1); // abortable\n\t\t\t\t\tlet parentTxn = writeTxn;\n\t\t\t\t\tenv.writeTxn = writeTxn = { write: true };\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlet result = userTxnCallback.callback();\n\t\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\t\thasUnresolvedTxns = true;\n\t\t\t\t\t\t\tawait result;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (result === ABORT) env.abortTxn();\n\t\t\t\t\t\telse env.commitTxn();\n\t\t\t\t\t\tclearWriteTxn(parentTxn);\n\t\t\t\t\t\ttxnCallbacks[j] = result;\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tclearWriteTxn(parentTxn);\n\t\t\t\t\t\tenv.abortTxn();\n\t\t\t\t\t\ttxnError(error, txnCallbacks, j);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlet result = userTxnCallback();\n\t\t\t\t\t\ttxnCallbacks[j] = result;\n\t\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\t\thasUnresolvedTxns = true;\n\t\t\t\t\t\t\tawait result;\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\ttxnError(error, txnCallbacks, j);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tnextTxnCallbacks = [];\n\t\tclearWriteTxn(null);\n\t\tif (hasUnresolvedTxns) {\n\t\t\tenv.resumeWriting();\n\t\t}\n\t\tfunction txnError(error, txnCallbacks, i) {\n\t\t\t(txnCallbacks.errors || (txnCallbacks.errors = []))[i] = error;\n\t\t\ttxnCallbacks[i] = CALLBACK_THREW;\n\t\t}\n\t}\n\tfunction finishBatch() {\n\t\tlet bytes = dynamicBytes;\n\t\tlet uint32 = bytes.uint32;\n\t\tlet nextPosition = bytes.position + 1;\n\t\tlet writeStatus;\n\t\tif (nextPosition > newBufferThreshold) {\n\t\t\tallocateInstructionBuffer(nextPosition);\n\t\t\tnextResolution.flagPosition = dynamicBytes.position << 1;\n\t\t\tnextResolution.uint32 = dynamicBytes.uint32;\n\t\t\twriteStatus = atomicStatus(uint32, bytes.position << 1, 2); // atomically write the end block\n\t\t} else {\n\t\t\tuint32[nextPosition << 1] = 0; // clear out the next slot\n\t\t\twriteStatus = atomicStatus(uint32, bytes.position++ << 1, 2); // atomically write the end block\n\t\t\tnextResolution.flagPosition += 2;\n\t\t}\n\t\tif (writeStatus & WAITING_OPERATION) {\n\t\t\twrite(env.address, 0);\n\t\t}\n\t}\n\tfunction clearWriteTxn(parentTxn) {\n\t\t// TODO: We might actually want to track cursors in a write txn and manually\n\t\t// close them.\n\t\tif (writeTxn && writeTxn.refCount > 0) writeTxn.isDone = true;\n\t\tenv.writeTxn = writeTxn = parentTxn || null;\n\t}\n\tObject.assign(LMDBStore.prototype, {\n\t\tput(key, value, versionOrOptions, ifVersion) {\n\t\t\tlet callback,\n\t\t\t\tflags = 15,\n\t\t\t\ttype = typeof versionOrOptions;\n\t\t\tif (type == 'object' && versionOrOptions) {\n\t\t\t\tif (versionOrOptions.noOverwrite) flags |= 0x10;\n\t\t\t\tif (versionOrOptions.noDupData) flags |= 0x20;\n\t\t\t\tif (versionOrOptions.instructedWrite) flags |= 0x2000;\n\t\t\t\tif (versionOrOptions.append) flags |= 0x20000;\n\t\t\t\tif (versionOrOptions.ifVersion != undefined)\n\t\t\t\t\tifVersion = versionOrOptions.ifVersion;\n\t\t\t\tversionOrOptions = versionOrOptions.version;\n\t\t\t\tif (typeof ifVersion == 'function') callback = ifVersion;\n\t\t\t} else if (type == 'function') {\n\t\t\t\tcallback = versionOrOptions;\n\t\t\t}\n\t\t\treturn writeInstructions(\n\t\t\t\tflags,\n\t\t\t\tthis,\n\t\t\t\tkey,\n\t\t\t\tvalue,\n\t\t\t\tthis.useVersions ? versionOrOptions || 0 : undefined,\n\t\t\t\tifVersion,\n\t\t\t)(callback);\n\t\t},\n\t\tremove(key, ifVersionOrValue, callback) {\n\t\t\tlet flags = 13;\n\t\t\tlet ifVersion, value;\n\t\t\tif (ifVersionOrValue !== undefined) {\n\t\t\t\tif (typeof ifVersionOrValue == 'function') callback = ifVersionOrValue;\n\t\t\t\telse if (ifVersionOrValue === IF_EXISTS && !callback)\n\t\t\t\t\t// we have a handler for IF_EXISTS in the callback handler for remove\n\t\t\t\t\tcallback = ifVersionOrValue;\n\t\t\t\telse if (this.useVersions) ifVersion = ifVersionOrValue;\n\t\t\t\telse {\n\t\t\t\t\tflags = 14;\n\t\t\t\t\tvalue = ifVersionOrValue;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn writeInstructions(\n\t\t\t\tflags,\n\t\t\t\tthis,\n\t\t\t\tkey,\n\t\t\t\tvalue,\n\t\t\t\tundefined,\n\t\t\t\tifVersion,\n\t\t\t)(callback);\n\t\t},\n\t\tdel(key, options, callback) {\n\t\t\treturn this.remove(key, options, callback);\n\t\t},\n\t\tifNoExists(key, callback) {\n\t\t\treturn this.ifVersion(key, null, callback);\n\t\t},\n\t\tifVersion(key, version, callback, options) {\n\t\t\tif (!callback) {\n\t\t\t\treturn new Batch((operations, callback) => {\n\t\t\t\t\tlet promise = this.ifVersion(key, version, operations, options);\n\t\t\t\t\tif (callback) promise.then(callback);\n\t\t\t\t\treturn promise;\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (writeTxn) {\n\t\t\t\tif (version === undefined || this.doesExist(key, version)) {\n\t\t\t\t\tcallback();\n\t\t\t\t\treturn SYNC_PROMISE_SUCCESS;\n\t\t\t\t}\n\t\t\t\treturn SYNC_PROMISE_FAIL;\n\t\t\t}\n\t\t\tlet flags = key === undefined || version === undefined ? 1 : 4;\n\t\t\tif (options?.ifLessThan) flags |= CONDITIONAL_VERSION_LESS_THAN;\n\t\t\tif (options?.allowNotFound) flags |= CONDITIONAL_ALLOW_NOTFOUND;\n\t\t\tlet finishStartWrite = writeInstructions(\n\t\t\t\tflags,\n\t\t\t\tthis,\n\t\t\t\tkey,\n\t\t\t\tundefined,\n\t\t\t\tundefined,\n\t\t\t\tversion,\n\t\t\t);\n\t\t\tlet promise;\n\t\t\tbatchDepth += 2;\n\t\t\tif (batchDepth > 2) promise = finishStartWrite();\n\t\t\telse {\n\t\t\t\twriteBatchStart = () => {\n\t\t\t\t\tpromise = finishStartWrite();\n\t\t\t\t};\n\t\t\t\toutstandingBatchCount = 0;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tif (typeof callback === 'function') {\n\t\t\t\t\tcallback();\n\t\t\t\t} else {\n\t\t\t\t\tfor (let i = 0, l = callback.length; i < l; i++) {\n\t\t\t\t\t\tlet operation = callback[i];\n\t\t\t\t\t\tthis[operation.type](operation.key, operation.value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tif (!promise) {\n\t\t\t\t\tfinishBatch();\n\t\t\t\t\tbatchDepth -= 2;\n\t\t\t\t\tpromise = finishStartWrite(); // finish write once all the operations have been written (and it hasn't been written prematurely)\n\t\t\t\t\twriteBatchStart = null;\n\t\t\t\t} else {\n\t\t\t\t\tbatchDepth -= 2;\n\t\t\t\t\tfinishBatch();\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn promise;\n\t\t},\n\t\tbatch(callbackOrOperations) {\n\t\t\treturn this.ifVersion(undefined, undefined, callbackOrOperations);\n\t\t},\n\t\tdrop(callback) {\n\t\t\treturn writeInstructions(\n\t\t\t\t1024 + 12,\n\t\t\t\tthis,\n\t\t\t\tBuffer.from([]),\n\t\t\t\tundefined,\n\t\t\t\tundefined,\n\t\t\t\tundefined,\n\t\t\t)(callback);\n\t\t},\n\t\tclearAsync(callback) {\n\t\t\tif (this.encoder) {\n\t\t\t\tif (this.encoder.clearSharedData) this.encoder.clearSharedData();\n\t\t\t\telse if (this.encoder.structures) this.encoder.structures = [];\n\t\t\t}\n\t\t\treturn writeInstructions(\n\t\t\t\t12,\n\t\t\t\tthis,\n\t\t\t\tBuffer.from([]),\n\t\t\t\tundefined,\n\t\t\t\tundefined,\n\t\t\t\tundefined,\n\t\t\t)(callback);\n\t\t},\n\t\t_triggerError() {\n\t\t\tfinishBatch();\n\t\t},\n\n\t\tputSync(key, value, versionOrOptions, ifVersion) {\n\t\t\tif (writeTxn)\n\t\t\t\treturn (\n\t\t\t\t\tthis.put(key, value, versionOrOptions, ifVersion) ===\n\t\t\t\t\tSYNC_PROMISE_SUCCESS\n\t\t\t\t);\n\t\t\telse\n\t\t\t\treturn this.transactionSync(\n\t\t\t\t\t() =>\n\t\t\t\t\t\tthis.put(key, value, versionOrOptions, ifVersion) ===\n\t\t\t\t\t\tSYNC_PROMISE_SUCCESS,\n\t\t\t\t\toverlappingSync ? 0x10002 : 2,\n\t\t\t\t); // non-abortable, async flush\n\t\t},\n\t\tremoveSync(key, ifVersionOrValue) {\n\t\t\tif (writeTxn)\n\t\t\t\treturn this.remove(key, ifVersionOrValue) === SYNC_PROMISE_SUCCESS;\n\t\t\telse\n\t\t\t\treturn this.transactionSync(\n\t\t\t\t\t() => this.remove(key, ifVersionOrValue) === SYNC_PROMISE_SUCCESS,\n\t\t\t\t\toverlappingSync ? 0x10002 : 2,\n\t\t\t\t); // non-abortable, async flush\n\t\t},\n\t\ttransaction(callback) {\n\t\t\tif (writeTxn && !nextTxnCallbacks.isExecuting) {\n\t\t\t\t// already nested in a transaction, just execute and return\n\t\t\t\treturn callback();\n\t\t\t}\n\t\t\treturn this.transactionAsync(callback);\n\t\t},\n\t\tchildTransaction(callback) {\n\t\t\tif (useWritemap)\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'Child transactions are not supported in writemap mode',\n\t\t\t\t);\n\t\t\tif (writeTxn) {\n\t\t\t\tlet parentTxn = writeTxn;\n\t\t\t\tlet thisTxn = (env.writeTxn = writeTxn = { write: true });\n\t\t\t\tenv.beginTxn(1); // abortable\n\t\t\t\tlet callbackDone, finishTxn;\n\t\t\t\ttry {\n\t\t\t\t\treturn (writeTxn.childResults = when(\n\t\t\t\t\t\tcallback(),\n\t\t\t\t\t\t(finishTxn = (result) => {\n\t\t\t\t\t\t\tif (writeTxn !== thisTxn)\n\t\t\t\t\t\t\t\t// need to wait for child txn to finish asynchronously\n\t\t\t\t\t\t\t\treturn writeTxn.childResults.then(() => finishTxn(result));\n\t\t\t\t\t\t\tcallbackDone = true;\n\t\t\t\t\t\t\tif (result === ABORT) env.abortTxn();\n\t\t\t\t\t\t\telse env.commitTxn();\n\t\t\t\t\t\t\tclearWriteTxn(parentTxn);\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t(error) => {\n\t\t\t\t\t\t\tenv.abortTxn();\n\t\t\t\t\t\t\tclearWriteTxn(parentTxn);\n\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t},\n\t\t\t\t\t));\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (!callbackDone) env.abortTxn();\n\t\t\t\t\tclearWriteTxn(parentTxn);\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.transactionAsync(callback, true);\n\t\t},\n\t\ttransactionAsync(callback, asChild) {\n\t\t\tlet txnIndex;\n\t\t\tlet txnCallbacks;\n\t\t\tif (lastQueuedResolution.callbacks) {\n\t\t\t\ttxnCallbacks = lastQueuedResolution.callbacks;\n\t\t\t\ttxnIndex =\n\t\t\t\t\ttxnCallbacks.push(asChild ? { callback, asChild } : callback) - 1;\n\t\t\t} else if (nextTxnCallbacks.isExecuting) {\n\t\t\t\ttxnCallbacks = [asChild ? { callback, asChild } : callback];\n\t\t\t\ttxnCallbacks.results = commitPromise;\n\t\t\t\tnextTxnCallbacks.push(txnCallbacks);\n\t\t\t\ttxnIndex = 0;\n\t\t\t} else {\n\t\t\t\tif (writeTxn)\n\t\t\t\t\tthrow new Error('Can not enqueue transaction during write txn');\n\t\t\t\tlet finishWrite = writeInstructions(\n\t\t\t\t\t8 | (this.strictAsyncOrder ? 0x100000 : 0),\n\t\t\t\t\tthis,\n\t\t\t\t);\n\t\t\t\ttxnCallbacks = [asChild ? { callback, asChild } : callback];\n\t\t\t\tlastQueuedResolution.callbacks = txnCallbacks;\n\t\t\t\tlastQueuedResolution.id = Math.random();\n\t\t\t\ttxnCallbacks.results = finishWrite();\n\t\t\t\ttxnIndex = 0;\n\t\t\t}\n\t\t\treturn txnCallbacks.results.then((results) => {\n\t\t\t\tlet result = txnCallbacks[txnIndex];\n\t\t\t\tif (result === CALLBACK_THREW) throw txnCallbacks.errors[txnIndex];\n\t\t\t\treturn result;\n\t\t\t});\n\t\t},\n\t\ttransactionSync(callback, flags) {\n\t\t\tif (writeTxn) {\n\t\t\t\tif (!useWritemap && (flags == undefined || flags & 1))\n\t\t\t\t\t// can't use child transactions in write maps\n\t\t\t\t\t// already nested in a transaction, execute as child transaction (if possible) and return\n\t\t\t\t\treturn this.childTransaction(callback);\n\t\t\t\tlet result = callback(); // else just run in current transaction\n\t\t\t\tif (result == ABORT && !abortedNonChildTransactionWarn) {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t'Can not abort a transaction inside another transaction with ' +\n\t\t\t\t\t\t\t(this.cache ? 'caching enabled' : 'useWritemap enabled'),\n\t\t\t\t\t);\n\t\t\t\t\tabortedNonChildTransactionWarn = true;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tlet callbackDone, finishTxn;\n\t\t\tthis.transactions++;\n\t\t\tif (!env.address)\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'The database has been closed and you can not transact on it',\n\t\t\t\t);\n\t\t\tenv.beginTxn(flags == undefined ? 3 : flags);\n\t\t\tlet thisTxn = (writeTxn = env.writeTxn = { write: true });\n\t\t\ttry {\n\t\t\t\tthis.emit('begin-transaction');\n\t\t\t\treturn (writeTxn.childResults = when(\n\t\t\t\t\tcallback(),\n\t\t\t\t\t(finishTxn = (result) => {\n\t\t\t\t\t\tif (writeTxn !== thisTxn)\n\t\t\t\t\t\t\t// need to wait for child txn to finish asynchronously\n\t\t\t\t\t\t\treturn writeTxn.childResults.then(() => finishTxn(result));\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcallbackDone = true;\n\t\t\t\t\t\t\tif (result === ABORT) env.abortTxn();\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tenv.commitTxn();\n\t\t\t\t\t\t\t\tresetReadTxn();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tclearWriteTxn(null);\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\t(error) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tenv.abortTxn();\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t\tclearWriteTxn(null);\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t},\n\t\t\t\t));\n\t\t\t} catch (error) {\n\t\t\t\tif (!callbackDone)\n\t\t\t\t\ttry {\n\t\t\t\t\t\tenv.abortTxn();\n\t\t\t\t\t} catch (e) {}\n\t\t\t\tclearWriteTxn(null);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\tgetWriteTxnId() {\n\t\t\treturn env.getWriteTxnId();\n\t\t},\n\t\ttransactionSyncStart(callback) {\n\t\t\treturn this.transactionSync(callback, 0);\n\t\t},\n\t\t// make the db a thenable/promise-like for when the last commit is committed\n\t\tcommitted: (committed = {\n\t\t\tthen(onfulfilled, onrejected) {\n\t\t\t\tif (commitPromise) return commitPromise.then(onfulfilled, onrejected);\n\t\t\t\tif (lastWritePromise)\n\t\t\t\t\t// always resolve to true\n\t\t\t\t\treturn lastWritePromise.then(() => onfulfilled(true), onrejected);\n\t\t\t\treturn SYNC_PROMISE_SUCCESS.then(onfulfilled, onrejected);\n\t\t\t},\n\t\t}),\n\t\tflushed: {\n\t\t\t// make this a thenable for when the commit is flushed to disk\n\t\t\tthen(onfulfilled, onrejected) {\n\t\t\t\tif (flushPromise) flushPromise.hasCallbacks = true;\n\t\t\t\treturn Promise.all([flushPromise || committed, lastSyncTxnFlush]).then(\n\t\t\t\t\tonfulfilled,\n\t\t\t\t\tonrejected,\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\t_endWrites(resolvedPromise, resolvedSyncPromise) {\n\t\t\tthis.put =\n\t\t\t\tthis.remove =\n\t\t\t\tthis.del =\n\t\t\t\tthis.batch =\n\t\t\t\tthis.removeSync =\n\t\t\t\tthis.putSync =\n\t\t\t\tthis.transactionAsync =\n\t\t\t\tthis.drop =\n\t\t\t\tthis.clearAsync =\n\t\t\t\t\t() => {\n\t\t\t\t\t\tthrow new Error('Database is closed');\n\t\t\t\t\t};\n\t\t\t// wait for all txns to finish, checking again after the current txn is done\n\t\t\tlet finalPromise = flushPromise || commitPromise || lastWritePromise;\n\t\t\tif (flushPromise) flushPromise.hasCallbacks = true;\n\t\t\tlet finalSyncPromise = lastSyncTxnFlush;\n\t\t\tif (\n\t\t\t\t(finalPromise && resolvedPromise != finalPromise) ||\n\t\t\t\t(finalSyncPromise && resolvedSyncPromise != finalSyncPromise)\n\t\t\t) {\n\t\t\t\treturn Promise.all([finalPromise, finalSyncPromise]).then(\n\t\t\t\t\t() => this._endWrites(finalPromise, finalSyncPromise),\n\t\t\t\t\t() => this._endWrites(finalPromise, finalSyncPromise),\n\t\t\t\t);\n\t\t\t}\n\t\t\tObject.defineProperty(env, 'sync', { value: null });\n\t\t},\n\t\ton(event, callback) {\n\t\t\tif (event == 'beforecommit') {\n\t\t\t\teventTurnBatching = true;\n\t\t\t\tbeforeCommitCallbacks.push(callback);\n\t\t\t} else if (event == 'aftercommit') afterCommitCallbacks.push(callback);\n\t\t\telse if (event == 'committed') {\n\t\t\t\tthis.getUserSharedBuffer('__committed__', new ArrayBuffer(0), {\n\t\t\t\t\tenvKey: true,\n\t\t\t\t\tcallback,\n\t\t\t\t});\n\t\t\t} else super.on(event, callback);\n\t\t},\n\t});\n}\n\nclass Batch extends Array {\n\tconstructor(callback) {\n\t\tsuper();\n\t\tthis.callback = callback;\n\t}\n\tput(key, value) {\n\t\tthis.push({ type: 'put', key, value });\n\t}\n\tdel(key) {\n\t\tthis.push({ type: 'del', key });\n\t}\n\tclear() {\n\t\tthis.length = 0;\n\t}\n\twrite(callback) {\n\t\treturn this.callback(this, callback);\n\t}\n}\nexport function asBinary(buffer) {\n\treturn {\n\t\t['\\x10binary-data\\x02']: buffer,\n\t};\n}\n","export const SKIP = {};\nconst DONE = {\n\tvalue: null,\n\tdone: true,\n};\nconst RETURN_DONE = {\n\t// we allow this one to be mutated\n\tvalue: null,\n\tdone: true,\n};\nif (!Symbol.asyncIterator) {\n\tSymbol.asyncIterator = Symbol.for('Symbol.asyncIterator');\n}\nconst NO_OPTIONS = {};\n\nexport class RangeIterable {\n\tconstructor(sourceArray) {\n\t\tif (sourceArray) {\n\t\t\tthis.iterate = sourceArray[Symbol.iterator].bind(sourceArray);\n\t\t}\n\t}\n\tmap(func) {\n\t\tlet source = this;\n\t\tlet iterable = new RangeIterable();\n\t\titerable.iterate = (options = NO_OPTIONS) => {\n\t\t\tconst { async } = options;\n\t\t\tlet iterator =\n\t\t\t\tsource[async ? Symbol.asyncIterator : Symbol.iterator](options);\n\t\t\tif (!async) source.isSync = true;\n\t\t\tlet i = -1;\n\t\t\treturn {\n\t\t\t\tnext(resolvedResult) {\n\t\t\t\t\tlet result;\n\t\t\t\t\tdo {\n\t\t\t\t\t\tlet iteratorResult;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tif (resolvedResult) {\n\t\t\t\t\t\t\t\titeratorResult = resolvedResult;\n\t\t\t\t\t\t\t\tresolvedResult = null; // don't go in this branch on next iteration\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\t\titeratorResult = iterator.next();\n\t\t\t\t\t\t\t\tif (iteratorResult.then) {\n\t\t\t\t\t\t\t\t\tif (!async) {\n\t\t\t\t\t\t\t\t\t\tthis.throw(\n\t\t\t\t\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\t\t\t\t'Can not synchronously iterate with promises as iterator results',\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn iteratorResult.then(\n\t\t\t\t\t\t\t\t\t\t(iteratorResult) => this.next(iteratorResult),\n\t\t\t\t\t\t\t\t\t\t(error) => {\n\t\t\t\t\t\t\t\t\t\t\treturn this.throw(error);\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (iteratorResult.done === true) {\n\t\t\t\t\t\t\t\tthis.done = true;\n\t\t\t\t\t\t\t\tif (iterable.onDone) iterable.onDone();\n\t\t\t\t\t\t\t\treturn iteratorResult;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tresult = func.call(source, iteratorResult.value, i);\n\t\t\t\t\t\t\t\tif (result && result.then && async) {\n\t\t\t\t\t\t\t\t\t// if async, wait for promise to resolve before returning iterator result\n\t\t\t\t\t\t\t\t\treturn result.then(\n\t\t\t\t\t\t\t\t\t\t(result) =>\n\t\t\t\t\t\t\t\t\t\t\tresult === SKIP\n\t\t\t\t\t\t\t\t\t\t\t\t? this.next()\n\t\t\t\t\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: result,\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t(error) => {\n\t\t\t\t\t\t\t\t\t\t\tif (options.continueOnRecoverableError)\n\t\t\t\t\t\t\t\t\t\t\t\terror.continueIteration = true;\n\t\t\t\t\t\t\t\t\t\t\treturn this.throw(error);\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t// if the error came from the user function, we can potentially mark it for continuing iteration\n\t\t\t\t\t\t\t\tif (options.continueOnRecoverableError)\n\t\t\t\t\t\t\t\t\terror.continueIteration = true;\n\t\t\t\t\t\t\t\tthrow error; // throw to next catch to handle\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tif (iterable.handleError) {\n\t\t\t\t\t\t\t\t// if we have handleError, we can use it to further handle errors\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tresult = iterable.handleError(error, i);\n\t\t\t\t\t\t\t\t} catch (error2) {\n\t\t\t\t\t\t\t\t\treturn this.throw(error2);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else return this.throw(error);\n\t\t\t\t\t\t}\n\t\t\t\t\t} while (result === SKIP);\n\t\t\t\t\tif (result === DONE) {\n\t\t\t\t\t\treturn this.return();\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tvalue: result,\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\treturn(value) {\n\t\t\t\t\tif (!this.done) {\n\t\t\t\t\t\tRETURN_DONE.value = value;\n\t\t\t\t\t\tthis.done = true;\n\t\t\t\t\t\tif (iterable.onDone) iterable.onDone();\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t\treturn RETURN_DONE;\n\t\t\t\t},\n\t\t\t\tthrow(error) {\n\t\t\t\t\tif (error.continueIteration) {\n\t\t\t\t\t\t// if it's a recoverable error, we can return or throw without closing the iterator\n\t\t\t\t\t\tif (iterable.returnRecoverableErrors)\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\tvalue: iterable.returnRecoverableErrors(error),\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t// if this throws, we need to go back to closing the iterator\n\t\t\t\t\t\t\t\tthis.return();\n\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\tif (options.continueOnRecoverableError) throw error; // throw without closing iterator\n\t\t\t\t\t}\n\t\t\t\t\t// else we are done with the iterator (and can throw)\n\t\t\t\t\tthis.return();\n\t\t\t\t\tthrow error;\n\t\t\t\t},\n\t\t\t};\n\t\t};\n\t\treturn iterable;\n\t}\n\t[Symbol.asyncIterator](options) {\n\t\tif (options) options = { ...options, async: true };\n\t\telse options = { async: true };\n\t\treturn (this.iterator = this.iterate(options));\n\t}\n\t[Symbol.iterator](options) {\n\t\treturn (this.iterator = this.iterate(options));\n\t}\n\tfilter(func) {\n\t\tlet iterable = this.map((element) => {\n\t\t\tlet result = func(element);\n\t\t\t// handle promise\n\t\t\tif (result?.then)\n\t\t\t\treturn result.then((result) => (result ? element : SKIP));\n\t\t\telse return result ? element : SKIP;\n\t\t});\n\t\tlet iterate = iterable.iterate;\n\t\titerable.iterate = (options = NO_OPTIONS) => {\n\t\t\t// explicitly prevent continue on recoverable error with filter\n\t\t\tif (options.continueOnRecoverableError)\n\t\t\t\toptions = { ...options, continueOnRecoverableError: false };\n\t\t\treturn iterate(options);\n\t\t};\n\t\treturn iterable;\n\t}\n\n\tforEach(callback) {\n\t\tlet iterator = (this.iterator = this.iterate());\n\t\tlet result;\n\t\twhile ((result = iterator.next()).done !== true) {\n\t\t\tcallback(result.value);\n\t\t}\n\t}\n\tconcat(secondIterable) {\n\t\tlet concatIterable = new RangeIterable();\n\t\tconcatIterable.iterate = (options = NO_OPTIONS) => {\n\t\t\tlet iterator = (this.iterator = this.iterate(options));\n\t\t\tlet isFirst = true;\n\t\t\tfunction iteratorDone(result) {\n\t\t\t\tif (isFirst) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tisFirst = false;\n\t\t\t\t\t\titerator =\n\t\t\t\t\t\t\tsecondIterable[\n\t\t\t\t\t\t\t\toptions.async ? Symbol.asyncIterator : Symbol.iterator\n\t\t\t\t\t\t\t]();\n\t\t\t\t\t\tresult = iterator.next();\n\t\t\t\t\t\tif (concatIterable.onDone) {\n\t\t\t\t\t\t\tif (result.then) {\n\t\t\t\t\t\t\t\tif (!options.async)\n\t\t\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t\t\t'Can not synchronously iterate with promises as iterator results',\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tresult.then(\n\t\t\t\t\t\t\t\t\t(result) => {\n\t\t\t\t\t\t\t\t\t\tif (result.done()) concatIterable.onDone();\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t(error) => {\n\t\t\t\t\t\t\t\t\t\tthis.return();\n\t\t\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else if (result.done) concatIterable.onDone();\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tthis.throw(error);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (concatIterable.onDone) concatIterable.onDone();\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tnext() {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlet result = iterator.next();\n\t\t\t\t\t\tif (result.then) {\n\t\t\t\t\t\t\tif (!options.async)\n\t\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t\t'Can not synchronously iterate with promises as iterator results',\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn result.then((result) => {\n\t\t\t\t\t\t\t\tif (result.done) return iteratorDone(result);\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (result.done) return iteratorDone(result);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tthis.throw(error);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\treturn(value) {\n\t\t\t\t\tif (!this.done) {\n\t\t\t\t\t\tRETURN_DONE.value = value;\n\t\t\t\t\t\tthis.done = true;\n\t\t\t\t\t\tif (concatIterable.onDone) concatIterable.onDone();\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t\treturn RETURN_DONE;\n\t\t\t\t},\n\t\t\t\tthrow(error) {\n\t\t\t\t\tif (options.continueOnRecoverableError) throw error;\n\t\t\t\t\tthis.return();\n\t\t\t\t\tthrow error;\n\t\t\t\t},\n\t\t\t};\n\t\t};\n\t\treturn concatIterable;\n\t}\n\n\tflatMap(callback) {\n\t\tlet mappedIterable = new RangeIterable();\n\t\tmappedIterable.iterate = (options = NO_OPTIONS) => {\n\t\t\tlet iterator = (this.iterator = this.iterate(options));\n\t\t\tlet isFirst = true;\n\t\t\tlet currentSubIterator;\n\t\t\treturn {\n\t\t\t\tnext(resolvedResult) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\tif (currentSubIterator) {\n\t\t\t\t\t\t\t\tlet result;\n\t\t\t\t\t\t\t\tif (resolvedResult) {\n\t\t\t\t\t\t\t\t\tresult = resolvedResult;\n\t\t\t\t\t\t\t\t\tresolvedResult = undefined;\n\t\t\t\t\t\t\t\t} else result = currentSubIterator.next();\n\t\t\t\t\t\t\t\tif (result.then) {\n\t\t\t\t\t\t\t\t\tif (!options.async)\n\t\t\t\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t\t\t\t'Can not synchronously iterate with promises as iterator results',\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\treturn result.then((result) => this.next(result));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!result.done) {\n\t\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tlet result;\n\t\t\t\t\t\t\tif (resolvedResult != undefined) {\n\t\t\t\t\t\t\t\tresult = resolvedResult;\n\t\t\t\t\t\t\t\tresolvedResult = undefined;\n\t\t\t\t\t\t\t} else result = iterator.next();\n\t\t\t\t\t\t\tif (result.then) {\n\t\t\t\t\t\t\t\tif (!options.async)\n\t\t\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t\t\t'Can not synchronously iterate with promises as iterator results',\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tcurrentSubIterator = undefined;\n\t\t\t\t\t\t\t\treturn result.then((result) => this.next(result));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (result.done) {\n\t\t\t\t\t\t\t\tif (mappedIterable.onDone) mappedIterable.onDone();\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tlet value = callback(result.value);\n\t\t\t\t\t\t\t\tif (value?.then) {\n\t\t\t\t\t\t\t\t\tif (!options.async)\n\t\t\t\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t\t\t\t'Can not synchronously iterate with promises as iterator results',\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\treturn value.then(\n\t\t\t\t\t\t\t\t\t\t(value) => {\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\tArray.isArray(value) ||\n\t\t\t\t\t\t\t\t\t\t\t\tvalue instanceof RangeIterable\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\tcurrentSubIterator = value[Symbol.iterator]();\n\t\t\t\t\t\t\t\t\t\t\t\treturn this.next();\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tcurrentSubIterator = null;\n\t\t\t\t\t\t\t\t\t\t\t\treturn { value };\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t(error) => {\n\t\t\t\t\t\t\t\t\t\t\tif (options.continueOnRecoverableError)\n\t\t\t\t\t\t\t\t\t\t\t\terror.continueIteration = true;\n\t\t\t\t\t\t\t\t\t\t\tthis.throw(error);\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (Array.isArray(value) || value instanceof RangeIterable)\n\t\t\t\t\t\t\t\t\tcurrentSubIterator = value[Symbol.iterator]();\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tcurrentSubIterator = null;\n\t\t\t\t\t\t\t\t\treturn { value };\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tif (options.continueOnRecoverableError)\n\t\t\t\t\t\t\t\t\terror.continueIteration = true;\n\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} while (true);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tthis.throw(error);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\treturn() {\n\t\t\t\t\tif (mappedIterable.onDone) mappedIterable.onDone();\n\t\t\t\t\tif (currentSubIterator) currentSubIterator.return();\n\t\t\t\t\treturn iterator.return();\n\t\t\t\t},\n\t\t\t\tthrow(error) {\n\t\t\t\t\tif (options.continueOnRecoverableError) throw error;\n\t\t\t\t\tif (mappedIterable.onDone) mappedIterable.onDone();\n\t\t\t\t\tif (currentSubIterator) currentSubIterator.return();\n\t\t\t\t\tthis.return();\n\t\t\t\t\tthrow error;\n\t\t\t\t},\n\t\t\t};\n\t\t};\n\t\treturn mappedIterable;\n\t}\n\n\tslice(start, end) {\n\t\tlet iterable = this.map((element, i) => {\n\t\t\tif (i < start) return SKIP;\n\t\t\tif (i >= end) {\n\t\t\t\tDONE.value = element;\n\t\t\t\treturn DONE;\n\t\t\t}\n\t\t\treturn element;\n\t\t});\n\t\titerable.handleError = (error, i) => {\n\t\t\tif (i < start) return SKIP;\n\t\t\tif (i >= end) {\n\t\t\t\treturn DONE;\n\t\t\t}\n\t\t\tthrow error;\n\t\t};\n\t\treturn iterable;\n\t}\n\tmapError(catch_callback) {\n\t\tlet iterable = this.map((element) => {\n\t\t\treturn element;\n\t\t});\n\t\tlet iterate = iterable.iterate;\n\t\titerable.iterate = (options = NO_OPTIONS) => {\n\t\t\t// we need to ensure the whole stack\n\t\t\t// of iterables is set up to handle recoverable errors and continue iteration\n\t\t\treturn iterate({ ...options, continueOnRecoverableError: true });\n\t\t};\n\t\titerable.returnRecoverableErrors = catch_callback;\n\t\treturn iterable;\n\t}\n\tnext() {\n\t\tif (!this.iterator) this.iterator = this.iterate();\n\t\treturn this.iterator.next();\n\t}\n\ttoJSON() {\n\t\tif (this.asArray && this.asArray.forEach) {\n\t\t\treturn this.asArray;\n\t\t}\n\t\tconst error = new Error(\n\t\t\t'Can not serialize async iterables without first calling resolving asArray',\n\t\t);\n\t\terror.resolution = this.asArray;\n\t\tthrow error;\n\t\t//return Array.from(this)\n\t}\n\tget asArray() {\n\t\tif (this._asArray) return this._asArray;\n\t\tlet promise = new Promise((resolve, reject) => {\n\t\t\tlet iterator = this.iterate(true);\n\t\t\tlet array = [];\n\t\t\tlet iterable = this;\n\t\t\tObject.defineProperty(array, 'iterable', { value: iterable });\n\t\t\tfunction next(result) {\n\t\t\t\twhile (result.done !== true) {\n\t\t\t\t\tif (result.then) {\n\t\t\t\t\t\treturn result.then(next);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tarray.push(result.value);\n\t\t\t\t\t}\n\t\t\t\t\tresult = iterator.next();\n\t\t\t\t}\n\t\t\t\tresolve((iterable._asArray = array));\n\t\t\t}\n\t\t\tnext(iterator.next());\n\t\t});\n\t\tpromise.iterable = this;\n\t\treturn this._asArray || (this._asArray = promise);\n\t}\n\tresolveData() {\n\t\treturn this.asArray;\n\t}\n\tat(index) {\n\t\tfor (let entry of this) {\n\t\t\tif (index-- === 0) return entry;\n\t\t}\n\t}\n}\nRangeIterable.prototype.DONE = DONE;\n","import { getAddress, orderedBinary } from './native.js';\n\nconst REUSE_BUFFER_MODE = 512;\nconst writeUint32Key = (key, target, start) => {\n\t(target.dataView || (target.dataView = new DataView(target.buffer, 0, target.length))).setUint32(start, key, true);\n\treturn start + 4;\n};\nconst readUint32Key = (target, start) => {\n\treturn (target.dataView || (target.dataView = new DataView(target.buffer, 0, target.length))).getUint32(start, true);\n};\nconst writeBufferKey = (key, target, start) => {\n\ttarget.set(key, start);\n\treturn key.length + start;\n};\nconst Uint8ArraySlice = Uint8Array.prototype.slice;\nconst readBufferKey = (target, start, end) => {\n\treturn Uint8ArraySlice.call(target, start, end);\n};\n\nlet lastEncodedValue, bytes;\nexport function applyKeyHandling(store) {\n \tif (store.encoding == 'ordered-binary') {\n\t\tstore.encoder = store.decoder = {\n\t\t\twriteKey: orderedBinary.writeKey,\n\t\t\treadKey: orderedBinary.readKey,\n\t\t};\n\t}\n\tif (store.encoder && store.encoder.writeKey && !store.encoder.encode) {\n\t\tstore.encoder.encode = function(value, mode) {\n\t\t\tif (typeof value !== 'object' && value && value === lastEncodedValue) {\n\t\t\t\t// reuse the last serialized bytes\n\t\t\t\t// NOTE that it is very important that nothing else calls saveKey with saveTo: false\n\t\t\t} else {\n\t\t\t\tlastEncodedValue = value;\n\t\t\t\tbytes = saveKey(value, this.writeKey, false, store.maxKeySize);\n\t\t\t}\n\t\t\tif (bytes.end > 0 && !(REUSE_BUFFER_MODE & mode)) {\n\t\t\t\treturn bytes.subarray(bytes.start, bytes.end);\n\t\t\t}\n\t\t\treturn bytes;\n\t\t};\n\t\tstore.encoder.copyBuffers = true; // just an indicator for the buffer reuse in write.js\n\t}\n\tif (store.decoder && store.decoder.readKey && !store.decoder.decode) {\n\t\tstore.decoder.decode = function(buffer) { return this.readKey(buffer, 0, buffer.length); };\n\t\tstore.decoderCopies = true;\n\t}\n\tif (store.keyIsUint32 || store.keyEncoding == 'uint32') {\n\t\tstore.writeKey = writeUint32Key;\n\t\tstore.readKey = readUint32Key;\n\t} else if (store.keyIsBuffer || store.keyEncoding == 'binary') {\n\t\tstore.writeKey = writeBufferKey;\n\t\tstore.readKey = readBufferKey;\n\t} else if (store.keyEncoder) {\n\t\tstore.writeKey = store.keyEncoder.writeKey;\n\t\tstore.readKey = store.keyEncoder.readKey;\n\t} else {\n\t\tstore.writeKey = orderedBinary.writeKey;\n\t\tstore.readKey = orderedBinary.readKey;\n\t}\n}\n\nlet saveBuffer, uint32, saveDataView = { setFloat64() {}, setUint32() {} }, saveDataAddress;\nlet savePosition = 8000;\nlet DYNAMIC_KEY_BUFFER_SIZE = 8192;\nfunction allocateSaveBuffer() {\n\tsaveBuffer = typeof Buffer != 'undefined' ? Buffer.alloc(DYNAMIC_KEY_BUFFER_SIZE) : new Uint8Array(DYNAMIC_KEY_BUFFER_SIZE);\n\tuint32 = null;\n\tsaveBuffer.buffer.address = getAddress(saveBuffer.buffer);\n\tsaveDataAddress = saveBuffer.buffer.address;\n\t// TODO: Conditionally only do this for key sequences?\n\tsaveDataView.setUint32(savePosition, 0xffffffff);\n\tsaveDataView.setFloat64(savePosition + 4, saveDataAddress, true); // save a pointer from the old buffer to the new address for the sake of the prefetch sequences\n\tsaveDataView = saveBuffer.dataView || (saveBuffer.dataView = new DataView(saveBuffer.buffer, saveBuffer.byteOffset, saveBuffer.byteLength));\n\tsavePosition = 0;\n}\nexport function saveKey(key, writeKey, saveTo, maxKeySize, flags) {\n\tif (savePosition > 7800) {\n\t\tallocateSaveBuffer();\n\t}\n\tlet start = savePosition;\n\ttry {\n\t\tsavePosition = key === undefined ? start + 4 :\n\t\t\twriteKey(key, saveBuffer, start + 4);\n\t} catch (error) {\n\t\tsaveBuffer.fill(0, start + 4); // restore zeros\n\t\tif (error.name == 'RangeError') {\n\t\t\tif (8180 - start < maxKeySize) {\n\t\t\t\tallocateSaveBuffer(); // try again:\n\t\t\t\treturn saveKey(key, writeKey, saveTo, maxKeySize);\n\t\t\t}\n\t\t\tthrow new Error('Key was too large, max key size is ' + maxKeySize);\n\t\t} else\n\t\t\tthrow error;\n\t}\n\tlet length = savePosition - start - 4;\n\tif (length > maxKeySize) {\n\t\tthrow new Error('Key of size ' + length + ' was too large, max key size is ' + maxKeySize);\n\t}\n\tif (savePosition >= 8160) { // need to reserve enough room at the end for pointers\n\t\tsavePosition = start // reset position\n\t\tallocateSaveBuffer(); // try again:\n\t\treturn saveKey(key, writeKey, saveTo, maxKeySize);\n\t}\n\tif (saveTo) {\n\t\tsaveDataView.setUint32(start, flags ? length | flags : length, true); // save the length\n\t\tsaveTo.saveBuffer = saveBuffer;\n\t\tsavePosition = (savePosition + 12) & 0xfffffc;\n\t\treturn start + saveDataAddress;\n\t} else {\n\t\tsaveBuffer.start = start + 4;\n\t\tsaveBuffer.end = savePosition;\n\t\tsavePosition = (savePosition + 7) & 0xfffff8; // full 64-bit word alignment since these are usually copied\n\t\treturn saveBuffer;\n\t}\n}","import { RangeIterable } from './util/RangeIterable.js';\nimport {\n\tgetAddress,\n\tCursor,\n\tTxn,\n\torderedBinary,\n\tlmdbError,\n\tgetByBinary,\n\tsetGlobalBuffer,\n\tprefetch,\n\titerate,\n\tposition as doPosition,\n\tresetTxn,\n\tgetCurrentValue,\n\tgetCurrentShared,\n\tgetStringByBinary,\n\tglobalBuffer,\n\tgetSharedBuffer,\n\tstartRead,\n\tsetReadCallback,\n\tdirectWrite,\n\tgetUserSharedBuffer,\n\tnotifyUserCallbacks,\n\tattemptLock,\n\tunlock,\n} from './native.js';\nimport { saveKey } from './keys.js';\nconst IF_EXISTS = 3.542694326329068e-103;\nconst DEFAULT_BEGINNING_KEY = Buffer.from([5]); // the default starting key for iteration, which excludes symbols/metadata\nconst ITERATOR_DONE = { done: true, value: undefined };\nconst Uint8ArraySlice = Uint8Array.prototype.slice;\nlet getValueBytes = globalBuffer;\nif (!getValueBytes.maxLength) {\n\tgetValueBytes.maxLength = getValueBytes.length;\n\tgetValueBytes.isGlobal = true;\n\tObject.defineProperty(getValueBytes, 'length', {\n\t\tvalue: getValueBytes.length,\n\t\twritable: true,\n\t\tconfigurable: true,\n\t});\n}\nconst START_ADDRESS_POSITION = 4064;\nconst NEW_BUFFER_THRESHOLD = 0x8000;\nconst SOURCE_SYMBOL = Symbol.for('source');\nexport const UNMODIFIED = {};\nlet mmaps = [];\n\nexport function addReadMethods(\n\tLMDBStore,\n\t{ maxKeySize, env, keyBytes, keyBytesView, getLastVersion, getLastTxnId },\n) {\n\tlet readTxn,\n\t\treadTxnRenewed,\n\t\tasSafeBuffer = false;\n\tlet renewId = 1;\n\tlet outstandingReads = 0;\n\tObject.assign(LMDBStore.prototype, {\n\t\tgetString(id, options) {\n\t\t\tlet txn =\n\t\t\t\tenv.writeTxn ||\n\t\t\t\t(options && options.transaction) ||\n\t\t\t\t(readTxnRenewed ? readTxn : renewReadTxn(this));\n\t\t\tlet string = getStringByBinary(\n\t\t\t\tthis.dbAddress,\n\t\t\t\tthis.writeKey(id, keyBytes, 0),\n\t\t\t\ttxn.address || 0,\n\t\t\t);\n\t\t\tif (typeof string === 'number') {\n\t\t\t\t// indicates the buffer wasn't large enough\n\t\t\t\tthis._allocateGetBuffer(string);\n\t\t\t\t// and then try again\n\t\t\t\tstring = getStringByBinary(\n\t\t\t\t\tthis.dbAddress,\n\t\t\t\t\tthis.writeKey(id, keyBytes, 0),\n\t\t\t\t\ttxn.address || 0,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (string) this.lastSize = string.length;\n\t\t\treturn string;\n\t\t},\n\t\tgetBinaryFast(id, options) {\n\t\t\tlet rc;\n\t\t\tlet txn =\n\t\t\t\tenv.writeTxn ||\n\t\t\t\t(options && options.transaction) ||\n\t\t\t\t(readTxnRenewed ? readTxn : renewReadTxn(this));\n\t\t\trc = this.lastSize = getByBinary(\n\t\t\t\tthis.dbAddress,\n\t\t\t\tthis.writeKey(id, keyBytes, 0),\n\t\t\t\t(options && options.ifNotTxnId) || 0,\n\t\t\t\ttxn.address || 0,\n\t\t\t);\n\t\t\tif (rc < 0) {\n\t\t\t\tif (rc == -30798)\n\t\t\t\t\t// MDB_NOTFOUND\n\t\t\t\t\treturn; // undefined\n\t\t\t\tif (rc == -30004)\n\t\t\t\t\t// txn id matched\n\t\t\t\t\treturn UNMODIFIED;\n\t\t\t\tif (\n\t\t\t\t\trc == -30781 /*MDB_BAD_VALSIZE*/ &&\n\t\t\t\t\tthis.writeKey(id, keyBytes, 0) == 0\n\t\t\t\t)\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\tid === undefined\n\t\t\t\t\t\t\t? 'A key is required for get, but is undefined'\n\t\t\t\t\t\t\t: 'Zero length key is not allowed in LMDB',\n\t\t\t\t\t);\n\t\t\t\tif (rc == -30000)\n\t\t\t\t\t// int32 overflow, read uint32\n\t\t\t\t\trc = this.lastSize = keyBytesView.getUint32(0, true);\n\t\t\t\telse if (rc == -30001) {\n\t\t\t\t\t// shared buffer\n\t\t\t\t\tthis.lastSize = keyBytesView.getUint32(0, true);\n\t\t\t\t\tlet bufferId = keyBytesView.getUint32(4, true);\n\t\t\t\t\tlet bytes = getMMapBuffer(bufferId, this.lastSize);\n\t\t\t\t\treturn asSafeBuffer ? Buffer.from(bytes) : bytes;\n\t\t\t\t} else throw lmdbError(rc);\n\t\t\t}\n\t\t\tlet compression = this.compression;\n\t\t\tlet bytes = compression ? compression.getValueBytes : getValueBytes;\n\t\t\tif (rc > bytes.maxLength) {\n\t\t\t\t// this means the target buffer wasn't big enough, so the get failed to copy all the data from the database, need to either grow or use special buffer\n\t\t\t\treturn this._returnLargeBuffer(() =>\n\t\t\t\t\tgetByBinary(\n\t\t\t\t\t\tthis.dbAddress,\n\t\t\t\t\t\tthis.writeKey(id, keyBytes, 0),\n\t\t\t\t\t\t0,\n\t\t\t\t\t\ttxn.address || 0,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t\tbytes.length = this.lastSize;\n\t\t\treturn bytes;\n\t\t},\n\t\tgetBFAsync(id, options, callback) {\n\t\t\tlet txn =\n\t\t\t\tenv.writeTxn ||\n\t\t\t\t(options && options.transaction) ||\n\t\t\t\t(readTxnRenewed ? readTxn : renewReadTxn(this));\n\t\t\ttxn.refCount = (txn.refCount || 0) + 1;\n\t\t\toutstandingReads++;\n\t\t\tif (!txn.address) {\n\t\t\t\tthrow new Error('Invalid transaction, it has no address');\n\t\t\t}\n\t\t\tlet address = recordReadInstruction(\n\t\t\t\ttxn.address,\n\t\t\t\tthis.db.dbi,\n\t\t\t\tid,\n\t\t\t\tthis.writeKey,\n\t\t\t\tmaxKeySize,\n\t\t\t\t(rc, bufferId, offset, size) => {\n\t\t\t\t\tif (rc && rc !== 1) callback(lmdbError(rc));\n\t\t\t\t\toutstandingReads--;\n\t\t\t\t\tlet buffer = mmaps[bufferId];\n\t\t\t\t\tif (!buffer) {\n\t\t\t\t\t\tbuffer = mmaps[bufferId] = getSharedBuffer(bufferId, env.address);\n\t\t\t\t\t}\n\t\t\t\t\t//console.log({bufferId, offset, size})\n\t\t\t\t\tif (buffer.isSharedMap) {\n\t\t\t\t\t\t// using LMDB shared memory\n\t\t\t\t\t\t// TODO: We may want explicit support for clearing aborting the transaction on the next event turn,\n\t\t\t\t\t\t// but for now we are relying on the GC to cleanup transaction for larger blocks of memory\n\t\t\t\t\t\tlet bytes = new Uint8Array(buffer, offset, size);\n\t\t\t\t\t\tbytes.txn = txn;\n\t\t\t\t\t\tcallback(bytes, 0, size);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// using copied memory\n\t\t\t\t\t\ttxn.done(); // decrement and possibly abort\n\t\t\t\t\t\tcallback(buffer, offset, size);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t);\n\t\t\tif (address) {\n\t\t\t\tstartRead(address, () => {\n\t\t\t\t\tresolveReads();\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tgetAsync(id, options, callback) {\n\t\t\tlet promise;\n\t\t\tif (!callback) promise = new Promise((resolve) => (callback = resolve));\n\t\t\tthis.getBFAsync(id, options, (buffer, offset, size) => {\n\t\t\t\tif (this.useVersions) {\n\t\t\t\t\t// TODO: And get the version\n\t\t\t\t\toffset += 8;\n\t\t\t\t\tsize -= 8;\n\t\t\t\t}\n\t\t\t\tlet bytes = new Uint8Array(buffer, offset, size);\n\t\t\t\tlet value;\n\t\t\t\tif (this.decoder) {\n\t\t\t\t\t// the decoder potentially uses the data from the buffer in the future and needs a stable buffer\n\t\t\t\t\tvalue = bytes && this.decoder.decode(bytes);\n\t\t\t\t} else if (this.encoding == 'binary') {\n\t\t\t\t\tvalue = bytes;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = Buffer.prototype.utf8Slice.call(bytes, 0, size);\n\t\t\t\t\tif (this.encoding == 'json' && value) value = JSON.parse(value);\n\t\t\t\t}\n\t\t\t\tcallback(value);\n\t\t\t});\n\t\t\treturn promise;\n\t\t},\n\t\tretain(data, options) {\n\t\t\tif (!data) return;\n\t\t\tlet source = data[SOURCE_SYMBOL];\n\t\t\tlet buffer = source ? source.bytes : data;\n\t\t\tif (!buffer.isGlobal && !env.writeTxn) {\n\t\t\t\tlet txn =\n\t\t\t\t\toptions?.transaction ||\n\t\t\t\t\t(readTxnRenewed ? readTxn : renewReadTxn(this));\n\t\t\t\tbuffer.txn = txn;\n\n\t\t\t\ttxn.refCount = (txn.refCount || 0) + 1;\n\t\t\t\treturn data;\n\t\t\t} else {\n\t\t\t\tbuffer = Uint8ArraySlice.call(buffer, 0, this.lastSize);\n\t\t\t\tif (source) {\n\t\t\t\t\tsource.bytes = buffer;\n\t\t\t\t\treturn data;\n\t\t\t\t} else return buffer;\n\t\t\t}\n\t\t},\n\t\t_returnLargeBuffer(getFast) {\n\t\t\tlet bytes;\n\t\t\tlet compression = this.compression;\n\t\t\tif (asSafeBuffer && this.lastSize > NEW_BUFFER_THRESHOLD) {\n\t\t\t\t// used by getBinary to indicate it should create a dedicated buffer to receive this\n\t\t\t\tlet bytesToRestore;\n\t\t\t\ttry {\n\t\t\t\t\tif (compression) {\n\t\t\t\t\t\tbytesToRestore = compression.getValueBytes;\n\t\t\t\t\t\tlet dictionary = compression.dictionary || [];\n\t\t\t\t\t\tlet dictLength = (dictionary.length >> 3) << 3; // make sure it is word-aligned\n\t\t\t\t\t\tbytes = makeReusableBuffer(this.lastSize);\n\t\t\t\t\t\tcompression.setBuffer(\n\t\t\t\t\t\t\tbytes.buffer,\n\t\t\t\t\t\t\tbytes.byteOffset,\n\t\t\t\t\t\t\tthis.lastSize,\n\t\t\t\t\t\t\tdictionary,\n\t\t\t\t\t\t\tdictLength,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tcompression.getValueBytes = bytes;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbytesToRestore = getValueBytes;\n\t\t\t\t\t\tsetGlobalBuffer(\n\t\t\t\t\t\t\t(bytes = getValueBytes = makeReusableBuffer(this.lastSize)),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tgetFast();\n\t\t\t\t} finally {\n\t\t\t\t\tif (compression) {\n\t\t\t\t\t\tlet dictLength = (compression.dictionary.length >> 3) << 3;\n\t\t\t\t\t\tcompression.setBuffer(\n\t\t\t\t\t\t\tbytesToRestore.buffer,\n\t\t\t\t\t\t\tbytesToRestore.byteOffset,\n\t\t\t\t\t\t\tbytesToRestore.maxLength,\n\t\t\t\t\t\t\tcompression.dictionary,\n\t\t\t\t\t\t\tdictLength,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tcompression.getValueBytes = bytesToRestore;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetGlobalBuffer(bytesToRestore);\n\t\t\t\t\t\tgetValueBytes = bytesToRestore;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn bytes;\n\t\t\t}\n\t\t\t// grow our shared/static buffer to accomodate the size of the data\n\t\t\tbytes = this._allocateGetBuffer(this.lastSize);\n\t\t\t// and try again\n\t\t\tgetFast();\n\t\t\tbytes.length = this.lastSize;\n\t\t\treturn bytes;\n\t\t},\n\t\t_allocateGetBuffer(lastSize) {\n\t\t\tlet newLength = Math.min(Math.max(lastSize * 2, 0x1000), 0xfffffff8);\n\t\t\tlet bytes;\n\t\t\tif (this.compression) {\n\t\t\t\tlet dictionary =\n\t\t\t\t\tthis.compression.dictionary || Buffer.allocUnsafeSlow(0);\n\t\t\t\tlet dictLength = (dictionary.length >> 3) << 3; // make sure it is word-aligned\n\t\t\t\tbytes = Buffer.allocUnsafeSlow(newLength + dictLength);\n\t\t\t\tbytes.set(dictionary); // copy dictionary into start\n\t\t\t\t// the section after the dictionary is the target area for get values\n\t\t\t\tbytes = bytes.subarray(dictLength);\n\t\t\t\tthis.compression.setBuffer(\n\t\t\t\t\tbytes.buffer,\n\t\t\t\t\tbytes.byteOffset,\n\t\t\t\t\tnewLength,\n\t\t\t\t\tdictionary,\n\t\t\t\t\tdictLength,\n\t\t\t\t);\n\t\t\t\tbytes.maxLength = newLength;\n\t\t\t\tObject.defineProperty(bytes, 'length', {\n\t\t\t\t\tvalue: newLength,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t});\n\t\t\t\tthis.compression.getValueBytes = bytes;\n\t\t\t} else {\n\t\t\t\tbytes = makeReusableBuffer(newLength);\n\t\t\t\tsetGlobalBuffer((getValueBytes = bytes));\n\t\t\t}\n\t\t\tbytes.isGlobal = true;\n\t\t\treturn bytes;\n\t\t},\n\t\tgetBinary(id, options) {\n\t\t\ttry {\n\t\t\t\tasSafeBuffer = true;\n\t\t\t\tlet fastBuffer = this.getBinaryFast(id, options);\n\t\t\t\treturn (\n\t\t\t\t\tfastBuffer &&\n\t\t\t\t\t(fastBuffer.isGlobal\n\t\t\t\t\t\t? Uint8ArraySlice.call(fastBuffer, 0, this.lastSize)\n\t\t\t\t\t\t: fastBuffer)\n\t\t\t\t);\n\t\t\t} finally {\n\t\t\t\tasSafeBuffer = false;\n\t\t\t}\n\t\t},\n\t\tgetSharedBinary(id, options) {\n\t\t\tlet fastBuffer = this.getBinaryFast(id, options);\n\t\t\tif (fastBuffer) {\n\t\t\t\tif (fastBuffer.isGlobal || writeTxn)\n\t\t\t\t\treturn Uint8ArraySlice.call(fastBuffer, 0, this.lastSize);\n\t\t\t\tfastBuffer.txn = options && options.transaction;\n\t\t\t\toptions.transaction.refCount = (options.transaction.refCount || 0) + 1;\n\t\t\t\treturn fastBuffer;\n\t\t\t}\n\t\t},\n\t\tget(id, options) {\n\t\t\tif (this.decoderCopies) {\n\t\t\t\t// the decoder copies any data, so we can use the fast binary retrieval that overwrites the same buffer space\n\t\t\t\tlet bytes = this.getBinaryFast(id, options);\n\t\t\t\treturn (\n\t\t\t\t\tbytes &&\n\t\t\t\t\t(bytes == UNMODIFIED\n\t\t\t\t\t\t? UNMODIFIED\n\t\t\t\t\t\t: this.decoder.decode(bytes, options))\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (this.encoding == 'binary') return this.getBinary(id, options);\n\t\t\tif (this.decoder) {\n\t\t\t\t// the decoder potentially uses the data from the buffer in the future and needs a stable buffer\n\t\t\t\tlet bytes = this.getBinary(id, options);\n\t\t\t\treturn (\n\t\t\t\t\tbytes &&\n\t\t\t\t\t(bytes == UNMODIFIED ? UNMODIFIED : this.decoder.decode(bytes))\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tlet result = this.getString(id, options);\n\t\t\tif (result) {\n\t\t\t\tif (this.encoding == 'json') return JSON.parse(result);\n\t\t\t}\n\t\t\treturn result;\n\t\t},\n\t\tgetEntry(id, options) {\n\t\t\tlet value = this.get(id, options);\n\t\t\tif (value !== undefined) {\n\t\t\t\tif (this.useVersions)\n\t\t\t\t\treturn {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tversion: getLastVersion(),\n\t\t\t\t\t\t//size: this.lastSize\n\t\t\t\t\t};\n\t\t\t\telse\n\t\t\t\t\treturn {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t//size: this.lastSize\n\t\t\t\t\t};\n\t\t\t}\n\t\t},\n\n\t\tdirectWrite(id, options) {\n\t\t\tlet rc;\n\t\t\tlet txn =\n\t\t\t\tenv.writeTxn ||\n\t\t\t\t(options && options.transaction) ||\n\t\t\t\t(readTxnRenewed ? readTxn : renewReadTxn(this));\n\t\t\tlet keySize = this.writeKey(id, keyBytes, 0);\n\t\t\tlet dataOffset = ((keySize >> 3) + 1) << 3;\n\t\t\tkeyBytes.set(options.bytes, dataOffset);\n\t\t\trc = directWrite(\n\t\t\t\tthis.dbAddress,\n\t\t\t\tkeySize,\n\t\t\t\toptions.offset,\n\t\t\t\toptions.bytes.length,\n\t\t\t\ttxn.address || 0,\n\t\t\t);\n\t\t\tif (rc < 0) lmdbError(rc);\n\t\t},\n\n\t\tgetUserSharedBuffer(id, defaultBuffer, options) {\n\t\t\tlet keySize;\n\t\t\tconst setKeyBytes = () => {\n\t\t\t\tif (options?.envKey) keySize = this.writeKey(id, keyBytes, 0);\n\t\t\t\telse {\n\t\t\t\t\tkeyBytes.dataView.setUint32(0, this.db.dbi);\n\t\t\t\t\tkeySize = this.writeKey(id, keyBytes, 4);\n\t\t\t\t}\n\t\t\t};\n\t\t\tsetKeyBytes();\n\t\t\tlet sharedBuffer = getUserSharedBuffer(\n\t\t\t\tenv.address,\n\t\t\t\tkeySize,\n\t\t\t\tdefaultBuffer,\n\t\t\t\toptions?.callback,\n\t\t\t);\n\t\t\tsharedBuffer.notify = () => {\n\t\t\t\tsetKeyBytes();\n\t\t\t\treturn notifyUserCallbacks(env.address, keySize);\n\t\t\t};\n\t\t\treturn sharedBuffer;\n\t\t},\n\n\t\tattemptLock(id, version, callback) {\n\t\t\tif (!env.address) throw new Error('Can not operate on a closed database');\n\t\t\tkeyBytes.dataView.setUint32(0, this.db.dbi);\n\t\t\tkeyBytes.dataView.setFloat64(4, version);\n\t\t\tlet keySize = this.writeKey(id, keyBytes, 12);\n\t\t\treturn attemptLock(env.address, keySize, callback);\n\t\t},\n\n\t\tunlock(id, version, onlyCheck) {\n\t\t\tif (!env.address) throw new Error('Can not operate on a closed database');\n\t\t\tkeyBytes.dataView.setUint32(0, this.db.dbi);\n\t\t\tkeyBytes.dataView.setFloat64(4, version);\n\t\t\tlet keySize = this.writeKey(id, keyBytes, 12);\n\t\t\treturn unlock(env.address, keySize, onlyCheck);\n\t\t},\n\t\thasLock(id, version) {\n\t\t\treturn this.unlock(id, version, true);\n\t\t},\n\n\t\tresetReadTxn() {\n\t\t\tresetReadTxn();\n\t\t},\n\t\t_commitReadTxn() {\n\t\t\tif (readTxn) {\n\t\t\t\treadTxn.isCommitted = true;\n\t\t\t\treadTxn.commit();\n\t\t\t}\n\t\t\tlastReadTxnRef = null;\n\t\t\treadTxnRenewed = null;\n\t\t\treadTxn = null;\n\t\t},\n\t\tensureReadTxn() {\n\t\t\tif (!env.writeTxn && !readTxnRenewed) renewReadTxn(this);\n\t\t},\n\t\tdoesExist(key, versionOrValue, options) {\n\t\t\tif (versionOrValue == null) {\n\t\t\t\t// undefined means the entry exists, null is used specifically to check for the entry *not* existing\n\t\t\t\treturn (\n\t\t\t\t\t(this.getBinaryFast(key, options) === undefined) ==\n\t\t\t\t\t(versionOrValue === null)\n\t\t\t\t);\n\t\t\t} else if (this.useVersions) {\n\t\t\t\treturn (\n\t\t\t\t\tthis.getBinaryFast(key, options) !== undefined &&\n\t\t\t\t\t(versionOrValue === IF_EXISTS || getLastVersion() === versionOrValue)\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tif (versionOrValue && versionOrValue['\\x10binary-data\\x02'])\n\t\t\t\t\tversionOrValue = versionOrValue['\\x10binary-data\\x02'];\n\t\t\t\telse if (this.encoder)\n\t\t\t\t\tversionOrValue = this.encoder.encode(versionOrValue);\n\t\t\t\tif (typeof versionOrValue == 'string')\n\t\t\t\t\tversionOrValue = Buffer.from(versionOrValue);\n\t\t\t\tlet defaultOptions = { start: versionOrValue, exactMatch: true };\n\t\t\t\treturn (\n\t\t\t\t\tthis.getValuesCount(\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\toptions ? Object.assign(defaultOptions, options) : defaultOptions,\n\t\t\t\t\t) > 0\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\tgetValues(key, options) {\n\t\t\tlet defaultOptions = {\n\t\t\t\tkey,\n\t\t\t\tvaluesForKey: true,\n\t\t\t};\n\t\t\tif (options && options.snapshot === false)\n\t\t\t\tthrow new Error('Can not disable snapshots for getValues');\n\t\t\treturn this.getRange(\n\t\t\t\toptions ? Object.assign(defaultOptions, options) : defaultOptions,\n\t\t\t);\n\t\t},\n\t\tgetKeys(options) {\n\t\t\tif (!options) options = {};\n\t\t\toptions.values = false;\n\t\t\treturn this.getRange(options);\n\t\t},\n\t\tgetCount(options) {\n\t\t\tif (!options) options = {};\n\t\t\toptions.onlyCount = true;\n\t\t\treturn this.getRange(options).iterate();\n\t\t},\n\t\tgetKeysCount(options) {\n\t\t\tif (!options) options = {};\n\t\t\toptions.onlyCount = true;\n\t\t\toptions.values = false;\n\t\t\treturn this.getRange(options).iterate();\n\t\t},\n\t\tgetValuesCount(key, options) {\n\t\t\tif (!options) options = {};\n\t\t\toptions.key = key;\n\t\t\toptions.valuesForKey = true;\n\t\t\toptions.onlyCount = true;\n\t\t\treturn this.getRange(options).iterate();\n\t\t},\n\t\tgetRange(options) {\n\t\t\tlet iterable = new RangeIterable();\n\t\t\tlet textDecoder = new TextDecoder();\n\t\t\tif (!options) options = {};\n\t\t\tlet includeValues = options.values !== false;\n\t\t\tlet includeVersions = options.versions;\n\t\t\tlet valuesForKey = options.valuesForKey;\n\t\t\tlet limit = options.limit;\n\t\t\tlet db = this.db;\n\t\t\tlet snapshot = options.snapshot;\n\t\t\tif (snapshot === false && this.dupSort && includeValues)\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'Can not disable snapshot on a' + ' dupSort data store',\n\t\t\t\t);\n\t\t\tlet compression = this.compression;\n\t\t\titerable.iterate = () => {\n\t\t\t\tconst reverse = options.reverse;\n\t\t\t\tlet currentKey = valuesForKey\n\t\t\t\t\t? options.key\n\t\t\t\t\t: reverse || 'start' in options\n\t\t\t\t\t\t? options.start\n\t\t\t\t\t\t: DEFAULT_BEGINNING_KEY;\n\t\t\t\tlet count = 0;\n\t\t\t\tlet cursor, cursorRenewId, cursorAddress;\n\t\t\t\tlet txn;\n\t\t\t\tlet flags =\n\t\t\t\t\t(includeValues ? 0x100 : 0) |\n\t\t\t\t\t(reverse ? 0x400 : 0) |\n\t\t\t\t\t(valuesForKey ? 0x800 : 0) |\n\t\t\t\t\t(options.exactMatch ? 0x4000 : 0) |\n\t\t\t\t\t(options.inclusiveEnd ? 0x8000 : 0) |\n\t\t\t\t\t(options.exclusiveStart ? 0x10000 : 0);\n\t\t\t\tlet store = this;\n\t\t\t\tfunction resetCursor() {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (cursor) finishCursor();\n\t\t\t\t\t\tlet txnAddress;\n\t\t\t\t\t\ttxn = options.transaction;\n\t\t\t\t\t\tif (txn) {\n\t\t\t\t\t\t\tif (txn.isDone)\n\t\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t\t'Can not iterate on range with transaction that is already' +\n\t\t\t\t\t\t\t\t\t\t' done',\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\ttxnAddress = txn.address;\n\t\t\t\t\t\t\tif (!txnAddress) {\n\t\t\t\t\t\t\t\tthrow new Error('Invalid transaction, it has no address');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcursor = null;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlet writeTxn = env.writeTxn;\n\t\t\t\t\t\t\tif (writeTxn) snapshot = false;\n\t\t\t\t\t\t\ttxn =\n\t\t\t\t\t\t\t\tenv.writeTxn ||\n\t\t\t\t\t\t\t\toptions.transaction ||\n\t\t\t\t\t\t\t\t(readTxnRenewed ? readTxn : renewReadTxn(store));\n\t\t\t\t\t\t\tcursor = !writeTxn && db.availableCursor;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (cursor) {\n\t\t\t\t\t\t\tdb.availableCursor = null;\n\t\t\t\t\t\t\tflags |= 0x2000;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcursor = new Cursor(db, txnAddress || 0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcursorAddress = cursor.address;\n\t\t\t\t\t\tif (txn.use)\n\t\t\t\t\t\t\ttxn.use(); // track transaction so we always use the same one\n\t\t\t\t\t\telse txn.refCount = (txn.refCount || 0) + 1;\n\t\t\t\t\t\tif (snapshot === false) {\n\t\t\t\t\t\t\tcursorRenewId = renewId; // use shared read transaction\n\t\t\t\t\t\t\ttxn.renewingRefCount = (txn.renewingRefCount || 0) + 1; // need to know how many are renewing cursors\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tif (cursor) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tcursor.close();\n\t\t\t\t\t\t\t} catch (error) {}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tresetCursor();\n\t\t\t\tif (options.onlyCount) {\n\t\t\t\t\tflags |= 0x1000;\n\t\t\t\t\tlet count = position(options.offset);\n\t\t\t\t\tif (count < 0) lmdbError(count);\n\t\t\t\t\tfinishCursor();\n\t\t\t\t\treturn count;\n\t\t\t\t}\n\t\t\t\tfunction position(offset) {\n\t\t\t\t\tif (!env.address) {\n\t\t\t\t\t\tthrow new Error('Can not iterate on a closed database');\n\t\t\t\t\t}\n\t\t\t\t\tlet keySize =\n\t\t\t\t\t\tcurrentKey === undefined\n\t\t\t\t\t\t\t? 0\n\t\t\t\t\t\t\t: store.writeKey(currentKey, keyBytes, 0);\n\t\t\t\t\tlet endAddress;\n\t\t\t\t\tif (valuesForKey) {\n\t\t\t\t\t\tif (options.start === undefined && options.end === undefined)\n\t\t\t\t\t\t\tendAddress = 0;\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tlet startAddress;\n\t\t\t\t\t\t\tif (store.encoder.writeKey) {\n\t\t\t\t\t\t\t\tstartAddress = saveKey(\n\t\t\t\t\t\t\t\t\toptions.start,\n\t\t\t\t\t\t\t\t\tstore.encoder.writeKey,\n\t\t\t\t\t\t\t\t\titerable,\n\t\t\t\t\t\t\t\t\tmaxKeySize,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tkeyBytesView.setFloat64(\n\t\t\t\t\t\t\t\t\tSTART_ADDRESS_POSITION,\n\t\t\t\t\t\t\t\t\tstartAddress,\n\t\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tendAddress = saveKey(\n\t\t\t\t\t\t\t\t\toptions.end,\n\t\t\t\t\t\t\t\t\tstore.encoder.writeKey,\n\t\t\t\t\t\t\t\t\titerable,\n\t\t\t\t\t\t\t\t\tmaxKeySize,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\t(!options.start || options.start instanceof Uint8Array) &&\n\t\t\t\t\t\t\t\t(!options.end || options.end instanceof Uint8Array)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tstartAddress = saveKey(\n\t\t\t\t\t\t\t\t\toptions.start,\n\t\t\t\t\t\t\t\t\torderedBinary.writeKey,\n\t\t\t\t\t\t\t\t\titerable,\n\t\t\t\t\t\t\t\t\tmaxKeySize,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tkeyBytesView.setFloat64(\n\t\t\t\t\t\t\t\t\tSTART_ADDRESS_POSITION,\n\t\t\t\t\t\t\t\t\tstartAddress,\n\t\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tendAddress = saveKey(\n\t\t\t\t\t\t\t\t\toptions.end,\n\t\t\t\t\t\t\t\t\torderedBinary.writeKey,\n\t\t\t\t\t\t\t\t\titerable,\n\t\t\t\t\t\t\t\t\tmaxKeySize,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t\t'Only key-based encoding is supported for start/end values',\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tlet encoded = store.encoder.encode(options.start);\n\t\t\t\t\t\t\t\tlet bufferAddress =\n\t\t\t\t\t\t\t\t\tencoded.buffer.address ||\n\t\t\t\t\t\t\t\t\t(encoded.buffer.address =\n\t\t\t\t\t\t\t\t\t\tgetAddress(encoded.buffer) - encoded.byteOffset);\n\t\t\t\t\t\t\t\tstartAddress = bufferAddress + encoded.byteOffset;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else\n\t\t\t\t\t\tendAddress = saveKey(\n\t\t\t\t\t\t\treverse && !('end' in options)\n\t\t\t\t\t\t\t\t? DEFAULT_BEGINNING_KEY\n\t\t\t\t\t\t\t\t: options.end,\n\t\t\t\t\t\t\tstore.writeKey,\n\t\t\t\t\t\t\titerable,\n\t\t\t\t\t\t\tmaxKeySize,\n\t\t\t\t\t\t);\n\t\t\t\t\treturn doPosition(\n\t\t\t\t\t\tcursorAddress,\n\t\t\t\t\t\tflags,\n\t\t\t\t\t\toffset || 0,\n\t\t\t\t\t\tkeySize,\n\t\t\t\t\t\tendAddress,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tfunction finishCursor() {\n\t\t\t\t\tif (!cursor || txn.isDone) return;\n\t\t\t\t\tif (iterable.onDone) iterable.onDone();\n\t\t\t\t\tif (cursorRenewId) txn.renewingRefCount--;\n\t\t\t\t\tif (txn.refCount <= 1 && txn.notCurrent) {\n\t\t\t\t\t\tcursor.close(); // this must be closed before the transaction is aborted or it can cause a\n\t\t\t\t\t\t// segmentation fault\n\t\t\t\t\t}\n\t\t\t\t\tif (txn.done) txn.done();\n\t\t\t\t\telse if (--txn.refCount <= 0 && txn.notCurrent) {\n\t\t\t\t\t\ttxn.abort();\n\t\t\t\t\t\ttxn.isDone = true;\n\t\t\t\t\t}\n\t\t\t\t\tif (!txn.isDone) {\n\t\t\t\t\t\tif (db.availableCursor || txn != readTxn) {\n\t\t\t\t\t\t\tcursor.close();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// try to reuse it\n\t\t\t\t\t\t\tdb.availableCursor = cursor;\n\t\t\t\t\t\t\tdb.cursorTxn = txn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcursor = null;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tnext() {\n\t\t\t\t\t\tlet keySize, lastSize;\n\t\t\t\t\t\tif (cursorRenewId && (cursorRenewId != renewId || txn.isDone)) {\n\t\t\t\t\t\t\tif (flags & 0x10000) flags = flags & ~0x10000; // turn off exclusive start when repositioning\n\t\t\t\t\t\t\tresetCursor();\n\t\t\t\t\t\t\tkeySize = position(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!cursor) {\n\t\t\t\t\t\t\treturn ITERATOR_DONE;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (count === 0) {\n\t\t\t\t\t\t\t// && includeValues) // on first entry, get current value if we need to\n\t\t\t\t\t\t\tkeySize = position(options.offset);\n\t\t\t\t\t\t} else keySize = iterate(cursorAddress);\n\t\t\t\t\t\tif (keySize <= 0 || count++ >= limit) {\n\t\t\t\t\t\t\tif (keySize < -30700 && keySize !== -30798) lmdbError(keySize);\n\t\t\t\t\t\t\tfinishCursor();\n\t\t\t\t\t\t\treturn ITERATOR_DONE;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!valuesForKey || snapshot === false) {\n\t\t\t\t\t\t\tif (keySize > 20000) {\n\t\t\t\t\t\t\t\tif (keySize > 0x1000000) lmdbError(keySize - 0x100000000);\n\t\t\t\t\t\t\t\tthrow new Error('Invalid key size ' + keySize.toString(16));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcurrentKey = store.readKey(keyBytes, 32, keySize + 32);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (includeValues) {\n\t\t\t\t\t\t\tlet value;\n\t\t\t\t\t\t\tlastSize = keyBytesView.getUint32(0, true);\n\t\t\t\t\t\t\tlet bufferId = keyBytesView.getUint32(4, true);\n\t\t\t\t\t\t\tlet bytes;\n\t\t\t\t\t\t\tif (bufferId) {\n\t\t\t\t\t\t\t\tbytes = getMMapBuffer(bufferId, lastSize);\n\t\t\t\t\t\t\t\tif (store.encoding === 'binary') bytes = Buffer.from(bytes);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tbytes = compression ? compression.getValueBytes : getValueBytes;\n\t\t\t\t\t\t\t\tif (lastSize > bytes.maxLength) {\n\t\t\t\t\t\t\t\t\tstore.lastSize = lastSize;\n\t\t\t\t\t\t\t\t\tasSafeBuffer = store.encoding === 'binary';\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tbytes = store._returnLargeBuffer(() =>\n\t\t\t\t\t\t\t\t\t\t\tgetCurrentValue(cursorAddress),\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\t\t\t\tasSafeBuffer = false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else bytes.length = lastSize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (store.decoder) {\n\t\t\t\t\t\t\t\tvalue = store.decoder.decode(bytes, lastSize);\n\t\t\t\t\t\t\t} else if (store.encoding == 'binary')\n\t\t\t\t\t\t\t\tvalue = bytes.isGlobal\n\t\t\t\t\t\t\t\t\t? Uint8ArraySlice.call(bytes, 0, lastSize)\n\t\t\t\t\t\t\t\t\t: bytes;\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t// use the faster utf8Slice if available, otherwise fall back to TextDecoder (a little slower)\n\t\t\t\t\t\t\t\t// note applying Buffer's utf8Slice to a Uint8Array works in Node, but not in Bun.\n\t\t\t\t\t\t\t\tvalue = bytes.utf8Slice\n\t\t\t\t\t\t\t\t\t? bytes.utf8Slice(0, lastSize)\n\t\t\t\t\t\t\t\t\t: textDecoder.decode(\n\t\t\t\t\t\t\t\t\t\t\tUint8ArraySlice.call(bytes, 0, lastSize),\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tif (store.encoding == 'json' && value)\n\t\t\t\t\t\t\t\t\tvalue = JSON.parse(value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (includeVersions)\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\t\tkey: currentKey,\n\t\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\t\tversion: getLastVersion(),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\telse if (valuesForKey)\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\t\tkey: currentKey,\n\t\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else if (includeVersions) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\tkey: currentKey,\n\t\t\t\t\t\t\t\t\tversion: getLastVersion(),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tvalue: currentKey,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\treturn() {\n\t\t\t\t\t\tfinishCursor();\n\t\t\t\t\t\treturn ITERATOR_DONE;\n\t\t\t\t\t},\n\t\t\t\t\tthrow() {\n\t\t\t\t\t\tfinishCursor();\n\t\t\t\t\t\treturn ITERATOR_DONE;\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t};\n\t\t\treturn iterable;\n\t\t},\n\n\t\tgetMany(keys, callback) {\n\t\t\t// this is an asynchronous get for multiple keys. It actually works by prefetching asynchronously,\n\t\t\t// allowing a separate thread/task to absorb the potentially largest cost: hard page faults (and disk I/O).\n\t\t\t// And then we just do standard sync gets (to deserialized data) to fulfil the callback/promise\n\t\t\t// once the prefetch occurs\n\t\t\tlet promise = callback\n\t\t\t\t? undefined\n\t\t\t\t: new Promise(\n\t\t\t\t\t\t(resolve) => (callback = (error, results) => resolve(results)),\n\t\t\t\t\t);\n\t\t\tthis.prefetch(keys, () => {\n\t\t\t\tlet results = new Array(keys.length);\n\t\t\t\tfor (let i = 0, l = keys.length; i < l; i++) {\n\t\t\t\t\tresults[i] = get.call(this, keys[i]);\n\t\t\t\t}\n\t\t\t\tcallback(null, results);\n\t\t\t});\n\t\t\treturn promise;\n\t\t},\n\t\tgetSharedBufferForGet(id, options) {\n\t\t\tlet txn =\n\t\t\t\tenv.writeTxn ||\n\t\t\t\t(options && options.transaction) ||\n\t\t\t\t(readTxnRenewed ? readTxn : renewReadTxn(this));\n\t\t\tthis.lastSize = this.keyIsCompatibility\n\t\t\t\t? txn.getBinaryShared(id)\n\t\t\t\t: this.db.get(this.writeKey(id, keyBytes, 0));\n\t\t\tif (this.lastSize === -30798) {\n\t\t\t\t// not found code\n\t\t\t\treturn; //undefined\n\t\t\t}\n\t\t\treturn this.lastSize;\n\t\t\tthis.lastSize = keyBytesView.getUint32(0, true);\n\t\t\tlet bufferIndex = keyBytesView.getUint32(12, true);\n\t\t\tlastOffset = keyBytesView.getUint32(8, true);\n\t\t\tlet buffer = buffers[bufferIndex];\n\t\t\tlet startOffset;\n\t\t\tif (\n\t\t\t\t!buffer ||\n\t\t\t\tlastOffset < (startOffset = buffer.startOffset) ||\n\t\t\t\tlastOffset + this.lastSize > startOffset + 0x100000000\n\t\t\t) {\n\t\t\t\tif (buffer) env.detachBuffer(buffer.buffer);\n\t\t\t\tstartOffset = (lastOffset >>> 16) * 0x10000;\n\t\t\t\tconsole.log(\n\t\t\t\t\t'make buffer for address',\n\t\t\t\t\tbufferIndex * 0x100000000 + startOffset,\n\t\t\t\t);\n\t\t\t\tbuffer = buffers[bufferIndex] = Buffer.from(\n\t\t\t\t\tgetBufferForAddress(bufferIndex * 0x100000000 + startOffset),\n\t\t\t\t);\n\t\t\t\tbuffer.startOffset = startOffset;\n\t\t\t}\n\t\t\tlastOffset -= startOffset;\n\t\t\treturn buffer;\n\t\t\treturn buffer.slice(\n\t\t\t\tlastOffset,\n\t\t\t\tlastOffset + this.lastSize,\n\t\t\t); /*Uint8ArraySlice.call(buffer, lastOffset, lastOffset + this.lastSize)*/\n\t\t},\n\t\tprefetch(keys, callback) {\n\t\t\tif (!keys) throw new Error('An array of keys must be provided');\n\t\t\tif (!keys.length) {\n\t\t\t\tif (callback) {\n\t\t\t\t\tcallback(null);\n\t\t\t\t\treturn;\n\t\t\t\t} else return Promise.resolve();\n\t\t\t}\n\t\t\tlet buffers = [];\n\t\t\tlet startPosition;\n\t\t\tlet bufferHolder = {};\n\t\t\tlet lastBuffer;\n\t\t\tfor (let key of keys) {\n\t\t\t\tlet position;\n\t\t\t\tif (key && key.key !== undefined && key.value !== undefined) {\n\t\t\t\t\tposition = saveKey(\n\t\t\t\t\t\tkey.value,\n\t\t\t\t\t\tthis.writeKey,\n\t\t\t\t\t\tbufferHolder,\n\t\t\t\t\t\tmaxKeySize,\n\t\t\t\t\t\t0x80000000,\n\t\t\t\t\t);\n\t\t\t\t\tsaveReferenceToBuffer();\n\t\t\t\t\tsaveKey(key.key, this.writeKey, bufferHolder, maxKeySize);\n\t\t\t\t} else {\n\t\t\t\t\tposition = saveKey(key, this.writeKey, bufferHolder, maxKeySize);\n\t\t\t\t}\n\t\t\t\tif (!startPosition) startPosition = position;\n\t\t\t\tsaveReferenceToBuffer();\n\t\t\t}\n\t\t\tfunction saveReferenceToBuffer() {\n\t\t\t\tif (bufferHolder.saveBuffer != lastBuffer) {\n\t\t\t\t\tbuffers.push(bufferHolder.saveBuffer);\n\t\t\t\t\tlastBuffer = bufferHolder.saveBuffer;\n\t\t\t\t}\n\t\t\t}\n\t\t\tsaveKey(undefined, this.writeKey, bufferHolder, maxKeySize);\n\t\t\tsaveReferenceToBuffer();\n\t\t\toutstandingReads++;\n\t\t\tprefetch(this.dbAddress, startPosition, (error) => {\n\t\t\t\toutstandingReads--;\n\t\t\t\tif (error)\n\t\t\t\t\tconsole.error('Error with prefetch', buffers); // partly exists to keep the buffers pinned in memory\n\t\t\t\telse callback(null);\n\t\t\t});\n\t\t\tif (!callback) return new Promise((resolve) => (callback = resolve));\n\t\t},\n\t\tuseReadTransaction() {\n\t\t\tlet txn = readTxnRenewed ? readTxn : renewReadTxn(this);\n\t\t\tif (!txn.use) {\n\t\t\t\tthrow new Error('Can not use read transaction from a closed database');\n\t\t\t}\n\t\t\t// because the renew actually happens lazily in read operations, renew needs to be explicit\n\t\t\t// here in order to actually secure a real read transaction. Try to only do it if necessary;\n\t\t\t// once it has a refCount, it should be good to go\n\t\t\tif (!(readTxn.refCount - (readTxn.renewingRefCount || 0) > 0))\n\t\t\t\ttxn.renew();\n\t\t\ttxn.use();\n\t\t\treturn txn;\n\t\t},\n\t\tclose(callback) {\n\t\t\tthis.status = 'closing';\n\t\t\tlet txnPromise;\n\t\t\tif (this.isRoot) {\n\t\t\t\t// if it is root, we need to abort and/or wait for transactions to finish\n\t\t\t\tif (readTxn) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\treadTxn.abort();\n\t\t\t\t\t} catch (error) {}\n\t\t\t\t} else readTxn = {};\n\t\t\t\treadTxn.isDone = true;\n\t\t\t\tObject.defineProperty(readTxn, 'renew', {\n\t\t\t\t\tvalue: () => {\n\t\t\t\t\t\tthrow new Error('Can not read from a closed database');\n\t\t\t\t\t},\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t});\n\t\t\t\tObject.defineProperty(readTxn, 'use', {\n\t\t\t\t\tvalue: () => {\n\t\t\t\t\t\tthrow new Error('Can not read from a closed database');\n\t\t\t\t\t},\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t});\n\t\t\t\treadTxnRenewed = null;\n\t\t\t\ttxnPromise = this._endWrites && this._endWrites();\n\t\t\t}\n\t\t\tconst doClose = () => {\n\t\t\t\tif (this.isRoot) {\n\t\t\t\t\tif (outstandingReads > 0) {\n\t\t\t\t\t\treturn new Promise((resolve) =>\n\t\t\t\t\t\t\tsetTimeout(() => resolve(doClose()), 1),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tenv.address = 0;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tenv.close();\n\t\t\t\t\t} catch (error) {}\n\t\t\t\t} else this.db.close();\n\t\t\t\tthis.status = 'closed';\n\t\t\t\tif (callback) callback();\n\t\t\t};\n\t\t\tif (txnPromise) return txnPromise.then(doClose);\n\t\t\telse {\n\t\t\t\tdoClose();\n\t\t\t\treturn Promise.resolve();\n\t\t\t}\n\t\t},\n\t\tgetStats() {\n\t\t\tlet txn = env.writeTxn || (readTxnRenewed ? readTxn : renewReadTxn(this));\n\t\t\tlet dbStats = this.db.stat();\n\t\t\tdbStats.root = env.stat();\n\t\t\tObject.assign(dbStats, env.info());\n\t\t\tdbStats.free = env.freeStat();\n\t\t\treturn dbStats;\n\t\t},\n\t});\n\tlet get = LMDBStore.prototype.get;\n\tlet lastReadTxnRef;\n\tfunction getMMapBuffer(bufferId, size) {\n\t\tlet buffer = mmaps[bufferId];\n\t\tif (!buffer) {\n\t\t\tbuffer = mmaps[bufferId] = getSharedBuffer(bufferId, env.address);\n\t\t}\n\t\tlet offset = keyBytesView.getUint32(8, true);\n\t\treturn new Uint8Array(buffer, offset, size);\n\t}\n\tfunction renewReadTxn(store) {\n\t\tif (!env.address) {\n\t\t\tthrow new Error('Can not renew a transaction from a closed database');\n\t\t}\n\t\tif (!readTxn) {\n\t\t\tlet retries = 0;\n\t\t\tlet waitArray;\n\t\t\tdo {\n\t\t\t\ttry {\n\t\t\t\t\tlet lastReadTxn = lastReadTxnRef && lastReadTxnRef.deref();\n\t\t\t\t\treadTxn = new Txn(\n\t\t\t\t\t\tenv,\n\t\t\t\t\t\t0x20000,\n\t\t\t\t\t\tlastReadTxn && !lastReadTxn.isDone && lastReadTxn,\n\t\t\t\t\t);\n\t\t\t\t\tif (readTxn.address == 0) {\n\t\t\t\t\t\treadTxn = lastReadTxn;\n\t\t\t\t\t\tif (readTxn.notCurrent) readTxn.notCurrent = false;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (error.message.includes('temporarily')) {\n\t\t\t\t\t\tif (!waitArray)\n\t\t\t\t\t\t\twaitArray = new Int32Array(new SharedArrayBuffer(4), 0, 1);\n\t\t\t\t\t\tAtomics.wait(waitArray, 0, 0, retries * 2);\n\t\t\t\t\t} else throw error;\n\t\t\t\t}\n\t\t\t} while (retries++ < 100);\n\t\t}\n\t\t// we actually don't renew here, we let the renew take place in the next\n\t\t// lmdb native read/call so as to avoid an extra native call\n\t\treadTxnRenewed = setTimeout(resetReadTxn, 0);\n\t\tstore.emit('begin-transaction');\n\t\treturn readTxn;\n\t}\n\tfunction resetReadTxn() {\n\t\trenewId++;\n\t\tif (readTxnRenewed) {\n\t\t\treadTxnRenewed = null;\n\t\t\tif (readTxn.refCount - (readTxn.renewingRefCount || 0) > 0) {\n\t\t\t\treadTxn.notCurrent = true;\n\t\t\t\tlastReadTxnRef = new WeakRef(readTxn);\n\t\t\t\treadTxn = null;\n\t\t\t} else if (readTxn.address && !readTxn.isDone) {\n\t\t\t\tresetTxn(readTxn.address);\n\t\t\t} else {\n\t\t\t\tconsole.warn('Attempt to reset an invalid read txn', readTxn);\n\t\t\t\tthrow new Error('Attempt to reset an invalid read txn');\n\t\t\t}\n\t\t}\n\t}\n}\nexport function makeReusableBuffer(size) {\n\tlet bytes =\n\t\ttypeof Buffer != 'undefined' ? Buffer.alloc(size) : new Uint8Array(size);\n\tbytes.maxLength = size;\n\tObject.defineProperty(bytes, 'length', {\n\t\tvalue: size,\n\t\twritable: true,\n\t\tconfigurable: true,\n\t});\n\treturn bytes;\n}\n\nTxn.prototype.done = function () {\n\tthis.refCount--;\n\tif (this.refCount === 0 && this.notCurrent) {\n\t\tthis.abort();\n\t\tthis.isDone = true;\n\t} else if (this.refCount < 0)\n\t\tthrow new Error('Can not finish a transaction more times than it was used');\n};\nTxn.prototype.use = function () {\n\tthis.refCount = (this.refCount || 0) + 1;\n};\n\nlet readInstructions,\n\treadCallbacks = new Map(),\n\tuint32Instructions,\n\tinstructionsDataView = { setFloat64() {}, setUint32() {} },\n\tinstructionsAddress;\nlet savePosition = 8000;\nlet DYNAMIC_KEY_BUFFER_SIZE = 8192;\nfunction allocateInstructionsBuffer() {\n\treadInstructions =\n\t\ttypeof Buffer != 'undefined'\n\t\t\t? Buffer.alloc(DYNAMIC_KEY_BUFFER_SIZE)\n\t\t\t: new Uint8Array(DYNAMIC_KEY_BUFFER_SIZE);\n\tuint32Instructions = new Int32Array(\n\t\treadInstructions.buffer,\n\t\t0,\n\t\treadInstructions.buffer.byteLength >> 2,\n\t);\n\tuint32Instructions[2] = 0xf0000000; // indicates a new read task must be started\n\tinstructionsAddress = readInstructions.buffer.address = getAddress(\n\t\treadInstructions.buffer,\n\t);\n\treadInstructions.dataView = instructionsDataView = new DataView(\n\t\treadInstructions.buffer,\n\t\treadInstructions.byteOffset,\n\t\treadInstructions.byteLength,\n\t);\n\tsavePosition = 0;\n}\nexport function recordReadInstruction(\n\ttxnAddress,\n\tdbi,\n\tkey,\n\twriteKey,\n\tmaxKeySize,\n\tcallback,\n) {\n\tif (savePosition > 7800) {\n\t\tallocateInstructionsBuffer();\n\t}\n\tlet start = savePosition;\n\tlet keyPosition = savePosition + 16;\n\ttry {\n\t\tsavePosition =\n\t\t\tkey === undefined\n\t\t\t\t? keyPosition\n\t\t\t\t: writeKey(key, readInstructions, keyPosition);\n\t} catch (error) {\n\t\tif (error.name == 'RangeError') {\n\t\t\tif (8180 - start < maxKeySize) {\n\t\t\t\tallocateInstructionsBuffer(); // try again:\n\t\t\t\treturn recordReadInstruction(\n\t\t\t\t\ttxnAddress,\n\t\t\t\t\tdbi,\n\t\t\t\t\tkey,\n\t\t\t\t\twriteKey,\n\t\t\t\t\tmaxKeySize,\n\t\t\t\t\tcallback,\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new Error('Key was too large, max key size is ' + maxKeySize);\n\t\t} else throw error;\n\t}\n\tlet length = savePosition - keyPosition;\n\tif (length > maxKeySize) {\n\t\tsavePosition = start;\n\t\tthrow new Error(\n\t\t\t'Key of size ' + length + ' was too large, max key size is ' + maxKeySize,\n\t\t);\n\t}\n\tuint32Instructions[(start >> 2) + 3] = length; // save the length\n\tuint32Instructions[(start >> 2) + 2] = dbi;\n\tsavePosition = (savePosition + 12) & 0xfffffc;\n\tinstructionsDataView.setFloat64(start, txnAddress, true);\n\tlet callbackId = addReadCallback(() => {\n\t\tlet position = start >> 2;\n\t\tlet rc = thisInstructions[position];\n\t\tcallback(\n\t\t\trc,\n\t\t\tthisInstructions[position + 1],\n\t\t\tthisInstructions[position + 2],\n\t\t\tthisInstructions[position + 3],\n\t\t);\n\t});\n\tlet thisInstructions = uint32Instructions;\n\t//if (start === 0)\n\treturn startRead(instructionsAddress + start, callbackId, {}, 'read');\n\t//else\n\t//nextRead(start);\n}\nlet nextCallbackId = 0;\nlet addReadCallback = globalThis.__lmdb_read_callback;\nif (!addReadCallback) {\n\taddReadCallback = globalThis.__lmdb_read_callback = function (callback) {\n\t\tlet callbackId = nextCallbackId++;\n\t\treadCallbacks.set(callbackId, callback);\n\t\treturn callbackId;\n\t};\n\tsetReadCallback(function (callbackId) {\n\t\treadCallbacks.get(callbackId)();\n\t\treadCallbacks.delete(callbackId);\n\t});\n}\n","import { WeakLRUCache, clearKeptObjects } from './native.js';\nimport { FAILED_CONDITION, ABORT, IF_EXISTS } from './write.js';\nimport { UNMODIFIED } from './read.js';\nimport { when } from './util/when.js';\n\nlet getLastVersion, getLastTxnId;\nconst mapGet = Map.prototype.get;\nexport const CachingStore = (Store, env) => {\n\tlet childTxnChanges;\n\treturn class LMDBStore extends Store {\n\t\tconstructor(dbName, options) {\n\t\t\tsuper(dbName, options);\n\t\t\tif (!env.cacheCommitter) {\n\t\t\t\tenv.cacheCommitter = true;\n\t\t\t\tthis.on('aftercommit', ({ next, last, txnId }) => {\n\t\t\t\t\tdo {\n\t\t\t\t\t\tlet meta = next.meta;\n\t\t\t\t\t\tlet store = meta && meta.store;\n\t\t\t\t\t\tif (store) {\n\t\t\t\t\t\t\tif (next.flag & FAILED_CONDITION)\n\t\t\t\t\t\t\t\tstore.cache.delete(meta.key); // just delete it from the map\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tlet expirationPriority = meta.valueSize >> 10;\n\t\t\t\t\t\t\t\tlet cache = store.cache;\n\t\t\t\t\t\t\t\tlet entry = mapGet.call(cache, meta.key);\n\t\t\t\t\t\t\t\tif (entry && !entry.txnId) {\n\t\t\t\t\t\t\t\t\tentry.txnId = txnId;\n\t\t\t\t\t\t\t\t\tcache.used(entry, expirationPriority + 4); // this will enter it into the LRFU (with a little lower priority than a read)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} while (next != last && (next = next.next));\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis.db.cachingDb = this;\n\t\t\tif (options.cache.clearKeptInterval)\n\t\t\t\toptions.cache.clearKeptObjects = clearKeptObjects;\n\t\t\tthis.cache = new WeakLRUCache(options.cache);\n\t\t\tif (options.cache.validated) this.cache.validated = true;\n\t\t}\n\t\tget isCaching() {\n\t\t\treturn true;\n\t\t}\n\t\tget(id, options) {\n\t\t\tlet value;\n\t\t\tif (this.cache.validated) {\n\t\t\t\tlet entry = this.cache.get(id);\n\t\t\t\tif (entry) {\n\t\t\t\t\tlet cachedValue = entry.value;\n\t\t\t\t\tif (entry.txnId != null) {\n\t\t\t\t\t\tvalue = super.get(id, {\n\t\t\t\t\t\t\tifNotTxnId: entry.txnId,\n\t\t\t\t\t\t\ttransaction: options && options.transaction,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (value === UNMODIFIED) return cachedValue;\n\t\t\t\t\t} // with no txn id we do not validate; this is the state of a cached value after a write before it transacts\n\t\t\t\t\telse return cachedValue;\n\t\t\t\t} else value = super.get(id, options);\n\t\t\t} else if (options && options.transaction) {\n\t\t\t\treturn super.get(id, options);\n\t\t\t} else {\n\t\t\t\tvalue = this.cache.getValue(id);\n\t\t\t\tif (value !== undefined) {\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t\tvalue = super.get(id);\n\t\t\t}\n\t\t\tif (\n\t\t\t\tvalue &&\n\t\t\t\ttypeof value === 'object' &&\n\t\t\t\t!options &&\n\t\t\t\ttypeof id !== 'object'\n\t\t\t) {\n\t\t\t\tlet entry = this.cache.setValue(id, value, this.lastSize >> 10);\n\t\t\t\tif (this.useVersions) {\n\t\t\t\t\tentry.version = getLastVersion();\n\t\t\t\t}\n\t\t\t\tif (this.cache.validated) entry.txnId = getLastTxnId();\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t\tgetEntry(id, options) {\n\t\t\tlet entry, value;\n\t\t\tif (this.cache.validated) {\n\t\t\t\tentry = this.cache.get(id);\n\t\t\t\tif (entry) {\n\t\t\t\t\tif (entry.txnId != null) {\n\t\t\t\t\t\tvalue = super.get(id, {\n\t\t\t\t\t\t\tifNotTxnId: entry.txnId,\n\t\t\t\t\t\t\ttransaction: options && options.transaction,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (value === UNMODIFIED) return entry;\n\t\t\t\t\t} // with no txn id we do not validate; this is the state of a cached value after a write before it transacts\n\t\t\t\t\telse return entry;\n\t\t\t\t} else value = super.get(id, options);\n\t\t\t} else if (options && options.transaction) {\n\t\t\t\treturn super.getEntry(id, options);\n\t\t\t} else {\n\t\t\t\tentry = this.cache.get(id);\n\t\t\t\tif (entry !== undefined) {\n\t\t\t\t\treturn entry;\n\t\t\t\t}\n\t\t\t\tvalue = super.get(id);\n\t\t\t}\n\t\t\tif (value === undefined) return;\n\t\t\tif (value && typeof value === 'object' && typeof id !== 'object') {\n\t\t\t\tentry = this.cache.setValue(id, value, this.lastSize >> 10);\n\t\t\t} else entry = { value };\n\t\t\tif (this.useVersions) entry.version = getLastVersion();\n\t\t\tif (this.cache.validated) entry.txnId = getLastTxnId();\n\t\t\treturn entry;\n\t\t}\n\t\tputEntry(id, entry, ifVersion) {\n\t\t\tlet result = super.put(id, entry.value, entry.version, ifVersion);\n\t\t\tif (typeof id === 'object') return result;\n\t\t\tif (result && result.then)\n\t\t\t\tthis.cache.setManually(id, entry); // set manually so we can keep it pinned in memory until it is committed\n\t\t\t// sync operation, immediately add to cache\n\t\t\telse this.cache.set(id, entry);\n\t\t}\n\t\tput(id, value, version, ifVersion) {\n\t\t\tlet result = super.put(id, value, version, ifVersion);\n\t\t\tif (typeof id !== 'object') {\n\t\t\t\tif (value && value['\\x10binary-data\\x02']) {\n\t\t\t\t\t// don't cache binary data, since it will be decoded on get\n\t\t\t\t\tthis.cache.delete(id);\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\tlet entry;\n\t\t\t\tif (this.cachePuts === false) {\n\t\t\t\t\t// we are not caching puts, clear the entry at least\n\t\t\t\t\tthis.cache.delete(id);\n\t\t\t\t} else {\n\t\t\t\t\tif (result?.isSync) {\n\t\t\t\t\t\t// sync operation, immediately add to cache\n\t\t\t\t\t\tif (result.result)\n\t\t\t\t\t\t\t// if it succeeds\n\t\t\t\t\t\t\tentry = this.cache.setValue(id, value, 0);\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis.cache.delete(id);\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t} // sync failure\n\t\t\t\t\t\t// otherwise keep it pinned in memory until it is committed\n\t\t\t\t\t} else entry = this.cache.setValue(id, value, -1);\n\t\t\t\t}\n\t\t\t\tif (childTxnChanges) childTxnChanges.add(id);\n\t\t\t\tif (version !== undefined && entry)\n\t\t\t\t\tentry.version =\n\t\t\t\t\t\ttypeof version === 'object' ? version.version : version;\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t\tputSync(id, value, version, ifVersion) {\n\t\t\tlet result = super.putSync(id, value, version, ifVersion);\n\t\t\tif (id !== 'object') {\n\t\t\t\t// sync operation, immediately add to cache, otherwise keep it pinned in memory until it is committed\n\t\t\t\tif (\n\t\t\t\t\tvalue &&\n\t\t\t\t\tthis.cachePuts !== false &&\n\t\t\t\t\ttypeof value === 'object' &&\n\t\t\t\t\tresult\n\t\t\t\t) {\n\t\t\t\t\tlet entry = this.cache.setValue(id, value);\n\t\t\t\t\tif (childTxnChanges) childTxnChanges.add(id);\n\t\t\t\t\tif (version !== undefined) {\n\t\t\t\t\t\tentry.version =\n\t\t\t\t\t\t\ttypeof version === 'object' ? version.version : version;\n\t\t\t\t\t}\n\t\t\t\t} // it is possible that a value used to exist here\n\t\t\t\telse this.cache.delete(id);\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t\tremove(id, ifVersion) {\n\t\t\tthis.cache.delete(id);\n\t\t\treturn super.remove(id, ifVersion);\n\t\t}\n\t\tremoveSync(id, ifVersion) {\n\t\t\tthis.cache.delete(id);\n\t\t\treturn super.removeSync(id, ifVersion);\n\t\t}\n\t\tclearAsync(callback) {\n\t\t\tthis.cache.clear();\n\t\t\treturn super.clearAsync(callback);\n\t\t}\n\t\tclearSync() {\n\t\t\tthis.cache.clear();\n\t\t\tsuper.clearSync();\n\t\t}\n\t\tchildTransaction(callback) {\n\t\t\treturn super.childTransaction(() => {\n\t\t\t\tlet cache = this.cache;\n\t\t\t\tlet previousChanges = childTxnChanges;\n\t\t\t\ttry {\n\t\t\t\t\tchildTxnChanges = new Set();\n\t\t\t\t\treturn when(\n\t\t\t\t\t\tcallback(),\n\t\t\t\t\t\t(result) => {\n\t\t\t\t\t\t\tif (result === ABORT) return abort();\n\t\t\t\t\t\t\tchildTxnChanges = previousChanges;\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tabort,\n\t\t\t\t\t);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tabort(error);\n\t\t\t\t}\n\t\t\t\tfunction abort(error) {\n\t\t\t\t\t// if the transaction was aborted, remove all affected entries from cache\n\t\t\t\t\tfor (let id of childTxnChanges) cache.delete(id);\n\t\t\t\t\tchildTxnChanges = previousChanges;\n\t\t\t\t\tif (error) throw error;\n\t\t\t\t\telse return ABORT;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tdoesExist(key, versionOrValue) {\n\t\t\tlet entry = this.cache.get(key);\n\t\t\tif (entry) {\n\t\t\t\tif (versionOrValue == null) {\n\t\t\t\t\treturn versionOrValue !== null;\n\t\t\t\t} else if (this.useVersions) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\tversionOrValue === IF_EXISTS || entry.version === versionOrValue\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn super.doesExist(key, versionOrValue);\n\t\t}\n\t};\n};\nexport function setGetLastVersion(get, getTxnId) {\n\tgetLastVersion = get;\n\tgetLastTxnId = getTxnId;\n}\n","import { Compression, getAddress, arch, fs, path as pathModule, lmdbError, EventEmitter, MsgpackrEncoder, Env,\n\tDbi, tmpdir, os, nativeAddon, version } from './native.js';\nimport { CachingStore, setGetLastVersion } from './caching.js';\nimport { addReadMethods, makeReusableBuffer } from './read.js';\nimport { addWriteMethods } from './write.js';\nimport { applyKeyHandling } from './keys.js';\nlet moduleRequire = typeof require == 'function' && require;\nexport function setRequire(require) {\n\tmoduleRequire = require;\n}\n\nsetGetLastVersion(getLastVersion, getLastTxnId);\nlet keyBytes, keyBytesView;\nconst buffers = [];\nconst { onExit, getEnvsPointer, setEnvsPointer, getEnvFlags, setJSFlags } = nativeAddon;\nif (globalThis.__lmdb_envs__)\n\tsetEnvsPointer(globalThis.__lmdb_envs__);\nelse\n\tglobalThis.__lmdb_envs__ = getEnvsPointer();\n\n// this is hard coded as an upper limit because it is important assumption of the fixed buffers in writing instructions\n// this corresponds to the max key size for 8KB pages\nconst MAX_KEY_SIZE = 4026;\n// this is used as the key size by default because default page size is OS page size, which is usually\n// 4KB (but is 16KB on M-series MacOS), and this keeps a consistent max key size when no page size specified.\nconst DEFAULT_MAX_KEY_SIZE = 1978;\nconst DEFAULT_COMMIT_DELAY = 0;\n\nexport const allDbs = new Map();\nlet defaultCompression;\nlet lastSize;\nlet hasRegisteredOnExit;\nexport function open(path, options) {\n\tif (nativeAddon.open) {\n\t\tif (nativeAddon.open !== open) {\n\t\t\t// this is the case when lmdb-js has been opened in both ESM and CJS mode, which means that there are two\n\t\t\t// separate JS modules, but they are both using the same native module.\n\t\t\tgetLastVersion = nativeAddon.getLastVersion;\n\t\t\tgetLastTxnId = nativeAddon.getLastTxnId;\n\t\t\tsetGetLastVersion(getLastVersion, getLastTxnId);\n\t\t\treturn nativeAddon.open(path, options);\n\t\t}\n\t} else {\n\t\tnativeAddon.open = open;\n\t\tnativeAddon.getLastVersion = getLastVersion;\n\t\tnativeAddon.getLastTxnId = getLastTxnId;\n\t}\n\tif (!keyBytes) // TODO: Consolidate get buffer and key buffer (don't think we need both)\n\t\tallocateFixedBuffer();\n\tif (typeof path == 'object' && !options) {\n\t\toptions = path;\n\t\tpath = options.path;\n\t}\n\toptions = options || {};\n\tlet noFSAccess = options.noFSAccess; // this can only be configured on open, can't let users change it\n\tlet userOptions = options;\n\tif (path == null) {\n\t\toptions = Object.assign({\n\t\t\tdeleteOnClose: true,\n\t\t\tnoSync: true,\n\t\t}, options);\n\t\tpath = tmpdir() + '/' + Math.floor(Math.random() * 2821109907455).toString(36) + '.mdb'\n\t} else if (!options)\n\t\toptions = {};\n\tlet extension = pathModule.extname(path);\n\tlet name = pathModule.basename(path, extension);\n\tlet is32Bit = arch().endsWith('32');\n\tlet isLegacyLMDB = version.patch < 90;\n\tlet remapChunks = (options.remapChunks || options.encryptionKey || (options.mapSize ?\n\t\t(is32Bit && options.mapSize > 0x100000000) : // larger than fits in address space, must use dynamic maps\n\t\tis32Bit)) && !isLegacyLMDB; // without a known map size, we default to being able to handle large data correctly/well*/\n\tlet userMapSize = options.mapSize;\n\toptions = Object.assign({\n\t\tnoSubdir: Boolean(extension),\n\t\tisRoot: true,\n\t\tmaxDbs: 12,\n\t\tremapChunks,\n\t\tkeyBytes,\n\t\toverlappingSync: (options.noSync || options.readOnly) ? false : (os != 'win32'),\n\t\t// default map size limit of 4 exabytes when using remapChunks, since it is not preallocated and we can\n\t\t// make it super huge.\n\t\tmapSize: remapChunks ? 0x10000000000000 :\n\t\t\tisLegacyLMDB ? is32Bit ? 0x1000000 : 0x100000000 : 0x20000, // Otherwise we start small with 128KB\n\t\tsafeRestore: process.env.LMDB_RESTORE == 'safe',\n\t}, options);\n\toptions.path = path;\n\tif (options.asyncTransactionOrder == 'strict') {\n\t\toptions.strictAsyncOrder = true;\n\t}\n\tif (nativeAddon.version.major + nativeAddon.version.minor / 100 + nativeAddon.version.patch / 10000 < 0.0980) {\n\t\toptions.overlappingSync = false; // not support on older versions\n\t\toptions.trackMetrics = false;\n\t\toptions.usePreviousSnapshot = false;\n\t\toptions.safeRestore = false;\n\t\toptions.remapChunks = false;\n\t\tif (!userMapSize) options.mapSize = 0x40000000; // 1 GB\n\t}\n\n\tif (!exists(options.noSubdir ? pathModule.dirname(path) : path))\n\t\tfs.mkdirSync(options.noSubdir ? pathModule.dirname(path) : path, { recursive: true }\n\t\t);\n\tfunction makeCompression(compressionOptions) {\n\t\tif (compressionOptions instanceof Compression)\n\t\t\treturn compressionOptions;\n\t\tlet useDefault = typeof compressionOptions != 'object';\n\t\tif (useDefault && defaultCompression)\n\t\t\treturn defaultCompression;\n\t\tcompressionOptions = Object.assign({\n\t\t\tthreshold: 1000,\n\t\t\tdictionary: fs.readFileSync(new URL('./dict/dict.txt', import.meta.url.replace(/dist[\\\\\\/]index.cjs$/, ''))),\n\t\t\tgetValueBytes: makeReusableBuffer(0),\n\t\t}, compressionOptions);\n\t\tlet compression = Object.assign(new Compression(compressionOptions), compressionOptions);\n\t\tif (useDefault)\n\t\t\tdefaultCompression = compression;\n\t\treturn compression;\n\t}\n\tif (isLegacyLMDB) {\n\t\t// legacy LMDB, turn off these options\n\t\tObject.assign(options, { overlappingSync: false, remapChunks: false, safeRestore: false });\n\t}\n\tif (options.compression)\n\t\toptions.compression = makeCompression(options.compression);\n\tlet flags =\n\t\t(options.overlappingSync ? 0x1000 : 0) |\n\t\t(options.noSubdir ? 0x4000 : 0) |\n\t\t(options.noSync ? 0x10000 : 0) |\n\t\t(options.readOnly ? 0x20000 : 0) |\n\t\t(options.noMetaSync ? 0x40000 : 0) |\n\t\t(options.useWritemap ? 0x80000 : 0) |\n\t\t(options.mapAsync ? 0x100000 : 0) |\n\t\t(options.noReadAhead ? 0x800000 : 0) |\n\t\t(options.noMemInit ? 0x1000000 : 0) |\n\t\t(options.usePreviousSnapshot ? 0x2000000 : 0) |\n\t\t(options.remapChunks ? 0x4000000 : 0) |\n\t\t(options.safeRestore ? 0x800 : 0) |\n\t\t(options.trackMetrics ? 0x400 : 0);\n\n\tlet env = new Env();\n\tlet jsFlags = (options.overlappingSync ? 0x1000 : 0) |\n\t\t(options.separateFlushed ? 1 : 0) |\n\t\t(options.deleteOnClose ? 2 : 0);\n\tlet rc = env.open(options, flags, jsFlags);\n\tenv.path = path;\n if (rc)\n\t\tlmdbError(rc);\n\tdelete options.keyBytes // no longer needed, don't copy to stores\n\tlet maxKeySize = env.getMaxKeySize();\n\tmaxKeySize = Math.min(maxKeySize, options.pageSize ? MAX_KEY_SIZE : DEFAULT_MAX_KEY_SIZE);\n\tflags = getEnvFlags(env.address); // re-retrieve them, they are not necessarily the same if we are connecting to an existing env\n\tif (flags & 0x1000) {\n\t\tif (userOptions.noSync) {\n\t\t\tenv.close();\n\t\t\tthrow new Error('Can not set noSync on a database that was opened with overlappingSync');\n\t\t}\n\t} else if (options.overlappingSync) {\n\t\tif (userOptions.overlappingSync) {\n\t\t\tenv.close();\n\t\t\tthrow new Error('Can not enable overlappingSync on a database that was opened without this flag');\n\t\t}\n\t\toptions.overlappingSync = false;\n\t\tjsFlags = jsFlags & 0xff; // clear overlapping sync\n\t\tsetJSFlags(env.address, jsFlags);\n\t}\n\n\tenv.readerCheck(); // clear out any stale entries\n\tif ((options.overlappingSync || options.deleteOnClose) && !hasRegisteredOnExit && process.on) {\n\t\thasRegisteredOnExit = true;\n\t\tprocess.on('exit', onExit);\n\t}\n\n\tclass LMDBStore extends EventEmitter {\n\t\tconstructor(dbName, dbOptions) {\n\t\t\tsuper();\n\t\t\tif (dbName === undefined)\n\t\t\t\tthrow new Error('Database name must be supplied in name property (may be null for root database)');\n\n\t\t\tif (options.compression && dbOptions.compression !== false && typeof dbOptions.compression != 'object')\n\t\t\t\tdbOptions.compression = options.compression; // use the parent compression if available\n\t\t\telse if (dbOptions.compression)\n\t\t\t\tdbOptions.compression = makeCompression(dbOptions.compression);\n\n\t\t\tif (dbOptions.dupSort && (dbOptions.useVersions || dbOptions.cache)) {\n\t\t\t\tthrow new Error('The dupSort flag can not be combined with versions or caching');\n\t\t\t}\n\t\t\tlet keyIsBuffer = dbOptions.keyIsBuffer\n\t\t\tif (dbOptions.keyEncoding == 'uint32') {\n\t\t\t\tdbOptions.keyIsUint32 = true;\n\t\t\t} else if (dbOptions.keyEncoder) {\n\t\t\t\tif (dbOptions.keyEncoder.enableNullTermination) {\n\t\t\t\t\tdbOptions.keyEncoder.enableNullTermination()\n\t\t\t\t} else\n\t\t\t\t\tkeyIsBuffer = true;\n\t\t\t} else if (dbOptions.keyEncoding == 'binary') {\n\t\t\t\tkeyIsBuffer = true;\n\t\t\t}\n\t\t\tlet flags = (dbOptions.reverseKey ? 0x02 : 0) |\n\t\t\t\t(dbOptions.dupSort ? 0x04 : 0) |\n\t\t\t\t(dbOptions.dupFixed ? 0x10 : 0) |\n\t\t\t\t(dbOptions.integerDup ? 0x20 : 0) |\n\t\t\t\t(dbOptions.reverseDup ? 0x40 : 0) |\n\t\t\t\t(!options.readOnly && dbOptions.create !== false ? 0x40000 : 0) |\n\t\t\t\t(dbOptions.useVersions ? 0x100 : 0);\n\t\t\tlet keyType = (dbOptions.keyIsUint32 || dbOptions.keyEncoding == 'uint32') ? 2 : keyIsBuffer ? 3 : 0;\n\t\t\tif (keyType == 2)\n\t\t\t\tflags |= 0x08; // integer key\n\n\t\t\tif (options.readOnly) {\n\t\t\t\t// in read-only mode we use a read-only txn to open the database\n\t\t\t\t// TODO: LMDB is actually not entirely thread-safe when it comes to opening databases with\n\t\t\t\t// read-only transactions since there is a race condition on setting the update dbis that\n\t\t\t\t// occurs outside the lock\n\t\t\t\t// make sure we are using a fresh read txn, so we don't want to share with a cursor txn\n\t\t\t\tthis.resetReadTxn();\n\t\t\t\tthis.ensureReadTxn();\n\t\t\t\tthis.db = new Dbi(env, flags, dbName, keyType, dbOptions.compression);\n\t\t\t} else {\n\t\t\t\tthis.transactionSync(() => {\n\t\t\t\t\tthis.db = new Dbi(env, flags, dbName, keyType, dbOptions.compression);\n\t\t\t\t}, options.overlappingSync ? 0x10002 : 2); // no flush-sync, but synchronously commit\n\t\t\t}\n\t\t\tthis._commitReadTxn(); // current read transaction becomes invalid after opening another db\n\t\t\tif (!this.db || this.db.dbi == 0xffffffff) {// not found\n\t\t\t\tthrow new Error('Database not found')\n\t\t\t}\n\t\t\tthis.dbAddress = this.db.address\n\t\t\tthis.db.name = dbName || null;\n\t\t\tthis.name = dbName;\n\t\t\tthis.status = 'open';\n\t\t\tthis.env = env;\n\t\t\tthis.reads = 0;\n\t\t\tthis.writes = 0;\n\t\t\tthis.transactions = 0;\n\t\t\tthis.averageTransactionTime = 5;\n\t\t\tif (dbOptions.syncBatchThreshold)\n\t\t\t\tconsole.warn('syncBatchThreshold is no longer supported');\n\t\t\tif (dbOptions.immediateBatchThreshold)\n\t\t\t\tconsole.warn('immediateBatchThreshold is no longer supported');\n\t\t\tthis.commitDelay = DEFAULT_COMMIT_DELAY;\n\t\t\tObject.assign(this, { // these are the options that are inherited\n\t\t\t\tpath: options.path,\n\t\t\t\tencoding: options.encoding,\n\t\t\t\tstrictAsyncOrder: options.strictAsyncOrder,\n\t\t\t}, dbOptions);\n\t\t\tlet Encoder;\n\t\t\tif (this.encoder && this.encoder.Encoder) {\n\t\t\t\tEncoder = this.encoder.Encoder;\n\t\t\t\tthis.encoder = null; // don't copy everything from the module\n\t\t\t}\n\t\t\tif (!Encoder && !(this.encoder && this.encoder.encode) && (!this.encoding || this.encoding == 'msgpack' || this.encoding == 'cbor')) {\n\t\t\t\tEncoder = (this.encoding == 'cbor' ? moduleRequire('cbor-x').Encoder : MsgpackrEncoder);\n\t\t\t}\n\t\t\tif (Encoder) {\n\t\t\t\tthis.encoder = new Encoder(Object.assign(\n\t\t\t\t\tassignConstrainedProperties(['copyBuffers', 'getStructures', 'saveStructures', 'useFloat32', 'useRecords', 'structuredClone', 'variableMapSize', 'useTimestamp32', 'largeBigIntToFloat', 'encodeUndefinedAsNil', 'int64AsNumber', 'onInvalidDate', 'mapsAsObjects', 'useTag259ForMaps', 'pack', 'maxSharedStructures', 'shouldShareStructure', 'randomAccessStructure', 'freezeData'],\n\t\t\t\t\tthis.sharedStructuresKey !== undefined ? this.setupSharedStructures() : {\n\t\t\t\t\t\tcopyBuffers: true, // need to copy any embedded buffers that are found since we use unsafe buffers\n\t\t\t\t\t}, options, dbOptions), this.encoder));\n\t\t\t}\n\t\t\tif (this.encoding == 'json') {\n\t\t\t\tthis.encoder = {\n\t\t\t\t\tencode: JSON.stringify,\n\t\t\t\t};\n\t\t\t} else if (this.encoder) {\n\t\t\t\tthis.decoder = this.encoder;\n\t\t\t\tthis.decoderCopies = !this.encoder.needsStableBuffer\n\t\t\t}\n\t\t\tthis.maxKeySize = maxKeySize;\n\t\t\tapplyKeyHandling(this);\n\t\t\tallDbs.set(dbName ? name + '-' + dbName : name, this);\n\t\t}\n\t\topenDB(dbName, dbOptions) {\n\t\t\tif (this.dupSort && this.name == null)\n\t\t\t\tthrow new Error('Can not open named databases if the main database is dupSort')\n\t\t\tif (typeof dbName == 'object' && !dbOptions) {\n\t\t\t\tdbOptions = dbName;\n\t\t\t\tdbName = dbOptions.name;\n\t\t\t} else\n\t\t\t\tdbOptions = dbOptions || {};\n\t\t\ttry {\n\t\t\t\treturn dbOptions.cache ?\n\t\t\t\t\tnew (CachingStore(LMDBStore, env))(dbName, dbOptions) :\n\t\t\t\t\tnew LMDBStore(dbName, dbOptions);\n\t\t\t} catch(error) {\n\t\t\t\tif (error.message == 'Database not found')\n\t\t\t\t\treturn; // return undefined to indicate db not found\n\t\t\t\tif (error.message.indexOf('MDB_DBS_FULL') > -1) {\n\t\t\t\t\terror.message += ' (increase your maxDbs option)';\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t\topen(dbOptions, callback) {\n\t\t\tlet db = this.openDB(dbOptions);\n\t\t\tif (callback)\n\t\t\t\tcallback(null, db);\n\t\t\treturn db;\n\t\t}\n\t\tbackup(path, compact) {\n\t\t\tif (noFSAccess)\n\t\t\t\treturn;\n\t\t\tfs.mkdirSync(pathModule.dirname(path), { recursive: true });\n\t\t\treturn new Promise((resolve, reject) => env.copy(path, compact, (error) => {\n\t\t\t\tif (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t} else {\n\t\t\t\t\tresolve();\n\t\t\t\t}\n\t\t\t}));\n\t\t}\n\t\tisOperational() {\n\t\t\treturn this.status == 'open';\n\t\t}\n\t\tsync(callback) {\n\t\t\treturn env.sync(callback || function(error) {\n\t\t\t\tif (error) {\n\t\t\t\t\tconsole.error(error);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tdeleteDB() {\n\t\t\tconsole.warn('deleteDB() is deprecated, use drop or dropSync instead');\n\t\t\treturn this.dropSync();\n\t\t}\n\t\tdropSync() {\n\t\t\tthis.transactionSync(() =>\n\t\t\t\tthis.db.drop({\n\t\t\t\t\tjustFreePages: false\n\t\t\t\t}), options.overlappingSync ? 0x10002 : 2);\n\t\t}\n\t\tclear(callback) {\n\t\t\tif (typeof callback == 'function')\n\t\t\t\treturn this.clearAsync(callback);\n\t\t\tconsole.warn('clear() is deprecated, use clearAsync or clearSync instead');\n\t\t\tthis.clearSync();\n\t\t}\n\t\tclearSync() {\n\t\t\tif (this.encoder) {\n\t\t\t\tif (this.encoder.clearSharedData)\n\t\t\t\t\tthis.encoder.clearSharedData()\n\t\t\t\telse if (this.encoder.structures)\n\t\t\t\t\tthis.encoder.structures = []\n\t\t\t}\n\t\t\tthis.transactionSync(() =>\n\t\t\t\tthis.db.drop({\n\t\t\t\t\tjustFreePages: true\n\t\t\t\t}), options.overlappingSync ? 0x10002 : 2);\n\t\t}\n\t\treaderCheck() {\n\t\t\treturn env.readerCheck();\n\t\t}\n\t\treaderList() {\n\t\t\treturn env.readerList().join('');\n\t\t}\n\t\tsetupSharedStructures() {\n\t\t\tconst getStructures = () => {\n\t\t\t\tlet lastVersion; // because we are doing a read here, we may need to save and restore the lastVersion from the last read\n\t\t\t\tif (this.useVersions)\n\t\t\t\t\tlastVersion = getLastVersion();\n\t\t\t\tlet buffer = this.getBinary(this.sharedStructuresKey);\n\t\t\t\tif (this.useVersions)\n\t\t\t\t\tsetLastVersion(lastVersion);\n\t\t\t\treturn buffer && this.decoder.decode(buffer);\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tsaveStructures: (structures, isCompatible) => {\n\t\t\t\t\treturn this.transactionSync(() => {\n\t\t\t\t\t\tlet existingStructuresBuffer = this.getBinary(this.sharedStructuresKey);\n\t\t\t\t\t\tlet existingStructures = existingStructuresBuffer && this.decoder.decode(existingStructuresBuffer);\n\t\t\t\t\t\tif (typeof isCompatible == 'function' ?\n\t\t\t\t\t\t\t\t!isCompatible(existingStructures) :\n\t\t\t\t\t\t\t\t(existingStructures && existingStructures.length != isCompatible))\n\t\t\t\t\t\t\treturn false; // it changed, we need to indicate that we couldn't update\n\t\t\t\t\t\tthis.put(this.sharedStructuresKey, structures);\n\t\t\t\t\t}, options.overlappingSync ? 0x10000 : 0);\n\t\t\t\t},\n\t\t\t\tgetStructures,\n\t\t\t\tcopyBuffers: true, // need to copy any embedded buffers that are found since we use unsafe buffers\n\t\t\t};\n\t\t}\n\t}\n\t// if caching class overrides putSync, don't want to double call the caching code\n\tconst putSync = LMDBStore.prototype.putSync;\n\tconst removeSync = LMDBStore.prototype.removeSync;\n\taddReadMethods(LMDBStore, { env, maxKeySize, keyBytes, keyBytesView, getLastVersion });\n\tif (!options.readOnly)\n\t\taddWriteMethods(LMDBStore, { env, maxKeySize, fixedBuffer: keyBytes,\n\t\t\tresetReadTxn: LMDBStore.prototype.resetReadTxn, ...options });\n\tLMDBStore.prototype.supports = {\n\t\tpermanence: true,\n\t\tbufferKeys: true,\n\t\tpromises: true,\n\t\tsnapshots: true,\n\t\tclear: true,\n\t\tstatus: true,\n\t\tdeferredOpen: true,\n\t\topenCallback: true,\t\n\t};\n\tlet Class = options.cache ? CachingStore(LMDBStore, env) : LMDBStore;\n\treturn options.asClass ? Class : new Class(options.name || null, options);\n}\nexport function openAsClass(path, options) {\n\tif (typeof path == 'object' && !options) {\n\t\toptions = path;\n\t\tpath = options.path;\n\t}\n\toptions = options || {};\n\toptions.asClass = true;\n\treturn open(path, options);\n}\n\nexport function getLastVersion() {\n\treturn keyBytesView.getFloat64(16, true);\n}\nexport function setLastVersion(version) {\n\treturn keyBytesView.setFloat64(16, version, true);\n}\n\nexport function getLastTxnId() {\n\treturn keyBytesView.getUint32(32, true);\n}\n\nconst KEY_BUFFER_SIZE = 4096;\nfunction allocateFixedBuffer() {\n\tkeyBytes = typeof Buffer != 'undefined' ? Buffer.allocUnsafeSlow(KEY_BUFFER_SIZE) : new Uint8Array(KEY_BUFFER_SIZE);\n\tconst keyBuffer = keyBytes.buffer;\n\tkeyBytesView = keyBytes.dataView || (keyBytes.dataView = new DataView(keyBytes.buffer, 0, KEY_BUFFER_SIZE)); // max key size is actually 4026\n\tkeyBytes.uint32 = new Uint32Array(keyBuffer, 0, KEY_BUFFER_SIZE >> 2);\n\tkeyBytes.float64 = new Float64Array(keyBuffer, 0, KEY_BUFFER_SIZE >> 3);\n\tkeyBytes.uint32.address = keyBytes.address = keyBuffer.address = getAddress(keyBuffer);\n}\n\nfunction exists(path) {\n\tif (fs.existsSync)\n\t\treturn fs.existsSync(path);\n\ttry {\n\t\treturn fs.statSync(path);\n\t} catch (error) {\n\t\treturn false\n\t}\n}\n\nfunction assignConstrainedProperties(allowedProperties, target) {\n\tfor (let i = 2; i < arguments.length; i++) {\n\t\tlet source = arguments[i];\n\t\tfor (let key in source) {\n\t\t\tif (allowedProperties.includes(key))\n\t\t\t\ttarget[key] = source[key];\n\t\t}\n\t}\n\treturn target;\n}\n","export function levelup(store) {\n\treturn Object.assign(Object.create(store), {\n\t\tget(key, options, callback) {\n\t\t\tlet result = store.get(key);\n\t\t\tif (typeof options == 'function')\n\t\t\t\tcallback = options;\n\t\t\tif (callback) {\n\t\t\t\tif (result === undefined)\n\t\t\t\t\tcallback(new NotFoundError());\n\t\t\t\telse\n\t\t\t\t\tcallback(null, result);\n\t\t\t} else {\n\t\t\t\tif (result === undefined)\n\t\t\t\t\treturn Promise.reject(new NotFoundError());\n\t\t\t\telse\n\t\t\t\t\treturn Promise.resolve(result);\n\t\t\t}\n\t\t},\n\t});\n}\nclass NotFoundError extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = 'NotFoundError';\n\t\tthis.notFound = true;\n\t}\n}","import { EventEmitter } from 'events';\nimport { setExternals, setNativeFunctions, Dbi, version } from './native.js';\nimport { arch, tmpdir, platform } from 'os';\nimport fs from 'fs';\nimport { Encoder as MsgpackrEncoder } from 'msgpackr';\nimport { WeakLRUCache } from 'weak-lru-cache';\nimport * as orderedBinary from 'ordered-binary';\n\n\norderedBinary.enableNullTermination();\nsetExternals({\n\tarch, fs, tmpdir, MsgpackrEncoder, WeakLRUCache, orderedBinary,\n\tEventEmitter, os: platform(), onExit(callback) {\n\t\tif (process.getMaxListeners() < process.listenerCount('exit') + 8)\n\t\t\tprocess.setMaxListeners(process.listenerCount('exit') + 8);\n\t\tprocess.on('exit', callback);\n\t},\n});\nexport { toBufferKey as keyValueToBuffer, compareKeys, compareKeys as compareKey, fromBufferKey as bufferToKeyValue } from 'ordered-binary';\nexport { ABORT, IF_EXISTS, asBinary } from './write.js';\nimport { ABORT, IF_EXISTS, asBinary } from './write.js';\nexport { levelup } from './level.js';\nexport { SKIP } from './util/RangeIterable.js';\nimport { levelup } from './level.js';\nexport { clearKeptObjects, version } from './native.js';\nimport { nativeAddon } from './native.js';\nexport let { noop } = nativeAddon;\nexport const TIMESTAMP_PLACEHOLDER = new Uint8Array([1,1,1,1,0,0,0,0]);\nexport const DIRECT_WRITE_PLACEHOLDER = new Uint8Array([1,1,1,2,0,0,0,0]);\nexport { open, openAsClass, getLastVersion, allDbs, getLastTxnId } from './open.js';\nimport { toBufferKey as keyValueToBuffer, compareKeys as compareKey, fromBufferKey as bufferToKeyValue } from 'ordered-binary';\nimport { open, openAsClass, getLastVersion } from './open.js';\nexport const TransactionFlags = {\n\tABORTABLE: 1,\n\tSYNCHRONOUS_COMMIT: 2,\n\n\tNO_SYNC_FLUSH: 0x10000,\n};\nexport default {\n\topen, openAsClass, getLastVersion, compareKey, keyValueToBuffer, bufferToKeyValue, ABORT, IF_EXISTS, asBinary, levelup, TransactionFlags, version\n};\n","import { createRequire } from 'module';\nimport { setRequire } from './open.js';\nimport { nativeAddon, setNativeFunctions } from './native.js';\nexport { nativeAddon } from './native.js'\nlet require = createRequire(import.meta.url);\nsetRequire(require);\nexport let v8AccelerationEnabled = false\n\nlet versions = process.versions;\nif (!versions.deno && !process.isBun) {\n\tlet [ majorVersion, minorVersion ] = versions.node.split('.');\n\tif (versions.v8 && +majorVersion == nativeAddon.version.nodeCompiledVersion) {\n\t\tlet v8Funcs = {};\n\t\tlet fastApiCalls = (majorVersion == 17 || majorVersion == 18 || majorVersion == 16 && minorVersion > 8) && !process.env.DISABLE_TURBO_CALLS;\n\t\tif (fastApiCalls) {\n\t\t\trequire('v8').setFlagsFromString('--turbo-fast-api-calls');\n\t\t}\n\t\tnativeAddon.enableDirectV8(v8Funcs, fastApiCalls);\n\t\tObject.assign(nativeAddon, v8Funcs);\n\t\tv8AccelerationEnabled = true;\n\t} else if (majorVersion == 14) {\n\t\t// node v14 only has ABI compatibility with node v16 for zero-arg clearKeptObjects\n\t\tlet v8Funcs = {};\n\t\tnativeAddon.enableDirectV8(v8Funcs, false);\n\t\tnativeAddon.clearKeptObjects = v8Funcs.clearKeptObjects;\n\t}\n\tnativeAddon.enableThreadSafeCalls();\n}\nsetNativeFunctions(nativeAddon);\n\nexport * from './index.js'\nexport { default } from './index.js'\n"],"names":["clearKeptObjects","arch","version","pathModule","dirname","fileURLToPath","loadNAPI","REUSE_BUFFER_MODE","IF_EXISTS","Uint8ArraySlice","savePosition","DYNAMIC_KEY_BUFFER_SIZE","position","doPosition","getLastVersion","getLastTxnId","path","orderedBinary","fs","tmpdir","MsgpackrEncoder","WeakLRUCache","EventEmitter","platform","compareKey","keyValueToBuffer","bufferToKeyValue","require","createRequire","v8AccelerationEnabled"],"mappings":"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"}
|