diff --git a/addon/zstd.cpp b/addon/zstd.cpp index 26a6018..48f493d 100644 --- a/addon/zstd.cpp +++ b/addon/zstd.cpp @@ -1,5 +1,7 @@ #include "zstd.h" +#define NAPI_VERSION 9 + #include #include @@ -49,9 +51,17 @@ void Decompress(const CallbackInfo& info) { worker->Queue(); } +Value GetDefinedNapiVersion(const CallbackInfo& info) { + return Napi::String::New(info.Env(), std::to_string(NAPI_VERSION)); +} + Object Init(Env env, Object exports) { exports.Set(String::New(env, "compress"), Function::New(env, Compress)); exports.Set(String::New(env, "decompress"), Function::New(env, Decompress)); + + exports.Set(String::New(env, "getDefinedNapiVersion"), + Function::New(env, GetDefinedNapiVersion)); + return exports; } diff --git a/lib/index.js b/lib/index.js index 22104a9..994f967 100644 --- a/lib/index.js +++ b/lib/index.js @@ -39,6 +39,7 @@ exports.compress = async function compress(data, compressionLevel) { throw new Error(`zstd: ${e.message}`); } }; + exports.decompress = async function decompress(data) { if (!isUint8Array(data)) { throw new TypeError(`parameter 'data' must be a Uint8Array.`); @@ -49,3 +50,6 @@ exports.decompress = async function decompress(data) { throw new Error(`zstd: ${e.message}`); } }; + +/** used for testing */ +exports.getDefinedNapiVersion = zstd.getDefinedNapiVersion; diff --git a/package-lock.json b/package-lock.json index de26b86..eddcaa9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "node-addon-api": "^4.3.0", + "node-addon-api": "^8.5.0", "prebuild-install": "^7.1.3" }, "devDependencies": { @@ -3534,10 +3534,13 @@ } }, "node_modules/node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", - "license": "MIT" + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.5.0.tgz", + "integrity": "sha512-/bRZty2mXUIFY/xU5HLvveNHlswNJej+RnxBjOMkidWfwZzgTbPG1E3K5TOxRLOR+5hX7bSofy8yf1hZevMS8A==", + "license": "MIT", + "engines": { + "node": "^18 || ^20 || >= 21" + } }, "node_modules/node-api-headers": { "version": "1.4.0", diff --git a/package.json b/package.json index 17ef75d..158da40 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "binding.gyp" ], "dependencies": { - "node-addon-api": "^4.3.0", + "node-addon-api": "^8.5.0", "prebuild-install": "^7.1.3" }, "license": "Apache-2.0", @@ -49,7 +49,7 @@ }, "binary": { "napi_versions": [ - 4 + 9 ] }, "mongodb:zstd_version": "1.5.6" diff --git a/test/bundling/webpack/install_zstd.cjs b/test/bundling/webpack/install_zstd.cjs index adbbf4b..5c3e8b1 100644 --- a/test/bundling/webpack/install_zstd.cjs +++ b/test/bundling/webpack/install_zstd.cjs @@ -1,5 +1,3 @@ -'use strict'; - const { execSync } = require('node:child_process'); const { readFileSync } = require('node:fs'); const { resolve } = require('node:path'); @@ -19,6 +17,6 @@ console.log(`zstd Version: ${zstdVersion}`); xtrace('npm pack --pack-destination test/bundling/webpack', { cwd: zstdRoot }); -xtrace(`npm install --no-save mongodb-js-zstd-${zstdVersion}.tgz`); +xtrace(`npm install --ignore-scripts --no-save mongodb-js-zstd-${zstdVersion}.tgz`); console.log('zstd installed!'); diff --git a/test/index.test.js b/test/index.test.js index 523b295..f72774d 100644 --- a/test/index.test.js +++ b/test/index.test.js @@ -1,5 +1,5 @@ const { test } = require('mocha'); -const { compress, decompress } = require('../lib/index'); +const { compress, decompress, getDefinedNapiVersion } = require('../lib/index'); const { expect } = require('chai'); @@ -55,6 +55,12 @@ describe('compress', function () { }); }); +describe('misc', function () { + test('getDefinedNapiVersion() returns 9', function () { + expect(getDefinedNapiVersion()).to.equal('9'); + }); +}); + /** * @param {import('../index').decompress} decompress * @param {import('../index').compress} compress