H_PROJECT= mongosh -CUSTOM_ENV= SEGMENT_API_KEY=dummy GYP_DEFINES="libmongocrypt_link_type=dynamic" PUPPETEER_SKIP_DOWNLOAD=1 NPM_CONFIG_CACHE=${NPM_CACHE_DIR} +CUSTOM_ENV= SEGMENT_API_KEY=dummy \ + GYP_DEFINES="libmongocrypt_link_type=dynamic" \ + PUPPETEER_SKIP_DOWNLOAD=1 \ + NPM_CONFIG_CACHE=${NPM_CACHE_DIR} CONFIGURE_ENV= ${CUSTOM_ENV} MAKE_ENV= ${CUSTOM_ENV} \ NODE_JS_VERSION=file://${DISTDIR}/${DIST_SUBDIR}/${NODEJS_TARBALL} \ - BOXEDNODE_CONFIGURE_ARGS="--prefix=${PREFIX:S|^${DESTDIR}||},--shared-brotli,--shared-cares,--shared-libuv,--shared-nghttp2,--shared-nghttp3,--shared-ngtcp2,--shared-simdjson,--shared-zlib,--shared-zstd,--shared-openssl,--openssl-use-def-ca-store,--with-intl=system-icu,--without-npm" \ - BOXEDNODE_MAKE_ARGS="V=0" -CXXFLAGS+= -DNODE_API_EXPERIMENTAL \ - -DNODE_API_EXPERIMENTAL_NOGC_ENV_OPT_OUT - + BOXEDNODE_CONFIGURE_ARGS="--prefix=${PREFIX:S|^${DESTDIR}||},--shared-ada,--shared-brotli,--shared-cares,--shared-gtest,--shared-hdr-histogram,--shared-http-parser,--shared-libuv,--shared-merve,--shared-nbytes,--shared-nghttp2,--shared-nghttp3,--shared-ngtcp2,--shared-simdjson,--shared-sqlite,--shared-uvwasi,--shared-uvwasi-includes=${LOCALBASE}/include,--shared-zlib,--shared-zstd,--shared-openssl,--openssl-use-def-ca-store,--with-intl=system-icu,--without-corepack,--without-npm" \ + BOXEDNODE_MAKE_ARGS="V=0" \ + CC="${CCACHE_BIN} ${CC}" \ + CFLAGS="${CFLAGS}" \ + CXX="${CCACHE_BIN} ${CXX}" \ + CXXFLAGS="${CXXFLAGS}" \ + LDFLAGS="${LDFLAGS}" \ + LINK="${CXX}" +# CXXFLAGS+= -DNODE_API_EXPERIMENTAL \ +# -DNODE_API_EXPERIMENTAL_NOGC_ENV_OPT_OUT REINPLACE_ARGS= -i '' -MPROTECT_DISABLE= bin/mongosh +MONGO_CRYPT_VER=7.0.0 +KERBEROS_VER= 7.0.0 +OSDNSNATIVE_VER=2.0.1 +MODULES= \ + mongodb-client-encryption ${MONGO_CRYPT_VER} \ + kerberos ${KERBEROS_VER} \ + os-dns-native ${OSDNSNATIVE_VER} -MONGO_CRYPT_VER=6.4.0 -KERBEROS_VER= 2.1.0 -OSDNSNATIVE_VER=1.2.1 NODE_MODULES_DIR= ${WRKSRC}/node_modules +BOXEDNODE_DIR= ${WRKSRC}/packages/build/node_modules/boxednode NODE_MODULES_TARBALL= ${PORTNAME}-${DISTVERSIONFULL}-${ARCH}-node-modules.tar.xz -NPM_CACHE_DIR= ${TMPDIR}/.npm -NODEJS_TARBALL= node-v${NODEJS_PORTVERSION}.tar.gz -NODEJS_SHAFILE= node-v${NODEJS_PORTVERSION}-SHASUMS256.txt +NPM_CACHE_DIR= ${TMPDIR}/.npm +NODEJS_TARBALL= node-v${NODEJS_PORTVERSION}.tar.gz +NODEJS_SHAFILE= node-v${NODEJS_PORTVERSION}-SHASUMS256.txt post-fetch: - if [ ! -r ${DISTDIR}/${DIST_SUBDIR}/${NODEJS_TARBALL} -o ! -r ${DISTDIR}/${DIST_SUBDIR}/${NODEJS_SHAFILE} ]; then \ - ${FETCH_CMD} -o ${DISTDIR}/${DIST_SUBDIR} https://nodejs.org/dist/v${NODEJS_PORTVERSION}/${NODEJS_TARBALL}; \ - ${FETCH_CMD} -o ${DISTDIR}/${DIST_SUBDIR}/${NODEJS_SHAFILE} https://nodejs.org/dist/v${NODEJS_PORTVERSION}/SHASUMS256.txt; \ + if [ ! -r ${DISTDIR}/${DIST_SUBDIR}/${NODEJS_TARBALL} -o \ + ! -r ${DISTDIR}/${DIST_SUBDIR}/${NODEJS_SHAFILE} ]; then \ + ${FETCH_CMD} -o ${DISTDIR}/${DIST_SUBDIR} \ + https://nodejs.org/dist/v${NODEJS_PORTVERSION}/${NODEJS_TARBALL}; \ + ${FETCH_CMD} -o ${DISTDIR}/${DIST_SUBDIR}/${NODEJS_SHAFILE} \ + https://nodejs.org/dist/v${NODEJS_PORTVERSION}/SHASUMS256.txt; \ fi post-extract: @@ -89,11 +111,11 @@ post-extract: -e "s/shaSums.text()/fs_1.promises.readFile(shaSumsUrl, 'utf8')/g" \ -e "s/catch (_a) { }/catch (_a) { console.error(_a) }/g" \ -e "s|os_1.default.tmpdir()|'${WRKDIR}'|g" \ - ${NODE_MODULES_DIR}/boxednode/lib/index.js - ${GREP} -A36 "let version;" ${NODE_MODULES_DIR}/boxednode/lib/index.js + ${BOXEDNODE_DIR}/lib/index.js + ${GREP} -A36 "let version;" ${BOXEDNODE_DIR}/lib/index.js ${REINPLACE_CMD} -e "s|'install', '--ignore-scripts', '--production'|'--version'|g" \ - ${NODE_MODULES_DIR}/boxednode/lib/native-addons.js - ${GREP} "version" ${NODE_MODULES_DIR}/boxednode/lib/native-addons.js + ${BOXEDNODE_DIR}/lib/native-addons.js + ${GREP} "version" ${BOXEDNODE_DIR}/lib/native-addons.js .endif post-patch: @@ -101,24 +123,32 @@ post-patch: do-configure: ${FIND} ${WRKSRC}/scripts -name "*.orig" -delete - ${REINPLACE_CMD} 's|%%LOCALBASE%%|${LOCALBASE}|g' ${NODE_MODULES_DIR}/mongodb-client-encryption/binding.gyp ${NODE_MODULES_DIR}/kerberos/binding.gyp -.for module in mongodb-client-encryption kerberos os-dns-native - cd ${NODE_MODULES_DIR}/${module} && ${CONFIGURE_ENV} node-gyp configure --nodedir=${LOCALBASE} + ${REINPLACE_CMD} 's|%%LOCALBASE%%|${LOCALBASE}|g' \ + ${NODE_MODULES_DIR}/mongodb-client-encryption/binding.gyp +.for module ver in ${MODULES} + cd ${NODE_MODULES_DIR}/${module} && \ + ${CONFIGURE_ENV} node-gyp configure --nodedir=${LOCALBASE} .endfor do-build: -.for module in mongodb-client-encryption kerberos os-dns-native - cd ${NODE_MODULES_DIR}/${module} && ${MAKE_ENV} ${MAKE_CMD} BUILDTYPE=Release -C build -d +.for module ver in ${MODULES} + cd ${NODE_MODULES_DIR}/${module} && \ + ${MAKE_ENV} ${MAKE_CMD} BUILDTYPE=Release -C build -d .endfor - ${REINPLACE_CMD} -E 's/"version": ".*"/"version": "${DISTVERSION}"/g' ${WRKSRC}/packages/cli-repl/package.json - ${RM} -v \ - ${WRKSRC}/scripts/nodejs-patches/005-windows-escape-product-dir-abs-in-openssl-node-56111.patch \ - ${WRKSRC}/scripts/nodejs-patches/006-windows-virtual-terminal-input-libuv-4688.patch - cd ${WRKSRC} && ${MAKE_ENV} ${LOCALBASE}/bin/npm run compile-exec || (cat ${WRKSRC}/lerna-debug.log && false) + ${REINPLACE_CMD} -E 's/"version": ".*"/"version": "${DISTVERSION}"/g' \ + ${WRKSRC}/packages/cli-repl/package.json + cd ${WRKSRC} && ${MAKE_ENV} ${LOCALBASE}/bin/npm run compile-exec || \ + (cat ${WRKSRC}/lerna-debug.log && false) do-install: ${INSTALL_PROGRAM} ${WRKSRC}/dist/mongosh ${STAGEDIR}${PREFIX}/bin +do-test: + ${STAGEDIR}${PREFIX}/bin/mongosh mongodb://0.0.0.0:1 2>&1 | \ + ${GREP} -e "\(ECONNREFUSED\|ENETUNREACH\) 0.0.0.0:1" + ${STAGEDIR}${PREFIX}/bin/mongosh --nodb --eval "print('ok')" | ${GREP} "ok" + ${STAGEDIR}${PREFIX}/bin/mongosh --smokeTests | ${GREP} "all tests passed" + npm-pkg-list: extract ${GREP} registry.npmjs.org ${WRKSRC}/package-lock.json | \ | ${SED} -E 's/^[[:space:]]+//g' \ @@ -129,7 +159,8 @@ npm-pkg-list: extract | ${SED} -E 's|/-/.*@|@|g' \ > ${FILESDIR}/npm-pkg.list -.for module in mongodb-client-encryption kerberos os-dns-native mongodb-crypt-library-version glibc-version +.for module in mongodb-client-encryption kerberos os-dns-native \ + mongodb-crypt-library-version glibc-version cd ${NODE_MODULES_DIR}/${module} && ${LOCALBASE}/bin/npm list 2>/dev/null \ | ${GREP} UNMET \ | ${AWK} 'BEGIN{FS="UNMET DEPENDENCY "}{print $$2}' \ @@ -137,27 +168,31 @@ npm-pkg-list: extract .endfor node-modules-archive: patch -# Comment DISTFILES, post-extract - cd ${WRKSRC} && ${LOCALBASE}/bin/npx cross-env ${CONFIGURE_ENV} ${LOCALBASE}/bin/npm clean-install --cache ${NPM_CACHE_DIR} --no-audit --no-fund - cd ${WRKSRC} && ${LOCALBASE}/bin/npx cross-env ${CONFIGURE_ENV} ${LOCALBASE}/bin/npm install ipv6-normalize mongodb-redact --cache ${NPM_CACHE_DIR} --no-audit --no-fund - -.for module in mongodb-client-encryption kerberos os-dns-native +# Comment ${NODE_MODULES_TARBALL}:modules and post-extract +.for module ver in ${MODULES} ${MKDIR} -v ${NODE_MODULES_DIR}/${module} - ${TAR} -xzf ${DISTDIR}/${DIST_SUBDIR}/${module}-*.tgz -C ${NODE_MODULES_DIR}/${module} --strip-components 1 + ${TAR} -xzf ${DISTDIR}/${DIST_SUBDIR}/${module}-${ver}.tgz \ + -C ${NODE_MODULES_DIR}/${module} --strip-components 1 .endfor + cd ${WRKSRC} && ${LOCALBASE}/bin/npx cross-env ${CONFIGURE_ENV} \ + ${LOCALBASE}/bin/npm clean-install \ + --cache ${NPM_CACHE_DIR} --no-audit --no-fund + for f in ${FILESDIR}/node-modules-patches/*; do ${PATCH} -Nd ${WRKSRC} < $$f; done ${FIND} ${WRKSRC} -name "*.orig" -or -name "*.bak" -delete -.for module in mongodb-client-encryption kerberos os-dns-native mongodb-crypt-library-version glibc-version native-machine-id - cd ${NODE_MODULES_DIR}/${module} && ${CONFIGURE_ENV} ${LOCALBASE}/bin/npm install --ignore-scripts --cache ${NPM_CACHE_DIR} --no-audit --no-fund -.endfor - - cd ${WRKSRC} && ${TAR} cf - node_modules packages/*/node_modules | ${LOCALBASE}/bin/pv -s $$(/usr/bin/du -sAk node_modules | ${AWK} '{print $$1}')000 | ${XZ_CMD} > ${TMPDIR}/${NODE_MODULES_TARBALL} + cd ${WRKSRC} && ${TAR} cf - node_modules packages/*/node_modules | \ + ${LOCALBASE}/bin/pv -s $$(/usr/bin/du -sAk node_modules | \ + ${AWK} '{print $$1}')000 | ${XZ_CMD} > ${TMPDIR}/${NODE_MODULES_TARBALL} .include + .include "${PORTSDIR}/www/node${NODEJS_VERSION}/Makefile.version" -NODE_WITH_JIT!= ${BSDMAKE} -C ${PORTSDIR}/www/node${NODEJS_VERSION} showconfig | ${GREP} -o "JIT=on" || ${TRUE} + +NODE_WITH_JIT!= ${BSDMAKE} -C ${PORTSDIR}/www/node${NODEJS_VERSION} showconfig \ + | ${GREP} -o "JIT=on" || ${TRUE} .if empty(NODE_WITH_JIT) -IGNORE= www/node${NODEJS_VERSION} must be built with JIT enabled. Run '${BSDMAKE} -C ${PORTSDIR}/www/node${NODEJS_VERSION} config' to enable it. +IGNORE= www/node${NODEJS_VERSION} must be built with JIT enabled. Run '${BSDMAKE} -C ${PORTSDIR}/www/node${NODEJS_VERSION} config' to enable it .endif + .include diff --git a/databases/mongosh/distinfo b/databases/mongosh/distinfo index 3b7c2ef927a2..9f70e2f46c37 100644 --- a/databases/mongosh/distinfo +++ b/databases/mongosh/distinfo @@ -1,11 +1,11 @@ -TIMESTAMP = 1752255670 -SHA256 (mongosh/mongodb-client-encryption-6.4.0.tgz) = 5d283c4ee0265e1413166e810d6cbb4d35ace474deae4b056eeea6fd7e92a37b -SIZE (mongosh/mongodb-client-encryption-6.4.0.tgz) = 32081 -SHA256 (mongosh/kerberos-2.1.0.tgz) = eeb1d33472dcf15be8ae46e30ffc76455a62356a91cee52bb8d48f97a35a58c7 -SIZE (mongosh/kerberos-2.1.0.tgz) = 28988 -SHA256 (mongosh/os-dns-native-1.2.1.tgz) = 9baa54587fed81884735aee59d82eaf95870d344b83f5060a75256f4852d964d -SIZE (mongosh/os-dns-native-1.2.1.tgz) = 6535 -SHA256 (mongosh/mongosh-v2.5.5-amd64-node-modules.tar.xz) = 2d7fe2b2d85f3f5dd86c6cb6fd4eed96a8220120d721aaec4ed7133030bb20eb -SIZE (mongosh/mongosh-v2.5.5-amd64-node-modules.tar.xz) = 196534152 -SHA256 (mongosh/VultureProject-mongosh-v2.5.5_GH0.tar.gz) = 7efe030b48101f0c7b22304028fbae2b0c09224004a547c6c2268554946526fc -SIZE (mongosh/VultureProject-mongosh-v2.5.5_GH0.tar.gz) = 9409121 +TIMESTAMP = 1777881104 +SHA256 (mongosh/mongodb-client-encryption-7.0.0.tgz) = 4170688f9b745234346f33419394f54f0ad930bc9d83e56720b5b67dd8a2528e +SIZE (mongosh/mongodb-client-encryption-7.0.0.tgz) = 34400 +SHA256 (mongosh/kerberos-7.0.0.tgz) = b3065aa5da1948b40b51eee14aa2e87220c71bd393152a976397db4179edb8ec +SIZE (mongosh/kerberos-7.0.0.tgz) = 31619 +SHA256 (mongosh/os-dns-native-2.0.1.tgz) = 20199c29b82ca7576b6ede0540118803cf5cf3d162ed9b0e7e40be07170e93ef +SIZE (mongosh/os-dns-native-2.0.1.tgz) = 6624 +SHA256 (mongosh/mongosh-v2.8.3-amd64-node-modules.tar.xz) = 34f601ba436c58528ca25cb58c53cd88bef38e043e9de77c6fe4c470219fc000 +SIZE (mongosh/mongosh-v2.8.3-amd64-node-modules.tar.xz) = 75340904 +SHA256 (mongosh/VultureProject-mongosh-v2.8.3_GH0.tar.gz) = a404b3c63131869a7507e9db0e647d96223954805f6a96adc0b25d5da9d87631 +SIZE (mongosh/VultureProject-mongosh-v2.8.3_GH0.tar.gz) = 9610581 diff --git a/databases/mongosh/files/node-modules-patches/patch-node__modules_kerberos_binding.gyp b/databases/mongosh/files/node-modules-patches/patch-node__modules_kerberos_binding.gyp deleted file mode 100644 index c0f0668169eb..000000000000 --- a/databases/mongosh/files/node-modules-patches/patch-node__modules_kerberos_binding.gyp +++ /dev/null @@ -1,31 +0,0 @@ ---- node_modules/kerberos/binding.gyp.orig 2024-05-13 15:16:38 UTC -+++ node_modules/kerberos/binding.gyp -@@ -34,14 +34,17 @@ - 'GCC_SYMBOLS_PRIVATE_EXTERN': 'YES', # -fvisibility=hidden - } - }], -- ['OS=="mac" or OS=="linux"', { -+ ['OS=="mac" or OS=="linux" or OS=="freebsd"', { - 'sources': [ - 'src/unix/base64.cc', - 'src/unix/kerberos_gss.cc', - 'src/unix/kerberos_unix.cc' - ] - }], -- ['(OS=="mac" or OS=="linux") and (kerberos_use_rtld!="true")', { -+ ['(OS=="mac" or OS=="linux" or OS=="freebsd") and (kerberos_use_rtld!="true")', { -+ 'include_dirs': [ -+ '%%LOCALBASE%%/include' -+ ], - 'link_settings': { - 'libraries': [ - '-lkrb5', -@@ -58,7 +62,7 @@ - }] - ] - }], -- ['(OS=="mac" or OS=="linux") and (kerberos_use_rtld=="true")', { -+ ['(OS=="mac" or OS=="linux" or OS=="freebsd") and (kerberos_use_rtld=="true")', { - 'defines': ['KERBEROS_USE_RTLD=1'], - 'link_settings': { - 'libraries': [ diff --git a/databases/mongosh/files/node-modules-patches/patch-node__modules_kerberos_src_kerberos__common.h b/databases/mongosh/files/node-modules-patches/patch-node__modules_kerberos_src_kerberos__common.h deleted file mode 100644 index ca2ad82d6d29..000000000000 --- a/databases/mongosh/files/node-modules-patches/patch-node__modules_kerberos_src_kerberos__common.h +++ /dev/null @@ -1,11 +0,0 @@ ---- node_modules/kerberos/src/kerberos_common.h.orig 2024-05-13 16:09:25 UTC -+++ node_modules/kerberos/src/kerberos_common.h -@@ -1,7 +1,7 @@ - #ifndef KERBEROS_COMMON_H - #define KERBEROS_COMMON_H - --#if defined(__linux__) || defined(__APPLE__) -+#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) - #include "unix/kerberos_gss.h" - - namespace node_kerberos { diff --git a/databases/mongosh/files/node-modules-patches/patch-packages_build_node__modules_boxednode_lib_index.js b/databases/mongosh/files/node-modules-patches/patch-packages_build_node__modules_boxednode_lib_index.js new file mode 100644 index 000000000000..1d0839c2e361 --- /dev/null +++ b/databases/mongosh/files/node-modules-patches/patch-packages_build_node__modules_boxednode_lib_index.js @@ -0,0 +1,13 @@ +--- packages/build/node_modules/boxednode/lib/index.js.orig 2026-04-29 13:15:26 UTC ++++ packages/build/node_modules/boxednode/lib/index.js +@@ -170,6 +170,10 @@ async function compileNode(sourcePath, linkedJSModules + for (const module of linkedJSModules) { + configure.push('--link-module', module); + } ++ for (const static_lib of ['ada', 'brotli', 'cares', 'corepack', 'googletest', 'histogram', 'icu-small', 'llhttp', ++ 'merve', 'nbytes', 'nghttp2', 'ngtcp2', 'npm', 'simdjson', 'sqlite', 'uv', 'uvwasi', 'zlib', 'zstd']) { ++ await fs_1.promises.rm(path_1.default.join(sourcePath, 'deps', static_lib), { recursive: true, force: true }); ++ } + await helpers_1.spawnBuildCommand(configure, options); + if (configure.includes('--fully-static') || configure.includes('--partly-static')) { + for (const file of [ diff --git a/databases/mongosh/files/node-patches/011-deps-v8-src-base-small-vector.h b/databases/mongosh/files/node-patches/011-deps-v8-src-base-small-vector.h deleted file mode 100644 index be80d9bd1c9f..000000000000 --- a/databases/mongosh/files/node-patches/011-deps-v8-src-base-small-vector.h +++ /dev/null @@ -1,10 +0,0 @@ ---- a/deps/v8/src/base/small-vector.h 2024-04-24 14:03:50 UTC -+++ b/deps/v8/src/base/small-vector.h -@@ -22,7 +22,6 @@ class SmallVector { - class SmallVector { - // Currently only support trivially copyable and trivially destructible data - // types, as it uses memcpy to copy elements and never calls destructors. -- ASSERT_TRIVIALLY_COPYABLE(T); - static_assert(std::is_trivially_destructible::value); - - public: diff --git a/databases/mongosh/files/node-patches/011-src_node__cjs__lexer.cc b/databases/mongosh/files/node-patches/011-src_node__cjs__lexer.cc new file mode 100644 index 000000000000..2c15ef7be6a4 --- /dev/null +++ b/databases/mongosh/files/node-patches/011-src_node__cjs__lexer.cc @@ -0,0 +1,21 @@ +Obtained from: https://github.com/nodejs/node/commit/59a522af24173b244cb86829de145d46b143a45c + +--- a/src/node_cjs_lexer.cc.orig 2026-04-29 21:32:48 UTC ++++ b/src/node_cjs_lexer.cc +@@ -71,14 +71,14 @@ void Parse(const FunctionCallbackInfo& args) { + // Convert exports to JS Set + Local exports_set = Set::New(isolate); + for (const auto& exp : analysis.exports) { +- exports_set->Add(context, CreateString(isolate, exp)).ToLocalChecked(); ++ exports_set->Add(context, CreateString(isolate, exp.name)).ToLocalChecked(); + } + + // Convert reexports to JS array using batch creation + LocalVector reexports_vec(isolate); + reexports_vec.reserve(analysis.re_exports.size()); + for (const auto& reexp : analysis.re_exports) { +- reexports_vec.push_back(CreateString(isolate, reexp)); ++ reexports_vec.push_back(CreateString(isolate, reexp.name)); + } + + // Create result array [exports (Set), reexports (Array)] diff --git a/databases/mongosh/files/patch-package.json b/databases/mongosh/files/patch-package.json index 4bdeea2d4eea..90f9991fb228 100644 --- a/databases/mongosh/files/patch-package.json +++ b/databases/mongosh/files/patch-package.json @@ -1,6 +1,6 @@ ---- package.json.orig 2025-07-02 13:57:45 UTC +--- package.json.orig 2026-04-30 23:25:01 UTC +++ package.json -@@ -29,7 +29,7 @@ +@@ -30,7 +30,7 @@ "pretest-smoke": "npm run compile-cli", "test-smoke": "npm run test-smoke -w @mongosh/cli-repl", "compile": "npm run compile --workspaces --if-present", @@ -9,7 +9,7 @@ "prestart-cli": "npm run compile-cli", "start-cli": "npm run start -w @mongosh/cli-repl", "start-browser": "npm run start --workspace @mongosh/browser-repl", -@@ -69,7 +69,6 @@ +@@ -68,7 +68,6 @@ "postcreate-static-analysis-report": "mongodb-sbom-tools sarif-to-markdown --sarif=.sbom/codeql.sarif.json --md=.sbom/codeql.md", "where": "monorepo-where", "reformat": "npm run reformat --workspaces --if-present", @@ -17,11 +17,11 @@ "precommit": "precommit", "preinstall": "node scripts/sort-workspaces.js", "bump-auxiliary": "npm run bump-auxiliary --workspace @mongosh/build", -@@ -114,7 +113,6 @@ - "duplexpair": "^1.0.2", +@@ -108,7 +107,6 @@ + "cross-env": "^6.0.3", "find-up": "^5.0.0", "glob": "^10.3.12", - "husky": "^9.0.11", - "mocha": "^10.2.0", - "mongodb": "^6.16.0", - "mongodb-runner": "^5.7.1", + "knip": "^5.71.0", + "mocha": "^11.7.5", + "mongodb-runner": "^6.5.3",