node-index.js 1.2 KB

1234567891011121314151617181920212223242526272829303132
  1. import { createRequire } from 'module';
  2. import { setRequire } from './open.js';
  3. import { nativeAddon, setNativeFunctions } from './native.js';
  4. export { nativeAddon } from './native.js'
  5. let require = createRequire(import.meta.url);
  6. setRequire(require);
  7. export let v8AccelerationEnabled = false
  8. let versions = process.versions;
  9. if (!versions.deno && !process.isBun) {
  10. let [ majorVersion, minorVersion ] = versions.node.split('.');
  11. if (versions.v8 && +majorVersion == nativeAddon.version.nodeCompiledVersion) {
  12. let v8Funcs = {};
  13. let fastApiCalls = (majorVersion == 17 || majorVersion == 18 || majorVersion == 16 && minorVersion > 8) && !process.env.DISABLE_TURBO_CALLS;
  14. if (fastApiCalls) {
  15. require('v8').setFlagsFromString('--turbo-fast-api-calls');
  16. }
  17. nativeAddon.enableDirectV8(v8Funcs, fastApiCalls);
  18. Object.assign(nativeAddon, v8Funcs);
  19. v8AccelerationEnabled = true;
  20. } else if (majorVersion == 14) {
  21. // node v14 only has ABI compatibility with node v16 for zero-arg clearKeptObjects
  22. let v8Funcs = {};
  23. nativeAddon.enableDirectV8(v8Funcs, false);
  24. nativeAddon.clearKeptObjects = v8Funcs.clearKeptObjects;
  25. }
  26. nativeAddon.enableThreadSafeCalls();
  27. }
  28. setNativeFunctions(nativeAddon);
  29. export * from './index.js'
  30. export { default } from './index.js'