From 1184d63291de015b9fed35057a4f722a43395d90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Roli=C5=84ski?= Date: Mon, 1 Dec 2025 09:12:51 +0100 Subject: [PATCH 01/18] Redo packaging for `utils` package --- package-lock.json | 502 +++++++++++++++++++++- packages/utils/jest.config.ts | 11 +- packages/utils/package.json | 30 +- packages/utils/rollup.config.ts | 107 +++++ packages/utils/src/SigningUtil.ts | 2 +- packages/utils/src/browser/crypto.ts | 13 + packages/utils/src/browser/os.ts | 5 + packages/utils/src/crossPlatformCrypto.ts | 15 - packages/utils/src/exports.ts | 2 +- packages/utils/src/keyToArrayIndex.ts | 4 +- packages/utils/src/node/crypto.ts | 15 + packages/utils/tsconfig.browser.json | 40 +- packages/utils/tsconfig.jest.json | 13 +- packages/utils/tsconfig.json | 10 +- packages/utils/tsconfig.node.json | 32 +- packages/utils/tsconfig.rollup.json | 11 + 16 files changed, 755 insertions(+), 57 deletions(-) create mode 100644 packages/utils/rollup.config.ts create mode 100644 packages/utils/src/browser/crypto.ts create mode 100644 packages/utils/src/browser/os.ts delete mode 100644 packages/utils/src/crossPlatformCrypto.ts create mode 100644 packages/utils/src/node/crypto.ts create mode 100644 packages/utils/tsconfig.rollup.json diff --git a/package-lock.json b/package-lock.json index 0f328f951a..b40b516df9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4361,9 +4361,9 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { @@ -6852,6 +6852,380 @@ "@protobuf-ts/runtime": "^2.11.1" } }, + "node_modules/@rollup/plugin-alias": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-6.0.0.tgz", + "integrity": "sha512-tPCzJOtS7uuVZd+xPhoy5W4vThe6KWXNmsFCNktaAh5RTqcLiSfT4huPQIXkgJ6YCOjJHvecOAzQxLFhPxKr+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "rollup": ">=4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.3.tgz", + "integrity": "sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.3.tgz", + "integrity": "sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.3.tgz", + "integrity": "sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.3.tgz", + "integrity": "sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.3.tgz", + "integrity": "sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.3.tgz", + "integrity": "sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.3.tgz", + "integrity": "sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.3.tgz", + "integrity": "sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.3.tgz", + "integrity": "sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.3.tgz", + "integrity": "sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.3.tgz", + "integrity": "sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.3.tgz", + "integrity": "sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.3.tgz", + "integrity": "sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.3.tgz", + "integrity": "sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.3.tgz", + "integrity": "sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.3.tgz", + "integrity": "sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.3.tgz", + "integrity": "sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.3.tgz", + "integrity": "sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.3.tgz", + "integrity": "sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.3.tgz", + "integrity": "sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.3.tgz", + "integrity": "sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.3.tgz", + "integrity": "sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.3.tgz", + "integrity": "sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@rtsao/scc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", @@ -7860,6 +8234,16 @@ "@types/node": "*" } }, + "node_modules/@types/create-hash": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@types/create-hash/-/create-hash-1.2.6.tgz", + "integrity": "sha512-/VIViZZAK3rAFvfGbWmcLaxwKfmU213W/XL2cr5VE0ac44jE5ky7+sHl54OJhd+bTz7sqi+Ev//8RU1F/S/ZJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/dns2": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/@types/dns2/-/dns2-2.0.10.tgz", @@ -8156,6 +8540,13 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "license": "MIT" }, + "node_modules/@types/resolve": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/responselike": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", @@ -11243,7 +11634,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.6.tgz", "integrity": "sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==", - "dev": true, "license": "MIT", "dependencies": { "inherits": "^2.0.4", @@ -12147,7 +12537,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, "license": "MIT", "dependencies": { "cipher-base": "^1.0.1", @@ -13980,6 +14369,13 @@ "node": ">=4.0" } }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -15636,7 +16032,6 @@ "version": "3.0.5", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.5.tgz", "integrity": "sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==", - "dev": true, "license": "MIT", "dependencies": { "inherits": "^2.0.4", @@ -16598,6 +16993,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true, + "license": "MIT" + }, "node_modules/is-nan": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", @@ -19351,6 +19753,16 @@ "node": "20 || >=22" } }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, "node_modules/make-dir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", @@ -19622,7 +20034,6 @@ "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, "license": "MIT", "dependencies": { "hash-base": "^3.0.0", @@ -22799,7 +23210,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true, "license": "MIT" }, "node_modules/path-exists": { @@ -24310,7 +24720,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, "license": "MIT", "dependencies": { "hash-base": "^3.0.0", @@ -24336,6 +24745,71 @@ "node": ">=8.0" } }, + "node_modules/rollup": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.3.tgz", + "integrity": "sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.53.3", + "@rollup/rollup-android-arm64": "4.53.3", + "@rollup/rollup-darwin-arm64": "4.53.3", + "@rollup/rollup-darwin-x64": "4.53.3", + "@rollup/rollup-freebsd-arm64": "4.53.3", + "@rollup/rollup-freebsd-x64": "4.53.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.53.3", + "@rollup/rollup-linux-arm-musleabihf": "4.53.3", + "@rollup/rollup-linux-arm64-gnu": "4.53.3", + "@rollup/rollup-linux-arm64-musl": "4.53.3", + "@rollup/rollup-linux-loong64-gnu": "4.53.3", + "@rollup/rollup-linux-ppc64-gnu": "4.53.3", + "@rollup/rollup-linux-riscv64-gnu": "4.53.3", + "@rollup/rollup-linux-riscv64-musl": "4.53.3", + "@rollup/rollup-linux-s390x-gnu": "4.53.3", + "@rollup/rollup-linux-x64-gnu": "4.53.3", + "@rollup/rollup-linux-x64-musl": "4.53.3", + "@rollup/rollup-openharmony-arm64": "4.53.3", + "@rollup/rollup-win32-arm64-msvc": "4.53.3", + "@rollup/rollup-win32-ia32-msvc": "4.53.3", + "@rollup/rollup-win32-x64-gnu": "4.53.3", + "@rollup/rollup-win32-x64-msvc": "4.53.3", + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-dts": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-6.3.0.tgz", + "integrity": "sha512-d0UrqxYd8KyZ6i3M2Nx7WOMy708qsV/7fTHMHxCMCBOAe3V/U7OMPu5GkX8hC+cmkHhzGnfeYongl1IgiooddA==", + "dev": true, + "license": "LGPL-3.0-only", + "dependencies": { + "magic-string": "^0.30.21" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/Swatinem" + }, + "optionalDependencies": { + "@babel/code-frame": "^7.27.1" + }, + "peerDependencies": { + "rollup": "^3.29.4 || ^4", + "typescript": "^4.5 || ^5.0" + } + }, "node_modules/router": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", @@ -24841,7 +25315,6 @@ "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, "license": "(MIT AND BSD-3-Clause)", "dependencies": { "inherits": "^2.0.1", @@ -29163,17 +29636,24 @@ "dependencies": { "@noble/curves": "^1.9.7", "@noble/post-quantum": "^0.4.1", + "create-hash": "^1.2.0", "eventemitter3": "^5.0.0", "lodash": "^4.17.21", + "path-browserify": "^1.0.1", "pino": "^10.1.0", "pino-pretty": "^13.1.2", "secp256k1": "^5.0.1", "sha3": "^2.1.4" }, "devDependencies": { + "@rollup/plugin-alias": "^6.0.0", + "@rollup/plugin-node-resolve": "^16.0.3", "@streamr/browser-test-runner": "^0.0.1", + "@types/create-hash": "^1.2.6", "@types/lodash": "^4.17.21", - "@types/secp256k1": "^4.0.7" + "@types/secp256k1": "^4.0.7", + "rollup": "^4.53.3", + "rollup-plugin-dts": "^6.3.0" } } } diff --git a/packages/utils/jest.config.ts b/packages/utils/jest.config.ts index 550da64839..5aa59bc955 100644 --- a/packages/utils/jest.config.ts +++ b/packages/utils/jest.config.ts @@ -1 +1,10 @@ -export { default } from '../../jest.config' +import type { Config } from "@jest/types" +import defaultConfig from "../../jest.config" + +export default { + ...defaultConfig, + moduleNameMapper: { + "^@crypto$": "/src/node/crypto", + }, + displayName: "@streamr/utils", +} satisfies Config.InitialOptions diff --git a/packages/utils/package.json b/packages/utils/package.json index 81f5d087cd..1b084a8da1 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -2,22 +2,31 @@ "name": "@streamr/utils", "version": "103.1.2", "description": "A collection of shared common utilities", + "type": "module", "repository": { "type": "git", "url": "git+https://github.com/streamr-dev/network.git", "directory": "packages/utils" }, - "main": "./dist/src/exports.js", - "types": "./dist/src/exports.d.ts", + "exports": { + "browser": { + "import": "./dist/browser/src/exports.js", + "types": "./dist/browser/src/exports.d.ts" + }, + "node": { + "import": "./dist/node/src/exports.js", + "types": "./dist/node/src/exports.d.ts" + } + }, "files": [ - "dist", - "!*.tsbuildinfo", + "dist/node/src/exports.*", + "dist/browser/src/exports.*", "README.md", "LICENSE" ], "scripts": { - "build": "tsc --build tsconfig.node.json", - "check": "tsc -p ./tsconfig.jest.json", + "prebuild": "npm run clean && tsc -p tsconfig.rollup.json", + "build": "tsc -b && rollup -c dist/rollup.config.js", "clean": "jest --clearCache || true; rm -rf dist *.tsbuildinfo node_modules/.cache || true", "eslint": "eslint --cache --cache-location=node_modules/.cache/.eslintcache/ '*/**/*.{js,ts}'", "test": "jest", @@ -28,16 +37,23 @@ "dependencies": { "@noble/curves": "^1.9.7", "@noble/post-quantum": "^0.4.1", + "create-hash": "^1.2.0", "eventemitter3": "^5.0.0", "lodash": "^4.17.21", + "path-browserify": "^1.0.1", "pino": "^10.1.0", "pino-pretty": "^13.1.2", "secp256k1": "^5.0.1", "sha3": "^2.1.4" }, "devDependencies": { + "@rollup/plugin-alias": "^6.0.0", + "@rollup/plugin-node-resolve": "^16.0.3", "@streamr/browser-test-runner": "^0.0.1", + "@types/create-hash": "^1.2.6", "@types/lodash": "^4.17.21", - "@types/secp256k1": "^4.0.7" + "@types/secp256k1": "^4.0.7", + "rollup": "^4.53.3", + "rollup-plugin-dts": "^6.3.0" } } diff --git a/packages/utils/rollup.config.ts b/packages/utils/rollup.config.ts new file mode 100644 index 0000000000..20f5068e76 --- /dev/null +++ b/packages/utils/rollup.config.ts @@ -0,0 +1,107 @@ +import { defineConfig, type RollupOptions } from 'rollup' +import { dts } from 'rollup-plugin-dts' +import alias, { type Alias } from '@rollup/plugin-alias' +import resolve from '@rollup/plugin-node-resolve' + +const nodejsAliases: Alias[] = [ + { + find: '@crypto', + replacement: './node/crypto.js', + }, +] + +const browserAliases: Alias[] = [ + { + find: '@crypto', + replacement: './browser/crypto.js', + }, + { + find: 'os', + replacement: './browser/os.js', + }, + { + find: 'path', + replacement: 'path-browserify', + }, +] + +export default defineConfig([ + nodejs(), + nodejsTypes(), + browser(), + browserTypes(), +]) + +function nodejs(): RollupOptions { + return { + input: 'dist/node/src/exports.js', + output: [ + { + format: 'es', + file: 'dist/node/src/exports.js', + sourcemap: true, + }, + ], + plugins: [ + alias({ + entries: nodejsAliases, + }), + resolve({ preferBuiltins: true, resolveOnly: () => false }), + ], + } +} + +function browser(): RollupOptions { + return { + input: 'dist/browser/src/exports.js', + output: [ + { + format: 'es', + file: 'dist/browser/src/exports.js', + sourcemap: true, + }, + ], + plugins: [ + alias({ + entries: browserAliases, + }), + resolve({ browser: true, resolveOnly: () => false }), + ], + } +} + +function nodejsTypes(): RollupOptions { + return { + input: 'dist/node/src/exports.d.ts', + output: [ + { + file: 'dist/node/src/exports.d.ts', + }, + ], + plugins: [ + alias({ + entries: nodejsAliases, + }), + resolve(), + dts(), + ], + } +} + +function browserTypes(): RollupOptions { + return { + input: 'dist/browser/src/exports.d.ts', + output: [ + { + file: 'dist/browser/src/exports.d.ts', + }, + ], + plugins: [ + alias({ + entries: browserAliases, + }), + resolve({ browser: true }), + dts(), + ], + } +} diff --git a/packages/utils/src/SigningUtil.ts b/packages/utils/src/SigningUtil.ts index 23104621d0..37f866e2b2 100644 --- a/packages/utils/src/SigningUtil.ts +++ b/packages/utils/src/SigningUtil.ts @@ -6,7 +6,7 @@ import { randomBytes } from '@noble/post-quantum/utils' import { p256 } from '@noble/curves/p256' import { areEqualBinaries, binaryToHex } from './binaryUtils' import type { UserIDRaw } from './UserID' -import { getSubtle } from './crossPlatformCrypto' +import { getSubtle } from '@crypto' import type { webcrypto } from 'crypto' export const KEY_TYPES = [ diff --git a/packages/utils/src/browser/crypto.ts b/packages/utils/src/browser/crypto.ts new file mode 100644 index 0000000000..314ae02041 --- /dev/null +++ b/packages/utils/src/browser/crypto.ts @@ -0,0 +1,13 @@ +import type { webcrypto } from 'crypto' + +export function getSubtle(): webcrypto.SubtleCrypto { + if (!crypto.subtle) { + const url = + 'https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto' + throw new Error( + `SubtleCrypto not supported. This feature is available only in secure contexts (HTTPS). ${url}` + ) + } + + return crypto.subtle as webcrypto.SubtleCrypto +} diff --git a/packages/utils/src/browser/os.ts b/packages/utils/src/browser/os.ts new file mode 100644 index 0000000000..bb4d2b93e8 --- /dev/null +++ b/packages/utils/src/browser/os.ts @@ -0,0 +1,5 @@ +const os = { + homedir: (): string => '/' +} + +export default os diff --git a/packages/utils/src/crossPlatformCrypto.ts b/packages/utils/src/crossPlatformCrypto.ts deleted file mode 100644 index fa04d35144..0000000000 --- a/packages/utils/src/crossPlatformCrypto.ts +++ /dev/null @@ -1,15 +0,0 @@ -import crypto from 'crypto' - -declare const self: any - -export function getSubtle(): crypto.webcrypto.SubtleCrypto { - // in browser main thread, self === window - // in web workers, self is defined but window is not - // in node.js, self is undefined - const subtle = typeof self !== 'undefined' ? self?.crypto?.subtle : crypto.webcrypto.subtle - if (!subtle) { - const url = 'https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto' - throw new Error(`SubtleCrypto not supported. This feature is available only in secure contexts (HTTPS) & Node 16+. ${url}`) - } - return subtle -} diff --git a/packages/utils/src/exports.ts b/packages/utils/src/exports.ts index a322f49558..471a5953d9 100644 --- a/packages/utils/src/exports.ts +++ b/packages/utils/src/exports.ts @@ -53,5 +53,5 @@ export { type UserID, type UserIDRaw, toUserId, toUserIdRaw, isValidUserId, isEt export type { HexString } from './HexString' export type { ChangeFieldType, MapKey } from './types' export { type WeiAmount, multiplyWeiAmount } from './WeiAmount' -export { getSubtle } from './crossPlatformCrypto' +export { getSubtle } from '@crypto' export { SigningUtil, EcdsaSecp256k1Evm, EcdsaSecp256r1, MlDsa87, type KeyType, KEY_TYPES } from './SigningUtil' diff --git a/packages/utils/src/keyToArrayIndex.ts b/packages/utils/src/keyToArrayIndex.ts index c248b02fb8..124046b9bc 100644 --- a/packages/utils/src/keyToArrayIndex.ts +++ b/packages/utils/src/keyToArrayIndex.ts @@ -1,4 +1,4 @@ -import crypto from 'crypto' +import createHash from 'create-hash' /** * Computes a deterministic index for a given string or number key. @@ -25,7 +25,7 @@ export function keyToArrayIndex(lengthOfArray: number, key: string | number): nu } // String key handling - const buffer = crypto.createHash('md5').update(key).digest() + const buffer = createHash('md5').update(key).digest() const intHash = buffer.readInt32LE(0) return Math.abs(intHash) % lengthOfArray } diff --git a/packages/utils/src/node/crypto.ts b/packages/utils/src/node/crypto.ts new file mode 100644 index 0000000000..be58f984fb --- /dev/null +++ b/packages/utils/src/node/crypto.ts @@ -0,0 +1,15 @@ +import crypto from 'crypto' + +export function getSubtle(): crypto.webcrypto.SubtleCrypto { + const subtle = crypto.webcrypto.subtle + + if (!subtle) { + const url = + 'https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto' + throw new Error( + `SubtleCrypto not supported. This feature is available only in Node 16+. ${url}` + ) + } + + return subtle +} diff --git a/packages/utils/tsconfig.browser.json b/packages/utils/tsconfig.browser.json index 815ac97107..327a558408 100644 --- a/packages/utils/tsconfig.browser.json +++ b/packages/utils/tsconfig.browser.json @@ -1,12 +1,36 @@ { - "extends": "../../tsconfig.browser.json", "compilerOptions": { - "outDir": "dist", - "rootDirs": ["src", "test"], - "noImplicitOverride": false + "target": "ES2022", + "useDefineForClassFields": true, + "lib": ["ES2022", "DOM"], + "module": "ESNext", + "types": [], + "skipLibCheck": true, + "outDir": "dist/browser", + "baseUrl": ".", + "declaration": true, + "composite": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "verbatimModuleSyntax": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true, + "noImplicitOverride": false, + "noImplicitAny": true, + + /* Mapping */ + "paths": { + "@crypto": ["src/browser/crypto.ts"], + "@os": ["src/browser/os.ts"], + "@path": ["path-browserify"] + } }, - "include": [ - "src/**/*", - "test/**/*" - ] + "include": ["src/*.ts", "src/browser"], } diff --git a/packages/utils/tsconfig.jest.json b/packages/utils/tsconfig.jest.json index 1d18c5b846..b5f829127f 100644 --- a/packages/utils/tsconfig.jest.json +++ b/packages/utils/tsconfig.jest.json @@ -1,7 +1,10 @@ { - "extends": "../../tsconfig.jest.json", - "include": [ - "src/**/*", - "test/**/*" - ] + "extends": "./tsconfig.node.json", + "compilerOptions": { + "noEmit": true, + "isolatedModules": true, + "esModuleInterop": true, + "types": ["node", "jest"] + }, + "include": ["src/*.ts", "src/node", "test"] } diff --git a/packages/utils/tsconfig.json b/packages/utils/tsconfig.json index 09dd390ce2..ba3a7fd438 100644 --- a/packages/utils/tsconfig.json +++ b/packages/utils/tsconfig.json @@ -1,3 +1,11 @@ { - "extends": "./tsconfig.jest.json" + "files": [], + "references": [ + { + "path": "./tsconfig.node.json" + }, + { + "path": "./tsconfig.browser.json" + } + ] } diff --git a/packages/utils/tsconfig.node.json b/packages/utils/tsconfig.node.json index 204b86fc14..46c1a45384 100644 --- a/packages/utils/tsconfig.node.json +++ b/packages/utils/tsconfig.node.json @@ -1,9 +1,31 @@ { - "extends": "../../tsconfig.node.json", "compilerOptions": { - "outDir": "dist" + "target": "ES2023", + "lib": ["ES2023"], + "module": "preserve", + "types": [], + "skipLibCheck": true, + "outDir": "dist/node", + "baseUrl": ".", + "declaration": true, + "composite": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "verbatimModuleSyntax": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true, + + /* Mapping */ + "paths": { + "@crypto": ["src/node/crypto.ts"], + } }, - "include": [ - "src/**/*" - ] + "include": ["src/*.ts", "src/node"] } diff --git a/packages/utils/tsconfig.rollup.json b/packages/utils/tsconfig.rollup.json new file mode 100644 index 0000000000..d1df09eceb --- /dev/null +++ b/packages/utils/tsconfig.rollup.json @@ -0,0 +1,11 @@ +{ + "extends": "./tsconfig.node.json", + "compilerOptions": { + "types": ["node"], + "outDir": "dist", + "declaration": false, + "composite": false, + "paths": {} + }, + "include": ["rollup.config.ts"] +} From cae654b8d98a647afc027a719b354d3e46be1295 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Roli=C5=84ski?= Date: Mon, 1 Dec 2025 10:38:42 +0100 Subject: [PATCH 02/18] Fix eslint for utils --- packages/utils/test/Metric.test.ts | 2 +- packages/utils/test/composeAbortSignals.test.ts | 2 +- packages/utils/tsconfig.jest.json | 2 +- packages/utils/tsconfig.json | 6 ++++++ 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/utils/test/Metric.test.ts b/packages/utils/test/Metric.test.ts index b34acab019..d0f10a4345 100644 --- a/packages/utils/test/Metric.test.ts +++ b/packages/utils/test/Metric.test.ts @@ -1,5 +1,5 @@ import { wait } from '../src/wait' -import { AverageMetric, CountMetric, LevelMetric, MetricsContext, MetricsReport, RateMetric } from '../src/Metric' +import { AverageMetric, CountMetric, LevelMetric, MetricsContext, type MetricsReport, RateMetric } from '../src/Metric' import { until } from '../src/until' const REPORT_INTERVAL = 100 diff --git a/packages/utils/test/composeAbortSignals.test.ts b/packages/utils/test/composeAbortSignals.test.ts index 417e313ec8..60e8269f55 100644 --- a/packages/utils/test/composeAbortSignals.test.ts +++ b/packages/utils/test/composeAbortSignals.test.ts @@ -1,4 +1,4 @@ -import { ComposedAbortSignal, composeAbortSignals } from '../src/composeAbortSignals' +import { type ComposedAbortSignal, composeAbortSignals } from '../src/composeAbortSignals' import range from 'lodash/range' describe('composeAbortSignals', () => { diff --git a/packages/utils/tsconfig.jest.json b/packages/utils/tsconfig.jest.json index b5f829127f..61925c4126 100644 --- a/packages/utils/tsconfig.jest.json +++ b/packages/utils/tsconfig.jest.json @@ -6,5 +6,5 @@ "esModuleInterop": true, "types": ["node", "jest"] }, - "include": ["src/*.ts", "src/node", "test"] + "include": ["src", "test"], } diff --git a/packages/utils/tsconfig.json b/packages/utils/tsconfig.json index ba3a7fd438..ffb3cd4f71 100644 --- a/packages/utils/tsconfig.json +++ b/packages/utils/tsconfig.json @@ -6,6 +6,12 @@ }, { "path": "./tsconfig.browser.json" + }, + { + "path": "./tsconfig.jest.json" + }, + { + "path": "./tsconfig.rollup.json" } ] } From 0dda362108d3b6f59e9e82a4033a0c9e71810344 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Roli=C5=84ski?= Date: Mon, 1 Dec 2025 11:02:36 +0100 Subject: [PATCH 03/18] Tweak exports field --- packages/utils/package.json | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/packages/utils/package.json b/packages/utils/package.json index 1b084a8da1..d888916ec8 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -9,13 +9,10 @@ "directory": "packages/utils" }, "exports": { - "browser": { - "import": "./dist/browser/src/exports.js", - "types": "./dist/browser/src/exports.d.ts" - }, - "node": { + ".": { + "types": "./dist/node/src/exports.d.ts", "import": "./dist/node/src/exports.js", - "types": "./dist/node/src/exports.d.ts" + "browser": "./dist/browser/src/exports.js" } }, "files": [ From c04ba84adb6afb7af3173ff165694a4165484065 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Roli=C5=84ski?= Date: Mon, 1 Dec 2025 11:02:51 +0100 Subject: [PATCH 04/18] Fix tests --- packages/utils/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/utils/package.json b/packages/utils/package.json index d888916ec8..44e2bc7728 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -8,6 +8,7 @@ "url": "git+https://github.com/streamr-dev/network.git", "directory": "packages/utils" }, + "main": "./dist/node/src/exports.js", "exports": { ".": { "types": "./dist/node/src/exports.d.ts", From c17c398feb0c492913e3c28b2a4ddbb62a3ee156 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Roli=C5=84ski?= Date: Mon, 1 Dec 2025 11:31:27 +0100 Subject: [PATCH 05/18] Build cjs for jest --- packages/utils/package.json | 2 +- packages/utils/rollup.config.ts | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/utils/package.json b/packages/utils/package.json index 44e2bc7728..4057cab223 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -8,11 +8,11 @@ "url": "git+https://github.com/streamr-dev/network.git", "directory": "packages/utils" }, - "main": "./dist/node/src/exports.js", "exports": { ".": { "types": "./dist/node/src/exports.d.ts", "import": "./dist/node/src/exports.js", + "require": "./dist/node/src/exports.cjs", "browser": "./dist/browser/src/exports.js" } }, diff --git a/packages/utils/rollup.config.ts b/packages/utils/rollup.config.ts index 20f5068e76..637419603d 100644 --- a/packages/utils/rollup.config.ts +++ b/packages/utils/rollup.config.ts @@ -41,6 +41,11 @@ function nodejs(): RollupOptions { file: 'dist/node/src/exports.js', sourcemap: true, }, + { + format: 'cjs', + file: 'dist/node/src/exports.cjs', + sourcemap: true, + }, ], plugins: [ alias({ From f1548b17280d63e41bf5cb4b4774f2ee52b22bc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Roli=C5=84ski?= Date: Mon, 1 Dec 2025 11:36:13 +0100 Subject: [PATCH 06/18] Re-add `check` script --- packages/utils/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/utils/package.json b/packages/utils/package.json index 4057cab223..5d11e5104b 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -25,6 +25,7 @@ "scripts": { "prebuild": "npm run clean && tsc -p tsconfig.rollup.json", "build": "tsc -b && rollup -c dist/rollup.config.js", + "check": "tsc -p tsconfig.jest.json", "clean": "jest --clearCache || true; rm -rf dist *.tsbuildinfo node_modules/.cache || true", "eslint": "eslint --cache --cache-location=node_modules/.cache/.eslintcache/ '*/**/*.{js,ts}'", "test": "jest", From 765e3896f63fb79304de5c02b8a64bf6f69fecb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Roli=C5=84ski?= Date: Mon, 1 Dec 2025 22:38:01 +0100 Subject: [PATCH 07/18] Use designated tsconfig for karma --- .../src/createWebpackConfig.ts | 2 +- packages/proto-rpc/tsconfig.browser.json | 5 +-- packages/proto-rpc/tsconfig.karma.json | 7 ++++ packages/utils/karma.config.js | 34 ++++++++++++++----- packages/utils/tsconfig.karma.json | 7 ++++ 5 files changed, 41 insertions(+), 14 deletions(-) create mode 100644 packages/proto-rpc/tsconfig.karma.json create mode 100644 packages/utils/tsconfig.karma.json diff --git a/packages/browser-test-runner/src/createWebpackConfig.ts b/packages/browser-test-runner/src/createWebpackConfig.ts index 37963f0af6..c3c96ea115 100644 --- a/packages/browser-test-runner/src/createWebpackConfig.ts +++ b/packages/browser-test-runner/src/createWebpackConfig.ts @@ -28,7 +28,7 @@ export const createWebpackConfig = ( exclude: [/(node_modules|simulation)/, /\.d\.ts$/], use: [{ loader: 'ts-loader', - options: { configFile: 'tsconfig.browser.json' }, + options: { configFile: 'tsconfig.karma.json' }, }] } ], diff --git a/packages/proto-rpc/tsconfig.browser.json b/packages/proto-rpc/tsconfig.browser.json index 815ac97107..9fe008135d 100644 --- a/packages/proto-rpc/tsconfig.browser.json +++ b/packages/proto-rpc/tsconfig.browser.json @@ -5,8 +5,5 @@ "rootDirs": ["src", "test"], "noImplicitOverride": false }, - "include": [ - "src/**/*", - "test/**/*" - ] + "include": ["src"] } diff --git a/packages/proto-rpc/tsconfig.karma.json b/packages/proto-rpc/tsconfig.karma.json new file mode 100644 index 0000000000..788ebed8a2 --- /dev/null +++ b/packages/proto-rpc/tsconfig.karma.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.browser.json", + "compilerOptions": { + "types": ["node", "jest", "jest-extended"] + }, + "include": ["src", "test"] +} diff --git a/packages/utils/karma.config.js b/packages/utils/karma.config.js index b3c0a4f4f2..f0738d88c5 100644 --- a/packages/utils/karma.config.js +++ b/packages/utils/karma.config.js @@ -1,12 +1,28 @@ -// eslint-disable-next-line @typescript-eslint/no-require-imports -const { createKarmaConfig, createWebpackConfig } = require('@streamr/browser-test-runner') +import { + createKarmaConfig, + createWebpackConfig, +} from '@streamr/browser-test-runner' +import { fileURLToPath } from 'url' +import path from 'path' const TEST_PATHS = ['test/**/*.ts'] -module.exports = createKarmaConfig(TEST_PATHS, createWebpackConfig({ - entry: './src/exports.ts', - libraryName: 'utils', - fallback: { - module: false - } -})) +const __dirname = fileURLToPath(new URL('.', import.meta.url)) + +const karmaConfig = createKarmaConfig( + TEST_PATHS, + createWebpackConfig({ + entry: './src/exports.ts', + libraryName: 'utils', + fallback: { + module: false, + }, + alias: { + '@crypto': path.resolve(__dirname, 'src/browser/crypto.ts'), + os: path.resolve(__dirname, 'src/browser/os.ts'), + path: 'path-browserify', + }, + }) +) + +export default karmaConfig diff --git a/packages/utils/tsconfig.karma.json b/packages/utils/tsconfig.karma.json new file mode 100644 index 0000000000..45a651ef0a --- /dev/null +++ b/packages/utils/tsconfig.karma.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.browser.json", + "compilerOptions": { + "types": ["jest", "jest-extended"], + "outDir": "dist/karma" + }, +} From cf832efa09717b9a963770e219894da1a8bcab70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Roli=C5=84ski?= Date: Mon, 1 Dec 2025 23:19:15 +0100 Subject: [PATCH 08/18] Missing types --- packages/utils/tsconfig.karma.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utils/tsconfig.karma.json b/packages/utils/tsconfig.karma.json index 45a651ef0a..fe5bae12d5 100644 --- a/packages/utils/tsconfig.karma.json +++ b/packages/utils/tsconfig.karma.json @@ -1,7 +1,7 @@ { "extends": "./tsconfig.browser.json", "compilerOptions": { - "types": ["jest", "jest-extended"], + "types": ["node", "jest", "jest-extended"], "outDir": "dist/karma" }, } From 09270409740a8a76e2fd86c352a5bfd6e235941d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Roli=C5=84ski?= Date: Mon, 1 Dec 2025 23:51:31 +0100 Subject: [PATCH 09/18] Build cjs for jasminized jest (karma) --- packages/utils/package.json | 10 +++++++--- packages/utils/rollup.config.ts | 5 +++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/utils/package.json b/packages/utils/package.json index 5d11e5104b..6ee7bd669d 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -9,11 +9,15 @@ "directory": "packages/utils" }, "exports": { - ".": { + "node": { "types": "./dist/node/src/exports.d.ts", "import": "./dist/node/src/exports.js", - "require": "./dist/node/src/exports.cjs", - "browser": "./dist/browser/src/exports.js" + "require": "./dist/node/src/exports.cjs" + }, + "browser": { + "types": "./dist/browser/src/exports.d.ts", + "import": "./dist/browser/src/exports.js", + "require": "./dist/browser/src/exports.cjs" } }, "files": [ diff --git a/packages/utils/rollup.config.ts b/packages/utils/rollup.config.ts index 637419603d..fc8248acd5 100644 --- a/packages/utils/rollup.config.ts +++ b/packages/utils/rollup.config.ts @@ -65,6 +65,11 @@ function browser(): RollupOptions { file: 'dist/browser/src/exports.js', sourcemap: true, }, + { + format: 'cjs', + file: 'dist/browser/src/exports.cjs', + sourcemap: true, + }, ], plugins: [ alias({ From d746d55a6c11113bd8326ac77c9efe1a3fb63a7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Roli=C5=84ski?= Date: Tue, 2 Dec 2025 00:43:42 +0100 Subject: [PATCH 10/18] Explicitly incl. webpack in frameworks --- packages/browser-test-runner/src/createKarmaConfig.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/browser-test-runner/src/createKarmaConfig.ts b/packages/browser-test-runner/src/createKarmaConfig.ts index 4582a55276..dfc36b5c72 100644 --- a/packages/browser-test-runner/src/createKarmaConfig.ts +++ b/packages/browser-test-runner/src/createKarmaConfig.ts @@ -24,7 +24,7 @@ export const createKarmaConfig = ( 'karma-sourcemap-loader' ], basePath: '.', - frameworks: ['jasmine'], + frameworks: ['webpack', 'jasmine'], reporters: ['spec'], files: [ ...setupFiles, From 9a2503921dbdb6e332fad15d97165a348f5d7193 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Roli=C5=84ski?= Date: Tue, 2 Dec 2025 00:44:13 +0100 Subject: [PATCH 11/18] =?UTF-8?q?Avoid=20custom=20entries=20=E2=80=93?= =?UTF-8?q?=C2=A0karma=20doesn't=20allow=20them=20anyway?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/browser-test-runner/src/createKarmaConfig.ts | 1 - packages/browser-test-runner/src/createWebpackConfig.ts | 4 +--- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/browser-test-runner/src/createKarmaConfig.ts b/packages/browser-test-runner/src/createKarmaConfig.ts index dfc36b5c72..14f8e34f7e 100644 --- a/packages/browser-test-runner/src/createKarmaConfig.ts +++ b/packages/browser-test-runner/src/createKarmaConfig.ts @@ -56,7 +56,6 @@ export const createKarmaConfig = ( singleRun: !DEBUG_MODE, //set to false to leave electron window open webpack: { ...baseWebpack, - entry: {}, externals: { ...(baseWebpack.externals ?? {}), 'expect': 'commonjs2 expect', diff --git a/packages/browser-test-runner/src/createWebpackConfig.ts b/packages/browser-test-runner/src/createWebpackConfig.ts index c3c96ea115..a62ac6c209 100644 --- a/packages/browser-test-runner/src/createWebpackConfig.ts +++ b/packages/browser-test-runner/src/createWebpackConfig.ts @@ -3,7 +3,6 @@ import webpack from 'webpack' import NodePolyfillPlugin from 'node-polyfill-webpack-plugin' interface CreateWebpackConfigOptions { - entry: string libraryName: string alias?: Record fallback?: Record @@ -11,7 +10,7 @@ interface CreateWebpackConfigOptions { } export const createWebpackConfig = ( - { entry, libraryName, alias = {}, fallback = {}, externals = {} }: CreateWebpackConfigOptions + { libraryName, alias = {}, fallback = {}, externals = {} }: CreateWebpackConfigOptions ): Record => { return () => { return { @@ -19,7 +18,6 @@ export const createWebpackConfig = ( type: 'filesystem', }, mode: 'development', - entry, devtool: 'eval-source-map', module: { rules: [ From a4d257ee827506b794e0ace2efeacd03ab297d80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Roli=C5=84ski?= Date: Tue, 2 Dec 2025 00:44:53 +0100 Subject: [PATCH 12/18] Custom filenames it also doesn't allow --- packages/browser-test-runner/src/createWebpackConfig.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/browser-test-runner/src/createWebpackConfig.ts b/packages/browser-test-runner/src/createWebpackConfig.ts index a62ac6c209..6920c9b169 100644 --- a/packages/browser-test-runner/src/createWebpackConfig.ts +++ b/packages/browser-test-runner/src/createWebpackConfig.ts @@ -45,7 +45,6 @@ export const createWebpackConfig = ( fallback, }, output: { - filename: `${libraryName}.js`, sourceMapFilename: `[name].[contenthash].js.map`, chunkFilename: '[id].[contenthash].js', path: path.resolve('.', 'dist'), From 63e33e2cfb70f9c48649665406fd3a7918abc112 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Roli=C5=84ski?= Date: Tue, 2 Dec 2025 00:46:26 +0100 Subject: [PATCH 13/18] This works --- packages/dht/tsconfig.karma.json | 3 +++ packages/proto-rpc/tsconfig.karma.json | 8 +++++++- 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 packages/dht/tsconfig.karma.json diff --git a/packages/dht/tsconfig.karma.json b/packages/dht/tsconfig.karma.json new file mode 100644 index 0000000000..90ca5b6f17 --- /dev/null +++ b/packages/dht/tsconfig.karma.json @@ -0,0 +1,3 @@ +{ + "extends": "./tsconfig.browser.json", +} diff --git a/packages/proto-rpc/tsconfig.karma.json b/packages/proto-rpc/tsconfig.karma.json index 788ebed8a2..fee0d64e4c 100644 --- a/packages/proto-rpc/tsconfig.karma.json +++ b/packages/proto-rpc/tsconfig.karma.json @@ -1,7 +1,13 @@ { "extends": "./tsconfig.browser.json", "compilerOptions": { - "types": ["node", "jest", "jest-extended"] + "allowJs": true, + "types": ["node", "jest", "jest-extended"], + "paths": { + "@streamr/utils": [ + "../utils/dist/browser/src/exports" + ] + } }, "include": ["src", "test"] } From dc28e635b7d241b2f4b48b42f5d8037feb7c08ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Roli=C5=84ski?= Date: Tue, 2 Dec 2025 01:18:00 +0100 Subject: [PATCH 14/18] =?UTF-8?q?Drop=20extra=20comma=20=E2=80=93=20doesn'?= =?UTF-8?q?t=20help=20much?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/utils/tsconfig.karma.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utils/tsconfig.karma.json b/packages/utils/tsconfig.karma.json index fe5bae12d5..540cc06cf2 100644 --- a/packages/utils/tsconfig.karma.json +++ b/packages/utils/tsconfig.karma.json @@ -3,5 +3,5 @@ "compilerOptions": { "types": ["node", "jest", "jest-extended"], "outDir": "dist/karma" - }, + } } From 1d092394523deee5ad50d6d4661909ec8d9269f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Roli=C5=84ski?= Date: Tue, 2 Dec 2025 01:18:10 +0100 Subject: [PATCH 15/18] This helps --- packages/proto-rpc/tsconfig.karma.json | 16 +++++----------- packages/utils/package.json | 1 + 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/packages/proto-rpc/tsconfig.karma.json b/packages/proto-rpc/tsconfig.karma.json index fee0d64e4c..2420d09d45 100644 --- a/packages/proto-rpc/tsconfig.karma.json +++ b/packages/proto-rpc/tsconfig.karma.json @@ -1,13 +1,7 @@ { - "extends": "./tsconfig.browser.json", - "compilerOptions": { - "allowJs": true, - "types": ["node", "jest", "jest-extended"], - "paths": { - "@streamr/utils": [ - "../utils/dist/browser/src/exports" - ] - } - }, - "include": ["src", "test"] + "extends": "./tsconfig.browser.json", + "compilerOptions": { + "types": ["node", "jest", "jest-extended"] + }, + "include": ["src", "test"], } diff --git a/packages/utils/package.json b/packages/utils/package.json index 6ee7bd669d..034d7325e8 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -8,6 +8,7 @@ "url": "git+https://github.com/streamr-dev/network.git", "directory": "packages/utils" }, + "types": "./dist/node/src/exports.d.ts", "exports": { "node": { "types": "./dist/node/src/exports.d.ts", From f92ce2aca8a079f3249b7764454338c7d085330a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Roli=C5=84ski?= Date: Tue, 2 Dec 2025 01:29:16 +0100 Subject: [PATCH 16/18] `autocertifier-client` has got no test dir --- packages/autocertifier-client/tsconfig.browser.json | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/autocertifier-client/tsconfig.browser.json b/packages/autocertifier-client/tsconfig.browser.json index b7266e11f5..3063778819 100644 --- a/packages/autocertifier-client/tsconfig.browser.json +++ b/packages/autocertifier-client/tsconfig.browser.json @@ -2,12 +2,10 @@ "extends": "../../tsconfig.browser.json", "compilerOptions": { "outDir": "dist", - "rootDirs": ["src", "test"], "noImplicitOverride": false }, "include": [ - "src/**/*", - "generated/**/*", - "test/**/*" + "src", + "generated" ], } From e8e1faefab9bc45e4c9e013c136ceba2a1ccbfe6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Roli=C5=84ski?= Date: Tue, 2 Dec 2025 01:30:05 +0100 Subject: [PATCH 17/18] Browser tsconfigs should not know about `jest` and `node` --- packages/dht/tsconfig.browser.json | 4 +--- packages/proto-rpc/tsconfig.browser.json | 1 - tsconfig.browser.json | 2 +- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/packages/dht/tsconfig.browser.json b/packages/dht/tsconfig.browser.json index 460647e437..ec63f1a4c2 100644 --- a/packages/dht/tsconfig.browser.json +++ b/packages/dht/tsconfig.browser.json @@ -2,12 +2,10 @@ "extends": "../../tsconfig.browser.json", "compilerOptions": { "outDir": "dist", - "rootDirs": ["src", "test"], "noImplicitOverride": false }, "include": [ - "src/**/*", - "test/**/*", + "src", "package.json" ] } diff --git a/packages/proto-rpc/tsconfig.browser.json b/packages/proto-rpc/tsconfig.browser.json index 9fe008135d..a75b3faae2 100644 --- a/packages/proto-rpc/tsconfig.browser.json +++ b/packages/proto-rpc/tsconfig.browser.json @@ -2,7 +2,6 @@ "extends": "../../tsconfig.browser.json", "compilerOptions": { "outDir": "dist", - "rootDirs": ["src", "test"], "noImplicitOverride": false }, "include": ["src"] diff --git a/tsconfig.browser.json b/tsconfig.browser.json index 0796491963..d74a7c2e79 100644 --- a/tsconfig.browser.json +++ b/tsconfig.browser.json @@ -23,7 +23,7 @@ "resolveJsonModule": true, "moduleResolution": "node", "isolatedModules": true, - "types": ["node", "jest"], + "types": [], "sourceMap": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true, From 734156e56b8fe1386ae538b25915a0ebad2852d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Roli=C5=84ski?= Date: Tue, 2 Dec 2025 01:32:41 +0100 Subject: [PATCH 18/18] Further clean-up --- packages/trackerless-network/tsconfig.browser.json | 7 +++---- packages/trackerless-network/tsconfig.karma.json | 6 ++++++ 2 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 packages/trackerless-network/tsconfig.karma.json diff --git a/packages/trackerless-network/tsconfig.browser.json b/packages/trackerless-network/tsconfig.browser.json index fdd2ae53fd..70fa5c41a8 100644 --- a/packages/trackerless-network/tsconfig.browser.json +++ b/packages/trackerless-network/tsconfig.browser.json @@ -2,12 +2,11 @@ "extends": "../../tsconfig.browser.json", "compilerOptions": { "outDir": "dist", - "rootDirs": ["src", "test"], "noImplicitOverride": false }, "include": [ - "src/**/*", - "generated/**/*", - "test/**/*" + "src", + "generated", + "test" ] } diff --git a/packages/trackerless-network/tsconfig.karma.json b/packages/trackerless-network/tsconfig.karma.json new file mode 100644 index 0000000000..644c655fb5 --- /dev/null +++ b/packages/trackerless-network/tsconfig.karma.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.browser.json", + "compilerOptions": { + "types": ["node", "jest"], + } +}