From 1e2aa323e2a2f2056a8e327251709003c1dd0352 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Tue, 20 Aug 2024 15:45:48 +0100 Subject: [PATCH 1/3] Rename `switch_package_to_release.js` to `.cjs` Slightly surprisingly, the symlink is enough to make `node switch_package_to_release.js` work. --- scripts/switch_package_to_release.cjs | 22 ++++++++++++++++++++++ scripts/switch_package_to_release.js | 23 +---------------------- 2 files changed, 23 insertions(+), 22 deletions(-) create mode 100755 scripts/switch_package_to_release.cjs mode change 100755 => 120000 scripts/switch_package_to_release.js diff --git a/scripts/switch_package_to_release.cjs b/scripts/switch_package_to_release.cjs new file mode 100755 index 00000000000..353840d4d92 --- /dev/null +++ b/scripts/switch_package_to_release.cjs @@ -0,0 +1,22 @@ +#!/usr/bin/env node + +const fsProm = require("fs/promises"); + +const PKGJSON = "package.json"; + +async function main() { + const pkgJson = JSON.parse(await fsProm.readFile(PKGJSON, "utf8")); + for (const field of ["main", "typings"]) { + if (pkgJson["matrix_lib_" + field] !== undefined) { + pkgJson[field] = pkgJson["matrix_lib_" + field]; + } + } + + // matrix-js-sdk is built into ECMAScript modules. Make sure we declare it as such. + // See https://nodejs.org/api/packages.html#type. + pkgJson["type"] = "module"; + + await fsProm.writeFile(PKGJSON, JSON.stringify(pkgJson, null, 2)); +} + +main(); diff --git a/scripts/switch_package_to_release.js b/scripts/switch_package_to_release.js deleted file mode 100755 index 353840d4d92..00000000000 --- a/scripts/switch_package_to_release.js +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env node - -const fsProm = require("fs/promises"); - -const PKGJSON = "package.json"; - -async function main() { - const pkgJson = JSON.parse(await fsProm.readFile(PKGJSON, "utf8")); - for (const field of ["main", "typings"]) { - if (pkgJson["matrix_lib_" + field] !== undefined) { - pkgJson[field] = pkgJson["matrix_lib_" + field]; - } - } - - // matrix-js-sdk is built into ECMAScript modules. Make sure we declare it as such. - // See https://nodejs.org/api/packages.html#type. - pkgJson["type"] = "module"; - - await fsProm.writeFile(PKGJSON, JSON.stringify(pkgJson, null, 2)); -} - -main(); diff --git a/scripts/switch_package_to_release.js b/scripts/switch_package_to_release.js new file mode 120000 index 00000000000..27f1619c9a2 --- /dev/null +++ b/scripts/switch_package_to_release.js @@ -0,0 +1 @@ +switch_package_to_release.cjs \ No newline at end of file From 51fdaf9e05842a5e95d5a9585d8798196a3f81ec Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Tue, 20 Aug 2024 15:42:52 +0100 Subject: [PATCH 2/3] Rename .eslintrc.js to .cjs Again, declare this as commonjs --- .eslintrc.js => .eslintrc.cjs | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .eslintrc.js => .eslintrc.cjs (100%) diff --git a/.eslintrc.js b/.eslintrc.cjs similarity index 100% rename from .eslintrc.js rename to .eslintrc.cjs From bc0f8c47fb75798ae96a617a40f1ca5319fac1bd Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Tue, 20 Aug 2024 15:47:04 +0100 Subject: [PATCH 3/3] Move `type:module` declaration into package.json. matrix-js-sdk is built into ECMAScript modules, and we should declare it as such. See https://nodejs.org/api/packages.html#type. Failure to do so causes problems for javascript projects attempting to build against matrix-js-sdk: see https://github.com/matrix-org/matrix-js-sdk/issues/4347. Previously, we did this as part of the package.json switcheroo, but that is unnecessarily fragile. matrix-react-sdk, element-web, etc are unaffected by this, because they use the typescript files directly, by importing `matrix-js-sdk/src/...`. --- package.json | 1 + scripts/release/pre-release.sh | 3 --- scripts/switch_package_to_release.cjs | 4 ---- 3 files changed, 1 insertion(+), 7 deletions(-) diff --git a/package.json b/package.json index 075d821ec9a..29624b30b0a 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ "keywords": [ "matrix-org" ], + "type": "module", "main": "./src/index.ts", "browser": "./src/browser-index.ts", "matrix_src_main": "./src/index.ts", diff --git a/scripts/release/pre-release.sh b/scripts/release/pre-release.sh index 19319fb6105..6b47ef180ff 100755 --- a/scripts/release/pre-release.sh +++ b/scripts/release/pre-release.sh @@ -12,6 +12,3 @@ do jq ".$i = .matrix_lib_$i" package.json > package.json.new && mv package.json.new package.json && yarn prettier --write package.json fi done - -# Ensure that "type": "module" is present -jq '.type = "module"' package.json > package.json.new && mv package.json.new package.json && yarn prettier --write package.json diff --git a/scripts/switch_package_to_release.cjs b/scripts/switch_package_to_release.cjs index 353840d4d92..6d857a4070a 100755 --- a/scripts/switch_package_to_release.cjs +++ b/scripts/switch_package_to_release.cjs @@ -12,10 +12,6 @@ async function main() { } } - // matrix-js-sdk is built into ECMAScript modules. Make sure we declare it as such. - // See https://nodejs.org/api/packages.html#type. - pkgJson["type"] = "module"; - await fsProm.writeFile(PKGJSON, JSON.stringify(pkgJson, null, 2)); }