33 lines
1.2 KiB
JavaScript
33 lines
1.2 KiB
JavaScript
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'
|