From d412887bf4c7450c5ad8725c31ab926e83942ad2 Mon Sep 17 00:00:00 2001 From: Simon Laux Date: Fri, 7 Jun 2024 23:34:12 +0200 Subject: [PATCH] refactor(@deltachat/stdio-rpc-server): use old school require instead of the experimental json import (#5628) to get rid of warning. Should also make it possible to use nodejs versions older than 20.11. --- deltachat-rpc-server/npm-package/README.md | 2 +- deltachat-rpc-server/npm-package/index.js | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/deltachat-rpc-server/npm-package/README.md b/deltachat-rpc-server/npm-package/README.md index 1fe05a355..cd7594b09 100644 --- a/deltachat-rpc-server/npm-package/README.md +++ b/deltachat-rpc-server/npm-package/README.md @@ -7,7 +7,7 @@ This simplifies cross-compilation and even reduces binary size (no CFFI layer an ## Usage -> The **minimum** nodejs version for this package is `20.11` +> The **minimum** nodejs version for this package is `16` ``` npm i @deltachat/stdio-rpc-server @deltachat/jsonrpc-client diff --git a/deltachat-rpc-server/npm-package/index.js b/deltachat-rpc-server/npm-package/index.js index 3098bedd0..aafc9041e 100644 --- a/deltachat-rpc-server/npm-package/index.js +++ b/deltachat-rpc-server/npm-package/index.js @@ -11,9 +11,6 @@ import { NPM_NOT_FOUND_UNSUPPORTED_PLATFORM_ERROR, } from "./src/errors.js"; -// Because this is not compiled by typescript, esm needs this stuff (` with { type: "json" };`, -// nodejs still complains about it being experimental, but deno also uses it, so treefit bets taht it will become standard) -import package_json from "./package.json" with { type: "json" }; import { createRequire } from "node:module"; function findRPCServerInNodeModules() { @@ -25,7 +22,12 @@ function findRPCServerInNodeModules() { return resolve(package_name); } catch (error) { console.debug("findRpcServerInNodeModules", error); - if (Object.keys(package_json.optionalDependencies).includes(package_name)) { + const require = createRequire(import.meta.url); + if ( + Object.keys(require("./package.json").optionalDependencies).includes( + package_name + ) + ) { throw new Error(NPM_NOT_FOUND_SUPPORTED_PLATFORM_ERROR(package_name)); } else { throw new Error(NPM_NOT_FOUND_UNSUPPORTED_PLATFORM_ERROR());