UNPKG

lmdb

Version:

Simple, efficient, scalable, high-performance LMDB interface

37 lines (34 loc) 1.29 kB
import { createRequire } from 'module'; import { setRequire } from './open.js'; import { nativeAddon, setNativeFunctions } from './native.js'; export { nativeAddon } from './native.js'; let require = createRequire(import.meta.url); setRequire(require); export let v8AccelerationEnabled = false; let versions = process.versions; if (!versions.deno && !process.isBun) { let [majorVersion, minorVersion] = versions.node.split('.'); if (versions.v8 && +majorVersion == nativeAddon.version.nodeCompiledVersion) { let v8Funcs = {}; let fastApiCalls = (majorVersion == 17 || majorVersion == 18 || (majorVersion == 16 && minorVersion > 8)) && !process.env.DISABLE_TURBO_CALLS; if (fastApiCalls) { require('v8').setFlagsFromString('--turbo-fast-api-calls'); } nativeAddon.enableDirectV8(v8Funcs, fastApiCalls); Object.assign(nativeAddon, v8Funcs); v8AccelerationEnabled = true; } else if (majorVersion == 14) { // node v14 only has ABI compatibility with node v16 for zero-arg clearKeptObjects let v8Funcs = {}; nativeAddon.enableDirectV8(v8Funcs, false); nativeAddon.clearKeptObjects = v8Funcs.clearKeptObjects; } } nativeAddon.enableThreadSafeCalls(); setNativeFunctions(nativeAddon); export * from './index.js'; export { default } from './index.js';