From 5e47020191525036b5a4fce11bd18a43b80bcfb4 Mon Sep 17 00:00:00 2001 From: Michael Hladky Date: Tue, 16 Sep 2025 19:12:16 +0200 Subject: [PATCH 01/17] chore: add tsdown build --- package-lock.json | 2163 +++++++++++++++++++----------- package.json | 1 + packages/models/README.md | 56 +- packages/models/package.json | 102 ++ packages/models/project.json | 13 +- packages/models/tsdown.config.ts | 31 + tools/src/ts-dwon.plugin.ts | 92 ++ 7 files changed, 1661 insertions(+), 797 deletions(-) create mode 100644 packages/models/tsdown.config.ts create mode 100644 tools/src/ts-dwon.plugin.ts diff --git a/package-lock.json b/package-lock.json index 6b81834f4..cd81e2a2f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -103,6 +103,7 @@ "react-dom": "18.3.1", "ts-patch": "^3.3.0", "tsconfig-paths": "^4.2.0", + "tsdown": "^0.15.1", "tsx": "^4.19.0", "type-fest": "^4.26.1", "typescript": "5.7.3", @@ -689,13 +690,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.3.tgz", - "integrity": "sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz", + "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.28.2" + "@babel/types": "^7.28.4" }, "bin": { "parser": "bin/babel-parser.js" @@ -2273,9 +2274,9 @@ } }, "node_modules/@babel/types": { - "version": "7.28.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz", - "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz", + "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", "dev": true, "license": "MIT", "dependencies": { @@ -2790,70 +2791,6 @@ "tslib": "^2.4.0" } }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", - "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", - "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", - "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", - "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, "node_modules/@esbuild/darwin-arm64": { "version": "0.25.9", "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz", @@ -2870,198 +2807,6 @@ "node": ">=18" } }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", - "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", - "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", - "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", - "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", - "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", - "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", - "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", - "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", - "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", - "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", - "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", - "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, "node_modules/@esbuild/netbsd-arm64": { "version": "0.25.6", "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.6.tgz", @@ -3078,54 +2823,6 @@ "node": ">=18" } }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", - "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", - "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", - "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, "node_modules/@esbuild/openharmony-arm64": { "version": "0.25.6", "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.6.tgz", @@ -3142,54 +2839,6 @@ "node": ">=18" } }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", - "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", - "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", - "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, "node_modules/@esbuild/win32-x64": { "version": "0.25.6", "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.6.tgz", @@ -3207,9 +2856,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", - "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", "dependencies": { "eslint-visitor-keys": "^3.4.3" }, @@ -3418,9 +3067,9 @@ } }, "node_modules/@inquirer/figures": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.5.tgz", - "integrity": "sha512-79hP/VWdZ2UVc9bFGJnoQ/lQMpL74mGgzSYX1xUqCVk7/v73vJCMw1VuyWN1jGkZ9B3z7THAbySqGbCNefcjfA==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.13.tgz", + "integrity": "sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw==", "dev": true, "engines": { "node": ">=18" @@ -4358,10 +4007,11 @@ } }, "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==", - "dev": true + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.30", @@ -6639,6 +6289,326 @@ "@octokit/openapi-types": "^20.0.0" } }, + "node_modules/@oxc-project/types": { + "version": "0.89.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.89.0.tgz", + "integrity": "sha512-yuo+ECPIW5Q9mSeNmCDC2im33bfKuwW18mwkaHMQh8KakHYDzj4ci/q7wxf2qS3dMlVVCIyrs3kFtH5LmnlYnw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "peer": true, + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "peer": true, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, "node_modules/@paulirish/trace_engine": { "version": "0.0.32", "resolved": "https://registry.npmjs.org/@paulirish/trace_engine/-/trace_engine-0.0.32.tgz", @@ -6804,6 +6774,315 @@ "tslib": "2.8.1" } }, + "node_modules/@quansync/fs": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@quansync/fs/-/fs-0.1.5.tgz", + "integrity": "sha512-lNS9hL2aS2NZgNW7BBj+6EBl4rOf8l+tQ0eRY6JWCI8jI2kc53gSoqbjojU0OnAWhzoXiOjFyGsHcDGePB3lhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "quansync": "^0.2.11" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.0.0-beta.38", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-beta.38.tgz", + "integrity": "sha512-AE3HFQrjWCKLFZD1Vpiy+qsqTRwwoil1oM5WsKPSmfQ5fif/A+ZtOZetF32erZdsR7qyvns6qHEteEsF6g6rsQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.0.0-beta.38", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-beta.38.tgz", + "integrity": "sha512-RaoWOKc0rrFsVmKOjQpebMY6c6/I7GR1FBc25v7L/R7NlM0166mUotwGEv7vxu7ruXH4SJcFeVrfADFUUXUmmQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.0.0-beta.38", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-beta.38.tgz", + "integrity": "sha512-Ymojqc2U35iUc8NFU2XX1WQPfBRRHN6xHcrxAf9WS8BFFBn8pDrH5QPvH1tYs3lDkw6UGGbanr1RGzARqdUp1g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.0.0-beta.38", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-beta.38.tgz", + "integrity": "sha512-0ermTQ//WzSI0nOL3z/LUWMNiE9xeM5cLGxjewPFEexqxV/0uM8/lNp9QageQ8jfc/VO1OURsGw34HYO5PaL8w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.0.0-beta.38", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-beta.38.tgz", + "integrity": "sha512-GADxzVUTCTp6EWI52831A29Tt7PukFe94nhg/SUsfkI33oTiNQtPxyLIT/3oRegizGuPSZSlrdBurkjDwxyEUQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.0.0-beta.38", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-beta.38.tgz", + "integrity": "sha512-SKO7Exl5Yem/OSNoA5uLHzyrptUQ8Hg70kHDxuwEaH0+GUg+SQe9/7PWmc4hFKBMrJGdQtii8WZ0uIz9Dofg5Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.0.0-beta.38", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-beta.38.tgz", + "integrity": "sha512-SOo6+WqhXPBaShLxLT0eCgH17d3Yu1lMAe4mFP0M9Bvr/kfMSOPQXuLxBcbBU9IFM9w3N6qP9xWOHO+oUJvi8Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.0.0-beta.38", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-beta.38.tgz", + "integrity": "sha512-yvsQ3CyrodOX+lcoi+lejZGCOvJZa9xTsNB8OzpMDmHeZq3QzJfpYjXSAS6vie70fOkLVJb77UqYO193Cl8XBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.0.0-beta.38", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-beta.38.tgz", + "integrity": "sha512-84qzKMwUwikfYeOuJ4Kxm/3z15rt0nFGGQArHYIQQNSTiQdxGHxOkqXtzPFqrVfBJUdxBAf+jYzR1pttFJuWyg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.0.0-beta.38", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-beta.38.tgz", + "integrity": "sha512-QrNiWlce01DYH0rL8K3yUBu+lNzY+B0DyCbIc2Atan6/S6flxOL0ow5DLQvMamOI/oKhrJ4xG+9MkMb9dDHbLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.0.0-beta.38", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-beta.38.tgz", + "integrity": "sha512-fnLtHyjwEsG4/aNV3Uv3Qd1ZbdH+CopwJNoV0RgBqrcQB8V6/Qdikd5JKvnO23kb3QvIpP+dAMGZMv1c2PJMzw==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^1.0.5" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@emnapi/core": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.5.0.tgz", + "integrity": "sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@emnapi/runtime": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.5.0.tgz", + "integrity": "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@emnapi/wasi-threads": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.0.5.tgz", + "integrity": "sha512-TBr9Cf9onSAS2LQ2+QHx6XcC6h9+RIzJgbqG3++9TUZSH204AwEy5jg3BTQ0VATsyoGj4ee49tN/y6rvaOOtcg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.5.0", + "@emnapi/runtime": "^1.5.0", + "@tybys/wasm-util": "^0.10.1" + } + }, + "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.0.0-beta.38", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-beta.38.tgz", + "integrity": "sha512-19cTfnGedem+RY+znA9J6ARBOCEFD4YSjnx0p5jiTm9tR6pHafRfFIfKlTXhun+NL0WWM/M0eb2IfPPYUa8+wg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-ia32-msvc": { + "version": "1.0.0-beta.38", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.0.0-beta.38.tgz", + "integrity": "sha512-HcICm4YzFJZV+fI0O0bFLVVlsWvRNo/AB9EfUXvNYbtAxakCnQZ15oq22deFdz6sfi9Y4/SagH2kPU723dhCFA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.0.0-beta.38", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-beta.38.tgz", + "integrity": "sha512-4Qx6cgEPXLb0XsCyLoQcUgYBpfL0sjugftob+zhUH0EOk/NVCAIT+h0NJhY+jn7pFpeKxhNMqhvTNx3AesxIAQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, "node_modules/@rolldown/pluginutils": { "version": "1.0.0-beta.32", "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.32.tgz", @@ -9028,17 +9307,21 @@ "@types/node": "*" } }, - "node_modules/@typescript-eslint/parser": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.18.0.tgz", - "integrity": "sha512-hgUZ3kTEpVzKaK3uNibExUYm6SKKOmTU2BOxBSvOYwtJEPdVQ70kZJpPjstlnhCHcuc2WGfSbpKlb/69ttyN5Q==", + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.44.0.tgz", + "integrity": "sha512-EGDAOGX+uwwekcS0iyxVDmRV9HX6FLSM5kzrAToLTsr9OWCIKG/y3lQheCq18yZ5Xh78rRKJiEpP0ZaCs4ryOQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "8.18.0", - "@typescript-eslint/types": "8.18.0", - "@typescript-eslint/typescript-estree": "8.18.0", - "@typescript-eslint/visitor-keys": "8.18.0", - "debug": "^4.3.4" + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.44.0", + "@typescript-eslint/type-utils": "8.44.0", + "@typescript-eslint/utils": "8.44.0", + "@typescript-eslint/visitor-keys": "8.44.0", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -9048,18 +9331,19 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { + "@typescript-eslint/parser": "^8.44.0", "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.18.0.tgz", - "integrity": "sha512-PNGcHop0jkK2WVYGotk/hxj+UFLhXtGPiGtiaWgVBVP1jhMoMCHlTyJA+hEj4rszoSdLTK3fN4oOatrL0Cp+Xw==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.44.0.tgz", + "integrity": "sha512-87Jv3E+al8wpD+rIdVJm/ItDBe/Im09zXIjFoipOjr5gHUhJmTzfFLuTJ/nPTMc2Srsroy4IBXwcTCHyRR7KzA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.18.0", - "@typescript-eslint/visitor-keys": "8.18.0" + "@typescript-eslint/types": "8.44.0", + "@typescript-eslint/visitor-keys": "8.44.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -9069,39 +9353,38 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.18.0.tgz", - "integrity": "sha512-er224jRepVAVLnMF2Q7MZJCq5CsdH2oqjP4dT7K6ij09Kyd+R21r7UVJrF0buMVdZS5QRhDzpvzAxHxabQadow==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "8.18.0", - "@typescript-eslint/utils": "8.18.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" - }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "engines": { + "node": ">=18.12" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.18.0.tgz", - "integrity": "sha512-p6GLdY383i7h5b0Qrfbix3Vc3+J2k6QWw6UMUeY5JGfm3C5LbZ4QIZzJNoNOfgyRe0uuYKjvVOsO/jD4SJO+xg==", + "node_modules/@typescript-eslint/parser": { + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.44.0.tgz", + "integrity": "sha512-VGMpFQGUQWYT9LfnPcX8ouFojyrZ/2w3K5BucvxL/spdNehccKhB4jUyB1yBCXpr2XFm0jkECxgrpXBW2ipoAw==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.18.0", - "@typescript-eslint/types": "8.18.0", - "@typescript-eslint/typescript-estree": "8.18.0" + "@typescript-eslint/scope-manager": "8.44.0", + "@typescript-eslint/types": "8.44.0", + "@typescript-eslint/typescript-estree": "8.44.0", + "@typescript-eslint/visitor-keys": "8.44.0", + "debug": "^4.3.4" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -9112,14 +9395,18 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/types": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.18.0.tgz", - "integrity": "sha512-FNYxgyTCAnFwTrzpBGq+zrnoTO4x0c1CKYY5MuUTzpScqmY5fmsh2o3+57lqdI3NZucBDCzDgdEbIaNfAjAHQA==", + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.44.0.tgz", + "integrity": "sha512-87Jv3E+al8wpD+rIdVJm/ItDBe/Im09zXIjFoipOjr5gHUhJmTzfFLuTJ/nPTMc2Srsroy4IBXwcTCHyRR7KzA==", "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.44.0", + "@typescript-eslint/visitor-keys": "8.44.0" + }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -9128,20 +9415,15 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.0.tgz", - "integrity": "sha512-rqQgFRu6yPkauz+ms3nQpohwejS8bvgbPyIDq13cgEDbkXt4LH4OkDMT0/fN1RUtzG8e8AKJyDBoocuQh8qNeg==", + "node_modules/@typescript-eslint/project-service": { + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.44.0.tgz", + "integrity": "sha512-ZeaGNraRsq10GuEohKTo4295Z/SuGcSq2LzfGlqiuEvfArzo/VRrT0ZaJsVPuKZ55lVbNk8U6FcL+ZMH8CoyVA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.18.0", - "@typescript-eslint/visitor-keys": "8.18.0", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" + "@typescript-eslint/tsconfig-utils": "^8.44.0", + "@typescript-eslint/types": "^8.44.0", + "debug": "^4.3.4" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -9151,35 +9433,36 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.44.0.tgz", + "integrity": "sha512-x5Y0+AuEPqAInc6yd0n5DAcvtoQ/vyaGwuX5HE9n6qAefk1GaedqrLQF8kQGylLUb9pnZyLf+iEiL9fr8APDtQ==", "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/utils": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.29.0.tgz", - "integrity": "sha512-gX/A0Mz9Bskm8avSWFcK0gP7cZpbY4AIo6B0hWYFCaIsz750oaiWR4Jr2CI+PQhfW1CpcQr9OlfPS+kMFegjXA==", + "node_modules/@typescript-eslint/type-utils": { + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.44.0.tgz", + "integrity": "sha512-9cwsoSxJ8Sak67Be/hD2RNt/fsqmWnNE1iHohG8lxqLSNY8xNfyY7wloo5zpW3Nu9hxVgURevqfcH6vvKCt6yg==", "dev": true, - "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.29.0", - "@typescript-eslint/types": "8.29.0", - "@typescript-eslint/typescript-estree": "8.29.0" + "@typescript-eslint/types": "8.44.0", + "@typescript-eslint/typescript-estree": "8.44.0", + "@typescript-eslint/utils": "8.44.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -9190,33 +9473,26 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.29.0.tgz", - "integrity": "sha512-aO1PVsq7Gm+tcghabUpzEnVSFMCU4/nYIgC2GOatJcllvWfnhrgW0ZEbnTxm36QsikmCN1K/6ZgM7fok2I7xNw==", + "node_modules/@typescript-eslint/type-utils/node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.29.0", - "@typescript-eslint/visitor-keys": "8.29.0" - }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=18.12" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependencies": { + "typescript": ">=4.8.4" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.0.tgz", - "integrity": "sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==", + "node_modules/@typescript-eslint/types": { + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.44.0.tgz", + "integrity": "sha512-ZSl2efn44VsYM0MfDQe68RKzBz75NPgLQXuGypmym6QVOWL5kegTZuZ02xRAT9T+onqvM6T8CdQk0OwYMB6ZvA==", "dev": true, - "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -9225,21 +9501,22 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.29.0.tgz", - "integrity": "sha512-yOfen3jE9ISZR/hHpU/bmNvTtBW1NjRbkSFdZOksL1N+ybPEE7UVGMwqvS6CP022Rp00Sb0tdiIkhSCe6NI8ow==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.44.0.tgz", + "integrity": "sha512-lqNj6SgnGcQZwL4/SBJ3xdPEfcBuhCG8zdcwCPgYcmiPLgokiNDKlbPzCwEwu7m279J/lBYWtDYL+87OEfn8Jw==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.29.0", - "@typescript-eslint/visitor-keys": "8.29.0", + "@typescript-eslint/project-service": "8.44.0", + "@typescript-eslint/tsconfig-utils": "8.44.0", + "@typescript-eslint/types": "8.44.0", + "@typescript-eslint/visitor-keys": "8.44.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", - "ts-api-utils": "^2.0.1" + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -9249,77 +9526,84 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.29.0.tgz", - "integrity": "sha512-Sne/pVz8ryR03NFK21VpN88dZ2FdQXOlq3VIklbrTYEt8yXtRFr9tvUhqvCeKjqYk5FSim37sHbooT6vzBTZcg==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.29.0", - "eslint-visitor-keys": "^4.2.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=16 || 14 >=14.17" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@typescript-eslint/utils/node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", "dev": true, - "license": "Apache-2.0", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=18.12" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependencies": { + "typescript": ">=4.8.4" } }, - "node_modules/@typescript-eslint/utils/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "node_modules/@typescript-eslint/utils": { + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.44.0.tgz", + "integrity": "sha512-nktOlVcg3ALo0mYlV+L7sWUD58KG4CMj1rb2HUVOO4aL3K/6wcD+NERqd0rrA5Vg06b42YhF6cFxeixsp9Riqg==", "dev": true, - "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.44.0", + "@typescript-eslint/types": "8.44.0", + "@typescript-eslint/typescript-estree": "8.44.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/ts-api-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", - "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.44.0.tgz", + "integrity": "sha512-87Jv3E+al8wpD+rIdVJm/ItDBe/Im09zXIjFoipOjr5gHUhJmTzfFLuTJ/nPTMc2Srsroy4IBXwcTCHyRR7KzA==", "dev": true, - "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.44.0", + "@typescript-eslint/visitor-keys": "8.44.0" + }, "engines": { - "node": ">=18.12" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependencies": { - "typescript": ">=4.8.4" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.18.0.tgz", - "integrity": "sha512-pCh/qEA8Lb1wVIqNvBke8UaRjJ6wrAWkJO5yyIbs8Yx6TNGYyfNjOo61tLv+WwLvoLPp4BQ8B7AHKijl8NGUfw==", + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.44.0.tgz", + "integrity": "sha512-zaz9u8EJ4GBmnehlrpoKvj/E3dNbuQ7q0ucyZImm3cLqJ8INTc970B1qEqDX/Rzq65r3TvVTN7kHWPBoyW7DWw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.18.0", - "eslint-visitor-keys": "^4.2.0" + "@typescript-eslint/types": "8.44.0", + "eslint-visitor-keys": "^4.2.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -9330,9 +9614,9 @@ } }, "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -11145,12 +11429,9 @@ } }, "node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", - "dependencies": { - "debug": "^4.3.4" - }, + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "engines": { "node": ">= 14" } @@ -11552,6 +11833,30 @@ "node": "*" } }, + "node_modules/ast-kit": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ast-kit/-/ast-kit-2.1.2.tgz", + "integrity": "sha512-cl76xfBQM6pztbrFWRnxbrDm9EOqDr1BF6+qQnnDZG2Co2LjyUktkN9GTJfBAfdae+DbT2nJf2nCGAdDDN7W2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.0", + "pathe": "^2.0.3" + }, + "engines": { + "node": ">=20.18.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, + "node_modules/ast-kit/node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, "node_modules/ast-types": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", @@ -11663,9 +11968,9 @@ "license": "MIT" }, "node_modules/axe-core": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.0.tgz", - "integrity": "sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==", + "version": "4.10.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", + "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", "engines": { "node": ">=4" } @@ -11980,45 +12285,81 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/bare-events": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.4.2.tgz", - "integrity": "sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.6.1.tgz", + "integrity": "sha512-AuTJkq9XmE6Vk0FJVNq5QxETrSA/vKHarWVBG5l/JbdCL1prJemiyJqUS0jrlXO0MftuPq4m3YVYhoNc5+aE/g==", "optional": true }, "node_modules/bare-fs": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.3.tgz", - "integrity": "sha512-7RYKL+vZVCyAsMLi5SPu7QGauGGT8avnP/HO571ndEuV4MYdGXvLhtW67FuLPeEI8EiIY7zbbRR9x7x7HU0kgw==", + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.4.4.tgz", + "integrity": "sha512-Q8yxM1eLhJfuM7KXVP3zjhBvtMJCYRByoTT+wHXjpdMELv0xICFJX+1w4c7csa+WZEOsq4ItJ4RGwvzid6m/dw==", "optional": true, "dependencies": { - "bare-events": "^2.0.0", - "bare-path": "^2.0.0", - "bare-stream": "^2.0.0" + "bare-events": "^2.5.4", + "bare-path": "^3.0.0", + "bare-stream": "^2.6.4", + "bare-url": "^2.2.2", + "fast-fifo": "^1.3.2" + }, + "engines": { + "bare": ">=1.16.0" + }, + "peerDependencies": { + "bare-buffer": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + } } }, "node_modules/bare-os": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.2.tgz", - "integrity": "sha512-HZoJwzC+rZ9lqEemTMiO0luOePoGYNBgsLLgegKR/cljiJvcDNhDZQkzC+NC5Oh0aHbdBNSOHpghwMuB5tqhjg==", - "optional": true + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.2.tgz", + "integrity": "sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==", + "optional": true, + "engines": { + "bare": ">=1.14.0" + } }, "node_modules/bare-path": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.3.tgz", - "integrity": "sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", + "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", "optional": true, "dependencies": { - "bare-os": "^2.1.0" + "bare-os": "^3.0.1" } }, "node_modules/bare-stream": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.2.1.tgz", - "integrity": "sha512-YTB47kHwBW9zSG8LD77MIBAAQXjU2WjAkMHeeb7hUplVs6+IoM5I7uEVQNPMB7lj9r8I76UMdoMkGnCodHOLqg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.7.0.tgz", + "integrity": "sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A==", + "optional": true, + "dependencies": { + "streamx": "^2.21.0" + }, + "peerDependencies": { + "bare-buffer": "*", + "bare-events": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + }, + "bare-events": { + "optional": true + } + } + }, + "node_modules/bare-url": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.2.2.tgz", + "integrity": "sha512-g+ueNGKkrjMazDG3elZO1pNs3HY5+mMmOet1jtKyhOaCnkLzitxf26z7hoAEkDNgdNmnc1KIlt/dw6Po6xZMpA==", "optional": true, "dependencies": { - "b4a": "^1.6.6", - "streamx": "^2.18.0" + "bare-path": "^3.0.0" } }, "node_modules/base64-js": { @@ -12249,6 +12590,16 @@ "node": ">=6" } }, + "node_modules/birpc": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.5.0.tgz", + "integrity": "sha512-VSWO/W6nNQdyP520F1mhf+Lc2f8pjGQOtoHHm7Ze8Go1kX7akpVIrtTa0fn+HB0QJEDVacl6aO08YE0PgXfdnQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -12694,9 +13045,9 @@ } }, "node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -12732,6 +13083,22 @@ "node": "*" } }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/chrome-launcher": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-1.1.2.tgz", @@ -14686,6 +15053,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/defu": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", + "dev": true, + "license": "MIT" + }, "node_modules/degenerator": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", @@ -14768,6 +15142,20 @@ "node": ">=8" } }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true, + "optional": true, + "peer": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", @@ -14800,6 +15188,16 @@ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1312386.tgz", "integrity": "sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==" }, + "node_modules/diff": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.2.tgz", + "integrity": "sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/diff-sequences": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", @@ -14870,9 +15268,9 @@ } }, "node_modules/domutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", - "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", "dev": true, "dependencies": { "dom-serializer": "^2.0.0", @@ -14929,6 +15327,27 @@ "url": "https://dotenvx.com" } }, + "node_modules/dts-resolver": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/dts-resolver/-/dts-resolver-2.1.2.tgz", + "integrity": "sha512-xeXHBQkn2ISSXxbJWD828PFjtyg+/UrMDo7W4Ffcs7+YWCquxU8YjV1KoxuiL+eJ5pg3ll+bC6flVv61L3LKZg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.18.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + }, + "peerDependencies": { + "oxc-resolver": ">=11.0.0" + }, + "peerDependenciesMeta": { + "oxc-resolver": { + "optional": true + } + } + }, "node_modules/dunder-proto": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.0.tgz", @@ -15055,6 +15474,16 @@ "node": ">= 4" } }, + "node_modules/empathic": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/empathic/-/empathic-2.0.0.tgz", + "integrity": "sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, "node_modules/encodeurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", @@ -17038,16 +17467,16 @@ "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" }, "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" @@ -17521,9 +17950,9 @@ } }, "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==" + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==" }, "node_modules/follow-redirects": { "version": "1.15.11", @@ -17652,19 +18081,6 @@ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, - "node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -17758,9 +18174,9 @@ } }, "node_modules/get-east-asian-width": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", - "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", + "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", "engines": { "node": ">=18" }, @@ -17840,10 +18256,11 @@ } }, "node_modules/get-tsconfig": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", - "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz", + "integrity": "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==", "dev": true, + "license": "MIT", "dependencies": { "resolve-pkg-maps": "^1.0.0" }, @@ -17852,14 +18269,13 @@ } }, "node_modules/get-uri": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", - "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz", + "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==", "dependencies": { "basic-ftp": "^5.0.2", "data-uri-to-buffer": "^6.0.2", - "debug": "^4.3.4", - "fs-extra": "^11.2.0" + "debug": "^4.3.4" }, "engines": { "node": ">= 14" @@ -18324,6 +18740,13 @@ "node": ">=0.10.0" } }, + "node_modules/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", + "dev": true, + "license": "MIT" + }, "node_modules/hosted-git-info": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", @@ -18628,11 +19051,11 @@ } }, "node_modules/https-proxy-agent": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", - "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dependencies": { - "agent-base": "^7.0.2", + "agent-base": "^7.1.2", "debug": "4" }, "engines": { @@ -18749,6 +19172,14 @@ "resolved": "https://registry.npmjs.org/image-ssim/-/image-ssim-0.2.0.tgz", "integrity": "sha512-W7+sO6/yhxy83L0G7xR8YAc5Z5QFtYEXXRV6EaE8tuYBZJnA3gVgp3q7X7muhLZVodeb9UfvjSbwt9VJwjIYAg==" }, + "node_modules/immutable": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.3.tgz", + "integrity": "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==", + "dev": true, + "optional": true, + "peer": true + }, "node_modules/import-cwd": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-3.0.0.tgz", @@ -19112,22 +19543,13 @@ } }, "node_modules/ip-address": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", - "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", - "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" - }, + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", + "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", "engines": { "node": ">= 12" } }, - "node_modules/ip-address/node_modules/sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" - }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -21786,11 +22208,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" - }, "node_modules/jsdom": { "version": "24.0.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-24.0.0.tgz", @@ -21953,6 +22370,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, "dependencies": { "universalify": "^2.0.0" }, @@ -22967,12 +23385,13 @@ } }, "node_modules/magic-string": { - "version": "0.30.11", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", - "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", + "version": "0.30.19", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz", + "integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" + "@jridgewell/sourcemap-codec": "^1.5.5" } }, "node_modules/magicast": { @@ -23440,6 +23859,14 @@ "tslib": "^2.0.3" } }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "optional": true, + "peer": true + }, "node_modules/node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", @@ -24377,18 +24804,18 @@ } }, "node_modules/pac-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.2.tgz", - "integrity": "sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz", + "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==", "dependencies": { "@tootallnate/quickjs-emscripten": "^0.23.0", - "agent-base": "^7.0.2", + "agent-base": "^7.1.2", "debug": "^4.3.4", "get-uri": "^6.0.1", "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.5", + "https-proxy-agent": "^7.0.6", "pac-resolver": "^7.0.1", - "socks-proxy-agent": "^8.0.4" + "socks-proxy-agent": "^8.0.5" }, "engines": { "node": ">= 14" @@ -24485,17 +24912,29 @@ } }, "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", "dev": true, "dependencies": { - "entities": "^4.4.0" + "entities": "^6.0.0" }, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" } }, + "node_modules/parse5/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -25901,18 +26340,18 @@ } }, "node_modules/proxy-agent": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", - "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz", + "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==", "dependencies": { - "agent-base": "^7.0.2", + "agent-base": "^7.1.2", "debug": "^4.3.4", "http-proxy-agent": "^7.0.1", - "https-proxy-agent": "^7.0.3", + "https-proxy-agent": "^7.0.6", "lru-cache": "^7.14.1", - "pac-proxy-agent": "^7.0.1", + "pac-proxy-agent": "^7.1.0", "proxy-from-env": "^1.1.0", - "socks-proxy-agent": "^8.0.2" + "socks-proxy-agent": "^8.0.5" }, "engines": { "node": ">= 14" @@ -26025,6 +26464,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/quansync": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz", + "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ], + "license": "MIT" + }, "node_modules/query-registry": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/query-registry/-/query-registry-3.0.1.tgz", @@ -26120,11 +26576,6 @@ } ] }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" - }, "node_modules/quick-format-unescaped": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", @@ -26359,6 +26810,20 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/real-require": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", @@ -26693,6 +27158,102 @@ "node": ">=10.0.0" } }, + "node_modules/rolldown": { + "version": "1.0.0-beta.38", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-beta.38.tgz", + "integrity": "sha512-58frPNX55Je1YsyrtPJv9rOSR3G5efUZpRqok94Efsj0EUa8dnqJV3BldShyI7A+bVPleucOtzXHwVpJRcR0kQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@oxc-project/types": "=0.89.0", + "@rolldown/pluginutils": "1.0.0-beta.38", + "ansis": "^4.0.0" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm64": "1.0.0-beta.38", + "@rolldown/binding-darwin-arm64": "1.0.0-beta.38", + "@rolldown/binding-darwin-x64": "1.0.0-beta.38", + "@rolldown/binding-freebsd-x64": "1.0.0-beta.38", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-beta.38", + "@rolldown/binding-linux-arm64-gnu": "1.0.0-beta.38", + "@rolldown/binding-linux-arm64-musl": "1.0.0-beta.38", + "@rolldown/binding-linux-x64-gnu": "1.0.0-beta.38", + "@rolldown/binding-linux-x64-musl": "1.0.0-beta.38", + "@rolldown/binding-openharmony-arm64": "1.0.0-beta.38", + "@rolldown/binding-wasm32-wasi": "1.0.0-beta.38", + "@rolldown/binding-win32-arm64-msvc": "1.0.0-beta.38", + "@rolldown/binding-win32-ia32-msvc": "1.0.0-beta.38", + "@rolldown/binding-win32-x64-msvc": "1.0.0-beta.38" + } + }, + "node_modules/rolldown-plugin-dts": { + "version": "0.16.5", + "resolved": "https://registry.npmjs.org/rolldown-plugin-dts/-/rolldown-plugin-dts-0.16.5.tgz", + "integrity": "sha512-bOAfJ7Tc11xK/Uou7KWYha25/Sy80G0DZkhX8WMYx6l8PUalR+bvVzQNuEqXafpKEisZfUHQrkhS2gZG76Xntw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/generator": "^7.28.3", + "@babel/parser": "^7.28.4", + "@babel/types": "^7.28.4", + "ast-kit": "^2.1.2", + "birpc": "^2.5.0", + "debug": "^4.4.1", + "dts-resolver": "^2.1.2", + "get-tsconfig": "^4.10.1", + "magic-string": "^0.30.19" + }, + "engines": { + "node": ">=20.18.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + }, + "peerDependencies": { + "@ts-macro/tsc": "^0.3.6", + "@typescript/native-preview": ">=7.0.0-dev.20250601.1", + "rolldown": "^1.0.0-beta.9", + "typescript": "^5.0.0", + "vue-tsc": "~3.0.3" + }, + "peerDependenciesMeta": { + "@ts-macro/tsc": { + "optional": true + }, + "@typescript/native-preview": { + "optional": true + }, + "typescript": { + "optional": true + }, + "vue-tsc": { + "optional": true + } + } + }, + "node_modules/rolldown/node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.38", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.38.tgz", + "integrity": "sha512-N/ICGKleNhA5nc9XXQG/kkKHJ7S55u0x0XUJbbkmdCnFuoRkM1Il12q9q0eX19+M7KKUEPw/daUPIRnxhcxAIw==", + "dev": true, + "license": "MIT" + }, + "node_modules/rolldown/node_modules/ansis": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-4.1.0.tgz", + "integrity": "sha512-BGcItUBWSMRgOCe+SVZJ+S7yTRG0eGt9cXAHev72yuGcY23hnLA7Bky5L/xLyPINoSN95geovfBkqoTlNZYa7w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + } + }, "node_modules/rollup": { "version": "4.48.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.48.0.tgz", @@ -27128,6 +27689,28 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "devOptional": true }, + "node_modules/sass": { + "version": "1.92.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.92.1.tgz", + "integrity": "sha512-ffmsdbwqb3XeyR8jJR6KelIXARM9bFQe8A6Q3W4Klmwy5Ckd5gz7jgUNHo4UOqutU5Sk1DtKLbpDP0nLCg1xqQ==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, "node_modules/saxes": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", @@ -27504,13 +28087,13 @@ } }, "node_modules/simple-git": { - "version": "3.27.0", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.27.0.tgz", - "integrity": "sha512-ivHoFS9Yi9GY49ogc6/YAi3Fl9ROnF4VyubNylgCkA+RVqLaKWnDSzXOVzya8csELIaWaYNutsEuAhZrtOjozA==", + "version": "3.28.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.28.0.tgz", + "integrity": "sha512-Rs/vQRwsn1ILH1oBUy8NucJlXmnnLeLCfcvbSehkPzbv3wwoFWIdtfd6Ndo6ZPhlPsCZ60CPI4rxurnwAa+a2w==", "dependencies": { "@kwsites/file-exists": "^1.1.1", "@kwsites/promise-deferred": "^1.1.1", - "debug": "^4.3.5" + "debug": "^4.4.0" }, "funding": { "type": "github", @@ -27598,11 +28181,11 @@ } }, "node_modules/socks": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", - "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", + "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", "dependencies": { - "ip-address": "^9.0.5", + "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" }, "engines": { @@ -27611,11 +28194,11 @@ } }, "node_modules/socks-proxy-agent": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz", - "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==", + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", "dependencies": { - "agent-base": "^7.1.1", + "agent-base": "^7.1.2", "debug": "^4.3.4", "socks": "^2.8.3" }, @@ -27929,12 +28512,11 @@ } }, "node_modules/streamx": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.0.tgz", - "integrity": "sha512-ZGd1LhDeGFucr1CUCTBOS58ZhEendd0ttpGT3usTvosS4ntIwKN9LJFp+OeCSprsCPL14BXVRZlHGRY1V9PVzQ==", + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.1.tgz", + "integrity": "sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==", "dependencies": { "fast-fifo": "^1.3.2", - "queue-tick": "^1.0.1", "text-decoder": "^1.1.0" }, "optionalDependencies": { @@ -28389,16 +28971,16 @@ } }, "node_modules/tar-fs": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz", - "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz", + "integrity": "sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==", "dependencies": { "pump": "^3.0.0", "tar-stream": "^3.1.5" }, "optionalDependencies": { - "bare-fs": "^2.1.1", - "bare-path": "^2.1.0" + "bare-fs": "^4.0.1", + "bare-path": "^3.0.0" } }, "node_modules/tar-fs/node_modules/tar-stream": { @@ -28717,13 +29299,13 @@ "dev": true }, "node_modules/tinyglobby": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", - "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "license": "MIT", "dependencies": { - "fdir": "^6.4.4", - "picomatch": "^4.0.2" + "fdir": "^6.5.0", + "picomatch": "^4.0.3" }, "engines": { "node": ">=12.0.0" @@ -29134,6 +29716,92 @@ "node": ">=4" } }, + "node_modules/tsdown": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tsdown/-/tsdown-0.15.1.tgz", + "integrity": "sha512-USTr2wS5OIyohR8Sp09rp5mXVwOX4YvVRqarS9I9jIhF+PqgtVSMXG4vBrHGY1OficNcLT5Z75pSoxd2uU+BYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansis": "^4.1.0", + "cac": "^6.7.14", + "chokidar": "^4.0.3", + "debug": "^4.4.1", + "diff": "^8.0.2", + "empathic": "^2.0.0", + "hookable": "^5.5.3", + "rolldown": "latest", + "rolldown-plugin-dts": "^0.16.5", + "semver": "^7.7.2", + "tinyexec": "^1.0.1", + "tinyglobby": "^0.2.15", + "tree-kill": "^1.2.2", + "unconfig": "^7.3.3" + }, + "bin": { + "tsdown": "dist/run.mjs" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + }, + "peerDependencies": { + "@arethetypeswrong/core": "^0.18.1", + "publint": "^0.3.0", + "typescript": "^5.0.0", + "unplugin-lightningcss": "^0.4.0", + "unplugin-unused": "^0.5.0" + }, + "peerDependenciesMeta": { + "@arethetypeswrong/core": { + "optional": true + }, + "publint": { + "optional": true + }, + "typescript": { + "optional": true + }, + "unplugin-lightningcss": { + "optional": true + }, + "unplugin-unused": { + "optional": true + } + } + }, + "node_modules/tsdown/node_modules/ansis": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-4.1.0.tgz", + "integrity": "sha512-BGcItUBWSMRgOCe+SVZJ+S7yTRG0eGt9cXAHev72yuGcY23hnLA7Bky5L/xLyPINoSN95geovfBkqoTlNZYa7w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + } + }, + "node_modules/tsdown/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tsdown/node_modules/tinyexec": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz", + "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==", + "dev": true, + "license": "MIT" + }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", @@ -29151,12 +29819,12 @@ } }, "node_modules/tsx": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.0.tgz", - "integrity": "sha512-bV30kM7bsLZKZIOCHeMNVMJ32/LuJzLVajkQI/qf92J2Qr08ueLQvW00PUZGiuLPP760UINwupgUj8qrSCPUKg==", + "version": "4.20.5", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.5.tgz", + "integrity": "sha512-+wKjMNU9w/EaQayHXb7WA7ZaHY6hN8WgfvHNQ3t1PnU91/7O8TcTnIhCDYTZwnt8JsO9IBqZ30Ln1r7pPF52Aw==", "dev": true, "dependencies": { - "esbuild": "~0.23.0", + "esbuild": "~0.25.0", "get-tsconfig": "^4.7.5" }, "bin": { @@ -29169,77 +29837,6 @@ "fsevents": "~2.3.3" } }, - "node_modules/tsx/node_modules/@esbuild/darwin-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", - "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/win32-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", - "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/esbuild": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", - "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.23.1", - "@esbuild/android-arm": "0.23.1", - "@esbuild/android-arm64": "0.23.1", - "@esbuild/android-x64": "0.23.1", - "@esbuild/darwin-arm64": "0.23.1", - "@esbuild/darwin-x64": "0.23.1", - "@esbuild/freebsd-arm64": "0.23.1", - "@esbuild/freebsd-x64": "0.23.1", - "@esbuild/linux-arm": "0.23.1", - "@esbuild/linux-arm64": "0.23.1", - "@esbuild/linux-ia32": "0.23.1", - "@esbuild/linux-loong64": "0.23.1", - "@esbuild/linux-mips64el": "0.23.1", - "@esbuild/linux-ppc64": "0.23.1", - "@esbuild/linux-riscv64": "0.23.1", - "@esbuild/linux-s390x": "0.23.1", - "@esbuild/linux-x64": "0.23.1", - "@esbuild/netbsd-x64": "0.23.1", - "@esbuild/openbsd-arm64": "0.23.1", - "@esbuild/openbsd-x64": "0.23.1", - "@esbuild/sunos-x64": "0.23.1", - "@esbuild/win32-arm64": "0.23.1", - "@esbuild/win32-ia32": "0.23.1", - "@esbuild/win32-x64": "0.23.1" - } - }, "node_modules/tunnel": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", @@ -29426,66 +30023,15 @@ } }, "node_modules/typescript-eslint": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.18.0.tgz", - "integrity": "sha512-Xq2rRjn6tzVpAyHr3+nmSg1/9k9aIHnJ2iZeOH7cfGOWqTkXTm3kwpQglEuLGdNrYvPF+2gtAs+/KF5rjVo+WQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/eslint-plugin": "8.18.0", - "@typescript-eslint/parser": "8.18.0", - "@typescript-eslint/utils": "8.18.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" - } - }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.18.0.tgz", - "integrity": "sha512-NR2yS7qUqCL7AIxdJUQf2MKKNDVNaig/dEB0GBLU7D+ZdHgK1NoH/3wsgO3OnPVipn51tG3MAwaODEGil70WEw==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.18.0", - "@typescript-eslint/type-utils": "8.18.0", - "@typescript-eslint/utils": "8.18.0", - "@typescript-eslint/visitor-keys": "8.18.0", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", - "natural-compare": "^1.4.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" - } - }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/utils": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.18.0.tgz", - "integrity": "sha512-p6GLdY383i7h5b0Qrfbix3Vc3+J2k6QWw6UMUeY5JGfm3C5LbZ4QIZzJNoNOfgyRe0uuYKjvVOsO/jD4SJO+xg==", + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.44.0.tgz", + "integrity": "sha512-ib7mCkYuIzYonCq9XWF5XNw+fkj2zg629PSa9KNIQ47RXFF763S5BIX4wqz1+FLPogTZoiw8KmCiRPRa8bL3qw==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.18.0", - "@typescript-eslint/types": "8.18.0", - "@typescript-eslint/typescript-estree": "8.18.0" + "@typescript-eslint/eslint-plugin": "8.44.0", + "@typescript-eslint/parser": "8.44.0", + "@typescript-eslint/typescript-estree": "8.44.0", + "@typescript-eslint/utils": "8.44.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -29496,7 +30042,7 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/ufo": { @@ -29555,6 +30101,32 @@ "through": "^2.3.8" } }, + "node_modules/unconfig": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/unconfig/-/unconfig-7.3.3.tgz", + "integrity": "sha512-QCkQoOnJF8L107gxfHL0uavn7WD9b3dpBcFX6HtfQYmjw2YzWxGuFQ0N0J6tE9oguCBJn9KOvfqYDCMPHIZrBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@quansync/fs": "^0.1.5", + "defu": "^6.1.4", + "jiti": "^2.5.1", + "quansync": "^0.2.11" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/unconfig/node_modules/jiti": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.5.1.tgz", + "integrity": "sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, "node_modules/undici": { "version": "6.21.3", "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.3.tgz", @@ -29657,6 +30229,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, "engines": { "node": ">= 10.0.0" } @@ -31747,14 +32320,14 @@ "dev": true }, "node_modules/yaml": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz", - "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz", + "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==", "bin": { "yaml": "bin.mjs" }, "engines": { - "node": ">= 14" + "node": ">= 14.6" } }, "node_modules/yargs": { diff --git a/package.json b/package.json index 385e84c8c..35ae295d0 100644 --- a/package.json +++ b/package.json @@ -116,6 +116,7 @@ "react-dom": "18.3.1", "ts-patch": "^3.3.0", "tsconfig-paths": "^4.2.0", + "tsdown": "^0.15.1", "tsx": "^4.19.0", "type-fest": "^4.26.1", "typescript": "5.7.3", diff --git a/packages/models/README.md b/packages/models/README.md index 532286363..7265970cf 100644 --- a/packages/models/README.md +++ b/packages/models/README.md @@ -28,6 +28,8 @@ pnpm add --save-dev @code-pushup/models ## Usage +### Importing Everything (Traditional) + Import the type definitions if using TypeScript: - in `code-pushup.config.ts`: @@ -58,15 +60,67 @@ Import the type definitions if using TypeScript: async function myCustomPluginRunner() { const audits: AuditOutput[] = await collectAudits(); - await writeFile(RUNNER_OUTPUT_FILE, JSON.strinfigy(audits)); + await writeFile(RUNNER_OUTPUT_FILE, JSON.stringify(audits)); } ``` +### Importing Specific Modules (Recommended) + +For better tree-shaking and smaller bundle sizes, import only what you need from specific modules: + +```ts +// Import only audit-related models +import { auditSchema } from '@code-pushup/models/audit'; +import type { AuditOutput } from '@code-pushup/models/audit-output'; +// Import only configuration models +import type { CoreConfig } from '@code-pushup/models/core-config'; +import { persistConfigSchema } from '@code-pushup/models/persist-config'; +// Import only plugin-related models +import type { PluginConfig } from '@code-pushup/models/plugin-config'; +// Import only report-related models +import type { Report } from '@code-pushup/models/report'; +import { reportsDiffSchema } from '@code-pushup/models/reports-diff'; +``` + +### Available Entry Points + +The following modules are available as individual entry points: + +| Module | Import Path | Description | +| --------------- | ------------------------------------- | ----------------------------- | +| Audit | `@code-pushup/models/audit` | Audit definitions and schemas | +| Audit Output | `@code-pushup/models/audit-output` | Audit output models | +| Cache Config | `@code-pushup/models/cache-config` | Cache configuration models | +| Category Config | `@code-pushup/models/category-config` | Category configuration models | +| Commit | `@code-pushup/models/commit` | Commit-related models | +| Configuration | `@code-pushup/models/configuration` | General configuration models | +| Core Config | `@code-pushup/models/core-config` | Core configuration models | +| Group | `@code-pushup/models/group` | Group-related models | +| Issue | `@code-pushup/models/issue` | Issue definitions and schemas | +| Persist Config | `@code-pushup/models/persist-config` | Persist configuration models | +| Plugin Config | `@code-pushup/models/plugin-config` | Plugin configuration models | +| Report | `@code-pushup/models/report` | Report models | +| Reports Diff | `@code-pushup/models/reports-diff` | Report diff models | +| Runner Config | `@code-pushup/models/runner-config` | Runner configuration models | +| Source | `@code-pushup/models/source` | Source location models | +| Table | `@code-pushup/models/table` | Table formatting models | +| Tree | `@code-pushup/models/tree` | Tree structure models | +| Upload Config | `@code-pushup/models/upload-config` | Upload configuration models | + +### Runtime Validation + If you need runtime validation, use the underlying Zod schemas: ```ts +// Import from specific modules (recommended) +import { coreConfigSchema } from '@code-pushup/models/core-config'; +import { auditOutputSchema } from '@code-pushup/models/audit-output'; + +// Or import from main entry point import { coreConfigSchema } from '@code-pushup/models'; const json = JSON.parse(readFileSync('code-pushup.config.json')); const config = coreConfigSchema.parse(json); // throws ZodError if invalid ``` + +> **💡 Pro tip**: Using specific module imports (e.g., `@code-pushup/models/audit`) instead of the main entry point can significantly reduce your bundle size and avoid side effects by only including the code you actually use. diff --git a/packages/models/package.json b/packages/models/package.json index ffefeba91..ae6d89ec4 100644 --- a/packages/models/package.json +++ b/packages/models/package.json @@ -26,11 +26,113 @@ "access": "public" }, "type": "module", + "main": "./dist/index.cjs", + "module": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "./audit": { + "types": "./dist/audit.d.ts", + "import": "./dist/audit.js", + "require": "./dist/audit.cjs" + }, + "./audit-output": { + "types": "./dist/audit-output.d.ts", + "import": "./dist/audit-output.js", + "require": "./dist/audit-output.cjs" + }, + "./cache-config": { + "types": "./dist/cache-config.d.ts", + "import": "./dist/cache-config.js", + "require": "./dist/cache-config.cjs" + }, + "./category-config": { + "types": "./dist/category-config.d.ts", + "import": "./dist/category-config.js", + "require": "./dist/category-config.cjs" + }, + "./commit": { + "types": "./dist/commit.d.ts", + "import": "./dist/commit.js", + "require": "./dist/commit.cjs" + }, + "./configuration": { + "types": "./dist/configuration.d.ts", + "import": "./dist/configuration.js", + "require": "./dist/configuration.cjs" + }, + "./core-config": { + "types": "./dist/core-config.d.ts", + "import": "./dist/core-config.js", + "require": "./dist/core-config.cjs" + }, + "./group": { + "types": "./dist/group.d.ts", + "import": "./dist/group.js", + "require": "./dist/group.cjs" + }, + "./issue": { + "types": "./dist/issue.d.ts", + "import": "./dist/issue.js", + "require": "./dist/issue.cjs" + }, + "./persist-config": { + "types": "./dist/persist-config.d.ts", + "import": "./dist/persist-config.js", + "require": "./dist/persist-config.cjs" + }, + "./plugin-config": { + "types": "./dist/plugin-config.d.ts", + "import": "./dist/plugin-config.js", + "require": "./dist/plugin-config.cjs" + }, + "./report": { + "types": "./dist/report.d.ts", + "import": "./dist/report.js", + "require": "./dist/report.cjs" + }, + "./reports-diff": { + "types": "./dist/reports-diff.d.ts", + "import": "./dist/reports-diff.js", + "require": "./dist/reports-diff.cjs" + }, + "./runner-config": { + "types": "./dist/runner-config.d.ts", + "import": "./dist/runner-config.js", + "require": "./dist/runner-config.cjs" + }, + "./source": { + "types": "./dist/source.d.ts", + "import": "./dist/source.js", + "require": "./dist/source.cjs" + }, + "./table": { + "types": "./dist/table.d.ts", + "import": "./dist/table.js", + "require": "./dist/table.cjs" + }, + "./tree": { + "types": "./dist/tree.d.ts", + "import": "./dist/tree.js", + "require": "./dist/tree.cjs" + }, + "./upload-config": { + "types": "./dist/upload-config.d.ts", + "import": "./dist/upload-config.js", + "require": "./dist/upload-config.cjs" + } + }, + "sideEffects": false, "dependencies": { "zod": "^4.0.5", "vscode-material-icons": "^0.1.0" }, "files": [ + "dist", "src", "!**/*.tsbuildinfo" ] diff --git a/packages/models/project.json b/packages/models/project.json index 58a71cd27..db9ada2fa 100644 --- a/packages/models/project.json +++ b/packages/models/project.json @@ -15,7 +15,18 @@ "^build", "generate-docs", { "projects": "models-transformers", "target": "build" } - ] + ], + "executor": "nx:run-commands", + "options": { + "commands": [ + "npx tsdown --config packages/models/tsdown.config.ts", + "node packages/models/scripts/generate-dist-package-json.mjs" + ], + "parallel": false + }, + "inputs": ["production", "^production", "{projectRoot}/tsdown.config.ts"], + "outputs": ["{projectRoot}/dist"], + "cache": true }, "lint": {}, "lint-report": {}, diff --git a/packages/models/tsdown.config.ts b/packages/models/tsdown.config.ts new file mode 100644 index 000000000..1217da330 --- /dev/null +++ b/packages/models/tsdown.config.ts @@ -0,0 +1,31 @@ +export default { + entry: { + // Main entry point + index: 'packages/models/src/index.ts', + // Individual module entry points + audit: 'packages/models/src/lib/audit.ts', + 'audit-output': 'packages/models/src/lib/audit-output.ts', + 'cache-config': 'packages/models/src/lib/cache-config.ts', + 'category-config': 'packages/models/src/lib/category-config.ts', + commit: 'packages/models/src/lib/commit.ts', + configuration: 'packages/models/src/lib/configuration.ts', + 'core-config': 'packages/models/src/lib/core-config.ts', + group: 'packages/models/src/lib/group.ts', + issue: 'packages/models/src/lib/issue.ts', + 'persist-config': 'packages/models/src/lib/persist-config.ts', + 'plugin-config': 'packages/models/src/lib/plugin-config.ts', + report: 'packages/models/src/lib/report.ts', + 'reports-diff': 'packages/models/src/lib/reports-diff.ts', + 'runner-config': 'packages/models/src/lib/runner-config.ts', + source: 'packages/models/src/lib/source.ts', + table: 'packages/models/src/lib/table.ts', + tree: 'packages/models/src/lib/tree.ts', + 'upload-config': 'packages/models/src/lib/upload-config.ts', + }, + format: ['cjs', 'esm'], + dts: true, + outDir: 'packages/models/dist', + clean: true, + external: ['zod', 'vscode-material-icons'], + tsconfig: 'packages/models/tsconfig.lib.json', +}; diff --git a/tools/src/ts-dwon.plugin.ts b/tools/src/ts-dwon.plugin.ts new file mode 100644 index 000000000..365debe12 --- /dev/null +++ b/tools/src/ts-dwon.plugin.ts @@ -0,0 +1,92 @@ +import type { + CreateNodesContextV2, + CreateNodesResultV2, + CreateNodesV2, + TargetConfiguration, +} from '@nx/devkit'; +import { existsSync } from 'fs'; +import { dirname, join } from 'path'; + +export interface TsdownPluginOptions { + targetName?: string; +} + +const TSDOWN_CONFIG_GLOB = '**/tsdown.config.{ts,js,mjs}'; + +export const createNodesV2: CreateNodesV2 = [ + TSDOWN_CONFIG_GLOB, + async ( + configFiles: readonly string[], + options: TsdownPluginOptions | undefined, + context: CreateNodesContextV2, + ): Promise => { + return await Promise.all( + configFiles.map(async configFile => { + const projectRoot = dirname(configFile); + const normalizedProjectRoot = projectRoot === '.' ? '' : projectRoot; + + // Check if this is a valid project (has package.json or project.json) + const hasPackageJson = existsSync( + join(context.workspaceRoot, projectRoot, 'package.json'), + ); + const hasProjectJson = existsSync( + join(context.workspaceRoot, projectRoot, 'project.json'), + ); + + if (!hasPackageJson && !hasProjectJson) { + return [configFile, { projects: {} }] as const; + } + + const targetName = options?.targetName ?? 'tsd-build'; + + const targets: Record = { + [targetName]: createTsdownBuildTarget(configFile, projectRoot), + }; + + const result = { + projects: { + [normalizedProjectRoot]: { + targets, + }, + }, + }; + + return [configFile, result] as const; + }), + ); + }, +]; + +function createTsdownBuildTarget( + configFile: string, + projectRoot: string, +): TargetConfiguration { + return { + executor: 'nx:run-commands', + options: { + command: `./node_modules/.bin/tsdown --config ${configFile}`, + cwd: '{workspaceRoot}', + }, + cache: true, + inputs: [ + 'default', + '^default', + { + externalDependencies: ['tsdown'], + }, + ], + outputs: ['{options.outDir}', '{projectRoot}/dist'], + metadata: { + description: 'Build the project using TSDown', + technologies: ['tsdown'], + }, + }; +} + +// Default export for nx.json plugins +const plugin = { + name: '@code-pushup/tsdown-plugin', + createNodesV2, +}; + +export default plugin; From cb89de46f2fa2c9e98bb1e6c21bc8f72be5110e7 Mon Sep 17 00:00:00 2001 From: John Doe Date: Sat, 4 Oct 2025 20:30:57 +0200 Subject: [PATCH 02/17] refactor: update targets --- README.md | 165 +++++++++++------- examples/plugins/tsdown.config.ts | 17 ++ nx.json | 18 +- packages/ci/tsdown.config.ts | 22 +++ packages/cli/tsdown.config.ts | 22 +++ packages/core/tsdown.config.ts | 22 +++ packages/create-cli/tsdown.config.ts | 22 +++ packages/models/README.md | 56 +----- packages/models/package.json | 102 ----------- packages/models/project.json | 13 +- packages/models/transformers/tsdown.config.ts | 17 ++ packages/models/tsdown.config.ts | 49 +++--- packages/nx-plugin/tsdown.config.ts | 37 ++++ packages/plugin-coverage/tsdown.config.ts | 30 ++++ packages/plugin-eslint/tsdown.config.ts | 22 +++ packages/plugin-js-packages/tsdown.config.ts | 22 +++ packages/plugin-jsdocs/tsdown.config.ts | 22 +++ packages/plugin-lighthouse/tsdown.config.ts | 22 +++ packages/plugin-typescript/tsdown.config.ts | 22 +++ packages/utils/tsdown.config.ts | 33 ++++ testing/test-nx-utils/tsdown.config.ts | 24 +++ testing/test-setup/tsdown.config.ts | 17 ++ testing/test-utils/tsdown.config.ts | 17 ++ tools/eslint-formatter-multi/tsdown.config.ts | 22 +++ tools/src/ts-down.plugin.mjs | 86 +++++++++ .../{ts-dwon.plugin.ts => ts-down.plugin.ts} | 19 +- 26 files changed, 652 insertions(+), 268 deletions(-) create mode 100644 examples/plugins/tsdown.config.ts create mode 100644 packages/ci/tsdown.config.ts create mode 100644 packages/cli/tsdown.config.ts create mode 100644 packages/core/tsdown.config.ts create mode 100644 packages/create-cli/tsdown.config.ts create mode 100644 packages/models/transformers/tsdown.config.ts create mode 100644 packages/nx-plugin/tsdown.config.ts create mode 100644 packages/plugin-coverage/tsdown.config.ts create mode 100644 packages/plugin-eslint/tsdown.config.ts create mode 100644 packages/plugin-js-packages/tsdown.config.ts create mode 100644 packages/plugin-jsdocs/tsdown.config.ts create mode 100644 packages/plugin-lighthouse/tsdown.config.ts create mode 100644 packages/plugin-typescript/tsdown.config.ts create mode 100644 packages/utils/tsdown.config.ts create mode 100644 testing/test-nx-utils/tsdown.config.ts create mode 100644 testing/test-setup/tsdown.config.ts create mode 100644 testing/test-utils/tsdown.config.ts create mode 100644 tools/eslint-formatter-multi/tsdown.config.ts create mode 100644 tools/src/ts-down.plugin.mjs rename tools/src/{ts-dwon.plugin.ts => ts-down.plugin.ts} (83%) diff --git a/README.md b/README.md index e899bfa18..7265970cf 100644 --- a/README.md +++ b/README.md @@ -1,89 +1,126 @@ -

Code PushUp CLI

-

Code-Pushup Logo

-

Comprehensive tech quality monitoring

- -

Quantify tech debt — Track incremental improvements — Monitor regressions

+# @code-pushup/models ---- +[![npm](https://img.shields.io/npm/v/%40code-pushup%2Fmodels.svg)](https://www.npmjs.com/package/@code-pushup/models) +[![downloads](https://img.shields.io/npm/dm/%40code-pushup%2Fmodels)](https://npmtrends.com/@code-pushup/models) +[![dependencies](https://img.shields.io/librariesio/release/npm/%40code-pushup/models)](https://www.npmjs.com/package/@code-pushup/models?activeTab=dependencies) -[![version](https://img.shields.io/github/v/release/code-pushup/cli)](https://github.com/code-pushup/cli/releases/latest) -[![release date](https://img.shields.io/github/release-date/code-pushup/cli)](https://github.com/code-pushup/cli/releases) -![NodeJS support](https://img.shields.io/node/v/%40code-pushup%2Fcli) -[![license](https://img.shields.io/github/license/code-pushup/cli)](https://opensource.org/licenses/MIT) -[![commit activity](https://img.shields.io/github/commit-activity/m/code-pushup/cli)](https://github.com/code-pushup/cli/pulse/monthly) -[![CI](https://github.com/code-pushup/cli/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/code-pushup/cli/actions/workflows/ci.yml?query=branch%3Amain) -[![Codecov](https://codecov.io/gh/code-pushup/cli/branch/main/graph/badge.svg?token=Y7V489JZ4A)](https://codecov.io/gh/code-pushup/cli) +**Model definitions and validators** for the [Code PushUp CLI](../cli/README.md). ---- +For a full list of models defined by this package, see the auto-generated [Code PushUp models reference](./docs/models-reference.md). -![Type safety](https://api.staging.code-pushup.dev/badges/code-pushup/cli-workspace/type-safety?apiKey=cp_def67c4efe558a9149061d0c62de893e1689ad793071db332790238446173fef) -![Bug prevention](https://api.staging.code-pushup.dev/badges/code-pushup/cli-workspace/bug-prevention?apiKey=cp_def67c4efe558a9149061d0c62de893e1689ad793071db332790238446173fef) -![Code style](https://api.staging.code-pushup.dev/badges/code-pushup/cli-workspace/code-style?apiKey=cp_def67c4efe558a9149061d0c62de893e1689ad793071db332790238446173fef) -![Code coverage](https://api.staging.code-pushup.dev/badges/code-pushup/cli-workspace/code-coverage?apiKey=cp_def67c4efe558a9149061d0c62de893e1689ad793071db332790238446173fef) -![Security](https://api.staging.code-pushup.dev/badges/code-pushup/cli-workspace/security?apiKey=cp_def67c4efe558a9149061d0c62de893e1689ad793071db332790238446173fef) -![Updates](https://api.staging.code-pushup.dev/badges/code-pushup/cli-workspace/updates?apiKey=cp_def67c4efe558a9149061d0c62de893e1689ad793071db332790238446173fef) -![Documentation](https://api.staging.code-pushup.dev/badges/code-pushup/cli-workspace/docs?apiKey=cp_def67c4efe558a9149061d0c62de893e1689ad793071db332790238446173fef) +## Setup ---- +If you've already installed another `@code-pushup/*` package, then you may have already installed `@code-pushup/models` indirectly. -### 🔌 Code quality tools are like phone chargers. Everyone has a different plug. +If not, you can always install it separately: -_Common problems with keeping track of technical quality:_ +```sh +npm install --save-dev @code-pushup/models +``` -- When **tech debt is invisible**, it's difficult to plan much-needed maintenance efforts 🔧 -- Individual tools measure different metrics, inability to combine them leads to - a **lack of comprehensive overview** 🧑‍🦯 -- Open-source tools typically used for failing checks in CI, which **can't measure incremental improvements** due to arbitrary pass/fail thresholds 🤖 -- Off-the-shelf solutions tend to be opinionated and **hard to customize**, so may not fit your specific needs 🧱 +```sh +yarn add --dev @code-pushup/models +``` -_We want to change that!_ +```sh +pnpm add --save-dev @code-pushup/models +``` ---- +## Usage -## 🔎🔬 Code quality integrations for any tool 📉🔍 +### Importing Everything (Traditional) -| [🚀 Get started](./packages/cli/README.md#getting-started)️ | [🤖 CI automation](https://github.com/marketplace/actions/code-pushup) | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Getting started cover image | CI Automation cover | -|
  • Run **[📦 `@code-pushup/cli`](./packages/cli#readme)** to collect **reports**.
  • [Get started](./packages/cli/README.md#getting-started) quickly with our [**official plugins**](#-officially-supported-plugins)! ⏱️
|
  • Easy **CI** setup with **[🤖 `code-pushup/github-action`](https://github.com/marketplace/actions/code-pushup)**.
  • Import logic from **[📦 `@code-pushup/core`](./packages/core#readme)** to craft **custom tools**.
| +Import the type definitions if using TypeScript: -| 📈 [Portal](https://code-pushup.dev#portal)️ | 🔌 [Custom plugins](./packages/cli/docs/custom-plugins.md) | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Portal integration cover image | Custom plugins | -|
  • **[Portal](https://code-pushup.dev#portal)** 🌐 **visualizes reports** in a slick UI.
  • Track **historical data** from uploads. ⬆️
|
  • All the [data models](./packages/models/docs/models-reference.md) you need are provided in **[📦 `@code-pushup/models`](./packages/models/README.md)**.
  • Find tons of useful utilities in **[📦 `@code-pushup/utils`](./packages/utils/README.md)**.
| +- in `code-pushup.config.ts`: ---- + ```ts + import type { CoreConfig } from '@code-pushup/models'; -### 🔌 Officially supported plugins + export default { + // ... this is type-checked ... + } satisfies CoreConfig; + ``` -| Icon | Name | Description | -| :------------------------------------------------------------: | :-------------------------------------------------- | :--------------------------------------------------------------------------------- | -| | [ESLint](./packages/plugin-eslint#readme) | Static analysis using **ESLint** rules. | -| | [Code Coverage](./packages/plugin-coverage#readme) | Collects code **coverage** from your tests. | -| | [JS Packages](./packages/plugin-js-packages#readme) | Checks 3rd party packages for known **vulnerabilities** and **outdated** versions. | -| | [Lighthouse](./packages/plugin-lighthouse#readme) | Measures web performance and best practices with **Lighthouse**. | -| | [JSDocs](./packages/plugin-jsdocs#readme) | Analyzes how much source code is **documented** using JSDocs comments. | -| | [TypeScript](./packages/plugin-typescript#readme) | Checks for **TypeScript** errors using strict compiler flags. | +- in custom plugin: ---- + ```ts + import type { PluginConfig } from '@code-pushup/models'; -## 📝 How it works + export default function myCustomPlugin(): PluginConfig { + return { + // ... this is type-checked ... + }; + } + ``` -1. **[Configure](./packages/cli/README.md#getting-started)** - Pick from a set of supported packages or include your own ideas. 🧩 + ```ts + import type { AuditOutput } from '@code-pushup/models'; -2. **[Integrate](https://github.com/marketplace/actions/code-pushup)** - Use our integration guide and packages to set up CI integration in minutes. ⏱️ + async function myCustomPluginRunner() { + const audits: AuditOutput[] = await collectAudits(); -3. **[Observe](https://code-pushup.dev#portal)** - Guard regressions and track improvements with every code change. 🔍 + await writeFile(RUNNER_OUTPUT_FILE, JSON.stringify(audits)); + } + ``` -4. **Relax!** - Watch improvements, share reports 📈 +### Importing Specific Modules (Recommended) ---- +For better tree-shaking and smaller bundle sizes, import only what you need from specific modules: -## 💖 Want to support us? +```ts +// Import only audit-related models +import { auditSchema } from '@code-pushup/models/audit'; +import type { AuditOutput } from '@code-pushup/models/audit-output'; +// Import only configuration models +import type { CoreConfig } from '@code-pushup/models/core-config'; +import { persistConfigSchema } from '@code-pushup/models/persist-config'; +// Import only plugin-related models +import type { PluginConfig } from '@code-pushup/models/plugin-config'; +// Import only report-related models +import type { Report } from '@code-pushup/models/report'; +import { reportsDiffSchema } from '@code-pushup/models/reports-diff'; +``` -- Read how to contribute to the codebase. See: [CONTRIBUTING.md](./CONTRIBUTING.md) 🤝 - +### Available Entry Points + +The following modules are available as individual entry points: + +| Module | Import Path | Description | +| --------------- | ------------------------------------- | ----------------------------- | +| Audit | `@code-pushup/models/audit` | Audit definitions and schemas | +| Audit Output | `@code-pushup/models/audit-output` | Audit output models | +| Cache Config | `@code-pushup/models/cache-config` | Cache configuration models | +| Category Config | `@code-pushup/models/category-config` | Category configuration models | +| Commit | `@code-pushup/models/commit` | Commit-related models | +| Configuration | `@code-pushup/models/configuration` | General configuration models | +| Core Config | `@code-pushup/models/core-config` | Core configuration models | +| Group | `@code-pushup/models/group` | Group-related models | +| Issue | `@code-pushup/models/issue` | Issue definitions and schemas | +| Persist Config | `@code-pushup/models/persist-config` | Persist configuration models | +| Plugin Config | `@code-pushup/models/plugin-config` | Plugin configuration models | +| Report | `@code-pushup/models/report` | Report models | +| Reports Diff | `@code-pushup/models/reports-diff` | Report diff models | +| Runner Config | `@code-pushup/models/runner-config` | Runner configuration models | +| Source | `@code-pushup/models/source` | Source location models | +| Table | `@code-pushup/models/table` | Table formatting models | +| Tree | `@code-pushup/models/tree` | Tree structure models | +| Upload Config | `@code-pushup/models/upload-config` | Upload configuration models | + +### Runtime Validation + +If you need runtime validation, use the underlying Zod schemas: + +```ts +// Import from specific modules (recommended) +import { coreConfigSchema } from '@code-pushup/models/core-config'; +import { auditOutputSchema } from '@code-pushup/models/audit-output'; + +// Or import from main entry point +import { coreConfigSchema } from '@code-pushup/models'; + +const json = JSON.parse(readFileSync('code-pushup.config.json')); +const config = coreConfigSchema.parse(json); // throws ZodError if invalid +``` + +> **💡 Pro tip**: Using specific module imports (e.g., `@code-pushup/models/audit`) instead of the main entry point can significantly reduce your bundle size and avoid side effects by only including the code you actually use. diff --git a/examples/plugins/tsdown.config.ts b/examples/plugins/tsdown.config.ts new file mode 100644 index 000000000..52bfd6d92 --- /dev/null +++ b/examples/plugins/tsdown.config.ts @@ -0,0 +1,17 @@ +import { defineConfig } from 'tsdown'; + +// Project name is examples-plugins but directory is examples/plugins +const projectDir = 'examples/plugins'; + +export default defineConfig({ + entry: `${projectDir}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, + tsconfig: `${projectDir}/tsconfig.lib.json`, + outDir: `${projectDir}/dist/src`, // Output to src/ subdirectory to match tsc + unbundle: true, // Preserve directory structure like tsc + format: ['esm', 'cjs'], // dual build + fixedExtension: true, // emit .mjs for esm and .cjs for cjs + dts: true, + hash: false, + external: [], + exports: false, // manually manage exports via onSuccess +}); diff --git a/nx.json b/nx.json index 959979ed1..32292da4c 100644 --- a/nx.json +++ b/nx.json @@ -26,6 +26,7 @@ "!{projectRoot}/tsconfig.@(test|tools).json", "!{workspaceRoot}/**/(*.)coverage/**/*" ], + "tsdownConfigs": ["{projectRoot}/tsdown.config.ts"], "test-vitest-inputs": [ "os", { @@ -82,7 +83,7 @@ } } }, - "build": { + "build-old": { "dependsOn": ["^build"], "inputs": ["production", "^production"], "cache": true, @@ -95,6 +96,18 @@ "assets": ["{projectRoot}/*.md"] } }, + "build": { + "dependsOn": ["^build"], + "inputs": ["production", "^production", "tsdownConfigs"], + "cache": true, + "executor": "nx:run-commands", + "options": { + "commands": [ + "node_modules/.bin/tsdown --config {projectRoot}/tsdown.config.ts" + ] + }, + "outputs": ["{projectRoot}/dist"] + }, "unit-test": { "cache": true, "inputs": ["default", "test-vitest-inputs"], @@ -358,7 +371,8 @@ "filterByTags": ["publishable"] } } - } + }, + "./tools/src/ts-down.plugin.mjs" ], "nxCloudId": "65d4d862d2adb16a45a4bc7c" } diff --git a/packages/ci/tsdown.config.ts b/packages/ci/tsdown.config.ts new file mode 100644 index 000000000..86603259f --- /dev/null +++ b/packages/ci/tsdown.config.ts @@ -0,0 +1,22 @@ +import { defineConfig } from 'tsdown'; + +const projectName = process.env['NX_TASK_TARGET_PROJECT']; + +export default defineConfig({ + entry: `packages/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, + tsconfig: `packages/${projectName}/tsconfig.lib.json`, + outDir: `packages/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc + unbundle: true, // Preserve directory structure like tsc + format: ['esm', 'cjs'], // dual build + fixedExtension: true, // emit .mjs for esm and .cjs for cjs + dts: true, + hash: false, + external: ['glob', 'simple-git', 'yaml', 'zod'], + exports: false, // manually manage exports via onSuccess + copy: [ + { + from: `packages/${projectName}/README.md`, + to: `packages/${projectName}/dist/README.md`, + }, + ], +}); diff --git a/packages/cli/tsdown.config.ts b/packages/cli/tsdown.config.ts new file mode 100644 index 000000000..f4116cabd --- /dev/null +++ b/packages/cli/tsdown.config.ts @@ -0,0 +1,22 @@ +import { defineConfig } from 'tsdown'; + +const projectName = process.env['NX_TASK_TARGET_PROJECT']; + +export default defineConfig({ + entry: `packages/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, + tsconfig: `packages/${projectName}/tsconfig.lib.json`, + outDir: `packages/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc + unbundle: true, // Preserve directory structure like tsc + format: ['esm'], // ESM only - CLI uses top-level await + fixedExtension: true, // emit .mjs for esm + dts: true, + hash: false, + external: ['yargs', 'simple-git', 'ansis'], + exports: false, // manually manage exports via onSuccess + copy: [ + { + from: `packages/${projectName}/README.md`, + to: `packages/${projectName}/dist/README.md`, + }, + ], +}); diff --git a/packages/core/tsdown.config.ts b/packages/core/tsdown.config.ts new file mode 100644 index 000000000..0f7b42a40 --- /dev/null +++ b/packages/core/tsdown.config.ts @@ -0,0 +1,22 @@ +import { defineConfig } from 'tsdown'; + +const projectName = process.env['NX_TASK_TARGET_PROJECT']; + +export default defineConfig({ + entry: `packages/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, + tsconfig: `packages/${projectName}/tsconfig.lib.json`, + outDir: `packages/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc + unbundle: true, // Preserve directory structure like tsc + format: ['esm', 'cjs'], // dual build + fixedExtension: true, // emit .mjs for esm and .cjs for cjs + dts: true, + hash: false, + external: ['ansis', '@code-pushup/portal-client'], + exports: false, // manually manage exports via onSuccess + copy: [ + { + from: `packages/${projectName}/README.md`, + to: `packages/${projectName}/dist/README.md`, + }, + ], +}); diff --git a/packages/create-cli/tsdown.config.ts b/packages/create-cli/tsdown.config.ts new file mode 100644 index 000000000..4c8fe764e --- /dev/null +++ b/packages/create-cli/tsdown.config.ts @@ -0,0 +1,22 @@ +import { defineConfig } from 'tsdown'; + +const projectName = process.env['NX_TASK_TARGET_PROJECT']; + +export default defineConfig({ + entry: `packages/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, + tsconfig: `packages/${projectName}/tsconfig.lib.json`, + outDir: `packages/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc + unbundle: true, // Preserve directory structure like tsc + format: ['esm', 'cjs'], // dual build + fixedExtension: true, // emit .mjs for esm and .cjs for cjs + dts: true, + hash: false, + external: [], + exports: false, // manually manage exports via onSuccess + copy: [ + { + from: `packages/${projectName}/README.md`, + to: `packages/${projectName}/dist/README.md`, + }, + ], +}); diff --git a/packages/models/README.md b/packages/models/README.md index 7265970cf..532286363 100644 --- a/packages/models/README.md +++ b/packages/models/README.md @@ -28,8 +28,6 @@ pnpm add --save-dev @code-pushup/models ## Usage -### Importing Everything (Traditional) - Import the type definitions if using TypeScript: - in `code-pushup.config.ts`: @@ -60,67 +58,15 @@ Import the type definitions if using TypeScript: async function myCustomPluginRunner() { const audits: AuditOutput[] = await collectAudits(); - await writeFile(RUNNER_OUTPUT_FILE, JSON.stringify(audits)); + await writeFile(RUNNER_OUTPUT_FILE, JSON.strinfigy(audits)); } ``` -### Importing Specific Modules (Recommended) - -For better tree-shaking and smaller bundle sizes, import only what you need from specific modules: - -```ts -// Import only audit-related models -import { auditSchema } from '@code-pushup/models/audit'; -import type { AuditOutput } from '@code-pushup/models/audit-output'; -// Import only configuration models -import type { CoreConfig } from '@code-pushup/models/core-config'; -import { persistConfigSchema } from '@code-pushup/models/persist-config'; -// Import only plugin-related models -import type { PluginConfig } from '@code-pushup/models/plugin-config'; -// Import only report-related models -import type { Report } from '@code-pushup/models/report'; -import { reportsDiffSchema } from '@code-pushup/models/reports-diff'; -``` - -### Available Entry Points - -The following modules are available as individual entry points: - -| Module | Import Path | Description | -| --------------- | ------------------------------------- | ----------------------------- | -| Audit | `@code-pushup/models/audit` | Audit definitions and schemas | -| Audit Output | `@code-pushup/models/audit-output` | Audit output models | -| Cache Config | `@code-pushup/models/cache-config` | Cache configuration models | -| Category Config | `@code-pushup/models/category-config` | Category configuration models | -| Commit | `@code-pushup/models/commit` | Commit-related models | -| Configuration | `@code-pushup/models/configuration` | General configuration models | -| Core Config | `@code-pushup/models/core-config` | Core configuration models | -| Group | `@code-pushup/models/group` | Group-related models | -| Issue | `@code-pushup/models/issue` | Issue definitions and schemas | -| Persist Config | `@code-pushup/models/persist-config` | Persist configuration models | -| Plugin Config | `@code-pushup/models/plugin-config` | Plugin configuration models | -| Report | `@code-pushup/models/report` | Report models | -| Reports Diff | `@code-pushup/models/reports-diff` | Report diff models | -| Runner Config | `@code-pushup/models/runner-config` | Runner configuration models | -| Source | `@code-pushup/models/source` | Source location models | -| Table | `@code-pushup/models/table` | Table formatting models | -| Tree | `@code-pushup/models/tree` | Tree structure models | -| Upload Config | `@code-pushup/models/upload-config` | Upload configuration models | - -### Runtime Validation - If you need runtime validation, use the underlying Zod schemas: ```ts -// Import from specific modules (recommended) -import { coreConfigSchema } from '@code-pushup/models/core-config'; -import { auditOutputSchema } from '@code-pushup/models/audit-output'; - -// Or import from main entry point import { coreConfigSchema } from '@code-pushup/models'; const json = JSON.parse(readFileSync('code-pushup.config.json')); const config = coreConfigSchema.parse(json); // throws ZodError if invalid ``` - -> **💡 Pro tip**: Using specific module imports (e.g., `@code-pushup/models/audit`) instead of the main entry point can significantly reduce your bundle size and avoid side effects by only including the code you actually use. diff --git a/packages/models/package.json b/packages/models/package.json index 143feebd7..be88329d3 100644 --- a/packages/models/package.json +++ b/packages/models/package.json @@ -26,113 +26,11 @@ "access": "public" }, "type": "module", - "main": "./dist/index.cjs", - "module": "./dist/index.js", - "types": "./dist/index.d.ts", - "exports": { - ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.js", - "require": "./dist/index.cjs" - }, - "./audit": { - "types": "./dist/audit.d.ts", - "import": "./dist/audit.js", - "require": "./dist/audit.cjs" - }, - "./audit-output": { - "types": "./dist/audit-output.d.ts", - "import": "./dist/audit-output.js", - "require": "./dist/audit-output.cjs" - }, - "./cache-config": { - "types": "./dist/cache-config.d.ts", - "import": "./dist/cache-config.js", - "require": "./dist/cache-config.cjs" - }, - "./category-config": { - "types": "./dist/category-config.d.ts", - "import": "./dist/category-config.js", - "require": "./dist/category-config.cjs" - }, - "./commit": { - "types": "./dist/commit.d.ts", - "import": "./dist/commit.js", - "require": "./dist/commit.cjs" - }, - "./configuration": { - "types": "./dist/configuration.d.ts", - "import": "./dist/configuration.js", - "require": "./dist/configuration.cjs" - }, - "./core-config": { - "types": "./dist/core-config.d.ts", - "import": "./dist/core-config.js", - "require": "./dist/core-config.cjs" - }, - "./group": { - "types": "./dist/group.d.ts", - "import": "./dist/group.js", - "require": "./dist/group.cjs" - }, - "./issue": { - "types": "./dist/issue.d.ts", - "import": "./dist/issue.js", - "require": "./dist/issue.cjs" - }, - "./persist-config": { - "types": "./dist/persist-config.d.ts", - "import": "./dist/persist-config.js", - "require": "./dist/persist-config.cjs" - }, - "./plugin-config": { - "types": "./dist/plugin-config.d.ts", - "import": "./dist/plugin-config.js", - "require": "./dist/plugin-config.cjs" - }, - "./report": { - "types": "./dist/report.d.ts", - "import": "./dist/report.js", - "require": "./dist/report.cjs" - }, - "./reports-diff": { - "types": "./dist/reports-diff.d.ts", - "import": "./dist/reports-diff.js", - "require": "./dist/reports-diff.cjs" - }, - "./runner-config": { - "types": "./dist/runner-config.d.ts", - "import": "./dist/runner-config.js", - "require": "./dist/runner-config.cjs" - }, - "./source": { - "types": "./dist/source.d.ts", - "import": "./dist/source.js", - "require": "./dist/source.cjs" - }, - "./table": { - "types": "./dist/table.d.ts", - "import": "./dist/table.js", - "require": "./dist/table.cjs" - }, - "./tree": { - "types": "./dist/tree.d.ts", - "import": "./dist/tree.js", - "require": "./dist/tree.cjs" - }, - "./upload-config": { - "types": "./dist/upload-config.d.ts", - "import": "./dist/upload-config.js", - "require": "./dist/upload-config.cjs" - } - }, - "sideEffects": false, "dependencies": { "zod": "^4.0.5", "vscode-material-icons": "^0.1.0" }, "files": [ - "dist", "src", "!**/*.tsbuildinfo" ] diff --git a/packages/models/project.json b/packages/models/project.json index 18fac0f85..70591234a 100644 --- a/packages/models/project.json +++ b/packages/models/project.json @@ -22,18 +22,7 @@ "^build", "generate-docs", { "projects": "models-transformers", "target": "build" } - ], - "executor": "nx:run-commands", - "options": { - "commands": [ - "npx tsdown --config packages/models/tsdown.config.ts", - "node packages/models/scripts/generate-dist-package-json.mjs" - ], - "parallel": false - }, - "inputs": ["production", "^production", "{projectRoot}/tsdown.config.ts"], - "outputs": ["{projectRoot}/dist"], - "cache": true + ] }, "lint": {}, "lint-report": {}, diff --git a/packages/models/transformers/tsdown.config.ts b/packages/models/transformers/tsdown.config.ts new file mode 100644 index 000000000..f83165899 --- /dev/null +++ b/packages/models/transformers/tsdown.config.ts @@ -0,0 +1,17 @@ +import { defineConfig } from 'tsdown'; + +const projectName = process.env['NX_TASK_TARGET_PROJECT']; + +export default defineConfig({ + entry: `packages/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, + tsconfig: `packages/${projectName}/tsconfig.lib.json`, + outDir: `packages/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc + unbundle: true, // Preserve directory structure like tsc + format: ['esm', 'cjs'], // dual build + fixedExtension: true, // emit .mjs for esm and .cjs for cjs + dts: true, + hash: false, + external: ['zod', 'vscode-material-icons'], + exports: false, // manually manage exports via onSuccess + // No copy needed - this is an internal build tool, not a published package +}); diff --git a/packages/models/tsdown.config.ts b/packages/models/tsdown.config.ts index 1217da330..fd0482c9c 100644 --- a/packages/models/tsdown.config.ts +++ b/packages/models/tsdown.config.ts @@ -1,31 +1,22 @@ -export default { - entry: { - // Main entry point - index: 'packages/models/src/index.ts', - // Individual module entry points - audit: 'packages/models/src/lib/audit.ts', - 'audit-output': 'packages/models/src/lib/audit-output.ts', - 'cache-config': 'packages/models/src/lib/cache-config.ts', - 'category-config': 'packages/models/src/lib/category-config.ts', - commit: 'packages/models/src/lib/commit.ts', - configuration: 'packages/models/src/lib/configuration.ts', - 'core-config': 'packages/models/src/lib/core-config.ts', - group: 'packages/models/src/lib/group.ts', - issue: 'packages/models/src/lib/issue.ts', - 'persist-config': 'packages/models/src/lib/persist-config.ts', - 'plugin-config': 'packages/models/src/lib/plugin-config.ts', - report: 'packages/models/src/lib/report.ts', - 'reports-diff': 'packages/models/src/lib/reports-diff.ts', - 'runner-config': 'packages/models/src/lib/runner-config.ts', - source: 'packages/models/src/lib/source.ts', - table: 'packages/models/src/lib/table.ts', - tree: 'packages/models/src/lib/tree.ts', - 'upload-config': 'packages/models/src/lib/upload-config.ts', - }, - format: ['cjs', 'esm'], +import { defineConfig } from 'tsdown'; + +const projectName = process.env['NX_TASK_TARGET_PROJECT']; + +export default defineConfig({ + entry: `packages/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, + tsconfig: `packages/${projectName}/tsconfig.lib.json`, + outDir: `packages/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc + unbundle: true, // Preserve directory structure like tsc + format: ['esm', 'cjs'], // dual build + fixedExtension: true, // emit .mjs for esm and .cjs for cjs dts: true, - outDir: 'packages/models/dist', - clean: true, + hash: false, external: ['zod', 'vscode-material-icons'], - tsconfig: 'packages/models/tsconfig.lib.json', -}; + exports: false, // manually manage exports via onSuccess + copy: [ + { + from: `packages/${projectName}/README.md`, + to: `packages/${projectName}/dist/README.md`, + }, + ], +}); diff --git a/packages/nx-plugin/tsdown.config.ts b/packages/nx-plugin/tsdown.config.ts new file mode 100644 index 000000000..c1f641ba0 --- /dev/null +++ b/packages/nx-plugin/tsdown.config.ts @@ -0,0 +1,37 @@ +import { defineConfig } from 'tsdown'; + +const projectName = process.env['NX_TASK_TARGET_PROJECT']; + +export default defineConfig({ + entry: `packages/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, + tsconfig: `packages/${projectName}/tsconfig.lib.json`, + outDir: `packages/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc + unbundle: true, // Preserve directory structure like tsc + format: ['cjs'], // commonjs only + fixedExtension: true, // emit .mjs for esm and .cjs for cjs + dts: true, + hash: false, + external: [ + '@code-pushup/models', + '@code-pushup/utils', + '@nx/devkit', + 'ansis', + 'nx', + ], + exports: false, // manually manage exports via onSuccess + copy: [ + { + from: `packages/${projectName}/README.md`, + to: `packages/${projectName}/dist/README.md`, + }, + { + from: `packages/${projectName}/generators.json`, + to: `packages/${projectName}/dist/generators.json`, + }, + { + from: `packages/${projectName}/executors.json`, + to: `packages/${projectName}/dist/executors.json`, + }, + // Schema files and templates are handled by Nx assets configuration in project.json + ], +}); diff --git a/packages/plugin-coverage/tsdown.config.ts b/packages/plugin-coverage/tsdown.config.ts new file mode 100644 index 000000000..b8f34883b --- /dev/null +++ b/packages/plugin-coverage/tsdown.config.ts @@ -0,0 +1,30 @@ +import { defineConfig } from 'tsdown'; + +const projectName = process.env['NX_TASK_TARGET_PROJECT']; + +export default defineConfig({ + entry: `packages/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, + tsconfig: `packages/${projectName}/tsconfig.lib.json`, + outDir: `packages/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc + unbundle: true, // Preserve directory structure like tsc + format: ['esm'], // ESM only - uses top-level await + fixedExtension: true, // emit .mjs for esm + dts: true, + hash: false, + external: [ + 'ansis', + 'parse-lcov', + 'yargs', + 'zod', + '@nx/devkit', + '@nx/jest', + '@nx/vite', + ], + exports: false, // manually manage exports via onSuccess + copy: [ + { + from: `packages/${projectName}/README.md`, + to: `packages/${projectName}/dist/README.md`, + }, + ], +}); diff --git a/packages/plugin-eslint/tsdown.config.ts b/packages/plugin-eslint/tsdown.config.ts new file mode 100644 index 000000000..e52d645b2 --- /dev/null +++ b/packages/plugin-eslint/tsdown.config.ts @@ -0,0 +1,22 @@ +import { defineConfig } from 'tsdown'; + +const projectName = process.env['NX_TASK_TARGET_PROJECT']; + +export default defineConfig({ + entry: `packages/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, + tsconfig: `packages/${projectName}/tsconfig.lib.json`, + outDir: `packages/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc + unbundle: true, // Preserve directory structure like tsc + format: ['esm', 'cjs'], // dual build + fixedExtension: true, // emit .mjs for esm and .cjs for cjs + dts: true, + hash: false, + external: ['glob', 'zod', '@nx/devkit', 'eslint'], + exports: false, // manually manage exports via onSuccess + copy: [ + { + from: `packages/${projectName}/README.md`, + to: `packages/${projectName}/dist/README.md`, + }, + ], +}); diff --git a/packages/plugin-js-packages/tsdown.config.ts b/packages/plugin-js-packages/tsdown.config.ts new file mode 100644 index 000000000..0daa81cf4 --- /dev/null +++ b/packages/plugin-js-packages/tsdown.config.ts @@ -0,0 +1,22 @@ +import { defineConfig } from 'tsdown'; + +const projectName = process.env['NX_TASK_TARGET_PROJECT']; + +export default defineConfig({ + entry: `packages/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, + tsconfig: `packages/${projectName}/tsconfig.lib.json`, + outDir: `packages/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc + unbundle: true, // Preserve directory structure like tsc + format: ['esm'], // ESM only - uses top-level await + fixedExtension: true, // emit .mjs for esm + dts: true, + hash: false, + external: ['build-md', 'semver', 'yargs', 'zod'], + exports: false, // manually manage exports via onSuccess + copy: [ + { + from: `packages/${projectName}/README.md`, + to: `packages/${projectName}/dist/README.md`, + }, + ], +}); diff --git a/packages/plugin-jsdocs/tsdown.config.ts b/packages/plugin-jsdocs/tsdown.config.ts new file mode 100644 index 000000000..93df3e9c8 --- /dev/null +++ b/packages/plugin-jsdocs/tsdown.config.ts @@ -0,0 +1,22 @@ +import { defineConfig } from 'tsdown'; + +const projectName = process.env['NX_TASK_TARGET_PROJECT']; + +export default defineConfig({ + entry: `packages/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, + tsconfig: `packages/${projectName}/tsconfig.lib.json`, + outDir: `packages/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc + unbundle: true, // Preserve directory structure like tsc + format: ['esm', 'cjs'], // dual build + fixedExtension: true, // emit .mjs for esm and .cjs for cjs + dts: true, + hash: false, + external: ['zod', 'ts-morph'], + exports: false, // manually manage exports via onSuccess + copy: [ + { + from: `packages/${projectName}/README.md`, + to: `packages/${projectName}/dist/README.md`, + }, + ], +}); diff --git a/packages/plugin-lighthouse/tsdown.config.ts b/packages/plugin-lighthouse/tsdown.config.ts new file mode 100644 index 000000000..505455ee4 --- /dev/null +++ b/packages/plugin-lighthouse/tsdown.config.ts @@ -0,0 +1,22 @@ +import { defineConfig } from 'tsdown'; + +const projectName = process.env['NX_TASK_TARGET_PROJECT']; + +export default defineConfig({ + entry: `packages/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, + tsconfig: `packages/${projectName}/tsconfig.lib.json`, + outDir: `packages/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc + unbundle: true, // Preserve directory structure like tsc + format: ['esm'], // ESM only - uses top-level await + fixedExtension: true, // emit .mjs for esm + dts: true, + hash: false, + external: ['ansis', 'chrome-launcher', 'lighthouse', 'lighthouse-logger'], + exports: false, // manually manage exports via onSuccess + copy: [ + { + from: `packages/${projectName}/README.md`, + to: `packages/${projectName}/dist/README.md`, + }, + ], +}); diff --git a/packages/plugin-typescript/tsdown.config.ts b/packages/plugin-typescript/tsdown.config.ts new file mode 100644 index 000000000..28be3c00e --- /dev/null +++ b/packages/plugin-typescript/tsdown.config.ts @@ -0,0 +1,22 @@ +import { defineConfig } from 'tsdown'; + +const projectName = process.env['NX_TASK_TARGET_PROJECT']; + +export default defineConfig({ + entry: `packages/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, + tsconfig: `packages/${projectName}/tsconfig.lib.json`, + outDir: `packages/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc + unbundle: true, // Preserve directory structure like tsc + format: ['esm', 'cjs'], // dual build + fixedExtension: true, // emit .mjs for esm and .cjs for cjs + dts: true, + hash: false, + external: ['zod', 'typescript'], + exports: false, // manually manage exports via onSuccess + copy: [ + { + from: `packages/${projectName}/README.md`, + to: `packages/${projectName}/dist/README.md`, + }, + ], +}); diff --git a/packages/utils/tsdown.config.ts b/packages/utils/tsdown.config.ts new file mode 100644 index 000000000..5f96c8e77 --- /dev/null +++ b/packages/utils/tsdown.config.ts @@ -0,0 +1,33 @@ +import { defineConfig } from 'tsdown'; + +const projectName = process.env['NX_TASK_TARGET_PROJECT']; + +export default defineConfig({ + entry: `packages/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, + tsconfig: `packages/${projectName}/tsconfig.lib.json`, + outDir: `packages/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc + unbundle: true, // Preserve directory structure like tsc + format: ['esm', 'cjs'], // dual build + fixedExtension: true, // emit .mjs for esm and .cjs for cjs + dts: true, + hash: false, + external: [ + '@isaacs/cliui', + '@poppinss/cliui', + 'ansis', + 'build-md', + 'bundle-require', + 'esbuild', + 'multi-progress-bars', + 'semver', + 'simple-git', + 'zod', + ], + exports: false, // manually manage exports via onSuccess + copy: [ + { + from: `packages/${projectName}/README.md`, + to: `packages/${projectName}/dist/README.md`, + }, + ], +}); diff --git a/testing/test-nx-utils/tsdown.config.ts b/testing/test-nx-utils/tsdown.config.ts new file mode 100644 index 000000000..ad3cbeddf --- /dev/null +++ b/testing/test-nx-utils/tsdown.config.ts @@ -0,0 +1,24 @@ +import { defineConfig } from 'tsdown'; + +const projectName = process.env['NX_TASK_TARGET_PROJECT']; + +export default defineConfig({ + entry: `testing/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, + tsconfig: `testing/${projectName}/tsconfig.lib.json`, + outDir: `testing/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc + unbundle: true, // Preserve directory structure like tsc + format: ['esm', 'cjs'], // dual build + fixedExtension: true, // emit .mjs for esm and .cjs for cjs + dts: true, + hash: false, + external: [ + '@nx/devkit', + '@nx/js', + 'nx', + '@code-pushup/utils', + '@code-pushup/test-utils', + 'memfs', + ], + exports: false, // manually manage exports via onSuccess + // README exists but this is a testing utility, copy not needed for publication +}); diff --git a/testing/test-setup/tsdown.config.ts b/testing/test-setup/tsdown.config.ts new file mode 100644 index 000000000..ba83bd1d3 --- /dev/null +++ b/testing/test-setup/tsdown.config.ts @@ -0,0 +1,17 @@ +import { defineConfig } from 'tsdown'; + +const projectName = process.env['NX_TASK_TARGET_PROJECT']; + +export default defineConfig({ + entry: `testing/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, + tsconfig: `testing/${projectName}/tsconfig.lib.json`, + outDir: `testing/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc + unbundle: true, // Preserve directory structure like tsc + format: ['esm', 'cjs'], // dual build + fixedExtension: true, // emit .mjs for esm and .cjs for cjs + dts: true, + hash: false, + external: [], + exports: false, // manually manage exports via onSuccess + // README exists but this is a testing utility, copy not needed for publication +}); diff --git a/testing/test-utils/tsdown.config.ts b/testing/test-utils/tsdown.config.ts new file mode 100644 index 000000000..ba83bd1d3 --- /dev/null +++ b/testing/test-utils/tsdown.config.ts @@ -0,0 +1,17 @@ +import { defineConfig } from 'tsdown'; + +const projectName = process.env['NX_TASK_TARGET_PROJECT']; + +export default defineConfig({ + entry: `testing/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, + tsconfig: `testing/${projectName}/tsconfig.lib.json`, + outDir: `testing/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc + unbundle: true, // Preserve directory structure like tsc + format: ['esm', 'cjs'], // dual build + fixedExtension: true, // emit .mjs for esm and .cjs for cjs + dts: true, + hash: false, + external: [], + exports: false, // manually manage exports via onSuccess + // README exists but this is a testing utility, copy not needed for publication +}); diff --git a/tools/eslint-formatter-multi/tsdown.config.ts b/tools/eslint-formatter-multi/tsdown.config.ts new file mode 100644 index 000000000..332776947 --- /dev/null +++ b/tools/eslint-formatter-multi/tsdown.config.ts @@ -0,0 +1,22 @@ +import { defineConfig } from 'tsdown'; + +const projectName = process.env['NX_TASK_TARGET_PROJECT']; + +export default defineConfig({ + entry: `tools/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, + tsconfig: `tools/${projectName}/tsconfig.lib.json`, + outDir: `tools/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc + unbundle: true, // Preserve directory structure like tsc + format: ['esm', 'cjs'], // dual build + fixedExtension: true, // emit .mjs for esm and .cjs for cjs + dts: true, + hash: false, + external: ['ansis', 'tslib', 'eslint'], + exports: false, // manually manage exports via onSuccess + copy: [ + { + from: `tools/${projectName}/README.md`, + to: `tools/${projectName}/dist/README.md`, + }, + ], +}); diff --git a/tools/src/ts-down.plugin.mjs b/tools/src/ts-down.plugin.mjs new file mode 100644 index 000000000..3e11f3295 --- /dev/null +++ b/tools/src/ts-down.plugin.mjs @@ -0,0 +1,86 @@ +import { existsSync } from 'fs'; +import { dirname, join } from 'path'; + +const TSDOWN_CONFIG_GLOB = '**/tsdown.config.{ts,js,mjs}'; + +/** + * Nx plugin to integrate TSDown into the build process. + * + * @example + * ```json + * { + * "plugins": ["./tools/src/ts-down.plugin.mjs"] + * } + * ``` + * This will automatically add a build target to any project containing a `tsdown.config.ts`, `tsdown.config.js`, or `tsdown.config.mjs` file. + */ +const createNodesV2 = [ + TSDOWN_CONFIG_GLOB, + async (configFiles, options, context) => { + return await Promise.all( + configFiles.map(async configFile => { + const projectRoot = dirname(configFile); + const normalizedProjectRoot = projectRoot === '.' ? '' : projectRoot; + + // Check if this is a valid project (has package.json or project.json) + const hasPackageJson = existsSync( + join(context.workspaceRoot, projectRoot, 'package.json'), + ); + const hasProjectJson = existsSync( + join(context.workspaceRoot, projectRoot, 'project.json'), + ); + + if (!hasPackageJson && !hasProjectJson) { + return [configFile, { projects: {} }]; + } + + const targetName = options?.targetName ?? 'tsd-build'; + + const targets = { + [targetName]: createTsdownBuildTarget(configFile, projectRoot), + }; + + const result = { + projects: { + [normalizedProjectRoot]: { + targets, + }, + }, + }; + + return [configFile, result]; + }), + ); + }, +]; + +function createTsdownBuildTarget(configFile, projectRoot) { + return { + executor: 'nx:run-commands', + options: { + command: `node_modules/.bin/tsdown --config ${configFile}`, + cwd: '{workspaceRoot}', + }, + cache: true, + inputs: [ + 'production', + '^production', + { + externalDependencies: ['tsdown'], + }, + ], + outputs: ['{projectRoot}/dist'], + metadata: { + description: 'Build the project using TSDown', + technologies: ['tsdown'], + }, + }; +} + +// Default export for nx.json plugins +const plugin = { + name: '@code-pushup/tsdown-plugin', + createNodesV2, +}; + +export default plugin; diff --git a/tools/src/ts-dwon.plugin.ts b/tools/src/ts-down.plugin.ts similarity index 83% rename from tools/src/ts-dwon.plugin.ts rename to tools/src/ts-down.plugin.ts index 365debe12..4ce0fc04d 100644 --- a/tools/src/ts-dwon.plugin.ts +++ b/tools/src/ts-down.plugin.ts @@ -13,6 +13,17 @@ export interface TsdownPluginOptions { const TSDOWN_CONFIG_GLOB = '**/tsdown.config.{ts,js,mjs}'; +/** + * Nx plugin to integrate TSDown into the build process. + * + * @example + * ```json + * { + * "plugins": ["./tools/src/tsdown-plugin"] + * } + * ``` + * This will automatically add a build target to any project containing a `tsdown.config.ts`, `tsdown.config.js`, or `tsdown.config.mjs` file. + */ export const createNodesV2: CreateNodesV2 = [ TSDOWN_CONFIG_GLOB, async ( @@ -64,18 +75,18 @@ function createTsdownBuildTarget( return { executor: 'nx:run-commands', options: { - command: `./node_modules/.bin/tsdown --config ${configFile}`, + command: `node_modules/.bin/tsdown --config ${configFile}`, cwd: '{workspaceRoot}', }, cache: true, inputs: [ - 'default', - '^default', + 'production', + '^production', { externalDependencies: ['tsdown'], }, ], - outputs: ['{options.outDir}', '{projectRoot}/dist'], + outputs: ['{projectRoot}/dist'], metadata: { description: 'Build the project using TSDown', technologies: ['tsdown'], From 13db29333175f79ad76102120d2a1ea9bf597b50 Mon Sep 17 00:00:00 2001 From: John Doe Date: Sat, 4 Oct 2025 20:41:42 +0200 Subject: [PATCH 03/17] refactor: update targets 2 --- packages/create-cli/tsdown.config.ts | 2 +- packages/models/tsdown.config.ts | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/create-cli/tsdown.config.ts b/packages/create-cli/tsdown.config.ts index 4c8fe764e..de6943365 100644 --- a/packages/create-cli/tsdown.config.ts +++ b/packages/create-cli/tsdown.config.ts @@ -7,7 +7,7 @@ export default defineConfig({ tsconfig: `packages/${projectName}/tsconfig.lib.json`, outDir: `packages/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc unbundle: true, // Preserve directory structure like tsc - format: ['esm', 'cjs'], // dual build + format: ['esm'], // ESM only (uses top-level await) fixedExtension: true, // emit .mjs for esm and .cjs for cjs dts: true, hash: false, diff --git a/packages/models/tsdown.config.ts b/packages/models/tsdown.config.ts index fd0482c9c..18fe99af5 100644 --- a/packages/models/tsdown.config.ts +++ b/packages/models/tsdown.config.ts @@ -14,6 +14,10 @@ export default defineConfig({ external: ['zod', 'vscode-material-icons'], exports: false, // manually manage exports via onSuccess copy: [ + { + from: `packages/${projectName}/package.json`, + to: `packages/${projectName}/dist/package.json`, + }, { from: `packages/${projectName}/README.md`, to: `packages/${projectName}/dist/README.md`, From 582e93d65d2d66b987c7b120eeab1b8870428dbc Mon Sep 17 00:00:00 2001 From: John Doe Date: Sat, 4 Oct 2025 21:01:21 +0200 Subject: [PATCH 04/17] refactor: fix lint --- eslint.config.js | 9 +++++ nx.json | 2 +- packages/ci/eslint.config.js | 7 +++- packages/create-cli/eslint.config.js | 7 +++- packages/models/tsconfig.lib.json | 1 + packages/utils/eslint.config.js | 7 +++- testing/test-utils/eslint.config.js | 35 +++++++++++++++---- tools/eslint-formatter-multi/eslint.config.js | 7 +++- tools/eslint-formatter-multi/package.json | 3 +- 9 files changed, 64 insertions(+), 14 deletions(-) diff --git a/eslint.config.js b/eslint.config.js index c25afb9dc..7057f077a 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -110,6 +110,14 @@ export default tseslint.config( { files: ['**/*.json'], languageOptions: { parser: jsoncParser }, + rules: { + '@nx/dependency-checks': [ + 'error', + { + ignoredDependencies: ['tsdown'], + }, + ], + }, }, { files: ['**/*.ts', '**/*.js'], @@ -138,6 +146,7 @@ export default tseslint.config( ignores: [ '**/*.mock.*', '**/code-pushup.config.ts', + '**/tsdown.config.ts', '**/mocks/fixtures/**', '**/__snapshots__/**', '**/dist', diff --git a/nx.json b/nx.json index 32292da4c..a4e364840 100644 --- a/nx.json +++ b/nx.json @@ -76,7 +76,7 @@ "--max-warnings=0", "--no-warn-ignored", "--error-on-unmatched-pattern=false", - "--format=./tools/eslint-formatter-multi/dist/src/index.js" + "--format=./tools/eslint-formatter-multi/dist/src/index.mjs" ], "env": { "ESLINT_FORMATTER_CONFIG": "{\"outputDir\":\"{projectRoot}/.eslint\"}" diff --git a/packages/ci/eslint.config.js b/packages/ci/eslint.config.js index 13888c2a8..3270b7608 100644 --- a/packages/ci/eslint.config.js +++ b/packages/ci/eslint.config.js @@ -17,7 +17,12 @@ export default tseslint.config( rules: { '@nx/dependency-checks': [ 'error', - { ignoredDependencies: ['type-fest'] }, // only for internal typings + { + ignoredDependencies: [ + 'type-fest', // only for internal typings + 'tsdown', + ], + }, ], }, }, diff --git a/packages/create-cli/eslint.config.js b/packages/create-cli/eslint.config.js index 22fda2e40..14410a0d8 100644 --- a/packages/create-cli/eslint.config.js +++ b/packages/create-cli/eslint.config.js @@ -17,7 +17,12 @@ export default tseslint.config( rules: { '@nx/dependency-checks': [ 'error', - { ignoredDependencies: ['@code-pushup/nx-plugin'] }, // nx-plugin is run via CLI + { + ignoredDependencies: [ + '@code-pushup/nx-plugin', // nx-plugin is run via CLI + 'tsdown', + ], + }, ], }, }, diff --git a/packages/models/tsconfig.lib.json b/packages/models/tsconfig.lib.json index 2c92983e0..60df65b5d 100644 --- a/packages/models/tsconfig.lib.json +++ b/packages/models/tsconfig.lib.json @@ -16,6 +16,7 @@ "vitest.unit.config.ts", "vitest.int.config.ts", "code-pushup.config.ts", + "tsdown.config.ts", "zod2md.config.ts", "src/**/*.test.ts", "src/**/*.mock.ts", diff --git a/packages/utils/eslint.config.js b/packages/utils/eslint.config.js index 1ad01224a..0b1a1d6bf 100644 --- a/packages/utils/eslint.config.js +++ b/packages/utils/eslint.config.js @@ -17,7 +17,12 @@ export default tseslint.config( rules: { '@nx/dependency-checks': [ 'error', - { ignoredDependencies: ['esbuild'] }, // esbuild is a peer dependency of bundle-require + { + ignoredDependencies: [ + 'esbuild', // esbuild is a peer dependency of bundle-require + 'tsdown', + ], + }, ], }, }, diff --git a/testing/test-utils/eslint.config.js b/testing/test-utils/eslint.config.js index 2656b27cb..5b0e8e2f3 100644 --- a/testing/test-utils/eslint.config.js +++ b/testing/test-utils/eslint.config.js @@ -1,12 +1,33 @@ import tseslint from 'typescript-eslint'; import baseConfig from '../../eslint.config.js'; -export default tseslint.config(...baseConfig, { - files: ['**/*.ts'], - languageOptions: { - parserOptions: { - projectService: true, - tsconfigRootDir: import.meta.dirname, +export default tseslint.config( + ...baseConfig, + { + files: ['**/*.ts'], + languageOptions: { + parserOptions: { + projectService: true, + tsconfigRootDir: import.meta.dirname, + }, }, }, -}); + { + files: ['**/*.json'], + rules: { + '@nx/dependency-checks': [ + 'error', + { + ignoredDependencies: [ + '@code-pushup/models', + 'simple-git', + 'vitest', + '@nx/devkit', + 'ansis', + 'tsdown', + ], + }, + ], + }, + }, +); diff --git a/tools/eslint-formatter-multi/eslint.config.js b/tools/eslint-formatter-multi/eslint.config.js index 29bda515b..ac29358ba 100644 --- a/tools/eslint-formatter-multi/eslint.config.js +++ b/tools/eslint-formatter-multi/eslint.config.js @@ -15,7 +15,12 @@ export default tseslint.config( { files: ['**/*.json'], rules: { - '@nx/dependency-checks': ['error'], + '@nx/dependency-checks': [ + 'error', + { + ignoredDependencies: ['tsdown'], + }, + ], }, }, ); diff --git a/tools/eslint-formatter-multi/package.json b/tools/eslint-formatter-multi/package.json index 6aaddcec0..bd480bf82 100644 --- a/tools/eslint-formatter-multi/package.json +++ b/tools/eslint-formatter-multi/package.json @@ -32,8 +32,7 @@ "access": "public" }, "dependencies": { - "ansis": "^3.3.0", - "tslib": "^2.8.1" + "ansis": "^3.3.0" }, "peerDependencies": { "eslint": "^8.0.0 || ^9.0.0" From 7c227bb2e118d3a861ef862b118892004a8ce4fe Mon Sep 17 00:00:00 2001 From: John Doe Date: Sun, 5 Oct 2025 11:29:11 +0200 Subject: [PATCH 05/17] refactor: base config, cjs compat --- eslint.config.js | 1 + examples/plugins/tsdown.config.ts | 17 +- package-lock.json | 758 ++++++++++++++---- package.json | 2 +- packages/ci/tsdown.config.ts | 21 +- packages/cli/src/index.ts | 11 +- packages/cli/tsdown.config.ts | 21 +- packages/core/tsdown.config.ts | 21 +- packages/create-cli/src/index.ts | 5 +- packages/create-cli/tsdown.config.ts | 22 +- packages/models/transformers/tsdown.config.ts | 17 +- packages/models/tsdown.config.ts | 23 +- packages/nx-plugin/tsdown.config.ts | 35 +- packages/plugin-coverage/src/bin.ts | 5 +- packages/plugin-coverage/tsdown.config.ts | 29 +- packages/plugin-eslint/tsdown.config.ts | 21 +- packages/plugin-js-packages/src/bin.ts | 5 +- packages/plugin-js-packages/tsdown.config.ts | 21 +- packages/plugin-jsdocs/tsdown.config.ts | 21 +- .../src/lib/runner/constants.ts | 89 +- packages/plugin-lighthouse/tsdown.config.ts | 21 +- packages/plugin-typescript/tsdown.config.ts | 21 +- packages/utils/tsdown.config.ts | 32 +- testing/test-nx-utils/tsdown.config.ts | 18 +- testing/test-setup/tsdown.config.ts | 17 +- testing/test-utils/tsdown.config.ts | 17 +- tools/eslint-formatter-multi/tsdown.config.ts | 21 +- tools/src/ts-down.plugin.mjs | 4 +- tools/src/ts-down.plugin.ts | 103 --- tsdown.base.ts | 57 ++ 30 files changed, 812 insertions(+), 644 deletions(-) delete mode 100644 tools/src/ts-down.plugin.ts create mode 100644 tsdown.base.ts diff --git a/eslint.config.js b/eslint.config.js index 7057f077a..ee0a43d85 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -26,6 +26,7 @@ export default tseslint.config( enforceBuildableLibDependency: true, allow: [ String.raw`^.*/eslint(\.base)?\.config\.[cm]?js$`, + String.raw`^.*/tsdown\.base\.[cm]?js$`, String.raw`^.*/code-pushup\.(config|preset)(\.m?[jt]s)?$`, '^[./]+/tools/.*$', ], diff --git a/examples/plugins/tsdown.config.ts b/examples/plugins/tsdown.config.ts index 52bfd6d92..94ea2b937 100644 --- a/examples/plugins/tsdown.config.ts +++ b/examples/plugins/tsdown.config.ts @@ -1,17 +1,10 @@ import { defineConfig } from 'tsdown'; +import { baseConfig, getExternalDependencies } from '../../tsdown.base'; -// Project name is examples-plugins but directory is examples/plugins -const projectDir = 'examples/plugins'; +const __dirname = import.meta.dirname; export default defineConfig({ - entry: `${projectDir}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, - tsconfig: `${projectDir}/tsconfig.lib.json`, - outDir: `${projectDir}/dist/src`, // Output to src/ subdirectory to match tsc - unbundle: true, // Preserve directory structure like tsc - format: ['esm', 'cjs'], // dual build - fixedExtension: true, // emit .mjs for esm and .cjs for cjs - dts: true, - hash: false, - external: [], - exports: false, // manually manage exports via onSuccess + ...baseConfig({ projectRoot: __dirname }), + external: await getExternalDependencies(__dirname), + copy: [], }); diff --git a/package-lock.json b/package-lock.json index 2adc480e2..3f59d0a96 100644 --- a/package-lock.json +++ b/package-lock.json @@ -108,7 +108,7 @@ "type-fest": "^4.26.1", "typescript": "5.7.3", "typescript-eslint": "^8.18.0", - "verdaccio": "6.1.6", + "verdaccio": "6.0.5", "vite": "6.3.5", "vitest": "1.3.1", "zod2md": "^0.2.4" @@ -2702,9 +2702,9 @@ } }, "node_modules/@cypress/request": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.9.tgz", - "integrity": "sha512-I3l7FdGRXluAS44/0NguwWlO83J18p0vlr2FYHrJkWdNYhgVoiYo61IXPqaOsL+vNxU1ZqMACzItGK3/KKDsdw==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.7.tgz", + "integrity": "sha512-LzxlLEMbBOPYB85uXrDqvD4MgcenjRBLIns3zyhx7vTPj/0u2eQhzXvPiGcaJrV38Q9dbkExWp6cOHPJ+EtFYg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2714,14 +2714,14 @@ "combined-stream": "~1.0.6", "extend": "~3.0.2", "forever-agent": "~0.6.1", - "form-data": "~4.0.4", + "form-data": "~4.0.0", "http-signature": "~1.4.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", "json-stringify-safe": "~5.0.1", "mime-types": "~2.1.19", "performance-now": "^2.1.0", - "qs": "6.14.0", + "qs": "6.13.1", "safe-buffer": "^5.1.2", "tough-cookie": "^5.0.0", "tunnel-agent": "^0.6.0", @@ -2732,13 +2732,13 @@ } }, "node_modules/@cypress/request/node_modules/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.1.tgz", + "integrity": "sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.1.0" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -9923,19 +9923,20 @@ ] }, "node_modules/@verdaccio/auth": { - "version": "8.0.0-next-8.19", - "resolved": "https://registry.npmjs.org/@verdaccio/auth/-/auth-8.0.0-next-8.19.tgz", - "integrity": "sha512-VEWhj9Zs6qY2vzVpwY0uViPGxCPhiVo+g2WTLPNGa8avYz6sC8eiHZOJv3E22TKm/PaeSzclvSbMXiXP1bYuMA==", + "version": "8.0.0-next-8.7", + "resolved": "https://registry.npmjs.org/@verdaccio/auth/-/auth-8.0.0-next-8.7.tgz", + "integrity": "sha512-CSLBAsCJT1oOpJ4OWnVGmN6o/ZilDNa7Aa5+AU1LI2lbRblqgr4BVRn07GFqimJ//6+tPzl8BHgyiCbBhh1ZiA==", "dev": true, "license": "MIT", "dependencies": { - "@verdaccio/config": "8.0.0-next-8.19", - "@verdaccio/core": "8.0.0-next-8.19", - "@verdaccio/loaders": "8.0.0-next-8.9", - "@verdaccio/signature": "8.0.0-next-8.11", - "debug": "4.4.1", + "@verdaccio/config": "8.0.0-next-8.7", + "@verdaccio/core": "8.0.0-next-8.7", + "@verdaccio/loaders": "8.0.0-next-8.4", + "@verdaccio/signature": "8.0.0-next-8.1", + "@verdaccio/utils": "8.1.0-next-8.7", + "debug": "4.4.0", "lodash": "4.17.21", - "verdaccio-htpasswd": "13.0.0-next-8.19" + "verdaccio-htpasswd": "13.0.0-next-8.7" }, "engines": { "node": ">=18" @@ -9945,6 +9946,67 @@ "url": "https://opencollective.com/verdaccio" } }, + "node_modules/@verdaccio/auth/node_modules/@verdaccio/utils": { + "version": "8.1.0-next-8.7", + "resolved": "https://registry.npmjs.org/@verdaccio/utils/-/utils-8.1.0-next-8.7.tgz", + "integrity": "sha512-4eqPCnPAJsL6gdVs0/oqZNgs2PnQW3HHBMgBHyEbb5A/ESI10TvRp+B7MRl9glUmy/aR5B6YSI68rgXvAFjdxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@verdaccio/core": "8.0.0-next-8.7", + "lodash": "4.17.21", + "minimatch": "7.4.6", + "semver": "7.6.3" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/auth/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@verdaccio/auth/node_modules/minimatch": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", + "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@verdaccio/auth/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, "node_modules/@verdaccio/commons-api": { "version": "10.2.0", "resolved": "https://registry.npmjs.org/@verdaccio/commons-api/-/commons-api-10.2.0.tgz", @@ -9969,14 +10031,15 @@ "dev": true }, "node_modules/@verdaccio/config": { - "version": "8.0.0-next-8.19", - "resolved": "https://registry.npmjs.org/@verdaccio/config/-/config-8.0.0-next-8.19.tgz", - "integrity": "sha512-08Mizx0f88A11Wxpx8EiK+mju0KroiaIRGZhV5h5+jWEKG3qucwTFNqR+29vRlPaGw1VmCEQ0+Vuaqeh03MlAA==", + "version": "8.0.0-next-8.7", + "resolved": "https://registry.npmjs.org/@verdaccio/config/-/config-8.0.0-next-8.7.tgz", + "integrity": "sha512-pA0WCWvvWY6vPRav+X0EuFmuK6M08zIpRzTKkqSriCWk6JUCZ07TDnN054AS8TSSOy6EaWgHxnUw3nTd34Z4Sg==", "dev": true, "license": "MIT", "dependencies": { - "@verdaccio/core": "8.0.0-next-8.19", - "debug": "4.4.1", + "@verdaccio/core": "8.0.0-next-8.7", + "@verdaccio/utils": "8.1.0-next-8.7", + "debug": "4.4.0", "js-yaml": "4.1.0", "lodash": "4.17.21", "minimatch": "7.4.6" @@ -9989,6 +10052,26 @@ "url": "https://opencollective.com/verdaccio" } }, + "node_modules/@verdaccio/config/node_modules/@verdaccio/utils": { + "version": "8.1.0-next-8.7", + "resolved": "https://registry.npmjs.org/@verdaccio/utils/-/utils-8.1.0-next-8.7.tgz", + "integrity": "sha512-4eqPCnPAJsL6gdVs0/oqZNgs2PnQW3HHBMgBHyEbb5A/ESI10TvRp+B7MRl9glUmy/aR5B6YSI68rgXvAFjdxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@verdaccio/core": "8.0.0-next-8.7", + "lodash": "4.17.21", + "minimatch": "7.4.6", + "semver": "7.6.3" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, "node_modules/@verdaccio/config/node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -9996,6 +10079,24 @@ "dev": true, "license": "Python-2.0" }, + "node_modules/@verdaccio/config/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/@verdaccio/config/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -10025,19 +10126,26 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@verdaccio/config/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, "node_modules/@verdaccio/core": { - "version": "8.0.0-next-8.19", - "resolved": "https://registry.npmjs.org/@verdaccio/core/-/core-8.0.0-next-8.19.tgz", - "integrity": "sha512-d/QzHToby2OTB5f4rw9koC0SidWvCkGPpvcQ/V8qh1ejoMtc/tO9OKe8lwUOxEvw31A2HaIBf0J4cFVIvrU31w==", + "version": "8.0.0-next-8.7", + "resolved": "https://registry.npmjs.org/@verdaccio/core/-/core-8.0.0-next-8.7.tgz", + "integrity": "sha512-pf8M2Z5EI/5Zdhdcm3aadb9Q9jiDsIredPD3+cIoDum8x3di2AIYvQD7i5BEramfzZlLXVICmFAulU7nUY11qg==", "dev": true, "license": "MIT", "dependencies": { "ajv": "8.17.1", + "core-js": "3.37.1", "http-errors": "2.0.0", "http-status-codes": "2.3.0", - "minimatch": "10.0.1", "process-warning": "1.0.0", - "semver": "7.7.2" + "semver": "7.6.3" }, "engines": { "node": ">=18" @@ -10047,19 +10155,6 @@ "url": "https://opencollective.com/verdaccio" } }, - "node_modules/@verdaccio/core/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@verdaccio/file-locking": { "version": "10.3.1", "resolved": "https://registry.npmjs.org/@verdaccio/file-locking/-/file-locking-10.3.1.tgz", @@ -10077,14 +10172,13 @@ } }, "node_modules/@verdaccio/loaders": { - "version": "8.0.0-next-8.9", - "resolved": "https://registry.npmjs.org/@verdaccio/loaders/-/loaders-8.0.0-next-8.9.tgz", - "integrity": "sha512-y0EIx+jiJGnln7to0ILUsUdAZvpsZTFPF7toJ/VPJlyRZmYYCbNE2j+VK9GLZu8jPZy+H+GdEBF89QdAv6P99A==", + "version": "8.0.0-next-8.4", + "resolved": "https://registry.npmjs.org/@verdaccio/loaders/-/loaders-8.0.0-next-8.4.tgz", + "integrity": "sha512-Powlqb4SuMbe6RVgxyyOXaCjuHCcK7oZA+lygaKZDpV9NSHJtbkkV4L+rXyCfTX3b0tKsBh7FzaIdgWc1rDeGQ==", "dev": true, "license": "MIT", "dependencies": { - "@verdaccio/core": "8.0.0-next-8.19", - "debug": "4.4.1", + "debug": "4.3.7", "lodash": "4.17.21" }, "engines": { @@ -10095,6 +10189,31 @@ "url": "https://opencollective.com/verdaccio" } }, + "node_modules/@verdaccio/loaders/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@verdaccio/loaders/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, "node_modules/@verdaccio/local-storage-legacy": { "version": "11.0.2", "resolved": "https://registry.npmjs.org/@verdaccio/local-storage-legacy/-/local-storage-legacy-11.0.2.tgz", @@ -10154,14 +10273,14 @@ } }, "node_modules/@verdaccio/logger": { - "version": "8.0.0-next-8.19", - "resolved": "https://registry.npmjs.org/@verdaccio/logger/-/logger-8.0.0-next-8.19.tgz", - "integrity": "sha512-rCZ4eUYJhCytezVeihYSs5Ct17UJvhCnQ4dAyuO/+JSeKY1Fpxgl+es8F6PU+o6iIVeN5qfFh55llJ2LwZ4gjg==", + "version": "8.0.0-next-8.7", + "resolved": "https://registry.npmjs.org/@verdaccio/logger/-/logger-8.0.0-next-8.7.tgz", + "integrity": "sha512-5EMPdZhz2V08BP2rjhtN/Fz5KxCfPJBkYDitbk/eo+FCZ9nVdMCQE3WRbHEaXyJQcIso/LJ6RnL/zKN20E/rPg==", "dev": true, "license": "MIT", "dependencies": { - "@verdaccio/logger-commons": "8.0.0-next-8.19", - "pino": "9.7.0" + "@verdaccio/logger-commons": "8.0.0-next-8.7", + "pino": "9.5.0" }, "engines": { "node": ">=18" @@ -10172,16 +10291,16 @@ } }, "node_modules/@verdaccio/logger-commons": { - "version": "8.0.0-next-8.19", - "resolved": "https://registry.npmjs.org/@verdaccio/logger-commons/-/logger-commons-8.0.0-next-8.19.tgz", - "integrity": "sha512-4Zl5+JyPMC4Kiu9f93uzN9312vg3eh1BeOx0qGGXksJTPSebS+O8HG2530ApjamSkApOHvGs5x3GEsEKza9WOA==", + "version": "8.0.0-next-8.7", + "resolved": "https://registry.npmjs.org/@verdaccio/logger-commons/-/logger-commons-8.0.0-next-8.7.tgz", + "integrity": "sha512-sXNx57G1LVp81xF4qHer3AOcMEZ90W4FjxtYF0vmULcVg3ybdtStKAT/9ocZtVMvLWTPAauhqylfnXoRZYf32A==", "dev": true, "license": "MIT", "dependencies": { - "@verdaccio/core": "8.0.0-next-8.19", - "@verdaccio/logger-prettify": "8.0.0-next-8.3", + "@verdaccio/core": "8.0.0-next-8.7", + "@verdaccio/logger-prettify": "8.0.0-next-8.1", "colorette": "2.0.20", - "debug": "4.4.1" + "debug": "4.4.0" }, "engines": { "node": ">=18" @@ -10191,17 +10310,41 @@ "url": "https://opencollective.com/verdaccio" } }, + "node_modules/@verdaccio/logger-commons/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@verdaccio/logger-commons/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, "node_modules/@verdaccio/logger-prettify": { - "version": "8.0.0-next-8.3", - "resolved": "https://registry.npmjs.org/@verdaccio/logger-prettify/-/logger-prettify-8.0.0-next-8.3.tgz", - "integrity": "sha512-mehQMpCtUbmW5dHpUwvi6hSYBdEXZjmDzI76hGacYKEKBwJk5aVXmrdYbYVyWtYlmegaxjLRMmA/iebXDEggYA==", + "version": "8.0.0-next-8.1", + "resolved": "https://registry.npmjs.org/@verdaccio/logger-prettify/-/logger-prettify-8.0.0-next-8.1.tgz", + "integrity": "sha512-vLhaGq0q7wtMCcqa0aQY6QOsMNarhTu/l4e6Z8mG/5LUH95GGLsBwpXLnKS94P3deIjsHhc9ycnEmG39txbQ1w==", "dev": true, "license": "MIT", "dependencies": { "colorette": "2.0.20", "dayjs": "1.11.13", "lodash": "4.17.21", - "on-exit-leak-free": "2.1.2", "pino-abstract-transport": "1.2.0", "sonic-boom": "3.8.1" }, @@ -10214,16 +10357,17 @@ } }, "node_modules/@verdaccio/middleware": { - "version": "8.0.0-next-8.19", - "resolved": "https://registry.npmjs.org/@verdaccio/middleware/-/middleware-8.0.0-next-8.19.tgz", - "integrity": "sha512-KpfvMNvztaHK+6YrK3uhu6DbzwkQQnxtmNuesCwTQnMNmunwvMBCuwvNTvi1wip1GrmP8At4r3NSSz9ttPcHEQ==", + "version": "8.0.0-next-8.7", + "resolved": "https://registry.npmjs.org/@verdaccio/middleware/-/middleware-8.0.0-next-8.7.tgz", + "integrity": "sha512-Zad7KcdOsI1DUBt1TjQb08rIi/IFFaJKdPhj7M6oy5BX9l/4OM0TtbBueHFNS1+aU+t5eo8ue7ZHbqmjDY/6VQ==", "dev": true, "license": "MIT", "dependencies": { - "@verdaccio/config": "8.0.0-next-8.19", - "@verdaccio/core": "8.0.0-next-8.19", - "@verdaccio/url": "13.0.0-next-8.19", - "debug": "4.4.1", + "@verdaccio/config": "8.0.0-next-8.7", + "@verdaccio/core": "8.0.0-next-8.7", + "@verdaccio/url": "13.0.0-next-8.7", + "@verdaccio/utils": "8.1.0-next-8.7", + "debug": "4.4.0", "express": "4.21.2", "express-rate-limit": "5.5.1", "lodash": "4.17.21", @@ -10238,6 +10382,44 @@ "url": "https://opencollective.com/verdaccio" } }, + "node_modules/@verdaccio/middleware/node_modules/@verdaccio/utils": { + "version": "8.1.0-next-8.7", + "resolved": "https://registry.npmjs.org/@verdaccio/utils/-/utils-8.1.0-next-8.7.tgz", + "integrity": "sha512-4eqPCnPAJsL6gdVs0/oqZNgs2PnQW3HHBMgBHyEbb5A/ESI10TvRp+B7MRl9glUmy/aR5B6YSI68rgXvAFjdxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@verdaccio/core": "8.0.0-next-8.7", + "lodash": "4.17.21", + "minimatch": "7.4.6", + "semver": "7.6.3" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/middleware/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/@verdaccio/middleware/node_modules/lru-cache": { "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", @@ -10261,10 +10443,33 @@ "node": ">=4.0.0" } }, + "node_modules/@verdaccio/middleware/node_modules/minimatch": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", + "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@verdaccio/middleware/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, "node_modules/@verdaccio/search-indexer": { - "version": "8.0.0-next-8.5", - "resolved": "https://registry.npmjs.org/@verdaccio/search-indexer/-/search-indexer-8.0.0-next-8.5.tgz", - "integrity": "sha512-0GC2tJKstbPg/W2PZl2yE+hoAxffD2ZWilEnEYSEo2e9UQpNIy2zg7KE/uMUq2P72Vf5EVfVzb8jdaH4KV4QeA==", + "version": "8.0.0-next-8.2", + "resolved": "https://registry.npmjs.org/@verdaccio/search-indexer/-/search-indexer-8.0.0-next-8.2.tgz", + "integrity": "sha512-sWliVN5BkAGbZ3e/GD0CsZMfPJdRMRuN0tEKQFsvEJifxToq5UkfCw6vKaVvhezsTWqb+Rp5y+2d4n5BDOA49w==", "dev": true, "license": "MIT", "engines": { @@ -10276,15 +10481,13 @@ } }, "node_modules/@verdaccio/signature": { - "version": "8.0.0-next-8.11", - "resolved": "https://registry.npmjs.org/@verdaccio/signature/-/signature-8.0.0-next-8.11.tgz", - "integrity": "sha512-mq5ZHB8a7JRMrbLATCZFVSUo0EtnsD9k7OZwEgdYEjzRYx3dQm93lY1smBAfluPfrcTeHRJY4W76Fdy/Or5JmA==", + "version": "8.0.0-next-8.1", + "resolved": "https://registry.npmjs.org/@verdaccio/signature/-/signature-8.0.0-next-8.1.tgz", + "integrity": "sha512-lHD/Z2FoPQTtDYz6ZlXhj/lrg0SFirHrwCGt/cibl1GlePpx78WPdo03tgAyl0Qf+I35n484/gR1l9eixBQqYw==", "dev": true, "license": "MIT", "dependencies": { - "@verdaccio/config": "8.0.0-next-8.19", - "@verdaccio/core": "8.0.0-next-8.19", - "debug": "4.4.1", + "debug": "4.3.7", "jsonwebtoken": "9.0.2" }, "engines": { @@ -10295,6 +10498,31 @@ "url": "https://opencollective.com/verdaccio" } }, + "node_modules/@verdaccio/signature/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@verdaccio/signature/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, "node_modules/@verdaccio/streams": { "version": "10.2.1", "resolved": "https://registry.npmjs.org/@verdaccio/streams/-/streams-10.2.1.tgz", @@ -10310,16 +10538,18 @@ } }, "node_modules/@verdaccio/tarball": { - "version": "13.0.0-next-8.19", - "resolved": "https://registry.npmjs.org/@verdaccio/tarball/-/tarball-13.0.0-next-8.19.tgz", - "integrity": "sha512-BVdPcZj2EtneRY0HKqQTG02gF4q1YdxUqw+ZbOMdWRRFqNkCG/5PaaNhP/xh3UFk/VpNqmv4/OwyTv68c9186g==", + "version": "13.0.0-next-8.7", + "resolved": "https://registry.npmjs.org/@verdaccio/tarball/-/tarball-13.0.0-next-8.7.tgz", + "integrity": "sha512-EWRuEOLgb3UETxUsYg6+Mml6DDRiwQqKIEsE4Ys6y6rcH2vgW6XMnTt+s/v5pFI+zlbi6fxjOgQB1e6IJAwxVA==", "dev": true, "license": "MIT", "dependencies": { - "@verdaccio/core": "8.0.0-next-8.19", - "@verdaccio/url": "13.0.0-next-8.19", - "debug": "4.4.1", + "@verdaccio/core": "8.0.0-next-8.7", + "@verdaccio/url": "13.0.0-next-8.7", + "@verdaccio/utils": "8.1.0-next-8.7", + "debug": "4.4.0", "gunzip-maybe": "^1.4.2", + "lodash": "4.17.21", "tar-stream": "^3.1.7" }, "engines": { @@ -10330,6 +10560,67 @@ "url": "https://opencollective.com/verdaccio" } }, + "node_modules/@verdaccio/tarball/node_modules/@verdaccio/utils": { + "version": "8.1.0-next-8.7", + "resolved": "https://registry.npmjs.org/@verdaccio/utils/-/utils-8.1.0-next-8.7.tgz", + "integrity": "sha512-4eqPCnPAJsL6gdVs0/oqZNgs2PnQW3HHBMgBHyEbb5A/ESI10TvRp+B7MRl9glUmy/aR5B6YSI68rgXvAFjdxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@verdaccio/core": "8.0.0-next-8.7", + "lodash": "4.17.21", + "minimatch": "7.4.6", + "semver": "7.6.3" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/tarball/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@verdaccio/tarball/node_modules/minimatch": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", + "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@verdaccio/tarball/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, "node_modules/@verdaccio/tarball/node_modules/tar-stream": { "version": "3.1.7", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", @@ -10343,21 +10634,21 @@ } }, "node_modules/@verdaccio/ui-theme": { - "version": "8.0.0-next-8.19", - "resolved": "https://registry.npmjs.org/@verdaccio/ui-theme/-/ui-theme-8.0.0-next-8.19.tgz", - "integrity": "sha512-grJ+8wqD+iE9cRHMQ9hYPj/IerW3pDELccoK6CLn1xYC+sunYVpnivkUv5HUmK6G0B64ptoYST1xFSjiiZXNKg==", + "version": "8.0.0-next-8.7", + "resolved": "https://registry.npmjs.org/@verdaccio/ui-theme/-/ui-theme-8.0.0-next-8.7.tgz", + "integrity": "sha512-+7f7XqqIU+TVCHjsP6lWzCdsD4sM7MEhn4cu3mLW1kJZ7eenWKEltoqixQnoXJzaBjCiz+yXW1WkjMyEFLNbpg==", "dev": true, "license": "MIT" }, "node_modules/@verdaccio/url": { - "version": "13.0.0-next-8.19", - "resolved": "https://registry.npmjs.org/@verdaccio/url/-/url-13.0.0-next-8.19.tgz", - "integrity": "sha512-QCtRu6gnE3FWh1CX11VdQfXDoNUYpiZm+767dUKkvo4LfEiKHrpIqq8ZeE37dOC5w9SBJdY1X6ddlIz8p4GTxA==", + "version": "13.0.0-next-8.7", + "resolved": "https://registry.npmjs.org/@verdaccio/url/-/url-13.0.0-next-8.7.tgz", + "integrity": "sha512-biFvwH3zIXYicA+SXNGvjMAe8oIQ5VddsfbO0ZXWlFs0lIz8cgI7QYPeSiCkU2VKpGzZ8pEKgqkxFsfFkU5kGA==", "dev": true, "license": "MIT", "dependencies": { - "@verdaccio/core": "8.0.0-next-8.19", - "debug": "4.4.1", + "@verdaccio/core": "8.0.0-next-8.7", + "debug": "4.4.0", "lodash": "4.17.21", "validator": "13.12.0" }, @@ -10369,19 +10660,67 @@ "url": "https://opencollective.com/verdaccio" } }, + "node_modules/@verdaccio/url/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@verdaccio/url/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, "node_modules/@verdaccio/utils": { - "version": "8.1.0-next-8.19", - "resolved": "https://registry.npmjs.org/@verdaccio/utils/-/utils-8.1.0-next-8.19.tgz", - "integrity": "sha512-mQoe1yUlYR4ujR65xVNAr4and102UNvAjlx6+IYyVPa7h3CZ0w5e8sRjlbYIXXL/qDI4RPVzfJVpquiwPkUCGg==", + "version": "7.0.1-next-8.1", + "resolved": "https://registry.npmjs.org/@verdaccio/utils/-/utils-7.0.1-next-8.1.tgz", + "integrity": "sha512-cyJdRrVa+8CS7UuIQb3K3IJFjMe64v38tYiBnohSmhRbX7dX9IT3jWbjrwkqWh4KeS1CS6BYENrGG1evJ2ggrQ==", "dev": true, "license": "MIT", "dependencies": { - "@verdaccio/core": "8.0.0-next-8.19", + "@verdaccio/core": "8.0.0-next-8.1", "lodash": "4.17.21", - "minimatch": "7.4.6" + "minimatch": "7.4.6", + "semver": "7.6.3" }, "engines": { - "node": ">=18" + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/utils/node_modules/@verdaccio/core": { + "version": "8.0.0-next-8.1", + "resolved": "https://registry.npmjs.org/@verdaccio/core/-/core-8.0.0-next-8.1.tgz", + "integrity": "sha512-kQRCB2wgXEh8H88G51eQgAFK9IxmnBtkQ8sY5FbmB6PbBkyHrbGcCp+2mtRqqo36j0W1VAlfM3XzoknMy6qQnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "8.17.1", + "core-js": "3.37.1", + "http-errors": "2.0.0", + "http-status-codes": "2.3.0", + "process-warning": "1.0.0", + "semver": "7.6.3" + }, + "engines": { + "node": ">=14" }, "funding": { "type": "opencollective", @@ -14064,9 +14403,9 @@ } }, "node_modules/compression": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", - "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.5.tgz", + "integrity": "sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==", "dev": true, "license": "MIT", "dependencies": { @@ -14074,7 +14413,7 @@ "compressible": "~2.0.18", "debug": "2.6.9", "negotiator": "~0.6.4", - "on-headers": "~1.1.0", + "on-headers": "~1.0.2", "safe-buffer": "5.2.1", "vary": "~1.1.2" }, @@ -14321,6 +14660,18 @@ "node": ">= 0.8" } }, + "node_modules/core-js": { + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.37.1.tgz", + "integrity": "sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, "node_modules/core-js-compat": { "version": "3.38.1", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", @@ -15399,13 +15750,6 @@ "safer-buffer": "^2.1.0" } }, - "node_modules/ecc-jsbn/node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true, - "license": "MIT" - }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", @@ -17546,6 +17890,13 @@ "node": ">=6" } }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true, + "license": "MIT" + }, "node_modules/fast-tag-pos": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-tag-pos/-/fast-tag-pos-2.0.0.tgz", @@ -22205,6 +22556,13 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true, + "license": "MIT" + }, "node_modules/jsdom": { "version": "24.0.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-24.0.0.tgz", @@ -24442,9 +24800,9 @@ } }, "node_modules/on-headers": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", - "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", "dev": true, "license": "MIT", "engines": { @@ -25090,9 +25448,9 @@ } }, "node_modules/pino": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-9.7.0.tgz", - "integrity": "sha512-vnMCM6xZTb1WDmLvtG2lE/2p+t9hDEIvTWJsu6FejkE62vB7gDhvzrpFR4Cw2to+9JNQxVnkAKVPA1KPB98vWg==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-9.5.0.tgz", + "integrity": "sha512-xSEmD4pLnV54t0NOUN16yCl7RIB1c5UUOse5HSyEXtBp+FgFQyPeDutc+Q2ZO7/22vImV7VfEjH/1zV2QuqvYw==", "dev": true, "license": "MIT", "dependencies": { @@ -25101,7 +25459,7 @@ "on-exit-leak-free": "^2.1.0", "pino-abstract-transport": "^2.0.0", "pino-std-serializers": "^7.0.0", - "process-warning": "^5.0.0", + "process-warning": "^4.0.0", "quick-format-unescaped": "^4.0.3", "real-require": "^0.2.0", "safe-stable-stringify": "^2.3.1", @@ -25193,9 +25551,9 @@ } }, "node_modules/pino/node_modules/process-warning": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz", - "integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-4.0.1.tgz", + "integrity": "sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==", "dev": true, "funding": [ { @@ -28382,13 +28740,6 @@ "node": ">=0.10.0" } }, - "node_modules/sshpk/node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true, - "license": "MIT" - }, "node_modules/stable": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", @@ -30433,44 +30784,49 @@ } }, "node_modules/verdaccio": { - "version": "6.1.6", - "resolved": "https://registry.npmjs.org/verdaccio/-/verdaccio-6.1.6.tgz", - "integrity": "sha512-zUMMKW0hjtOaLIm1cY9AqA0bMjvuGtKJVolzXQacIW9PHTnTjcsWF2+sbNLBhVrHwo+FJ1DzdNVaTWXOBWZgiQ==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/verdaccio/-/verdaccio-6.0.5.tgz", + "integrity": "sha512-hv+v4mtG/rcNidGUHXAtNuVySiPE3/PM+7dYye5jCDrhCUmRJYOtnvDe/Ym1ZE/twti39g6izVRxEkjnSp52gA==", "dev": true, "license": "MIT", "dependencies": { - "@cypress/request": "3.0.9", - "@verdaccio/auth": "8.0.0-next-8.19", - "@verdaccio/config": "8.0.0-next-8.19", - "@verdaccio/core": "8.0.0-next-8.19", - "@verdaccio/loaders": "8.0.0-next-8.9", + "@cypress/request": "3.0.7", + "@verdaccio/auth": "8.0.0-next-8.7", + "@verdaccio/config": "8.0.0-next-8.7", + "@verdaccio/core": "8.0.0-next-8.7", "@verdaccio/local-storage-legacy": "11.0.2", - "@verdaccio/logger": "8.0.0-next-8.19", - "@verdaccio/middleware": "8.0.0-next-8.19", - "@verdaccio/search-indexer": "8.0.0-next-8.5", - "@verdaccio/signature": "8.0.0-next-8.11", + "@verdaccio/logger": "8.0.0-next-8.7", + "@verdaccio/middleware": "8.0.0-next-8.7", + "@verdaccio/search-indexer": "8.0.0-next-8.2", + "@verdaccio/signature": "8.0.0-next-8.1", "@verdaccio/streams": "10.2.1", - "@verdaccio/tarball": "13.0.0-next-8.19", - "@verdaccio/ui-theme": "8.0.0-next-8.19", - "@verdaccio/url": "13.0.0-next-8.19", - "@verdaccio/utils": "8.1.0-next-8.19", + "@verdaccio/tarball": "13.0.0-next-8.7", + "@verdaccio/ui-theme": "8.0.0-next-8.7", + "@verdaccio/url": "13.0.0-next-8.7", + "@verdaccio/utils": "7.0.1-next-8.1", "async": "3.2.6", "clipanion": "4.0.0-rc.4", - "compression": "1.8.1", + "compression": "1.7.5", "cors": "2.8.5", - "debug": "4.4.1", + "debug": "4.4.0", "envinfo": "7.14.0", "express": "4.21.2", + "express-rate-limit": "5.5.1", + "fast-safe-stringify": "2.1.1", "handlebars": "4.7.8", + "js-yaml": "4.1.0", "JSONStream": "1.3.5", + "jsonwebtoken": "9.0.2", + "kleur": "4.1.5", "lodash": "4.17.21", "lru-cache": "7.18.3", "mime": "3.0.0", "mkdirp": "1.0.4", "pkginfo": "0.4.1", - "semver": "7.7.2", - "verdaccio-audit": "13.0.0-next-8.19", - "verdaccio-htpasswd": "13.0.0-next-8.19" + "semver": "7.6.3", + "validator": "13.12.0", + "verdaccio-audit": "13.0.0-next-8.7", + "verdaccio-htpasswd": "13.0.0-next-8.7" }, "bin": { "verdaccio": "bin/verdaccio" @@ -30484,14 +30840,14 @@ } }, "node_modules/verdaccio-audit": { - "version": "13.0.0-next-8.19", - "resolved": "https://registry.npmjs.org/verdaccio-audit/-/verdaccio-audit-13.0.0-next-8.19.tgz", - "integrity": "sha512-lF/5g4CwfhGzZIySeFYBCWXaBnIRQ02Q27gQ7OSS9KTQ9qnHXHbFrXjEAml2udQSNk6Z9jieNa5TufwgjR3Nyw==", + "version": "13.0.0-next-8.7", + "resolved": "https://registry.npmjs.org/verdaccio-audit/-/verdaccio-audit-13.0.0-next-8.7.tgz", + "integrity": "sha512-kd6YdrDztkP1/GDZT7Ue2u41iGPvM9y+5aaUbIBUPvTY/YVv57K6MaCMfn9C/I+ZL4R7XOTSxTtWvz3JK4QrNg==", "dev": true, "license": "MIT", "dependencies": { - "@verdaccio/config": "8.0.0-next-8.19", - "@verdaccio/core": "8.0.0-next-8.19", + "@verdaccio/config": "8.0.0-next-8.7", + "@verdaccio/core": "8.0.0-next-8.7", "express": "4.21.2", "https-proxy-agent": "5.0.1", "node-fetch": "cjs" @@ -30532,17 +30888,18 @@ } }, "node_modules/verdaccio-htpasswd": { - "version": "13.0.0-next-8.19", - "resolved": "https://registry.npmjs.org/verdaccio-htpasswd/-/verdaccio-htpasswd-13.0.0-next-8.19.tgz", - "integrity": "sha512-XVkkJJKfXLVXC8E+7CLklnndkagZaFWXhGbYIxFYRJ+0bCff0VgUfmyXpwWJ9ADdOnMSqvUPFwMsx4LAhGxFvg==", + "version": "13.0.0-next-8.7", + "resolved": "https://registry.npmjs.org/verdaccio-htpasswd/-/verdaccio-htpasswd-13.0.0-next-8.7.tgz", + "integrity": "sha512-znyFnwt59mLKTAu6eHJrfWP07iaHUlYiQN7QoBo8KMAOT1AecUYreBqs93oKHdIOzjTI8j6tQLg57DpeVS5vgg==", "dev": true, "license": "MIT", "dependencies": { - "@verdaccio/core": "8.0.0-next-8.19", - "@verdaccio/file-locking": "13.0.0-next-8.4", + "@verdaccio/core": "8.0.0-next-8.7", + "@verdaccio/file-locking": "13.0.0-next-8.2", "apache-md5": "1.1.8", "bcryptjs": "2.4.3", - "debug": "4.4.1", + "core-js": "3.37.1", + "debug": "4.4.0", "http-errors": "2.0.0", "unix-crypt-td-js": "1.1.4" }, @@ -30555,9 +30912,9 @@ } }, "node_modules/verdaccio-htpasswd/node_modules/@verdaccio/file-locking": { - "version": "13.0.0-next-8.4", - "resolved": "https://registry.npmjs.org/@verdaccio/file-locking/-/file-locking-13.0.0-next-8.4.tgz", - "integrity": "sha512-LzW8V7O65ZGvBbeK43JfHBjoRch3vopBx/HDnOwpA++XrfDTFt/e9Omk28Gu7wY/4BSunJGHMCIrs2EzYc9IVQ==", + "version": "13.0.0-next-8.2", + "resolved": "https://registry.npmjs.org/@verdaccio/file-locking/-/file-locking-13.0.0-next-8.2.tgz", + "integrity": "sha512-TcHgN3I/N28WBSvtukpGrJhBljl4jyIXq0vEv94vXAG6nUE3saK+vtgo8PfYA3Ueo88v/1zyAbiZM4uxwojCmQ==", "dev": true, "license": "MIT", "dependencies": { @@ -30571,6 +30928,69 @@ "url": "https://opencollective.com/verdaccio" } }, + "node_modules/verdaccio-htpasswd/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/verdaccio-htpasswd/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/verdaccio/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/verdaccio/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/verdaccio/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/verdaccio/node_modules/lru-cache": { "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", @@ -30604,18 +31024,12 @@ "node": ">=10" } }, - "node_modules/verdaccio/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "node_modules/verdaccio/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } + "license": "MIT" }, "node_modules/verror": { "version": "1.10.0", diff --git a/package.json b/package.json index 1460aa16d..4f678d216 100644 --- a/package.json +++ b/package.json @@ -118,7 +118,7 @@ "type-fest": "^4.26.1", "typescript": "5.7.3", "typescript-eslint": "^8.18.0", - "verdaccio": "6.1.6", + "verdaccio": "6.0.5", "vite": "6.3.5", "vitest": "1.3.1", "zod2md": "^0.2.4" diff --git a/packages/ci/tsdown.config.ts b/packages/ci/tsdown.config.ts index 86603259f..fbc7f73d0 100644 --- a/packages/ci/tsdown.config.ts +++ b/packages/ci/tsdown.config.ts @@ -1,22 +1,9 @@ import { defineConfig } from 'tsdown'; +import { baseConfig, getExternalDependencies } from '../../tsdown.base'; -const projectName = process.env['NX_TASK_TARGET_PROJECT']; +const __dirname = import.meta.dirname; export default defineConfig({ - entry: `packages/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, - tsconfig: `packages/${projectName}/tsconfig.lib.json`, - outDir: `packages/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc - unbundle: true, // Preserve directory structure like tsc - format: ['esm', 'cjs'], // dual build - fixedExtension: true, // emit .mjs for esm and .cjs for cjs - dts: true, - hash: false, - external: ['glob', 'simple-git', 'yaml', 'zod'], - exports: false, // manually manage exports via onSuccess - copy: [ - { - from: `packages/${projectName}/README.md`, - to: `packages/${projectName}/dist/README.md`, - }, - ], + ...baseConfig({ projectRoot: __dirname }), + external: await getExternalDependencies(__dirname), }); diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index e55c1b364..8bd934cd5 100755 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -6,8 +6,11 @@ import { cli } from './lib/cli.js'; import './lib/polyfills.js'; // bootstrap Yargs, parse arguments and execute command -await cli(hideBin(process.argv)).argv; +// eslint-disable-next-line unicorn/prefer-top-level-await +(async () => { + await cli(hideBin(process.argv)).argv; -// we need to explicitly exit with successful code otherwise we risk hanging process in certain situations -// eslint-disable-next-line n/no-process-exit -process.exit(0); + // we need to explicitly exit with successful code otherwise we risk hanging process in certain situations + // eslint-disable-next-line n/no-process-exit + process.exit(0); +})(); diff --git a/packages/cli/tsdown.config.ts b/packages/cli/tsdown.config.ts index f4116cabd..fbc7f73d0 100644 --- a/packages/cli/tsdown.config.ts +++ b/packages/cli/tsdown.config.ts @@ -1,22 +1,9 @@ import { defineConfig } from 'tsdown'; +import { baseConfig, getExternalDependencies } from '../../tsdown.base'; -const projectName = process.env['NX_TASK_TARGET_PROJECT']; +const __dirname = import.meta.dirname; export default defineConfig({ - entry: `packages/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, - tsconfig: `packages/${projectName}/tsconfig.lib.json`, - outDir: `packages/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc - unbundle: true, // Preserve directory structure like tsc - format: ['esm'], // ESM only - CLI uses top-level await - fixedExtension: true, // emit .mjs for esm - dts: true, - hash: false, - external: ['yargs', 'simple-git', 'ansis'], - exports: false, // manually manage exports via onSuccess - copy: [ - { - from: `packages/${projectName}/README.md`, - to: `packages/${projectName}/dist/README.md`, - }, - ], + ...baseConfig({ projectRoot: __dirname }), + external: await getExternalDependencies(__dirname), }); diff --git a/packages/core/tsdown.config.ts b/packages/core/tsdown.config.ts index 0f7b42a40..fbc7f73d0 100644 --- a/packages/core/tsdown.config.ts +++ b/packages/core/tsdown.config.ts @@ -1,22 +1,9 @@ import { defineConfig } from 'tsdown'; +import { baseConfig, getExternalDependencies } from '../../tsdown.base'; -const projectName = process.env['NX_TASK_TARGET_PROJECT']; +const __dirname = import.meta.dirname; export default defineConfig({ - entry: `packages/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, - tsconfig: `packages/${projectName}/tsconfig.lib.json`, - outDir: `packages/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc - unbundle: true, // Preserve directory structure like tsc - format: ['esm', 'cjs'], // dual build - fixedExtension: true, // emit .mjs for esm and .cjs for cjs - dts: true, - hash: false, - external: ['ansis', '@code-pushup/portal-client'], - exports: false, // manually manage exports via onSuccess - copy: [ - { - from: `packages/${projectName}/README.md`, - to: `packages/${projectName}/dist/README.md`, - }, - ], + ...baseConfig({ projectRoot: __dirname }), + external: await getExternalDependencies(__dirname), }); diff --git a/packages/create-cli/src/index.ts b/packages/create-cli/src/index.ts index 221a00a2a..ecbb0e510 100755 --- a/packages/create-cli/src/index.ts +++ b/packages/create-cli/src/index.ts @@ -1,4 +1,7 @@ #! /usr/bin/env node import { initCodePushup } from './lib/init.js'; -await initCodePushup(); +// eslint-disable-next-line unicorn/prefer-top-level-await +(async () => { + await initCodePushup(); +})(); diff --git a/packages/create-cli/tsdown.config.ts b/packages/create-cli/tsdown.config.ts index de6943365..94ea2b937 100644 --- a/packages/create-cli/tsdown.config.ts +++ b/packages/create-cli/tsdown.config.ts @@ -1,22 +1,10 @@ import { defineConfig } from 'tsdown'; +import { baseConfig, getExternalDependencies } from '../../tsdown.base'; -const projectName = process.env['NX_TASK_TARGET_PROJECT']; +const __dirname = import.meta.dirname; export default defineConfig({ - entry: `packages/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, - tsconfig: `packages/${projectName}/tsconfig.lib.json`, - outDir: `packages/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc - unbundle: true, // Preserve directory structure like tsc - format: ['esm'], // ESM only (uses top-level await) - fixedExtension: true, // emit .mjs for esm and .cjs for cjs - dts: true, - hash: false, - external: [], - exports: false, // manually manage exports via onSuccess - copy: [ - { - from: `packages/${projectName}/README.md`, - to: `packages/${projectName}/dist/README.md`, - }, - ], + ...baseConfig({ projectRoot: __dirname }), + external: await getExternalDependencies(__dirname), + copy: [], }); diff --git a/packages/models/transformers/tsdown.config.ts b/packages/models/transformers/tsdown.config.ts index f83165899..5e7d1f627 100644 --- a/packages/models/transformers/tsdown.config.ts +++ b/packages/models/transformers/tsdown.config.ts @@ -1,17 +1,10 @@ import { defineConfig } from 'tsdown'; +import { baseConfig, getExternalDependencies } from '../../../tsdown.base'; -const projectName = process.env['NX_TASK_TARGET_PROJECT']; +const __dirname = import.meta.dirname; export default defineConfig({ - entry: `packages/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, - tsconfig: `packages/${projectName}/tsconfig.lib.json`, - outDir: `packages/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc - unbundle: true, // Preserve directory structure like tsc - format: ['esm', 'cjs'], // dual build - fixedExtension: true, // emit .mjs for esm and .cjs for cjs - dts: true, - hash: false, - external: ['zod', 'vscode-material-icons'], - exports: false, // manually manage exports via onSuccess - // No copy needed - this is an internal build tool, not a published package + ...baseConfig({ projectRoot: __dirname }), + external: await getExternalDependencies(__dirname), + copy: [], }); diff --git a/packages/models/tsdown.config.ts b/packages/models/tsdown.config.ts index 18fe99af5..fa3b0a7e0 100644 --- a/packages/models/tsdown.config.ts +++ b/packages/models/tsdown.config.ts @@ -1,26 +1,19 @@ import { defineConfig } from 'tsdown'; +import { baseConfig, getExternalDependencies } from '../../tsdown.base'; -const projectName = process.env['NX_TASK_TARGET_PROJECT']; +const __dirname = import.meta.dirname; export default defineConfig({ - entry: `packages/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, - tsconfig: `packages/${projectName}/tsconfig.lib.json`, - outDir: `packages/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc - unbundle: true, // Preserve directory structure like tsc - format: ['esm', 'cjs'], // dual build - fixedExtension: true, // emit .mjs for esm and .cjs for cjs - dts: true, - hash: false, - external: ['zod', 'vscode-material-icons'], - exports: false, // manually manage exports via onSuccess + ...baseConfig({ projectRoot: __dirname }), + external: await getExternalDependencies(__dirname), copy: [ { - from: `packages/${projectName}/package.json`, - to: `packages/${projectName}/dist/package.json`, + from: `${__dirname}/package.json`, + to: `${__dirname}/dist/package.json`, }, { - from: `packages/${projectName}/README.md`, - to: `packages/${projectName}/dist/README.md`, + from: `${__dirname}/README.md`, + to: `${__dirname}/dist/README.md`, }, ], }); diff --git a/packages/nx-plugin/tsdown.config.ts b/packages/nx-plugin/tsdown.config.ts index c1f641ba0..287f829a8 100644 --- a/packages/nx-plugin/tsdown.config.ts +++ b/packages/nx-plugin/tsdown.config.ts @@ -1,37 +1,24 @@ import { defineConfig } from 'tsdown'; +import { baseConfig, getExternalDependencies } from '../../tsdown.base'; -const projectName = process.env['NX_TASK_TARGET_PROJECT']; +const __dirname = import.meta.dirname; export default defineConfig({ - entry: `packages/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, - tsconfig: `packages/${projectName}/tsconfig.lib.json`, - outDir: `packages/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc - unbundle: true, // Preserve directory structure like tsc - format: ['cjs'], // commonjs only - fixedExtension: true, // emit .mjs for esm and .cjs for cjs - dts: true, - hash: false, - external: [ - '@code-pushup/models', - '@code-pushup/utils', - '@nx/devkit', - 'ansis', - 'nx', - ], - exports: false, // manually manage exports via onSuccess + ...baseConfig({ projectRoot: __dirname }), + format: ['cjs'], // NX supports only commonjs + external: await getExternalDependencies(__dirname), copy: [ { - from: `packages/${projectName}/README.md`, - to: `packages/${projectName}/dist/README.md`, + from: `${__dirname}/README.md`, + to: `${__dirname}/dist/README.md`, }, { - from: `packages/${projectName}/generators.json`, - to: `packages/${projectName}/dist/generators.json`, + from: `${__dirname}/generators.json`, + to: `${__dirname}/dist/generators.json`, }, { - from: `packages/${projectName}/executors.json`, - to: `packages/${projectName}/dist/executors.json`, + from: `${__dirname}/executors.json`, + to: `${__dirname}/dist/executors.json`, }, - // Schema files and templates are handled by Nx assets configuration in project.json ], }); diff --git a/packages/plugin-coverage/src/bin.ts b/packages/plugin-coverage/src/bin.ts index fc625dd73..b05f672f0 100644 --- a/packages/plugin-coverage/src/bin.ts +++ b/packages/plugin-coverage/src/bin.ts @@ -4,4 +4,7 @@ import { executeRunner } from './lib/runner/index.js'; const { runnerConfigPath, runnerOutputPath } = Parser(process.argv); -await executeRunner({ runnerConfigPath, runnerOutputPath }); +// eslint-disable-next-line unicorn/prefer-top-level-await +(async () => { + await executeRunner({ runnerConfigPath, runnerOutputPath }); +})(); diff --git a/packages/plugin-coverage/tsdown.config.ts b/packages/plugin-coverage/tsdown.config.ts index b8f34883b..fbc7f73d0 100644 --- a/packages/plugin-coverage/tsdown.config.ts +++ b/packages/plugin-coverage/tsdown.config.ts @@ -1,30 +1,9 @@ import { defineConfig } from 'tsdown'; +import { baseConfig, getExternalDependencies } from '../../tsdown.base'; -const projectName = process.env['NX_TASK_TARGET_PROJECT']; +const __dirname = import.meta.dirname; export default defineConfig({ - entry: `packages/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, - tsconfig: `packages/${projectName}/tsconfig.lib.json`, - outDir: `packages/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc - unbundle: true, // Preserve directory structure like tsc - format: ['esm'], // ESM only - uses top-level await - fixedExtension: true, // emit .mjs for esm - dts: true, - hash: false, - external: [ - 'ansis', - 'parse-lcov', - 'yargs', - 'zod', - '@nx/devkit', - '@nx/jest', - '@nx/vite', - ], - exports: false, // manually manage exports via onSuccess - copy: [ - { - from: `packages/${projectName}/README.md`, - to: `packages/${projectName}/dist/README.md`, - }, - ], + ...baseConfig({ projectRoot: __dirname }), + external: await getExternalDependencies(__dirname), }); diff --git a/packages/plugin-eslint/tsdown.config.ts b/packages/plugin-eslint/tsdown.config.ts index e52d645b2..fbc7f73d0 100644 --- a/packages/plugin-eslint/tsdown.config.ts +++ b/packages/plugin-eslint/tsdown.config.ts @@ -1,22 +1,9 @@ import { defineConfig } from 'tsdown'; +import { baseConfig, getExternalDependencies } from '../../tsdown.base'; -const projectName = process.env['NX_TASK_TARGET_PROJECT']; +const __dirname = import.meta.dirname; export default defineConfig({ - entry: `packages/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, - tsconfig: `packages/${projectName}/tsconfig.lib.json`, - outDir: `packages/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc - unbundle: true, // Preserve directory structure like tsc - format: ['esm', 'cjs'], // dual build - fixedExtension: true, // emit .mjs for esm and .cjs for cjs - dts: true, - hash: false, - external: ['glob', 'zod', '@nx/devkit', 'eslint'], - exports: false, // manually manage exports via onSuccess - copy: [ - { - from: `packages/${projectName}/README.md`, - to: `packages/${projectName}/dist/README.md`, - }, - ], + ...baseConfig({ projectRoot: __dirname }), + external: await getExternalDependencies(__dirname), }); diff --git a/packages/plugin-js-packages/src/bin.ts b/packages/plugin-js-packages/src/bin.ts index fc625dd73..b05f672f0 100644 --- a/packages/plugin-js-packages/src/bin.ts +++ b/packages/plugin-js-packages/src/bin.ts @@ -4,4 +4,7 @@ import { executeRunner } from './lib/runner/index.js'; const { runnerConfigPath, runnerOutputPath } = Parser(process.argv); -await executeRunner({ runnerConfigPath, runnerOutputPath }); +// eslint-disable-next-line unicorn/prefer-top-level-await +(async () => { + await executeRunner({ runnerConfigPath, runnerOutputPath }); +})(); diff --git a/packages/plugin-js-packages/tsdown.config.ts b/packages/plugin-js-packages/tsdown.config.ts index 0daa81cf4..fbc7f73d0 100644 --- a/packages/plugin-js-packages/tsdown.config.ts +++ b/packages/plugin-js-packages/tsdown.config.ts @@ -1,22 +1,9 @@ import { defineConfig } from 'tsdown'; +import { baseConfig, getExternalDependencies } from '../../tsdown.base'; -const projectName = process.env['NX_TASK_TARGET_PROJECT']; +const __dirname = import.meta.dirname; export default defineConfig({ - entry: `packages/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, - tsconfig: `packages/${projectName}/tsconfig.lib.json`, - outDir: `packages/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc - unbundle: true, // Preserve directory structure like tsc - format: ['esm'], // ESM only - uses top-level await - fixedExtension: true, // emit .mjs for esm - dts: true, - hash: false, - external: ['build-md', 'semver', 'yargs', 'zod'], - exports: false, // manually manage exports via onSuccess - copy: [ - { - from: `packages/${projectName}/README.md`, - to: `packages/${projectName}/dist/README.md`, - }, - ], + ...baseConfig({ projectRoot: __dirname }), + external: await getExternalDependencies(__dirname), }); diff --git a/packages/plugin-jsdocs/tsdown.config.ts b/packages/plugin-jsdocs/tsdown.config.ts index 93df3e9c8..fbc7f73d0 100644 --- a/packages/plugin-jsdocs/tsdown.config.ts +++ b/packages/plugin-jsdocs/tsdown.config.ts @@ -1,22 +1,9 @@ import { defineConfig } from 'tsdown'; +import { baseConfig, getExternalDependencies } from '../../tsdown.base'; -const projectName = process.env['NX_TASK_TARGET_PROJECT']; +const __dirname = import.meta.dirname; export default defineConfig({ - entry: `packages/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, - tsconfig: `packages/${projectName}/tsconfig.lib.json`, - outDir: `packages/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc - unbundle: true, // Preserve directory structure like tsc - format: ['esm', 'cjs'], // dual build - fixedExtension: true, // emit .mjs for esm and .cjs for cjs - dts: true, - hash: false, - external: ['zod', 'ts-morph'], - exports: false, // manually manage exports via onSuccess - copy: [ - { - from: `packages/${projectName}/README.md`, - to: `packages/${projectName}/dist/README.md`, - }, - ], + ...baseConfig({ projectRoot: __dirname }), + external: await getExternalDependencies(__dirname), }); diff --git a/packages/plugin-lighthouse/src/lib/runner/constants.ts b/packages/plugin-lighthouse/src/lib/runner/constants.ts index e57a7ef55..660483e0b 100644 --- a/packages/plugin-lighthouse/src/lib/runner/constants.ts +++ b/packages/plugin-lighthouse/src/lib/runner/constants.ts @@ -11,45 +11,62 @@ import { DEFAULT_CHROME_FLAGS, LIGHTHOUSE_OUTPUT_PATH } from '../constants.js'; const { audits, categories } = defaultConfig; -// internal intermediate variable to derive the relevant audits -const allRawLighthouseAudits = await Promise.all( - (audits ?? []).map(loadLighthouseAudit), -); - export const PLUGIN_SLUG = 'lighthouse'; -export const LIGHTHOUSE_NAVIGATION_AUDITS: Audit[] = allRawLighthouseAudits - // This plugin only supports the "navigation" mode of Lighthouse in the current implementation - // If we don't exclude other audits we throw in the plugin output validation as some of the provided audits are not included in `lighthouse-report.json` - .filter( - audit => - audit.meta.supportedModes == null || - (Array.isArray(audit.meta.supportedModes) && - audit.meta.supportedModes.includes('navigation')), - ) - .map(audit => ({ - slug: audit.meta.id, - title: getMetaString(audit.meta.title), - description: getMetaString(audit.meta.description), - })); -const navigationAuditSlugs = new Set( - LIGHTHOUSE_NAVIGATION_AUDITS.map(({ slug }) => slug), -); -export const LIGHTHOUSE_GROUPS: Group[] = Object.entries(categories ?? {}).map( - ([id, category]) => ({ - slug: id, - title: getMetaString(category.title), - ...(category.description && { - description: getMetaString(category.description), +// Initialize with empty arrays - will be populated by initializeLighthouseConstants() +export let LIGHTHOUSE_NAVIGATION_AUDITS: Audit[] = []; +export let LIGHTHOUSE_GROUPS: Group[] = []; + +// Lazy initialization flag +let initialized = false; + +// Call this once before using the constants +export async function initializeLighthouseConstants(): Promise { + if (initialized) { + return; + } + + const allRawLighthouseAudits = await Promise.all( + (audits ?? []).map(loadLighthouseAudit), + ); + + LIGHTHOUSE_NAVIGATION_AUDITS = allRawLighthouseAudits + // This plugin only supports the "navigation" mode of Lighthouse in the current implementation + // If we don't exclude other audits we throw in the plugin output validation as some of the provided audits are not included in `lighthouse-report.json` + .filter( + audit => + audit.meta.supportedModes == null || + (Array.isArray(audit.meta.supportedModes) && + audit.meta.supportedModes.includes('navigation')), + ) + .map(audit => ({ + slug: audit.meta.id, + title: getMetaString(audit.meta.title), + description: getMetaString(audit.meta.description), + })); + + const navigationAuditSlugs = new Set( + LIGHTHOUSE_NAVIGATION_AUDITS.map(({ slug }) => slug), + ); + + LIGHTHOUSE_GROUPS = Object.entries(categories ?? {}).map( + ([id, category]) => ({ + slug: id, + title: getMetaString(category.title), + ...(category.description && { + description: getMetaString(category.description), + }), + refs: category.auditRefs + .filter(({ id: auditSlug }) => navigationAuditSlugs.has(auditSlug)) + .map(ref => ({ + slug: ref.id, + weight: ref.weight, + })), }), - refs: category.auditRefs - .filter(({ id: auditSlug }) => navigationAuditSlugs.has(auditSlug)) - .map(ref => ({ - slug: ref.id, - weight: ref.weight, - })), - }), -); + ); + + initialized = true; +} function getMetaString(value: string | IcuMessage): string { if (typeof value === 'string') { diff --git a/packages/plugin-lighthouse/tsdown.config.ts b/packages/plugin-lighthouse/tsdown.config.ts index 505455ee4..fbc7f73d0 100644 --- a/packages/plugin-lighthouse/tsdown.config.ts +++ b/packages/plugin-lighthouse/tsdown.config.ts @@ -1,22 +1,9 @@ import { defineConfig } from 'tsdown'; +import { baseConfig, getExternalDependencies } from '../../tsdown.base'; -const projectName = process.env['NX_TASK_TARGET_PROJECT']; +const __dirname = import.meta.dirname; export default defineConfig({ - entry: `packages/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, - tsconfig: `packages/${projectName}/tsconfig.lib.json`, - outDir: `packages/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc - unbundle: true, // Preserve directory structure like tsc - format: ['esm'], // ESM only - uses top-level await - fixedExtension: true, // emit .mjs for esm - dts: true, - hash: false, - external: ['ansis', 'chrome-launcher', 'lighthouse', 'lighthouse-logger'], - exports: false, // manually manage exports via onSuccess - copy: [ - { - from: `packages/${projectName}/README.md`, - to: `packages/${projectName}/dist/README.md`, - }, - ], + ...baseConfig({ projectRoot: __dirname }), + external: await getExternalDependencies(__dirname), }); diff --git a/packages/plugin-typescript/tsdown.config.ts b/packages/plugin-typescript/tsdown.config.ts index 28be3c00e..fbc7f73d0 100644 --- a/packages/plugin-typescript/tsdown.config.ts +++ b/packages/plugin-typescript/tsdown.config.ts @@ -1,22 +1,9 @@ import { defineConfig } from 'tsdown'; +import { baseConfig, getExternalDependencies } from '../../tsdown.base'; -const projectName = process.env['NX_TASK_TARGET_PROJECT']; +const __dirname = import.meta.dirname; export default defineConfig({ - entry: `packages/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, - tsconfig: `packages/${projectName}/tsconfig.lib.json`, - outDir: `packages/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc - unbundle: true, // Preserve directory structure like tsc - format: ['esm', 'cjs'], // dual build - fixedExtension: true, // emit .mjs for esm and .cjs for cjs - dts: true, - hash: false, - external: ['zod', 'typescript'], - exports: false, // manually manage exports via onSuccess - copy: [ - { - from: `packages/${projectName}/README.md`, - to: `packages/${projectName}/dist/README.md`, - }, - ], + ...baseConfig({ projectRoot: __dirname }), + external: await getExternalDependencies(__dirname), }); diff --git a/packages/utils/tsdown.config.ts b/packages/utils/tsdown.config.ts index 5f96c8e77..440791c9a 100644 --- a/packages/utils/tsdown.config.ts +++ b/packages/utils/tsdown.config.ts @@ -1,33 +1,9 @@ import { defineConfig } from 'tsdown'; +import { baseConfig, getExternalDependencies } from '../../tsdown.base'; -const projectName = process.env['NX_TASK_TARGET_PROJECT']; +const __dirname = import.meta.dirname; export default defineConfig({ - entry: `packages/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, - tsconfig: `packages/${projectName}/tsconfig.lib.json`, - outDir: `packages/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc - unbundle: true, // Preserve directory structure like tsc - format: ['esm', 'cjs'], // dual build - fixedExtension: true, // emit .mjs for esm and .cjs for cjs - dts: true, - hash: false, - external: [ - '@isaacs/cliui', - '@poppinss/cliui', - 'ansis', - 'build-md', - 'bundle-require', - 'esbuild', - 'multi-progress-bars', - 'semver', - 'simple-git', - 'zod', - ], - exports: false, // manually manage exports via onSuccess - copy: [ - { - from: `packages/${projectName}/README.md`, - to: `packages/${projectName}/dist/README.md`, - }, - ], + ...baseConfig({ projectRoot: __dirname }), + external: await getExternalDependencies(process.cwd()), }); diff --git a/testing/test-nx-utils/tsdown.config.ts b/testing/test-nx-utils/tsdown.config.ts index ad3cbeddf..d079e38d5 100644 --- a/testing/test-nx-utils/tsdown.config.ts +++ b/testing/test-nx-utils/tsdown.config.ts @@ -1,24 +1,16 @@ import { defineConfig } from 'tsdown'; +import { baseConfig, getExternalDependencies } from '../../tsdown.base'; -const projectName = process.env['NX_TASK_TARGET_PROJECT']; +const __dirname = import.meta.dirname; export default defineConfig({ - entry: `testing/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, - tsconfig: `testing/${projectName}/tsconfig.lib.json`, - outDir: `testing/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc - unbundle: true, // Preserve directory structure like tsc - format: ['esm', 'cjs'], // dual build - fixedExtension: true, // emit .mjs for esm and .cjs for cjs - dts: true, - hash: false, + ...baseConfig({ projectRoot: __dirname }), external: [ + ...(await getExternalDependencies(__dirname)), '@nx/devkit', '@nx/js', 'nx', '@code-pushup/utils', - '@code-pushup/test-utils', - 'memfs', ], - exports: false, // manually manage exports via onSuccess - // README exists but this is a testing utility, copy not needed for publication + copy: [], }); diff --git a/testing/test-setup/tsdown.config.ts b/testing/test-setup/tsdown.config.ts index ba83bd1d3..94ea2b937 100644 --- a/testing/test-setup/tsdown.config.ts +++ b/testing/test-setup/tsdown.config.ts @@ -1,17 +1,10 @@ import { defineConfig } from 'tsdown'; +import { baseConfig, getExternalDependencies } from '../../tsdown.base'; -const projectName = process.env['NX_TASK_TARGET_PROJECT']; +const __dirname = import.meta.dirname; export default defineConfig({ - entry: `testing/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, - tsconfig: `testing/${projectName}/tsconfig.lib.json`, - outDir: `testing/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc - unbundle: true, // Preserve directory structure like tsc - format: ['esm', 'cjs'], // dual build - fixedExtension: true, // emit .mjs for esm and .cjs for cjs - dts: true, - hash: false, - external: [], - exports: false, // manually manage exports via onSuccess - // README exists but this is a testing utility, copy not needed for publication + ...baseConfig({ projectRoot: __dirname }), + external: await getExternalDependencies(__dirname), + copy: [], }); diff --git a/testing/test-utils/tsdown.config.ts b/testing/test-utils/tsdown.config.ts index ba83bd1d3..94ea2b937 100644 --- a/testing/test-utils/tsdown.config.ts +++ b/testing/test-utils/tsdown.config.ts @@ -1,17 +1,10 @@ import { defineConfig } from 'tsdown'; +import { baseConfig, getExternalDependencies } from '../../tsdown.base'; -const projectName = process.env['NX_TASK_TARGET_PROJECT']; +const __dirname = import.meta.dirname; export default defineConfig({ - entry: `testing/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, - tsconfig: `testing/${projectName}/tsconfig.lib.json`, - outDir: `testing/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc - unbundle: true, // Preserve directory structure like tsc - format: ['esm', 'cjs'], // dual build - fixedExtension: true, // emit .mjs for esm and .cjs for cjs - dts: true, - hash: false, - external: [], - exports: false, // manually manage exports via onSuccess - // README exists but this is a testing utility, copy not needed for publication + ...baseConfig({ projectRoot: __dirname }), + external: await getExternalDependencies(__dirname), + copy: [], }); diff --git a/tools/eslint-formatter-multi/tsdown.config.ts b/tools/eslint-formatter-multi/tsdown.config.ts index 332776947..fbc7f73d0 100644 --- a/tools/eslint-formatter-multi/tsdown.config.ts +++ b/tools/eslint-formatter-multi/tsdown.config.ts @@ -1,22 +1,9 @@ import { defineConfig } from 'tsdown'; +import { baseConfig, getExternalDependencies } from '../../tsdown.base'; -const projectName = process.env['NX_TASK_TARGET_PROJECT']; +const __dirname = import.meta.dirname; export default defineConfig({ - entry: `tools/${projectName}/src/**/!(*.test|*.spec|*.unit.test|*.int.test|*.e2e.test|*.mock).ts`, - tsconfig: `tools/${projectName}/tsconfig.lib.json`, - outDir: `tools/${projectName}/dist/src`, // Output to src/ subdirectory to match tsc - unbundle: true, // Preserve directory structure like tsc - format: ['esm', 'cjs'], // dual build - fixedExtension: true, // emit .mjs for esm and .cjs for cjs - dts: true, - hash: false, - external: ['ansis', 'tslib', 'eslint'], - exports: false, // manually manage exports via onSuccess - copy: [ - { - from: `tools/${projectName}/README.md`, - to: `tools/${projectName}/dist/README.md`, - }, - ], + ...baseConfig({ projectRoot: __dirname }), + external: await getExternalDependencies(__dirname), }); diff --git a/tools/src/ts-down.plugin.mjs b/tools/src/ts-down.plugin.mjs index 3e11f3295..8e4f53667 100644 --- a/tools/src/ts-down.plugin.mjs +++ b/tools/src/ts-down.plugin.mjs @@ -1,5 +1,5 @@ -import { existsSync } from 'fs'; -import { dirname, join } from 'path'; +import { existsSync } from 'node:fs'; +import { dirname, join } from 'node:path'; const TSDOWN_CONFIG_GLOB = '**/tsdown.config.{ts,js,mjs}'; diff --git a/tools/src/ts-down.plugin.ts b/tools/src/ts-down.plugin.ts deleted file mode 100644 index 4ce0fc04d..000000000 --- a/tools/src/ts-down.plugin.ts +++ /dev/null @@ -1,103 +0,0 @@ -import type { - CreateNodesContextV2, - CreateNodesResultV2, - CreateNodesV2, - TargetConfiguration, -} from '@nx/devkit'; -import { existsSync } from 'fs'; -import { dirname, join } from 'path'; - -export interface TsdownPluginOptions { - targetName?: string; -} - -const TSDOWN_CONFIG_GLOB = '**/tsdown.config.{ts,js,mjs}'; - -/** - * Nx plugin to integrate TSDown into the build process. - * - * @example - * ```json - * { - * "plugins": ["./tools/src/tsdown-plugin"] - * } - * ``` - * This will automatically add a build target to any project containing a `tsdown.config.ts`, `tsdown.config.js`, or `tsdown.config.mjs` file. - */ -export const createNodesV2: CreateNodesV2 = [ - TSDOWN_CONFIG_GLOB, - async ( - configFiles: readonly string[], - options: TsdownPluginOptions | undefined, - context: CreateNodesContextV2, - ): Promise => { - return await Promise.all( - configFiles.map(async configFile => { - const projectRoot = dirname(configFile); - const normalizedProjectRoot = projectRoot === '.' ? '' : projectRoot; - - // Check if this is a valid project (has package.json or project.json) - const hasPackageJson = existsSync( - join(context.workspaceRoot, projectRoot, 'package.json'), - ); - const hasProjectJson = existsSync( - join(context.workspaceRoot, projectRoot, 'project.json'), - ); - - if (!hasPackageJson && !hasProjectJson) { - return [configFile, { projects: {} }] as const; - } - - const targetName = options?.targetName ?? 'tsd-build'; - - const targets: Record = { - [targetName]: createTsdownBuildTarget(configFile, projectRoot), - }; - - const result = { - projects: { - [normalizedProjectRoot]: { - targets, - }, - }, - }; - - return [configFile, result] as const; - }), - ); - }, -]; - -function createTsdownBuildTarget( - configFile: string, - projectRoot: string, -): TargetConfiguration { - return { - executor: 'nx:run-commands', - options: { - command: `node_modules/.bin/tsdown --config ${configFile}`, - cwd: '{workspaceRoot}', - }, - cache: true, - inputs: [ - 'production', - '^production', - { - externalDependencies: ['tsdown'], - }, - ], - outputs: ['{projectRoot}/dist'], - metadata: { - description: 'Build the project using TSDown', - technologies: ['tsdown'], - }, - }; -} - -// Default export for nx.json plugins -const plugin = { - name: '@code-pushup/tsdown-plugin', - createNodesV2, -}; - -export default plugin; diff --git a/tsdown.base.ts b/tsdown.base.ts new file mode 100644 index 000000000..e3fe00d80 --- /dev/null +++ b/tsdown.base.ts @@ -0,0 +1,57 @@ +import { readFile } from 'node:fs/promises'; +import { join } from 'node:path'; +import { type UserConfig, defineConfig } from 'tsdown'; + +export function baseConfig(options: { + projectRoot: string; + projectName?: string; +}): UserConfig { + const { projectRoot } = options; + + return defineConfig({ + entry: `${projectRoot}/src/**/!(*.test|*.mock).ts`, + tsconfig: `${projectRoot}/tsconfig.lib.json`, + outDir: `${projectRoot}/dist/src`, + unbundle: true, + format: ['esm', 'cjs'], + fixedExtension: true, + dts: true, + hash: false, + external: [], + exports: false, + copy: [ + { + from: `${projectRoot}/README.md`, + to: `${projectRoot}/dist/README.md`, + }, + ], + }); +} + +export function getProjectNameFromActiveTask(): string { + const projectName = process.env['NX_TASK_TARGET_PROJECT']; + + if (!projectName || typeof projectName !== 'string') { + throw new Error('NX_TASK_TARGET_PROJECT is not set'); + } + + return projectName; +} + +export async function getExternalDependencies(cwd: string): Promise { + try { + const packageJson = JSON.parse( + await readFile(join(cwd, 'package.json'), 'utf8'), + ); + + return [ + ...Object.keys(packageJson.dependencies || {}), + ...Object.keys(packageJson.devDependencies || {}), + ...Object.keys(packageJson.optionalDependencies || {}), + ...Object.keys(packageJson.peerDependencies || {}), + ]; + } catch { + // No package.json or unable to read it - return empty array + return []; + } +} From fd3f13bf48db956c0090e2ded5a2cde01b61a822 Mon Sep 17 00:00:00 2001 From: John Doe Date: Sun, 5 Oct 2025 11:41:25 +0200 Subject: [PATCH 06/17] refactor: fix e2e tests --- nx.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nx.json b/nx.json index a4e364840..a2835e8bf 100644 --- a/nx.json +++ b/nx.json @@ -104,7 +104,8 @@ "options": { "commands": [ "node_modules/.bin/tsdown --config {projectRoot}/tsdown.config.ts" - ] + ], + "outputPath": "{projectRoot}/dist" }, "outputs": ["{projectRoot}/dist"] }, From 39f5e141afa1429ba007a5256818efa33b9a81e3 Mon Sep 17 00:00:00 2001 From: John Doe Date: Sun, 5 Oct 2025 11:50:20 +0200 Subject: [PATCH 07/17] refactor: fix unit tests --- packages/cli/package.json | 2 +- packages/create-cli/package.json | 2 +- .../src/lib/runner/constants.ts | 84 ++++++++----------- packages/plugin-lighthouse/tsdown.config.ts | 2 + 4 files changed, 38 insertions(+), 52 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 432e5f175..970517786 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -39,7 +39,7 @@ }, "type": "module", "bin": { - "code-pushup": "./src/index.js" + "code-pushup": "./src/index.mjs" }, "engines": { "node": ">=20" diff --git a/packages/create-cli/package.json b/packages/create-cli/package.json index d497c6979..d79e9cfeb 100644 --- a/packages/create-cli/package.json +++ b/packages/create-cli/package.json @@ -2,7 +2,7 @@ "name": "@code-pushup/create-cli", "version": "0.80.2", "license": "MIT", - "bin": "index.js", + "bin": "src/index.mjs", "homepage": "https://github.com/code-pushup/cli/tree/main/packages/create-cli#readme", "bugs": { "url": "https://github.com/code-pushup/cli/issues?q=is%3Aissue%20state%3Aopen%20type%3ABug%20label%3A\"🧩%20create-cli\"" diff --git a/packages/plugin-lighthouse/src/lib/runner/constants.ts b/packages/plugin-lighthouse/src/lib/runner/constants.ts index 660483e0b..9af6e6ea2 100644 --- a/packages/plugin-lighthouse/src/lib/runner/constants.ts +++ b/packages/plugin-lighthouse/src/lib/runner/constants.ts @@ -13,60 +13,44 @@ const { audits, categories } = defaultConfig; export const PLUGIN_SLUG = 'lighthouse'; -// Initialize with empty arrays - will be populated by initializeLighthouseConstants() -export let LIGHTHOUSE_NAVIGATION_AUDITS: Audit[] = []; -export let LIGHTHOUSE_GROUPS: Group[] = []; +const allRawLighthouseAudits = await Promise.all( + (audits ?? []).map(loadLighthouseAudit), +); -// Lazy initialization flag -let initialized = false; +export const LIGHTHOUSE_NAVIGATION_AUDITS: Audit[] = allRawLighthouseAudits + // This plugin only supports the "navigation" mode of Lighthouse in the current implementation + // If we don't exclude other audits we throw in the plugin output validation as some of the provided audits are not included in `lighthouse-report.json` + .filter( + audit => + audit.meta.supportedModes == null || + (Array.isArray(audit.meta.supportedModes) && + audit.meta.supportedModes.includes('navigation')), + ) + .map(audit => ({ + slug: audit.meta.id, + title: getMetaString(audit.meta.title), + description: getMetaString(audit.meta.description), + })); -// Call this once before using the constants -export async function initializeLighthouseConstants(): Promise { - if (initialized) { - return; - } - - const allRawLighthouseAudits = await Promise.all( - (audits ?? []).map(loadLighthouseAudit), - ); - - LIGHTHOUSE_NAVIGATION_AUDITS = allRawLighthouseAudits - // This plugin only supports the "navigation" mode of Lighthouse in the current implementation - // If we don't exclude other audits we throw in the plugin output validation as some of the provided audits are not included in `lighthouse-report.json` - .filter( - audit => - audit.meta.supportedModes == null || - (Array.isArray(audit.meta.supportedModes) && - audit.meta.supportedModes.includes('navigation')), - ) - .map(audit => ({ - slug: audit.meta.id, - title: getMetaString(audit.meta.title), - description: getMetaString(audit.meta.description), - })); +const navigationAuditSlugs = new Set( + LIGHTHOUSE_NAVIGATION_AUDITS.map(({ slug }) => slug), +); - const navigationAuditSlugs = new Set( - LIGHTHOUSE_NAVIGATION_AUDITS.map(({ slug }) => slug), - ); - - LIGHTHOUSE_GROUPS = Object.entries(categories ?? {}).map( - ([id, category]) => ({ - slug: id, - title: getMetaString(category.title), - ...(category.description && { - description: getMetaString(category.description), - }), - refs: category.auditRefs - .filter(({ id: auditSlug }) => navigationAuditSlugs.has(auditSlug)) - .map(ref => ({ - slug: ref.id, - weight: ref.weight, - })), +export const LIGHTHOUSE_GROUPS: Group[] = Object.entries(categories ?? {}).map( + ([id, category]) => ({ + slug: id, + title: getMetaString(category.title), + ...(category.description && { + description: getMetaString(category.description), }), - ); - - initialized = true; -} + refs: category.auditRefs + .filter(({ id: auditSlug }) => navigationAuditSlugs.has(auditSlug)) + .map(ref => ({ + slug: ref.id, + weight: ref.weight, + })), + }), +); function getMetaString(value: string | IcuMessage): string { if (typeof value === 'string') { diff --git a/packages/plugin-lighthouse/tsdown.config.ts b/packages/plugin-lighthouse/tsdown.config.ts index fbc7f73d0..d53b4bd9a 100644 --- a/packages/plugin-lighthouse/tsdown.config.ts +++ b/packages/plugin-lighthouse/tsdown.config.ts @@ -5,5 +5,7 @@ const __dirname = import.meta.dirname; export default defineConfig({ ...baseConfig({ projectRoot: __dirname }), + // Override format to ESM only - this package uses top-level await in constants.ts + format: ['esm'], external: await getExternalDependencies(__dirname), }); From f171f50dc88f47aaeb26d9422044e03494597aad Mon Sep 17 00:00:00 2001 From: John Doe Date: Sun, 5 Oct 2025 11:58:24 +0200 Subject: [PATCH 08/17] refactor: add CI logs --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c71f05f4e..05118d7b2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -121,7 +121,7 @@ jobs: - name: Install dependencies run: npm ci - name: E2E test affected projects - run: npx nx affected -t e2e-test --parallel=1 + run: npx nx affected -t e2e-test --verbose --parallel=1 build: runs-on: ubuntu-latest From fb3119ab818506dde39f3adf10d9f8d11d9d5881 Mon Sep 17 00:00:00 2001 From: John Doe Date: Sun, 5 Oct 2025 13:07:42 +0200 Subject: [PATCH 09/17] refactor: adjust tsd cfg --- package.json | 198 +++++++++++++++++++++++++++++++++++ packages/cli/package.json | 25 +++++ packages/core/package.json | 25 +++++ packages/models/package.json | 25 +++++ packages/utils/package.json | 25 +++++ tsdown.base.ts | 1 - 6 files changed, 298 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 4f678d216..3734d0e59 100644 --- a/package.json +++ b/package.json @@ -164,5 +164,203 @@ "commitizen": { "path": "@commitlint/cz-commitlint" } + }, + "main": "./packages/utils/dist/src/index.cjs", + "module": "./packages/utils/dist/src/index.mjs", + "types": "./packages/utils/dist/src/index.d.cts", + "exports": { + ".": { + "import": "./packages/utils/dist/src/index.mjs", + "require": "./packages/utils/dist/src/index.cjs" + }, + "./lib/case-conversions": { + "import": "./packages/utils/dist/src/lib/case-conversions.mjs", + "require": "./packages/utils/dist/src/lib/case-conversions.cjs" + }, + "./lib/coverage-tree": { + "import": "./packages/utils/dist/src/lib/coverage-tree.mjs", + "require": "./packages/utils/dist/src/lib/coverage-tree.cjs" + }, + "./lib/create-runner-files": { + "import": "./packages/utils/dist/src/lib/create-runner-files.mjs", + "require": "./packages/utils/dist/src/lib/create-runner-files.cjs" + }, + "./lib/diff": { + "import": "./packages/utils/dist/src/lib/diff.mjs", + "require": "./packages/utils/dist/src/lib/diff.cjs" + }, + "./lib/env": { + "import": "./packages/utils/dist/src/lib/env.mjs", + "require": "./packages/utils/dist/src/lib/env.cjs" + }, + "./lib/errors": { + "import": "./packages/utils/dist/src/lib/errors.mjs", + "require": "./packages/utils/dist/src/lib/errors.cjs" + }, + "./lib/execute-process": { + "import": "./packages/utils/dist/src/lib/execute-process.mjs", + "require": "./packages/utils/dist/src/lib/execute-process.cjs" + }, + "./lib/file-system": { + "import": "./packages/utils/dist/src/lib/file-system.mjs", + "require": "./packages/utils/dist/src/lib/file-system.cjs" + }, + "./lib/filter": { + "import": "./packages/utils/dist/src/lib/filter.mjs", + "require": "./packages/utils/dist/src/lib/filter.cjs" + }, + "./lib/format-command-log": { + "import": "./packages/utils/dist/src/lib/format-command-log.mjs", + "require": "./packages/utils/dist/src/lib/format-command-log.cjs" + }, + "./lib/formatting": { + "import": "./packages/utils/dist/src/lib/formatting.mjs", + "require": "./packages/utils/dist/src/lib/formatting.cjs" + }, + "./lib/git/git": { + "import": "./packages/utils/dist/src/lib/git/git.mjs", + "require": "./packages/utils/dist/src/lib/git/git.cjs" + }, + "./lib/git/git.commits-and-tags": { + "import": "./packages/utils/dist/src/lib/git/git.commits-and-tags.mjs", + "require": "./packages/utils/dist/src/lib/git/git.commits-and-tags.cjs" + }, + "./lib/guards": { + "import": "./packages/utils/dist/src/lib/guards.mjs", + "require": "./packages/utils/dist/src/lib/guards.cjs" + }, + "./lib/interpolate": { + "import": "./packages/utils/dist/src/lib/interpolate.mjs", + "require": "./packages/utils/dist/src/lib/interpolate.cjs" + }, + "./lib/log-results": { + "import": "./packages/utils/dist/src/lib/log-results.mjs", + "require": "./packages/utils/dist/src/lib/log-results.cjs" + }, + "./lib/logging": { + "import": "./packages/utils/dist/src/lib/logging.mjs", + "require": "./packages/utils/dist/src/lib/logging.cjs" + }, + "./lib/merge-configs": { + "import": "./packages/utils/dist/src/lib/merge-configs.mjs", + "require": "./packages/utils/dist/src/lib/merge-configs.cjs" + }, + "./lib/progress": { + "import": "./packages/utils/dist/src/lib/progress.mjs", + "require": "./packages/utils/dist/src/lib/progress.cjs" + }, + "./lib/promises": { + "import": "./packages/utils/dist/src/lib/promises.mjs", + "require": "./packages/utils/dist/src/lib/promises.cjs" + }, + "./lib/random": { + "import": "./packages/utils/dist/src/lib/random.mjs", + "require": "./packages/utils/dist/src/lib/random.cjs" + }, + "./lib/reports/constants": { + "import": "./packages/utils/dist/src/lib/reports/constants.mjs", + "require": "./packages/utils/dist/src/lib/reports/constants.cjs" + }, + "./lib/reports/environment-type": { + "import": "./packages/utils/dist/src/lib/reports/environment-type.mjs", + "require": "./packages/utils/dist/src/lib/reports/environment-type.cjs" + }, + "./lib/reports/flatten-plugins": { + "import": "./packages/utils/dist/src/lib/reports/flatten-plugins.mjs", + "require": "./packages/utils/dist/src/lib/reports/flatten-plugins.cjs" + }, + "./lib/reports/formatting": { + "import": "./packages/utils/dist/src/lib/reports/formatting.mjs", + "require": "./packages/utils/dist/src/lib/reports/formatting.cjs" + }, + "./lib/reports/generate-md-report": { + "import": "./packages/utils/dist/src/lib/reports/generate-md-report.mjs", + "require": "./packages/utils/dist/src/lib/reports/generate-md-report.cjs" + }, + "./lib/reports/generate-md-report-category-section": { + "import": "./packages/utils/dist/src/lib/reports/generate-md-report-category-section.mjs", + "require": "./packages/utils/dist/src/lib/reports/generate-md-report-category-section.cjs" + }, + "./lib/reports/generate-md-reports-diff": { + "import": "./packages/utils/dist/src/lib/reports/generate-md-reports-diff.mjs", + "require": "./packages/utils/dist/src/lib/reports/generate-md-reports-diff.cjs" + }, + "./lib/reports/generate-md-reports-diff-utils": { + "import": "./packages/utils/dist/src/lib/reports/generate-md-reports-diff-utils.mjs", + "require": "./packages/utils/dist/src/lib/reports/generate-md-reports-diff-utils.cjs" + }, + "./lib/reports/load-report": { + "import": "./packages/utils/dist/src/lib/reports/load-report.mjs", + "require": "./packages/utils/dist/src/lib/reports/load-report.cjs" + }, + "./lib/reports/log-stdout-summary": { + "import": "./packages/utils/dist/src/lib/reports/log-stdout-summary.mjs", + "require": "./packages/utils/dist/src/lib/reports/log-stdout-summary.cjs" + }, + "./lib/reports/scoring": { + "import": "./packages/utils/dist/src/lib/reports/scoring.mjs", + "require": "./packages/utils/dist/src/lib/reports/scoring.cjs" + }, + "./lib/reports/sorting": { + "import": "./packages/utils/dist/src/lib/reports/sorting.mjs", + "require": "./packages/utils/dist/src/lib/reports/sorting.cjs" + }, + "./lib/reports/types": { + "import": "./packages/utils/dist/src/lib/reports/types.mjs", + "require": "./packages/utils/dist/src/lib/reports/types.cjs" + }, + "./lib/reports/utils": { + "import": "./packages/utils/dist/src/lib/reports/utils.mjs", + "require": "./packages/utils/dist/src/lib/reports/utils.cjs" + }, + "./lib/semver": { + "import": "./packages/utils/dist/src/lib/semver.mjs", + "require": "./packages/utils/dist/src/lib/semver.cjs" + }, + "./lib/text-formats": { + "import": "./packages/utils/dist/src/lib/text-formats/index.mjs", + "require": "./packages/utils/dist/src/lib/text-formats/index.cjs" + }, + "./lib/text-formats/ascii/tree": { + "import": "./packages/utils/dist/src/lib/text-formats/ascii/tree.mjs", + "require": "./packages/utils/dist/src/lib/text-formats/ascii/tree.cjs" + }, + "./lib/text-formats/constants": { + "import": "./packages/utils/dist/src/lib/text-formats/constants.mjs", + "require": "./packages/utils/dist/src/lib/text-formats/constants.cjs" + }, + "./lib/text-formats/html/details": { + "import": "./packages/utils/dist/src/lib/text-formats/html/details.mjs", + "require": "./packages/utils/dist/src/lib/text-formats/html/details.cjs" + }, + "./lib/text-formats/html/font-style": { + "import": "./packages/utils/dist/src/lib/text-formats/html/font-style.mjs", + "require": "./packages/utils/dist/src/lib/text-formats/html/font-style.cjs" + }, + "./lib/text-formats/html/link": { + "import": "./packages/utils/dist/src/lib/text-formats/html/link.mjs", + "require": "./packages/utils/dist/src/lib/text-formats/html/link.cjs" + }, + "./lib/text-formats/html/table": { + "import": "./packages/utils/dist/src/lib/text-formats/html/table.mjs", + "require": "./packages/utils/dist/src/lib/text-formats/html/table.cjs" + }, + "./lib/text-formats/table": { + "import": "./packages/utils/dist/src/lib/text-formats/table.mjs", + "require": "./packages/utils/dist/src/lib/text-formats/table.cjs" + }, + "./lib/transform": { + "import": "./packages/utils/dist/src/lib/transform.mjs", + "require": "./packages/utils/dist/src/lib/transform.cjs" + }, + "./lib/types": { + "import": "./packages/utils/dist/src/lib/types.mjs", + "require": "./packages/utils/dist/src/lib/types.cjs" + }, + "./lib/zod-validation": { + "import": "./packages/utils/dist/src/lib/zod-validation.mjs", + "require": "./packages/utils/dist/src/lib/zod-validation.cjs" + }, + "./package.json": "./package.json" } } diff --git a/packages/cli/package.json b/packages/cli/package.json index 970517786..9ac246f15 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -38,6 +38,31 @@ "access": "public" }, "type": "module", + "main": "./src/index.cjs", + "module": "./src/index.mjs", + "types": "./src/index.d.ts", + "exports": { + ".": { + "import": { + "types": "./src/index.d.mts", + "default": "./src/index.mjs" + }, + "require": { + "types": "./src/index.d.cts", + "default": "./src/index.cjs" + } + }, + "./*": { + "import": { + "types": "./src/*.d.mts", + "default": "./src/*.mjs" + }, + "require": { + "types": "./src/*.d.cts", + "default": "./src/*.cjs" + } + } + }, "bin": { "code-pushup": "./src/index.mjs" }, diff --git a/packages/core/package.json b/packages/core/package.json index 19a905542..f0827046f 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -38,6 +38,31 @@ "access": "public" }, "type": "module", + "main": "./src/index.cjs", + "module": "./src/index.mjs", + "types": "./src/index.d.ts", + "exports": { + ".": { + "import": { + "types": "./src/index.d.mts", + "default": "./src/index.mjs" + }, + "require": { + "types": "./src/index.d.cts", + "default": "./src/index.cjs" + } + }, + "./*": { + "import": { + "types": "./src/*.d.mts", + "default": "./src/*.mjs" + }, + "require": { + "types": "./src/*.d.cts", + "default": "./src/*.cjs" + } + } + }, "dependencies": { "@code-pushup/models": "0.80.2", "@code-pushup/utils": "0.80.2", diff --git a/packages/models/package.json b/packages/models/package.json index be88329d3..fd406720c 100644 --- a/packages/models/package.json +++ b/packages/models/package.json @@ -26,6 +26,31 @@ "access": "public" }, "type": "module", + "main": "./src/index.cjs", + "module": "./src/index.mjs", + "types": "./src/index.d.ts", + "exports": { + ".": { + "import": { + "types": "./src/index.d.mts", + "default": "./src/index.mjs" + }, + "require": { + "types": "./src/index.d.cts", + "default": "./src/index.cjs" + } + }, + "./*": { + "import": { + "types": "./src/*.d.mts", + "default": "./src/*.mjs" + }, + "require": { + "types": "./src/*.d.cts", + "default": "./src/*.cjs" + } + } + }, "dependencies": { "zod": "^4.0.5", "vscode-material-icons": "^0.1.0" diff --git a/packages/utils/package.json b/packages/utils/package.json index a3fc10d8a..028a3134f 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -23,6 +23,31 @@ "access": "public" }, "type": "module", + "main": "./src/index.cjs", + "module": "./src/index.mjs", + "types": "./src/index.d.ts", + "exports": { + ".": { + "import": { + "types": "./src/index.d.mts", + "default": "./src/index.mjs" + }, + "require": { + "types": "./src/index.d.cts", + "default": "./src/index.cjs" + } + }, + "./*": { + "import": { + "types": "./src/*.d.mts", + "default": "./src/*.mjs" + }, + "require": { + "types": "./src/*.d.cts", + "default": "./src/*.cjs" + } + } + }, "engines": { "node": ">=17.0.0" }, diff --git a/tsdown.base.ts b/tsdown.base.ts index e3fe00d80..89d70a00a 100644 --- a/tsdown.base.ts +++ b/tsdown.base.ts @@ -18,7 +18,6 @@ export function baseConfig(options: { dts: true, hash: false, external: [], - exports: false, copy: [ { from: `${projectRoot}/README.md`, From 46a2535d8cd4a8e16021eaf51187a060cc905486 Mon Sep 17 00:00:00 2001 From: John Doe Date: Sun, 5 Oct 2025 13:14:59 +0200 Subject: [PATCH 10/17] refactor: adjust tsd cfg 2 --- tsdown.base.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tsdown.base.ts b/tsdown.base.ts index 89d70a00a..4bda977c5 100644 --- a/tsdown.base.ts +++ b/tsdown.base.ts @@ -19,6 +19,10 @@ export function baseConfig(options: { hash: false, external: [], copy: [ + { + from: `${projectRoot}/package.json`, + to: `${projectRoot}/dist/package.json`, + }, { from: `${projectRoot}/README.md`, to: `${projectRoot}/dist/README.md`, From 32fd561fe1975cda170009ca15f55bfaa8ffb122 Mon Sep 17 00:00:00 2001 From: John Doe Date: Sun, 5 Oct 2025 13:28:22 +0200 Subject: [PATCH 11/17] refactor: adjust tsd cfg 3 --- packages/plugin-js-packages/package.json | 25 ++++++++++++++++++++++++ packages/plugin-lighthouse/package.json | 25 ++++++++++++++++++++++++ packages/plugin-typescript/package.json | 25 ++++++++++++++++++++++++ 3 files changed, 75 insertions(+) diff --git a/packages/plugin-js-packages/package.json b/packages/plugin-js-packages/package.json index da7008b30..23e315fa4 100644 --- a/packages/plugin-js-packages/package.json +++ b/packages/plugin-js-packages/package.json @@ -36,6 +36,31 @@ "access": "public" }, "type": "module", + "main": "./src/index.cjs", + "module": "./src/index.mjs", + "types": "./src/index.d.ts", + "exports": { + ".": { + "import": { + "types": "./src/index.d.mts", + "default": "./src/index.mjs" + }, + "require": { + "types": "./src/index.d.cts", + "default": "./src/index.cjs" + } + }, + "./*": { + "import": { + "types": "./src/*.d.mts", + "default": "./src/*.mjs" + }, + "require": { + "types": "./src/*.d.cts", + "default": "./src/*.cjs" + } + } + }, "dependencies": { "@code-pushup/models": "0.80.2", "@code-pushup/utils": "0.80.2", diff --git a/packages/plugin-lighthouse/package.json b/packages/plugin-lighthouse/package.json index 9dbba2acf..e53e222ee 100644 --- a/packages/plugin-lighthouse/package.json +++ b/packages/plugin-lighthouse/package.json @@ -35,6 +35,31 @@ "access": "public" }, "type": "module", + "main": "./src/index.cjs", + "module": "./src/index.mjs", + "types": "./src/index.d.ts", + "exports": { + ".": { + "import": { + "types": "./src/index.d.mts", + "default": "./src/index.mjs" + }, + "require": { + "types": "./src/index.d.cts", + "default": "./src/index.cjs" + } + }, + "./*": { + "import": { + "types": "./src/*.d.mts", + "default": "./src/*.mjs" + }, + "require": { + "types": "./src/*.d.cts", + "default": "./src/*.cjs" + } + } + }, "dependencies": { "@code-pushup/models": "0.80.2", "@code-pushup/utils": "0.80.2", diff --git a/packages/plugin-typescript/package.json b/packages/plugin-typescript/package.json index 06ac92ad8..5f1597626 100644 --- a/packages/plugin-typescript/package.json +++ b/packages/plugin-typescript/package.json @@ -22,6 +22,31 @@ "access": "public" }, "type": "module", + "main": "./src/index.cjs", + "module": "./src/index.mjs", + "types": "./src/index.d.ts", + "exports": { + ".": { + "import": { + "types": "./src/index.d.mts", + "default": "./src/index.mjs" + }, + "require": { + "types": "./src/index.d.cts", + "default": "./src/index.cjs" + } + }, + "./*": { + "import": { + "types": "./src/*.d.mts", + "default": "./src/*.mjs" + }, + "require": { + "types": "./src/*.d.cts", + "default": "./src/*.cjs" + } + } + }, "dependencies": { "@code-pushup/models": "0.80.2", "@code-pushup/utils": "0.80.2", From 95553383030a2b5a27844fa59f106b532cab8a69 Mon Sep 17 00:00:00 2001 From: John Doe Date: Sun, 5 Oct 2025 14:33:36 +0200 Subject: [PATCH 12/17] refactor: adjust tsd cfg 4 --- package.json | 226 ++++++--------------------- packages/ci/package.json | 25 +++ packages/create-cli/package.json | 25 +++ packages/create-cli/tsdown.config.ts | 1 - packages/nx-plugin/package.json | 16 ++ packages/nx-plugin/tsdown.config.ts | 4 + packages/utils/package.json | 26 --- packages/utils/tsdown.config.ts | 7 +- tsdown.base.ts | 70 ++++++++- 9 files changed, 193 insertions(+), 207 deletions(-) diff --git a/package.json b/package.json index 3734d0e59..773840e83 100644 --- a/package.json +++ b/package.json @@ -165,201 +165,73 @@ "path": "@commitlint/cz-commitlint" } }, - "main": "./packages/utils/dist/src/index.cjs", - "module": "./packages/utils/dist/src/index.mjs", - "types": "./packages/utils/dist/src/index.d.cts", + "main": "./packages/core/dist/src/index.cjs", + "module": "./packages/core/dist/src/index.mjs", + "types": "./packages/core/dist/src/index.d.cts", "exports": { ".": { - "import": "./packages/utils/dist/src/index.mjs", - "require": "./packages/utils/dist/src/index.cjs" + "import": "./packages/core/dist/src/index.mjs", + "require": "./packages/core/dist/src/index.cjs" }, - "./lib/case-conversions": { - "import": "./packages/utils/dist/src/lib/case-conversions.mjs", - "require": "./packages/utils/dist/src/lib/case-conversions.cjs" + "./lib/collect-and-persist": { + "import": "./packages/core/dist/src/lib/collect-and-persist.mjs", + "require": "./packages/core/dist/src/lib/collect-and-persist.cjs" }, - "./lib/coverage-tree": { - "import": "./packages/utils/dist/src/lib/coverage-tree.mjs", - "require": "./packages/utils/dist/src/lib/coverage-tree.cjs" + "./lib/compare": { + "import": "./packages/core/dist/src/lib/compare.mjs", + "require": "./packages/core/dist/src/lib/compare.cjs" }, - "./lib/create-runner-files": { - "import": "./packages/utils/dist/src/lib/create-runner-files.mjs", - "require": "./packages/utils/dist/src/lib/create-runner-files.cjs" + "./lib/history": { + "import": "./packages/core/dist/src/lib/history.mjs", + "require": "./packages/core/dist/src/lib/history.cjs" }, - "./lib/diff": { - "import": "./packages/utils/dist/src/lib/diff.mjs", - "require": "./packages/utils/dist/src/lib/diff.cjs" + "./lib/implementation/collect": { + "import": "./packages/core/dist/src/lib/implementation/collect.mjs", + "require": "./packages/core/dist/src/lib/implementation/collect.cjs" }, - "./lib/env": { - "import": "./packages/utils/dist/src/lib/env.mjs", - "require": "./packages/utils/dist/src/lib/env.cjs" + "./lib/implementation/compare-scorables": { + "import": "./packages/core/dist/src/lib/implementation/compare-scorables.mjs", + "require": "./packages/core/dist/src/lib/implementation/compare-scorables.cjs" }, - "./lib/errors": { - "import": "./packages/utils/dist/src/lib/errors.mjs", - "require": "./packages/utils/dist/src/lib/errors.cjs" + "./lib/implementation/execute-plugin": { + "import": "./packages/core/dist/src/lib/implementation/execute-plugin.mjs", + "require": "./packages/core/dist/src/lib/implementation/execute-plugin.cjs" }, - "./lib/execute-process": { - "import": "./packages/utils/dist/src/lib/execute-process.mjs", - "require": "./packages/utils/dist/src/lib/execute-process.cjs" + "./lib/implementation/persist": { + "import": "./packages/core/dist/src/lib/implementation/persist.mjs", + "require": "./packages/core/dist/src/lib/implementation/persist.cjs" }, - "./lib/file-system": { - "import": "./packages/utils/dist/src/lib/file-system.mjs", - "require": "./packages/utils/dist/src/lib/file-system.cjs" + "./lib/implementation/read-rc-file": { + "import": "./packages/core/dist/src/lib/implementation/read-rc-file.mjs", + "require": "./packages/core/dist/src/lib/implementation/read-rc-file.cjs" }, - "./lib/filter": { - "import": "./packages/utils/dist/src/lib/filter.mjs", - "require": "./packages/utils/dist/src/lib/filter.cjs" + "./lib/implementation/report-to-gql": { + "import": "./packages/core/dist/src/lib/implementation/report-to-gql.mjs", + "require": "./packages/core/dist/src/lib/implementation/report-to-gql.cjs" }, - "./lib/format-command-log": { - "import": "./packages/utils/dist/src/lib/format-command-log.mjs", - "require": "./packages/utils/dist/src/lib/format-command-log.cjs" + "./lib/implementation/runner": { + "import": "./packages/core/dist/src/lib/implementation/runner.mjs", + "require": "./packages/core/dist/src/lib/implementation/runner.cjs" }, - "./lib/formatting": { - "import": "./packages/utils/dist/src/lib/formatting.mjs", - "require": "./packages/utils/dist/src/lib/formatting.cjs" + "./lib/load-portal-client": { + "import": "./packages/core/dist/src/lib/load-portal-client.mjs", + "require": "./packages/core/dist/src/lib/load-portal-client.cjs" }, - "./lib/git/git": { - "import": "./packages/utils/dist/src/lib/git/git.mjs", - "require": "./packages/utils/dist/src/lib/git/git.cjs" + "./lib/merge-diffs": { + "import": "./packages/core/dist/src/lib/merge-diffs.mjs", + "require": "./packages/core/dist/src/lib/merge-diffs.cjs" }, - "./lib/git/git.commits-and-tags": { - "import": "./packages/utils/dist/src/lib/git/git.commits-and-tags.mjs", - "require": "./packages/utils/dist/src/lib/git/git.commits-and-tags.cjs" - }, - "./lib/guards": { - "import": "./packages/utils/dist/src/lib/guards.mjs", - "require": "./packages/utils/dist/src/lib/guards.cjs" - }, - "./lib/interpolate": { - "import": "./packages/utils/dist/src/lib/interpolate.mjs", - "require": "./packages/utils/dist/src/lib/interpolate.cjs" - }, - "./lib/log-results": { - "import": "./packages/utils/dist/src/lib/log-results.mjs", - "require": "./packages/utils/dist/src/lib/log-results.cjs" - }, - "./lib/logging": { - "import": "./packages/utils/dist/src/lib/logging.mjs", - "require": "./packages/utils/dist/src/lib/logging.cjs" - }, - "./lib/merge-configs": { - "import": "./packages/utils/dist/src/lib/merge-configs.mjs", - "require": "./packages/utils/dist/src/lib/merge-configs.cjs" - }, - "./lib/progress": { - "import": "./packages/utils/dist/src/lib/progress.mjs", - "require": "./packages/utils/dist/src/lib/progress.cjs" - }, - "./lib/promises": { - "import": "./packages/utils/dist/src/lib/promises.mjs", - "require": "./packages/utils/dist/src/lib/promises.cjs" - }, - "./lib/random": { - "import": "./packages/utils/dist/src/lib/random.mjs", - "require": "./packages/utils/dist/src/lib/random.cjs" - }, - "./lib/reports/constants": { - "import": "./packages/utils/dist/src/lib/reports/constants.mjs", - "require": "./packages/utils/dist/src/lib/reports/constants.cjs" - }, - "./lib/reports/environment-type": { - "import": "./packages/utils/dist/src/lib/reports/environment-type.mjs", - "require": "./packages/utils/dist/src/lib/reports/environment-type.cjs" - }, - "./lib/reports/flatten-plugins": { - "import": "./packages/utils/dist/src/lib/reports/flatten-plugins.mjs", - "require": "./packages/utils/dist/src/lib/reports/flatten-plugins.cjs" - }, - "./lib/reports/formatting": { - "import": "./packages/utils/dist/src/lib/reports/formatting.mjs", - "require": "./packages/utils/dist/src/lib/reports/formatting.cjs" - }, - "./lib/reports/generate-md-report": { - "import": "./packages/utils/dist/src/lib/reports/generate-md-report.mjs", - "require": "./packages/utils/dist/src/lib/reports/generate-md-report.cjs" - }, - "./lib/reports/generate-md-report-category-section": { - "import": "./packages/utils/dist/src/lib/reports/generate-md-report-category-section.mjs", - "require": "./packages/utils/dist/src/lib/reports/generate-md-report-category-section.cjs" - }, - "./lib/reports/generate-md-reports-diff": { - "import": "./packages/utils/dist/src/lib/reports/generate-md-reports-diff.mjs", - "require": "./packages/utils/dist/src/lib/reports/generate-md-reports-diff.cjs" - }, - "./lib/reports/generate-md-reports-diff-utils": { - "import": "./packages/utils/dist/src/lib/reports/generate-md-reports-diff-utils.mjs", - "require": "./packages/utils/dist/src/lib/reports/generate-md-reports-diff-utils.cjs" - }, - "./lib/reports/load-report": { - "import": "./packages/utils/dist/src/lib/reports/load-report.mjs", - "require": "./packages/utils/dist/src/lib/reports/load-report.cjs" - }, - "./lib/reports/log-stdout-summary": { - "import": "./packages/utils/dist/src/lib/reports/log-stdout-summary.mjs", - "require": "./packages/utils/dist/src/lib/reports/log-stdout-summary.cjs" - }, - "./lib/reports/scoring": { - "import": "./packages/utils/dist/src/lib/reports/scoring.mjs", - "require": "./packages/utils/dist/src/lib/reports/scoring.cjs" - }, - "./lib/reports/sorting": { - "import": "./packages/utils/dist/src/lib/reports/sorting.mjs", - "require": "./packages/utils/dist/src/lib/reports/sorting.cjs" - }, - "./lib/reports/types": { - "import": "./packages/utils/dist/src/lib/reports/types.mjs", - "require": "./packages/utils/dist/src/lib/reports/types.cjs" - }, - "./lib/reports/utils": { - "import": "./packages/utils/dist/src/lib/reports/utils.mjs", - "require": "./packages/utils/dist/src/lib/reports/utils.cjs" - }, - "./lib/semver": { - "import": "./packages/utils/dist/src/lib/semver.mjs", - "require": "./packages/utils/dist/src/lib/semver.cjs" - }, - "./lib/text-formats": { - "import": "./packages/utils/dist/src/lib/text-formats/index.mjs", - "require": "./packages/utils/dist/src/lib/text-formats/index.cjs" - }, - "./lib/text-formats/ascii/tree": { - "import": "./packages/utils/dist/src/lib/text-formats/ascii/tree.mjs", - "require": "./packages/utils/dist/src/lib/text-formats/ascii/tree.cjs" - }, - "./lib/text-formats/constants": { - "import": "./packages/utils/dist/src/lib/text-formats/constants.mjs", - "require": "./packages/utils/dist/src/lib/text-formats/constants.cjs" - }, - "./lib/text-formats/html/details": { - "import": "./packages/utils/dist/src/lib/text-formats/html/details.mjs", - "require": "./packages/utils/dist/src/lib/text-formats/html/details.cjs" - }, - "./lib/text-formats/html/font-style": { - "import": "./packages/utils/dist/src/lib/text-formats/html/font-style.mjs", - "require": "./packages/utils/dist/src/lib/text-formats/html/font-style.cjs" - }, - "./lib/text-formats/html/link": { - "import": "./packages/utils/dist/src/lib/text-formats/html/link.mjs", - "require": "./packages/utils/dist/src/lib/text-formats/html/link.cjs" - }, - "./lib/text-formats/html/table": { - "import": "./packages/utils/dist/src/lib/text-formats/html/table.mjs", - "require": "./packages/utils/dist/src/lib/text-formats/html/table.cjs" - }, - "./lib/text-formats/table": { - "import": "./packages/utils/dist/src/lib/text-formats/table.mjs", - "require": "./packages/utils/dist/src/lib/text-formats/table.cjs" - }, - "./lib/transform": { - "import": "./packages/utils/dist/src/lib/transform.mjs", - "require": "./packages/utils/dist/src/lib/transform.cjs" + "./lib/normalize": { + "import": "./packages/core/dist/src/lib/normalize.mjs", + "require": "./packages/core/dist/src/lib/normalize.cjs" }, "./lib/types": { - "import": "./packages/utils/dist/src/lib/types.mjs", - "require": "./packages/utils/dist/src/lib/types.cjs" + "import": "./packages/core/dist/src/lib/types.mjs", + "require": "./packages/core/dist/src/lib/types.cjs" }, - "./lib/zod-validation": { - "import": "./packages/utils/dist/src/lib/zod-validation.mjs", - "require": "./packages/utils/dist/src/lib/zod-validation.cjs" + "./lib/upload": { + "import": "./packages/core/dist/src/lib/upload.mjs", + "require": "./packages/core/dist/src/lib/upload.cjs" }, "./package.json": "./package.json" } diff --git a/packages/ci/package.json b/packages/ci/package.json index 809fba5d6..001495043 100644 --- a/packages/ci/package.json +++ b/packages/ci/package.json @@ -25,6 +25,31 @@ "access": "public" }, "type": "module", + "main": "./src/index.cjs", + "module": "./src/index.mjs", + "types": "./src/index.d.ts", + "exports": { + ".": { + "import": { + "types": "./src/index.d.mts", + "default": "./src/index.mjs" + }, + "require": { + "types": "./src/index.d.cts", + "default": "./src/index.cjs" + } + }, + "./*": { + "import": { + "types": "./src/*.d.mts", + "default": "./src/*.mjs" + }, + "require": { + "types": "./src/*.d.cts", + "default": "./src/*.cjs" + } + } + }, "dependencies": { "@code-pushup/models": "0.80.2", "@code-pushup/portal-client": "^0.16.0", diff --git a/packages/create-cli/package.json b/packages/create-cli/package.json index d79e9cfeb..2462ddcd1 100644 --- a/packages/create-cli/package.json +++ b/packages/create-cli/package.json @@ -25,6 +25,31 @@ "access": "public" }, "type": "module", + "main": "./src/index.cjs", + "module": "./src/index.mjs", + "types": "./src/index.d.ts", + "exports": { + ".": { + "import": { + "types": "./src/index.d.mts", + "default": "./src/index.mjs" + }, + "require": { + "types": "./src/index.d.cts", + "default": "./src/index.cjs" + } + }, + "./*": { + "import": { + "types": "./src/*.d.mts", + "default": "./src/*.mjs" + }, + "require": { + "types": "./src/*.d.cts", + "default": "./src/*.cjs" + } + } + }, "dependencies": { "@code-pushup/nx-plugin": "0.80.2", "@code-pushup/utils": "0.80.2" diff --git a/packages/create-cli/tsdown.config.ts b/packages/create-cli/tsdown.config.ts index 94ea2b937..fbc7f73d0 100644 --- a/packages/create-cli/tsdown.config.ts +++ b/packages/create-cli/tsdown.config.ts @@ -6,5 +6,4 @@ const __dirname = import.meta.dirname; export default defineConfig({ ...baseConfig({ projectRoot: __dirname }), external: await getExternalDependencies(__dirname), - copy: [], }); diff --git a/packages/nx-plugin/package.json b/packages/nx-plugin/package.json index 70b5edbad..23329e31e 100644 --- a/packages/nx-plugin/package.json +++ b/packages/nx-plugin/package.json @@ -29,6 +29,22 @@ "type": "commonjs", "main": "./src/index.js", "typings": "./src/index.d.ts", + "exports": { + ".": { + "require": { + "types": "./src/index.d.ts", + "default": "./src/index.js" + } + }, + "./*": { + "require": { + "types": "./src/*.d.ts", + "default": "./src/*.js" + } + }, + "./generators.json": "./generators.json", + "./executors.json": "./executors.json" + }, "generators": "./generators.json", "executors": "./executors.json", "dependencies": { diff --git a/packages/nx-plugin/tsdown.config.ts b/packages/nx-plugin/tsdown.config.ts index 287f829a8..f81bbda11 100644 --- a/packages/nx-plugin/tsdown.config.ts +++ b/packages/nx-plugin/tsdown.config.ts @@ -8,6 +8,10 @@ export default defineConfig({ format: ['cjs'], // NX supports only commonjs external: await getExternalDependencies(__dirname), copy: [ + { + from: `${__dirname}/package.json`, + to: `${__dirname}/dist/package.json`, + }, { from: `${__dirname}/README.md`, to: `${__dirname}/dist/README.md`, diff --git a/packages/utils/package.json b/packages/utils/package.json index 028a3134f..310bce950 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -22,32 +22,6 @@ "publishConfig": { "access": "public" }, - "type": "module", - "main": "./src/index.cjs", - "module": "./src/index.mjs", - "types": "./src/index.d.ts", - "exports": { - ".": { - "import": { - "types": "./src/index.d.mts", - "default": "./src/index.mjs" - }, - "require": { - "types": "./src/index.d.cts", - "default": "./src/index.cjs" - } - }, - "./*": { - "import": { - "types": "./src/*.d.mts", - "default": "./src/*.mjs" - }, - "require": { - "types": "./src/*.d.cts", - "default": "./src/*.cjs" - } - } - }, "engines": { "node": ">=17.0.0" }, diff --git a/packages/utils/tsdown.config.ts b/packages/utils/tsdown.config.ts index 440791c9a..97afe787e 100644 --- a/packages/utils/tsdown.config.ts +++ b/packages/utils/tsdown.config.ts @@ -1,9 +1,12 @@ -import { defineConfig } from 'tsdown'; +import { type ExportsOptions, defineConfig } from 'tsdown'; import { baseConfig, getExternalDependencies } from '../../tsdown.base'; const __dirname = import.meta.dirname; export default defineConfig({ ...baseConfig({ projectRoot: __dirname }), - external: await getExternalDependencies(process.cwd()), + external: await getExternalDependencies(__dirname), + exports: { + all: true, + }, }); diff --git a/tsdown.base.ts b/tsdown.base.ts index 4bda977c5..3356a53e8 100644 --- a/tsdown.base.ts +++ b/tsdown.base.ts @@ -1,4 +1,4 @@ -import { readFile } from 'node:fs/promises'; +import { readFile, writeFile } from 'node:fs/promises'; import { join } from 'node:path'; import { type UserConfig, defineConfig } from 'tsdown'; @@ -18,6 +18,7 @@ export function baseConfig(options: { dts: true, hash: false, external: [], + exports: true, copy: [ { from: `${projectRoot}/package.json`, @@ -28,6 +29,73 @@ export function baseConfig(options: { to: `${projectRoot}/dist/README.md`, }, ], + async onSuccess() { + const distPackageJsonPath = join(projectRoot, 'dist', 'package.json'); + + try { + const packageJson = JSON.parse( + await readFile(distPackageJsonPath, 'utf8'), + ); + + // Remove fields not needed in published package + delete packageJson.devDependencies; + delete packageJson.scripts; + delete packageJson.nx; + + // Update files field to include built output + if (packageJson.files) { + packageJson.files = packageJson.files.map((file: string) => + file === 'src' ? 'src' : file, + ); + } + + // Adjust paths for the dist directory + if (packageJson.main) { + packageJson.main = packageJson.main.replace(/^dist\//, ''); + } + if (packageJson.module) { + packageJson.module = packageJson.module.replace(/^dist\//, ''); + } + if (packageJson.types) { + packageJson.types = packageJson.types.replace(/^dist\//, ''); + } + + // Generate exports field for dual ESM/CJS support + packageJson.exports = { + '.': { + import: './src/index.mjs', + require: './src/index.cjs', + types: './src/index.d.mts', + }, + './*': { + import: './src/*/index.mjs', + require: './src/*/index.cjs', + types: './src/*/index.d.mts', + }, + './*/': { + import: './src/*/index.mjs', + require: './src/*/index.cjs', + types: './src/*/index.d.mts', + }, + './*.js': { + import: './src/*.mjs', + require: './src/*.cjs', + types: './src/*.d.mts', + }, + }; + + await writeFile( + distPackageJsonPath, + JSON.stringify(packageJson, null, 2), + 'utf8', + ); + } catch (error) { + // If package.json doesn't exist in dist (e.g., copy was overridden), skip modification + if ((error as NodeJS.ErrnoException).code !== 'ENOENT') { + throw error; + } + } + }, }); } From 55eff04474c4a906fb623b79243d3d7ce006051f Mon Sep 17 00:00:00 2001 From: John Doe Date: Sun, 5 Oct 2025 14:35:12 +0200 Subject: [PATCH 13/17] refactor: adjust tsd cfg 5 --- package-lock.json | 737 +++++------------------ package.json | 2 +- packages/ci/package.json | 25 - packages/cli/package.json | 27 +- packages/core/package.json | 25 - packages/create-cli/package.json | 27 +- packages/models/package.json | 25 - packages/nx-plugin/package.json | 16 - packages/plugin-js-packages/package.json | 25 - packages/plugin-lighthouse/package.json | 25 - packages/plugin-typescript/package.json | 25 - packages/utils/package.json | 1 + 12 files changed, 162 insertions(+), 798 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3f59d0a96..2d4105a99 100644 --- a/package-lock.json +++ b/package-lock.json @@ -108,7 +108,7 @@ "type-fest": "^4.26.1", "typescript": "5.7.3", "typescript-eslint": "^8.18.0", - "verdaccio": "6.0.5", + "verdaccio": "6.1.6", "vite": "6.3.5", "vitest": "1.3.1", "zod2md": "^0.2.4" @@ -2702,9 +2702,9 @@ } }, "node_modules/@cypress/request": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.7.tgz", - "integrity": "sha512-LzxlLEMbBOPYB85uXrDqvD4MgcenjRBLIns3zyhx7vTPj/0u2eQhzXvPiGcaJrV38Q9dbkExWp6cOHPJ+EtFYg==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.9.tgz", + "integrity": "sha512-I3l7FdGRXluAS44/0NguwWlO83J18p0vlr2FYHrJkWdNYhgVoiYo61IXPqaOsL+vNxU1ZqMACzItGK3/KKDsdw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2714,14 +2714,14 @@ "combined-stream": "~1.0.6", "extend": "~3.0.2", "forever-agent": "~0.6.1", - "form-data": "~4.0.0", + "form-data": "~4.0.4", "http-signature": "~1.4.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", "json-stringify-safe": "~5.0.1", "mime-types": "~2.1.19", "performance-now": "^2.1.0", - "qs": "6.13.1", + "qs": "6.14.0", "safe-buffer": "^5.1.2", "tough-cookie": "^5.0.0", "tunnel-agent": "^0.6.0", @@ -2732,13 +2732,13 @@ } }, "node_modules/@cypress/request/node_modules/qs": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.1.tgz", - "integrity": "sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -9923,20 +9923,19 @@ ] }, "node_modules/@verdaccio/auth": { - "version": "8.0.0-next-8.7", - "resolved": "https://registry.npmjs.org/@verdaccio/auth/-/auth-8.0.0-next-8.7.tgz", - "integrity": "sha512-CSLBAsCJT1oOpJ4OWnVGmN6o/ZilDNa7Aa5+AU1LI2lbRblqgr4BVRn07GFqimJ//6+tPzl8BHgyiCbBhh1ZiA==", + "version": "8.0.0-next-8.19", + "resolved": "https://registry.npmjs.org/@verdaccio/auth/-/auth-8.0.0-next-8.19.tgz", + "integrity": "sha512-VEWhj9Zs6qY2vzVpwY0uViPGxCPhiVo+g2WTLPNGa8avYz6sC8eiHZOJv3E22TKm/PaeSzclvSbMXiXP1bYuMA==", "dev": true, "license": "MIT", "dependencies": { - "@verdaccio/config": "8.0.0-next-8.7", - "@verdaccio/core": "8.0.0-next-8.7", - "@verdaccio/loaders": "8.0.0-next-8.4", - "@verdaccio/signature": "8.0.0-next-8.1", - "@verdaccio/utils": "8.1.0-next-8.7", - "debug": "4.4.0", + "@verdaccio/config": "8.0.0-next-8.19", + "@verdaccio/core": "8.0.0-next-8.19", + "@verdaccio/loaders": "8.0.0-next-8.9", + "@verdaccio/signature": "8.0.0-next-8.11", + "debug": "4.4.1", "lodash": "4.17.21", - "verdaccio-htpasswd": "13.0.0-next-8.7" + "verdaccio-htpasswd": "13.0.0-next-8.19" }, "engines": { "node": ">=18" @@ -9946,67 +9945,6 @@ "url": "https://opencollective.com/verdaccio" } }, - "node_modules/@verdaccio/auth/node_modules/@verdaccio/utils": { - "version": "8.1.0-next-8.7", - "resolved": "https://registry.npmjs.org/@verdaccio/utils/-/utils-8.1.0-next-8.7.tgz", - "integrity": "sha512-4eqPCnPAJsL6gdVs0/oqZNgs2PnQW3HHBMgBHyEbb5A/ESI10TvRp+B7MRl9glUmy/aR5B6YSI68rgXvAFjdxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@verdaccio/core": "8.0.0-next-8.7", - "lodash": "4.17.21", - "minimatch": "7.4.6", - "semver": "7.6.3" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/verdaccio" - } - }, - "node_modules/@verdaccio/auth/node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@verdaccio/auth/node_modules/minimatch": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", - "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@verdaccio/auth/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, "node_modules/@verdaccio/commons-api": { "version": "10.2.0", "resolved": "https://registry.npmjs.org/@verdaccio/commons-api/-/commons-api-10.2.0.tgz", @@ -10031,15 +9969,14 @@ "dev": true }, "node_modules/@verdaccio/config": { - "version": "8.0.0-next-8.7", - "resolved": "https://registry.npmjs.org/@verdaccio/config/-/config-8.0.0-next-8.7.tgz", - "integrity": "sha512-pA0WCWvvWY6vPRav+X0EuFmuK6M08zIpRzTKkqSriCWk6JUCZ07TDnN054AS8TSSOy6EaWgHxnUw3nTd34Z4Sg==", + "version": "8.0.0-next-8.19", + "resolved": "https://registry.npmjs.org/@verdaccio/config/-/config-8.0.0-next-8.19.tgz", + "integrity": "sha512-08Mizx0f88A11Wxpx8EiK+mju0KroiaIRGZhV5h5+jWEKG3qucwTFNqR+29vRlPaGw1VmCEQ0+Vuaqeh03MlAA==", "dev": true, "license": "MIT", "dependencies": { - "@verdaccio/core": "8.0.0-next-8.7", - "@verdaccio/utils": "8.1.0-next-8.7", - "debug": "4.4.0", + "@verdaccio/core": "8.0.0-next-8.19", + "debug": "4.4.1", "js-yaml": "4.1.0", "lodash": "4.17.21", "minimatch": "7.4.6" @@ -10052,26 +9989,6 @@ "url": "https://opencollective.com/verdaccio" } }, - "node_modules/@verdaccio/config/node_modules/@verdaccio/utils": { - "version": "8.1.0-next-8.7", - "resolved": "https://registry.npmjs.org/@verdaccio/utils/-/utils-8.1.0-next-8.7.tgz", - "integrity": "sha512-4eqPCnPAJsL6gdVs0/oqZNgs2PnQW3HHBMgBHyEbb5A/ESI10TvRp+B7MRl9glUmy/aR5B6YSI68rgXvAFjdxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@verdaccio/core": "8.0.0-next-8.7", - "lodash": "4.17.21", - "minimatch": "7.4.6", - "semver": "7.6.3" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/verdaccio" - } - }, "node_modules/@verdaccio/config/node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -10079,24 +9996,6 @@ "dev": true, "license": "Python-2.0" }, - "node_modules/@verdaccio/config/node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/@verdaccio/config/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -10126,26 +10025,19 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@verdaccio/config/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, "node_modules/@verdaccio/core": { - "version": "8.0.0-next-8.7", - "resolved": "https://registry.npmjs.org/@verdaccio/core/-/core-8.0.0-next-8.7.tgz", - "integrity": "sha512-pf8M2Z5EI/5Zdhdcm3aadb9Q9jiDsIredPD3+cIoDum8x3di2AIYvQD7i5BEramfzZlLXVICmFAulU7nUY11qg==", + "version": "8.0.0-next-8.19", + "resolved": "https://registry.npmjs.org/@verdaccio/core/-/core-8.0.0-next-8.19.tgz", + "integrity": "sha512-d/QzHToby2OTB5f4rw9koC0SidWvCkGPpvcQ/V8qh1ejoMtc/tO9OKe8lwUOxEvw31A2HaIBf0J4cFVIvrU31w==", "dev": true, "license": "MIT", "dependencies": { "ajv": "8.17.1", - "core-js": "3.37.1", "http-errors": "2.0.0", "http-status-codes": "2.3.0", + "minimatch": "10.0.1", "process-warning": "1.0.0", - "semver": "7.6.3" + "semver": "7.7.2" }, "engines": { "node": ">=18" @@ -10155,6 +10047,19 @@ "url": "https://opencollective.com/verdaccio" } }, + "node_modules/@verdaccio/core/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@verdaccio/file-locking": { "version": "10.3.1", "resolved": "https://registry.npmjs.org/@verdaccio/file-locking/-/file-locking-10.3.1.tgz", @@ -10172,13 +10077,14 @@ } }, "node_modules/@verdaccio/loaders": { - "version": "8.0.0-next-8.4", - "resolved": "https://registry.npmjs.org/@verdaccio/loaders/-/loaders-8.0.0-next-8.4.tgz", - "integrity": "sha512-Powlqb4SuMbe6RVgxyyOXaCjuHCcK7oZA+lygaKZDpV9NSHJtbkkV4L+rXyCfTX3b0tKsBh7FzaIdgWc1rDeGQ==", + "version": "8.0.0-next-8.9", + "resolved": "https://registry.npmjs.org/@verdaccio/loaders/-/loaders-8.0.0-next-8.9.tgz", + "integrity": "sha512-y0EIx+jiJGnln7to0ILUsUdAZvpsZTFPF7toJ/VPJlyRZmYYCbNE2j+VK9GLZu8jPZy+H+GdEBF89QdAv6P99A==", "dev": true, "license": "MIT", "dependencies": { - "debug": "4.3.7", + "@verdaccio/core": "8.0.0-next-8.19", + "debug": "4.4.1", "lodash": "4.17.21" }, "engines": { @@ -10189,31 +10095,6 @@ "url": "https://opencollective.com/verdaccio" } }, - "node_modules/@verdaccio/loaders/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@verdaccio/loaders/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, "node_modules/@verdaccio/local-storage-legacy": { "version": "11.0.2", "resolved": "https://registry.npmjs.org/@verdaccio/local-storage-legacy/-/local-storage-legacy-11.0.2.tgz", @@ -10273,14 +10154,14 @@ } }, "node_modules/@verdaccio/logger": { - "version": "8.0.0-next-8.7", - "resolved": "https://registry.npmjs.org/@verdaccio/logger/-/logger-8.0.0-next-8.7.tgz", - "integrity": "sha512-5EMPdZhz2V08BP2rjhtN/Fz5KxCfPJBkYDitbk/eo+FCZ9nVdMCQE3WRbHEaXyJQcIso/LJ6RnL/zKN20E/rPg==", + "version": "8.0.0-next-8.19", + "resolved": "https://registry.npmjs.org/@verdaccio/logger/-/logger-8.0.0-next-8.19.tgz", + "integrity": "sha512-rCZ4eUYJhCytezVeihYSs5Ct17UJvhCnQ4dAyuO/+JSeKY1Fpxgl+es8F6PU+o6iIVeN5qfFh55llJ2LwZ4gjg==", "dev": true, "license": "MIT", "dependencies": { - "@verdaccio/logger-commons": "8.0.0-next-8.7", - "pino": "9.5.0" + "@verdaccio/logger-commons": "8.0.0-next-8.19", + "pino": "9.7.0" }, "engines": { "node": ">=18" @@ -10291,16 +10172,16 @@ } }, "node_modules/@verdaccio/logger-commons": { - "version": "8.0.0-next-8.7", - "resolved": "https://registry.npmjs.org/@verdaccio/logger-commons/-/logger-commons-8.0.0-next-8.7.tgz", - "integrity": "sha512-sXNx57G1LVp81xF4qHer3AOcMEZ90W4FjxtYF0vmULcVg3ybdtStKAT/9ocZtVMvLWTPAauhqylfnXoRZYf32A==", + "version": "8.0.0-next-8.19", + "resolved": "https://registry.npmjs.org/@verdaccio/logger-commons/-/logger-commons-8.0.0-next-8.19.tgz", + "integrity": "sha512-4Zl5+JyPMC4Kiu9f93uzN9312vg3eh1BeOx0qGGXksJTPSebS+O8HG2530ApjamSkApOHvGs5x3GEsEKza9WOA==", "dev": true, "license": "MIT", "dependencies": { - "@verdaccio/core": "8.0.0-next-8.7", - "@verdaccio/logger-prettify": "8.0.0-next-8.1", + "@verdaccio/core": "8.0.0-next-8.19", + "@verdaccio/logger-prettify": "8.0.0-next-8.3", "colorette": "2.0.20", - "debug": "4.4.0" + "debug": "4.4.1" }, "engines": { "node": ">=18" @@ -10310,41 +10191,17 @@ "url": "https://opencollective.com/verdaccio" } }, - "node_modules/@verdaccio/logger-commons/node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@verdaccio/logger-commons/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, "node_modules/@verdaccio/logger-prettify": { - "version": "8.0.0-next-8.1", - "resolved": "https://registry.npmjs.org/@verdaccio/logger-prettify/-/logger-prettify-8.0.0-next-8.1.tgz", - "integrity": "sha512-vLhaGq0q7wtMCcqa0aQY6QOsMNarhTu/l4e6Z8mG/5LUH95GGLsBwpXLnKS94P3deIjsHhc9ycnEmG39txbQ1w==", + "version": "8.0.0-next-8.3", + "resolved": "https://registry.npmjs.org/@verdaccio/logger-prettify/-/logger-prettify-8.0.0-next-8.3.tgz", + "integrity": "sha512-mehQMpCtUbmW5dHpUwvi6hSYBdEXZjmDzI76hGacYKEKBwJk5aVXmrdYbYVyWtYlmegaxjLRMmA/iebXDEggYA==", "dev": true, "license": "MIT", "dependencies": { "colorette": "2.0.20", "dayjs": "1.11.13", "lodash": "4.17.21", + "on-exit-leak-free": "2.1.2", "pino-abstract-transport": "1.2.0", "sonic-boom": "3.8.1" }, @@ -10357,17 +10214,16 @@ } }, "node_modules/@verdaccio/middleware": { - "version": "8.0.0-next-8.7", - "resolved": "https://registry.npmjs.org/@verdaccio/middleware/-/middleware-8.0.0-next-8.7.tgz", - "integrity": "sha512-Zad7KcdOsI1DUBt1TjQb08rIi/IFFaJKdPhj7M6oy5BX9l/4OM0TtbBueHFNS1+aU+t5eo8ue7ZHbqmjDY/6VQ==", + "version": "8.0.0-next-8.19", + "resolved": "https://registry.npmjs.org/@verdaccio/middleware/-/middleware-8.0.0-next-8.19.tgz", + "integrity": "sha512-KpfvMNvztaHK+6YrK3uhu6DbzwkQQnxtmNuesCwTQnMNmunwvMBCuwvNTvi1wip1GrmP8At4r3NSSz9ttPcHEQ==", "dev": true, "license": "MIT", "dependencies": { - "@verdaccio/config": "8.0.0-next-8.7", - "@verdaccio/core": "8.0.0-next-8.7", - "@verdaccio/url": "13.0.0-next-8.7", - "@verdaccio/utils": "8.1.0-next-8.7", - "debug": "4.4.0", + "@verdaccio/config": "8.0.0-next-8.19", + "@verdaccio/core": "8.0.0-next-8.19", + "@verdaccio/url": "13.0.0-next-8.19", + "debug": "4.4.1", "express": "4.21.2", "express-rate-limit": "5.5.1", "lodash": "4.17.21", @@ -10382,44 +10238,6 @@ "url": "https://opencollective.com/verdaccio" } }, - "node_modules/@verdaccio/middleware/node_modules/@verdaccio/utils": { - "version": "8.1.0-next-8.7", - "resolved": "https://registry.npmjs.org/@verdaccio/utils/-/utils-8.1.0-next-8.7.tgz", - "integrity": "sha512-4eqPCnPAJsL6gdVs0/oqZNgs2PnQW3HHBMgBHyEbb5A/ESI10TvRp+B7MRl9glUmy/aR5B6YSI68rgXvAFjdxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@verdaccio/core": "8.0.0-next-8.7", - "lodash": "4.17.21", - "minimatch": "7.4.6", - "semver": "7.6.3" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/verdaccio" - } - }, - "node_modules/@verdaccio/middleware/node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/@verdaccio/middleware/node_modules/lru-cache": { "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", @@ -10443,33 +10261,10 @@ "node": ">=4.0.0" } }, - "node_modules/@verdaccio/middleware/node_modules/minimatch": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", - "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@verdaccio/middleware/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, "node_modules/@verdaccio/search-indexer": { - "version": "8.0.0-next-8.2", - "resolved": "https://registry.npmjs.org/@verdaccio/search-indexer/-/search-indexer-8.0.0-next-8.2.tgz", - "integrity": "sha512-sWliVN5BkAGbZ3e/GD0CsZMfPJdRMRuN0tEKQFsvEJifxToq5UkfCw6vKaVvhezsTWqb+Rp5y+2d4n5BDOA49w==", + "version": "8.0.0-next-8.5", + "resolved": "https://registry.npmjs.org/@verdaccio/search-indexer/-/search-indexer-8.0.0-next-8.5.tgz", + "integrity": "sha512-0GC2tJKstbPg/W2PZl2yE+hoAxffD2ZWilEnEYSEo2e9UQpNIy2zg7KE/uMUq2P72Vf5EVfVzb8jdaH4KV4QeA==", "dev": true, "license": "MIT", "engines": { @@ -10481,13 +10276,15 @@ } }, "node_modules/@verdaccio/signature": { - "version": "8.0.0-next-8.1", - "resolved": "https://registry.npmjs.org/@verdaccio/signature/-/signature-8.0.0-next-8.1.tgz", - "integrity": "sha512-lHD/Z2FoPQTtDYz6ZlXhj/lrg0SFirHrwCGt/cibl1GlePpx78WPdo03tgAyl0Qf+I35n484/gR1l9eixBQqYw==", + "version": "8.0.0-next-8.11", + "resolved": "https://registry.npmjs.org/@verdaccio/signature/-/signature-8.0.0-next-8.11.tgz", + "integrity": "sha512-mq5ZHB8a7JRMrbLATCZFVSUo0EtnsD9k7OZwEgdYEjzRYx3dQm93lY1smBAfluPfrcTeHRJY4W76Fdy/Or5JmA==", "dev": true, "license": "MIT", "dependencies": { - "debug": "4.3.7", + "@verdaccio/config": "8.0.0-next-8.19", + "@verdaccio/core": "8.0.0-next-8.19", + "debug": "4.4.1", "jsonwebtoken": "9.0.2" }, "engines": { @@ -10498,31 +10295,6 @@ "url": "https://opencollective.com/verdaccio" } }, - "node_modules/@verdaccio/signature/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@verdaccio/signature/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, "node_modules/@verdaccio/streams": { "version": "10.2.1", "resolved": "https://registry.npmjs.org/@verdaccio/streams/-/streams-10.2.1.tgz", @@ -10538,18 +10310,16 @@ } }, "node_modules/@verdaccio/tarball": { - "version": "13.0.0-next-8.7", - "resolved": "https://registry.npmjs.org/@verdaccio/tarball/-/tarball-13.0.0-next-8.7.tgz", - "integrity": "sha512-EWRuEOLgb3UETxUsYg6+Mml6DDRiwQqKIEsE4Ys6y6rcH2vgW6XMnTt+s/v5pFI+zlbi6fxjOgQB1e6IJAwxVA==", + "version": "13.0.0-next-8.19", + "resolved": "https://registry.npmjs.org/@verdaccio/tarball/-/tarball-13.0.0-next-8.19.tgz", + "integrity": "sha512-BVdPcZj2EtneRY0HKqQTG02gF4q1YdxUqw+ZbOMdWRRFqNkCG/5PaaNhP/xh3UFk/VpNqmv4/OwyTv68c9186g==", "dev": true, "license": "MIT", "dependencies": { - "@verdaccio/core": "8.0.0-next-8.7", - "@verdaccio/url": "13.0.0-next-8.7", - "@verdaccio/utils": "8.1.0-next-8.7", - "debug": "4.4.0", + "@verdaccio/core": "8.0.0-next-8.19", + "@verdaccio/url": "13.0.0-next-8.19", + "debug": "4.4.1", "gunzip-maybe": "^1.4.2", - "lodash": "4.17.21", "tar-stream": "^3.1.7" }, "engines": { @@ -10560,67 +10330,6 @@ "url": "https://opencollective.com/verdaccio" } }, - "node_modules/@verdaccio/tarball/node_modules/@verdaccio/utils": { - "version": "8.1.0-next-8.7", - "resolved": "https://registry.npmjs.org/@verdaccio/utils/-/utils-8.1.0-next-8.7.tgz", - "integrity": "sha512-4eqPCnPAJsL6gdVs0/oqZNgs2PnQW3HHBMgBHyEbb5A/ESI10TvRp+B7MRl9glUmy/aR5B6YSI68rgXvAFjdxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@verdaccio/core": "8.0.0-next-8.7", - "lodash": "4.17.21", - "minimatch": "7.4.6", - "semver": "7.6.3" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/verdaccio" - } - }, - "node_modules/@verdaccio/tarball/node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@verdaccio/tarball/node_modules/minimatch": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", - "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@verdaccio/tarball/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, "node_modules/@verdaccio/tarball/node_modules/tar-stream": { "version": "3.1.7", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", @@ -10634,21 +10343,21 @@ } }, "node_modules/@verdaccio/ui-theme": { - "version": "8.0.0-next-8.7", - "resolved": "https://registry.npmjs.org/@verdaccio/ui-theme/-/ui-theme-8.0.0-next-8.7.tgz", - "integrity": "sha512-+7f7XqqIU+TVCHjsP6lWzCdsD4sM7MEhn4cu3mLW1kJZ7eenWKEltoqixQnoXJzaBjCiz+yXW1WkjMyEFLNbpg==", + "version": "8.0.0-next-8.19", + "resolved": "https://registry.npmjs.org/@verdaccio/ui-theme/-/ui-theme-8.0.0-next-8.19.tgz", + "integrity": "sha512-grJ+8wqD+iE9cRHMQ9hYPj/IerW3pDELccoK6CLn1xYC+sunYVpnivkUv5HUmK6G0B64ptoYST1xFSjiiZXNKg==", "dev": true, "license": "MIT" }, "node_modules/@verdaccio/url": { - "version": "13.0.0-next-8.7", - "resolved": "https://registry.npmjs.org/@verdaccio/url/-/url-13.0.0-next-8.7.tgz", - "integrity": "sha512-biFvwH3zIXYicA+SXNGvjMAe8oIQ5VddsfbO0ZXWlFs0lIz8cgI7QYPeSiCkU2VKpGzZ8pEKgqkxFsfFkU5kGA==", + "version": "13.0.0-next-8.19", + "resolved": "https://registry.npmjs.org/@verdaccio/url/-/url-13.0.0-next-8.19.tgz", + "integrity": "sha512-QCtRu6gnE3FWh1CX11VdQfXDoNUYpiZm+767dUKkvo4LfEiKHrpIqq8ZeE37dOC5w9SBJdY1X6ddlIz8p4GTxA==", "dev": true, "license": "MIT", "dependencies": { - "@verdaccio/core": "8.0.0-next-8.7", - "debug": "4.4.0", + "@verdaccio/core": "8.0.0-next-8.19", + "debug": "4.4.1", "lodash": "4.17.21", "validator": "13.12.0" }, @@ -10660,67 +10369,19 @@ "url": "https://opencollective.com/verdaccio" } }, - "node_modules/@verdaccio/url/node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@verdaccio/url/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, "node_modules/@verdaccio/utils": { - "version": "7.0.1-next-8.1", - "resolved": "https://registry.npmjs.org/@verdaccio/utils/-/utils-7.0.1-next-8.1.tgz", - "integrity": "sha512-cyJdRrVa+8CS7UuIQb3K3IJFjMe64v38tYiBnohSmhRbX7dX9IT3jWbjrwkqWh4KeS1CS6BYENrGG1evJ2ggrQ==", + "version": "8.1.0-next-8.19", + "resolved": "https://registry.npmjs.org/@verdaccio/utils/-/utils-8.1.0-next-8.19.tgz", + "integrity": "sha512-mQoe1yUlYR4ujR65xVNAr4and102UNvAjlx6+IYyVPa7h3CZ0w5e8sRjlbYIXXL/qDI4RPVzfJVpquiwPkUCGg==", "dev": true, "license": "MIT", "dependencies": { - "@verdaccio/core": "8.0.0-next-8.1", + "@verdaccio/core": "8.0.0-next-8.19", "lodash": "4.17.21", - "minimatch": "7.4.6", - "semver": "7.6.3" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/verdaccio" - } - }, - "node_modules/@verdaccio/utils/node_modules/@verdaccio/core": { - "version": "8.0.0-next-8.1", - "resolved": "https://registry.npmjs.org/@verdaccio/core/-/core-8.0.0-next-8.1.tgz", - "integrity": "sha512-kQRCB2wgXEh8H88G51eQgAFK9IxmnBtkQ8sY5FbmB6PbBkyHrbGcCp+2mtRqqo36j0W1VAlfM3XzoknMy6qQnw==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "8.17.1", - "core-js": "3.37.1", - "http-errors": "2.0.0", - "http-status-codes": "2.3.0", - "process-warning": "1.0.0", - "semver": "7.6.3" + "minimatch": "7.4.6" }, "engines": { - "node": ">=14" + "node": ">=18" }, "funding": { "type": "opencollective", @@ -14403,9 +14064,9 @@ } }, "node_modules/compression": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.5.tgz", - "integrity": "sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", "dev": true, "license": "MIT", "dependencies": { @@ -14413,7 +14074,7 @@ "compressible": "~2.0.18", "debug": "2.6.9", "negotiator": "~0.6.4", - "on-headers": "~1.0.2", + "on-headers": "~1.1.0", "safe-buffer": "5.2.1", "vary": "~1.1.2" }, @@ -14660,18 +14321,6 @@ "node": ">= 0.8" } }, - "node_modules/core-js": { - "version": "3.37.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.37.1.tgz", - "integrity": "sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, "node_modules/core-js-compat": { "version": "3.38.1", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", @@ -17890,13 +17539,6 @@ "node": ">=6" } }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", - "dev": true, - "license": "MIT" - }, "node_modules/fast-tag-pos": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-tag-pos/-/fast-tag-pos-2.0.0.tgz", @@ -24800,9 +24442,9 @@ } }, "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", "dev": true, "license": "MIT", "engines": { @@ -25448,9 +25090,9 @@ } }, "node_modules/pino": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-9.5.0.tgz", - "integrity": "sha512-xSEmD4pLnV54t0NOUN16yCl7RIB1c5UUOse5HSyEXtBp+FgFQyPeDutc+Q2ZO7/22vImV7VfEjH/1zV2QuqvYw==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-9.7.0.tgz", + "integrity": "sha512-vnMCM6xZTb1WDmLvtG2lE/2p+t9hDEIvTWJsu6FejkE62vB7gDhvzrpFR4Cw2to+9JNQxVnkAKVPA1KPB98vWg==", "dev": true, "license": "MIT", "dependencies": { @@ -25459,7 +25101,7 @@ "on-exit-leak-free": "^2.1.0", "pino-abstract-transport": "^2.0.0", "pino-std-serializers": "^7.0.0", - "process-warning": "^4.0.0", + "process-warning": "^5.0.0", "quick-format-unescaped": "^4.0.3", "real-require": "^0.2.0", "safe-stable-stringify": "^2.3.1", @@ -25551,9 +25193,9 @@ } }, "node_modules/pino/node_modules/process-warning": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-4.0.1.tgz", - "integrity": "sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz", + "integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==", "dev": true, "funding": [ { @@ -30784,49 +30426,44 @@ } }, "node_modules/verdaccio": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/verdaccio/-/verdaccio-6.0.5.tgz", - "integrity": "sha512-hv+v4mtG/rcNidGUHXAtNuVySiPE3/PM+7dYye5jCDrhCUmRJYOtnvDe/Ym1ZE/twti39g6izVRxEkjnSp52gA==", + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/verdaccio/-/verdaccio-6.1.6.tgz", + "integrity": "sha512-zUMMKW0hjtOaLIm1cY9AqA0bMjvuGtKJVolzXQacIW9PHTnTjcsWF2+sbNLBhVrHwo+FJ1DzdNVaTWXOBWZgiQ==", "dev": true, "license": "MIT", "dependencies": { - "@cypress/request": "3.0.7", - "@verdaccio/auth": "8.0.0-next-8.7", - "@verdaccio/config": "8.0.0-next-8.7", - "@verdaccio/core": "8.0.0-next-8.7", + "@cypress/request": "3.0.9", + "@verdaccio/auth": "8.0.0-next-8.19", + "@verdaccio/config": "8.0.0-next-8.19", + "@verdaccio/core": "8.0.0-next-8.19", + "@verdaccio/loaders": "8.0.0-next-8.9", "@verdaccio/local-storage-legacy": "11.0.2", - "@verdaccio/logger": "8.0.0-next-8.7", - "@verdaccio/middleware": "8.0.0-next-8.7", - "@verdaccio/search-indexer": "8.0.0-next-8.2", - "@verdaccio/signature": "8.0.0-next-8.1", + "@verdaccio/logger": "8.0.0-next-8.19", + "@verdaccio/middleware": "8.0.0-next-8.19", + "@verdaccio/search-indexer": "8.0.0-next-8.5", + "@verdaccio/signature": "8.0.0-next-8.11", "@verdaccio/streams": "10.2.1", - "@verdaccio/tarball": "13.0.0-next-8.7", - "@verdaccio/ui-theme": "8.0.0-next-8.7", - "@verdaccio/url": "13.0.0-next-8.7", - "@verdaccio/utils": "7.0.1-next-8.1", + "@verdaccio/tarball": "13.0.0-next-8.19", + "@verdaccio/ui-theme": "8.0.0-next-8.19", + "@verdaccio/url": "13.0.0-next-8.19", + "@verdaccio/utils": "8.1.0-next-8.19", "async": "3.2.6", "clipanion": "4.0.0-rc.4", - "compression": "1.7.5", + "compression": "1.8.1", "cors": "2.8.5", - "debug": "4.4.0", + "debug": "4.4.1", "envinfo": "7.14.0", "express": "4.21.2", - "express-rate-limit": "5.5.1", - "fast-safe-stringify": "2.1.1", "handlebars": "4.7.8", - "js-yaml": "4.1.0", "JSONStream": "1.3.5", - "jsonwebtoken": "9.0.2", - "kleur": "4.1.5", "lodash": "4.17.21", "lru-cache": "7.18.3", "mime": "3.0.0", "mkdirp": "1.0.4", "pkginfo": "0.4.1", - "semver": "7.6.3", - "validator": "13.12.0", - "verdaccio-audit": "13.0.0-next-8.7", - "verdaccio-htpasswd": "13.0.0-next-8.7" + "semver": "7.7.2", + "verdaccio-audit": "13.0.0-next-8.19", + "verdaccio-htpasswd": "13.0.0-next-8.19" }, "bin": { "verdaccio": "bin/verdaccio" @@ -30840,14 +30477,14 @@ } }, "node_modules/verdaccio-audit": { - "version": "13.0.0-next-8.7", - "resolved": "https://registry.npmjs.org/verdaccio-audit/-/verdaccio-audit-13.0.0-next-8.7.tgz", - "integrity": "sha512-kd6YdrDztkP1/GDZT7Ue2u41iGPvM9y+5aaUbIBUPvTY/YVv57K6MaCMfn9C/I+ZL4R7XOTSxTtWvz3JK4QrNg==", + "version": "13.0.0-next-8.19", + "resolved": "https://registry.npmjs.org/verdaccio-audit/-/verdaccio-audit-13.0.0-next-8.19.tgz", + "integrity": "sha512-lF/5g4CwfhGzZIySeFYBCWXaBnIRQ02Q27gQ7OSS9KTQ9qnHXHbFrXjEAml2udQSNk6Z9jieNa5TufwgjR3Nyw==", "dev": true, "license": "MIT", "dependencies": { - "@verdaccio/config": "8.0.0-next-8.7", - "@verdaccio/core": "8.0.0-next-8.7", + "@verdaccio/config": "8.0.0-next-8.19", + "@verdaccio/core": "8.0.0-next-8.19", "express": "4.21.2", "https-proxy-agent": "5.0.1", "node-fetch": "cjs" @@ -30888,18 +30525,17 @@ } }, "node_modules/verdaccio-htpasswd": { - "version": "13.0.0-next-8.7", - "resolved": "https://registry.npmjs.org/verdaccio-htpasswd/-/verdaccio-htpasswd-13.0.0-next-8.7.tgz", - "integrity": "sha512-znyFnwt59mLKTAu6eHJrfWP07iaHUlYiQN7QoBo8KMAOT1AecUYreBqs93oKHdIOzjTI8j6tQLg57DpeVS5vgg==", + "version": "13.0.0-next-8.19", + "resolved": "https://registry.npmjs.org/verdaccio-htpasswd/-/verdaccio-htpasswd-13.0.0-next-8.19.tgz", + "integrity": "sha512-XVkkJJKfXLVXC8E+7CLklnndkagZaFWXhGbYIxFYRJ+0bCff0VgUfmyXpwWJ9ADdOnMSqvUPFwMsx4LAhGxFvg==", "dev": true, "license": "MIT", "dependencies": { - "@verdaccio/core": "8.0.0-next-8.7", - "@verdaccio/file-locking": "13.0.0-next-8.2", + "@verdaccio/core": "8.0.0-next-8.19", + "@verdaccio/file-locking": "13.0.0-next-8.4", "apache-md5": "1.1.8", "bcryptjs": "2.4.3", - "core-js": "3.37.1", - "debug": "4.4.0", + "debug": "4.4.1", "http-errors": "2.0.0", "unix-crypt-td-js": "1.1.4" }, @@ -30912,9 +30548,9 @@ } }, "node_modules/verdaccio-htpasswd/node_modules/@verdaccio/file-locking": { - "version": "13.0.0-next-8.2", - "resolved": "https://registry.npmjs.org/@verdaccio/file-locking/-/file-locking-13.0.0-next-8.2.tgz", - "integrity": "sha512-TcHgN3I/N28WBSvtukpGrJhBljl4jyIXq0vEv94vXAG6nUE3saK+vtgo8PfYA3Ueo88v/1zyAbiZM4uxwojCmQ==", + "version": "13.0.0-next-8.4", + "resolved": "https://registry.npmjs.org/@verdaccio/file-locking/-/file-locking-13.0.0-next-8.4.tgz", + "integrity": "sha512-LzW8V7O65ZGvBbeK43JfHBjoRch3vopBx/HDnOwpA++XrfDTFt/e9Omk28Gu7wY/4BSunJGHMCIrs2EzYc9IVQ==", "dev": true, "license": "MIT", "dependencies": { @@ -30928,69 +30564,6 @@ "url": "https://opencollective.com/verdaccio" } }, - "node_modules/verdaccio-htpasswd/node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/verdaccio-htpasswd/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/verdaccio/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/verdaccio/node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/verdaccio/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/verdaccio/node_modules/lru-cache": { "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", @@ -31024,12 +30597,18 @@ "node": ">=10" } }, - "node_modules/verdaccio/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "node_modules/verdaccio/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, - "license": "MIT" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } }, "node_modules/verror": { "version": "1.10.0", diff --git a/package.json b/package.json index 773840e83..ce51ba202 100644 --- a/package.json +++ b/package.json @@ -118,7 +118,7 @@ "type-fest": "^4.26.1", "typescript": "5.7.3", "typescript-eslint": "^8.18.0", - "verdaccio": "6.0.5", + "verdaccio": "6.1.6", "vite": "6.3.5", "vitest": "1.3.1", "zod2md": "^0.2.4" diff --git a/packages/ci/package.json b/packages/ci/package.json index 001495043..809fba5d6 100644 --- a/packages/ci/package.json +++ b/packages/ci/package.json @@ -25,31 +25,6 @@ "access": "public" }, "type": "module", - "main": "./src/index.cjs", - "module": "./src/index.mjs", - "types": "./src/index.d.ts", - "exports": { - ".": { - "import": { - "types": "./src/index.d.mts", - "default": "./src/index.mjs" - }, - "require": { - "types": "./src/index.d.cts", - "default": "./src/index.cjs" - } - }, - "./*": { - "import": { - "types": "./src/*.d.mts", - "default": "./src/*.mjs" - }, - "require": { - "types": "./src/*.d.cts", - "default": "./src/*.cjs" - } - } - }, "dependencies": { "@code-pushup/models": "0.80.2", "@code-pushup/portal-client": "^0.16.0", diff --git a/packages/cli/package.json b/packages/cli/package.json index 9ac246f15..432e5f175 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -38,33 +38,8 @@ "access": "public" }, "type": "module", - "main": "./src/index.cjs", - "module": "./src/index.mjs", - "types": "./src/index.d.ts", - "exports": { - ".": { - "import": { - "types": "./src/index.d.mts", - "default": "./src/index.mjs" - }, - "require": { - "types": "./src/index.d.cts", - "default": "./src/index.cjs" - } - }, - "./*": { - "import": { - "types": "./src/*.d.mts", - "default": "./src/*.mjs" - }, - "require": { - "types": "./src/*.d.cts", - "default": "./src/*.cjs" - } - } - }, "bin": { - "code-pushup": "./src/index.mjs" + "code-pushup": "./src/index.js" }, "engines": { "node": ">=20" diff --git a/packages/core/package.json b/packages/core/package.json index f0827046f..19a905542 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -38,31 +38,6 @@ "access": "public" }, "type": "module", - "main": "./src/index.cjs", - "module": "./src/index.mjs", - "types": "./src/index.d.ts", - "exports": { - ".": { - "import": { - "types": "./src/index.d.mts", - "default": "./src/index.mjs" - }, - "require": { - "types": "./src/index.d.cts", - "default": "./src/index.cjs" - } - }, - "./*": { - "import": { - "types": "./src/*.d.mts", - "default": "./src/*.mjs" - }, - "require": { - "types": "./src/*.d.cts", - "default": "./src/*.cjs" - } - } - }, "dependencies": { "@code-pushup/models": "0.80.2", "@code-pushup/utils": "0.80.2", diff --git a/packages/create-cli/package.json b/packages/create-cli/package.json index 2462ddcd1..d497c6979 100644 --- a/packages/create-cli/package.json +++ b/packages/create-cli/package.json @@ -2,7 +2,7 @@ "name": "@code-pushup/create-cli", "version": "0.80.2", "license": "MIT", - "bin": "src/index.mjs", + "bin": "index.js", "homepage": "https://github.com/code-pushup/cli/tree/main/packages/create-cli#readme", "bugs": { "url": "https://github.com/code-pushup/cli/issues?q=is%3Aissue%20state%3Aopen%20type%3ABug%20label%3A\"🧩%20create-cli\"" @@ -25,31 +25,6 @@ "access": "public" }, "type": "module", - "main": "./src/index.cjs", - "module": "./src/index.mjs", - "types": "./src/index.d.ts", - "exports": { - ".": { - "import": { - "types": "./src/index.d.mts", - "default": "./src/index.mjs" - }, - "require": { - "types": "./src/index.d.cts", - "default": "./src/index.cjs" - } - }, - "./*": { - "import": { - "types": "./src/*.d.mts", - "default": "./src/*.mjs" - }, - "require": { - "types": "./src/*.d.cts", - "default": "./src/*.cjs" - } - } - }, "dependencies": { "@code-pushup/nx-plugin": "0.80.2", "@code-pushup/utils": "0.80.2" diff --git a/packages/models/package.json b/packages/models/package.json index fd406720c..be88329d3 100644 --- a/packages/models/package.json +++ b/packages/models/package.json @@ -26,31 +26,6 @@ "access": "public" }, "type": "module", - "main": "./src/index.cjs", - "module": "./src/index.mjs", - "types": "./src/index.d.ts", - "exports": { - ".": { - "import": { - "types": "./src/index.d.mts", - "default": "./src/index.mjs" - }, - "require": { - "types": "./src/index.d.cts", - "default": "./src/index.cjs" - } - }, - "./*": { - "import": { - "types": "./src/*.d.mts", - "default": "./src/*.mjs" - }, - "require": { - "types": "./src/*.d.cts", - "default": "./src/*.cjs" - } - } - }, "dependencies": { "zod": "^4.0.5", "vscode-material-icons": "^0.1.0" diff --git a/packages/nx-plugin/package.json b/packages/nx-plugin/package.json index 23329e31e..70b5edbad 100644 --- a/packages/nx-plugin/package.json +++ b/packages/nx-plugin/package.json @@ -29,22 +29,6 @@ "type": "commonjs", "main": "./src/index.js", "typings": "./src/index.d.ts", - "exports": { - ".": { - "require": { - "types": "./src/index.d.ts", - "default": "./src/index.js" - } - }, - "./*": { - "require": { - "types": "./src/*.d.ts", - "default": "./src/*.js" - } - }, - "./generators.json": "./generators.json", - "./executors.json": "./executors.json" - }, "generators": "./generators.json", "executors": "./executors.json", "dependencies": { diff --git a/packages/plugin-js-packages/package.json b/packages/plugin-js-packages/package.json index 23e315fa4..da7008b30 100644 --- a/packages/plugin-js-packages/package.json +++ b/packages/plugin-js-packages/package.json @@ -36,31 +36,6 @@ "access": "public" }, "type": "module", - "main": "./src/index.cjs", - "module": "./src/index.mjs", - "types": "./src/index.d.ts", - "exports": { - ".": { - "import": { - "types": "./src/index.d.mts", - "default": "./src/index.mjs" - }, - "require": { - "types": "./src/index.d.cts", - "default": "./src/index.cjs" - } - }, - "./*": { - "import": { - "types": "./src/*.d.mts", - "default": "./src/*.mjs" - }, - "require": { - "types": "./src/*.d.cts", - "default": "./src/*.cjs" - } - } - }, "dependencies": { "@code-pushup/models": "0.80.2", "@code-pushup/utils": "0.80.2", diff --git a/packages/plugin-lighthouse/package.json b/packages/plugin-lighthouse/package.json index e53e222ee..9dbba2acf 100644 --- a/packages/plugin-lighthouse/package.json +++ b/packages/plugin-lighthouse/package.json @@ -35,31 +35,6 @@ "access": "public" }, "type": "module", - "main": "./src/index.cjs", - "module": "./src/index.mjs", - "types": "./src/index.d.ts", - "exports": { - ".": { - "import": { - "types": "./src/index.d.mts", - "default": "./src/index.mjs" - }, - "require": { - "types": "./src/index.d.cts", - "default": "./src/index.cjs" - } - }, - "./*": { - "import": { - "types": "./src/*.d.mts", - "default": "./src/*.mjs" - }, - "require": { - "types": "./src/*.d.cts", - "default": "./src/*.cjs" - } - } - }, "dependencies": { "@code-pushup/models": "0.80.2", "@code-pushup/utils": "0.80.2", diff --git a/packages/plugin-typescript/package.json b/packages/plugin-typescript/package.json index 5f1597626..06ac92ad8 100644 --- a/packages/plugin-typescript/package.json +++ b/packages/plugin-typescript/package.json @@ -22,31 +22,6 @@ "access": "public" }, "type": "module", - "main": "./src/index.cjs", - "module": "./src/index.mjs", - "types": "./src/index.d.ts", - "exports": { - ".": { - "import": { - "types": "./src/index.d.mts", - "default": "./src/index.mjs" - }, - "require": { - "types": "./src/index.d.cts", - "default": "./src/index.cjs" - } - }, - "./*": { - "import": { - "types": "./src/*.d.mts", - "default": "./src/*.mjs" - }, - "require": { - "types": "./src/*.d.cts", - "default": "./src/*.cjs" - } - } - }, "dependencies": { "@code-pushup/models": "0.80.2", "@code-pushup/utils": "0.80.2", diff --git a/packages/utils/package.json b/packages/utils/package.json index 310bce950..a3fc10d8a 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -22,6 +22,7 @@ "publishConfig": { "access": "public" }, + "type": "module", "engines": { "node": ">=17.0.0" }, From 082e97e6b47d84f11f680f1c46edc605296bbc89 Mon Sep 17 00:00:00 2001 From: John Doe Date: Sun, 5 Oct 2025 14:52:23 +0200 Subject: [PATCH 14/17] refactor: adjust tsd cfg 6 --- package.json | 70 ---------------------------------------------------- 1 file changed, 70 deletions(-) diff --git a/package.json b/package.json index ce51ba202..1460aa16d 100644 --- a/package.json +++ b/package.json @@ -164,75 +164,5 @@ "commitizen": { "path": "@commitlint/cz-commitlint" } - }, - "main": "./packages/core/dist/src/index.cjs", - "module": "./packages/core/dist/src/index.mjs", - "types": "./packages/core/dist/src/index.d.cts", - "exports": { - ".": { - "import": "./packages/core/dist/src/index.mjs", - "require": "./packages/core/dist/src/index.cjs" - }, - "./lib/collect-and-persist": { - "import": "./packages/core/dist/src/lib/collect-and-persist.mjs", - "require": "./packages/core/dist/src/lib/collect-and-persist.cjs" - }, - "./lib/compare": { - "import": "./packages/core/dist/src/lib/compare.mjs", - "require": "./packages/core/dist/src/lib/compare.cjs" - }, - "./lib/history": { - "import": "./packages/core/dist/src/lib/history.mjs", - "require": "./packages/core/dist/src/lib/history.cjs" - }, - "./lib/implementation/collect": { - "import": "./packages/core/dist/src/lib/implementation/collect.mjs", - "require": "./packages/core/dist/src/lib/implementation/collect.cjs" - }, - "./lib/implementation/compare-scorables": { - "import": "./packages/core/dist/src/lib/implementation/compare-scorables.mjs", - "require": "./packages/core/dist/src/lib/implementation/compare-scorables.cjs" - }, - "./lib/implementation/execute-plugin": { - "import": "./packages/core/dist/src/lib/implementation/execute-plugin.mjs", - "require": "./packages/core/dist/src/lib/implementation/execute-plugin.cjs" - }, - "./lib/implementation/persist": { - "import": "./packages/core/dist/src/lib/implementation/persist.mjs", - "require": "./packages/core/dist/src/lib/implementation/persist.cjs" - }, - "./lib/implementation/read-rc-file": { - "import": "./packages/core/dist/src/lib/implementation/read-rc-file.mjs", - "require": "./packages/core/dist/src/lib/implementation/read-rc-file.cjs" - }, - "./lib/implementation/report-to-gql": { - "import": "./packages/core/dist/src/lib/implementation/report-to-gql.mjs", - "require": "./packages/core/dist/src/lib/implementation/report-to-gql.cjs" - }, - "./lib/implementation/runner": { - "import": "./packages/core/dist/src/lib/implementation/runner.mjs", - "require": "./packages/core/dist/src/lib/implementation/runner.cjs" - }, - "./lib/load-portal-client": { - "import": "./packages/core/dist/src/lib/load-portal-client.mjs", - "require": "./packages/core/dist/src/lib/load-portal-client.cjs" - }, - "./lib/merge-diffs": { - "import": "./packages/core/dist/src/lib/merge-diffs.mjs", - "require": "./packages/core/dist/src/lib/merge-diffs.cjs" - }, - "./lib/normalize": { - "import": "./packages/core/dist/src/lib/normalize.mjs", - "require": "./packages/core/dist/src/lib/normalize.cjs" - }, - "./lib/types": { - "import": "./packages/core/dist/src/lib/types.mjs", - "require": "./packages/core/dist/src/lib/types.cjs" - }, - "./lib/upload": { - "import": "./packages/core/dist/src/lib/upload.mjs", - "require": "./packages/core/dist/src/lib/upload.cjs" - }, - "./package.json": "./package.json" } } From 922fd8a2ba27d42790bd771b4e5aa16afe80481c Mon Sep 17 00:00:00 2001 From: John Doe Date: Sun, 5 Oct 2025 16:31:59 +0200 Subject: [PATCH 15/17] refactor: adjust tsd cfg 7 --- tsdown.base.ts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tsdown.base.ts b/tsdown.base.ts index 3356a53e8..7ac11794b 100644 --- a/tsdown.base.ts +++ b/tsdown.base.ts @@ -60,6 +60,26 @@ export function baseConfig(options: { packageJson.types = packageJson.types.replace(/^dist\//, ''); } + // Update bin field to use correct extension for built files + if (packageJson.bin) { + if (typeof packageJson.bin === 'string') { + // Single bin entry + packageJson.bin = packageJson.bin + .replace(/^dist\//, '') + .replace(/\.js$/, '.mjs'); + } else { + // Multiple bin entries + packageJson.bin = Object.fromEntries( + Object.entries(packageJson.bin).map(([name, path]) => [ + name, + (path as string) + .replace(/^dist\//, '') + .replace(/\.js$/, '.mjs'), + ]), + ); + } + } + // Generate exports field for dual ESM/CJS support packageJson.exports = { '.': { From 4401713e7a5f01e8d5d7cd405f6bf5dbc62a3b62 Mon Sep 17 00:00:00 2001 From: John Doe Date: Sun, 5 Oct 2025 16:55:25 +0200 Subject: [PATCH 16/17] refactor: adjust tsd cfg 8 --- .../src/lib/coverage-plugin.ts | 2 +- .../src/lib/js-packages-plugin.ts | 2 +- tsdown.base.ts | 86 ++++++++++++++----- 3 files changed, 65 insertions(+), 25 deletions(-) diff --git a/packages/plugin-coverage/src/lib/coverage-plugin.ts b/packages/plugin-coverage/src/lib/coverage-plugin.ts index 2727f3f73..730c479cc 100644 --- a/packages/plugin-coverage/src/lib/coverage-plugin.ts +++ b/packages/plugin-coverage/src/lib/coverage-plugin.ts @@ -58,7 +58,7 @@ export async function coveragePlugin( const runnerScriptPath = path.join( fileURLToPath(path.dirname(import.meta.url)), '..', - 'bin.js', + 'bin.mjs', ); const packageJson = createRequire(import.meta.url)( diff --git a/packages/plugin-js-packages/src/lib/js-packages-plugin.ts b/packages/plugin-js-packages/src/lib/js-packages-plugin.ts index 8fe2491cd..c851446a4 100644 --- a/packages/plugin-js-packages/src/lib/js-packages-plugin.ts +++ b/packages/plugin-js-packages/src/lib/js-packages-plugin.ts @@ -45,7 +45,7 @@ export async function jsPackagesPlugin( const runnerScriptPath = path.join( fileURLToPath(path.dirname(import.meta.url)), '..', - 'bin.js', + 'bin.mjs', ); const packageJson = createRequire(import.meta.url)( diff --git a/tsdown.base.ts b/tsdown.base.ts index 7ac11794b..6f733f128 100644 --- a/tsdown.base.ts +++ b/tsdown.base.ts @@ -49,9 +49,17 @@ export function baseConfig(options: { ); } + // Detect if this is a CJS-only build by checking if .mjs files exist + const { existsSync } = await import('node:fs'); + const indexMjsPath = join(projectRoot, 'dist', 'src', 'index.mjs'); + const isCjsOnly = !existsSync(indexMjsPath); + // Adjust paths for the dist directory if (packageJson.main) { packageJson.main = packageJson.main.replace(/^dist\//, ''); + if (isCjsOnly) { + packageJson.main = packageJson.main.replace(/\.js$/, '.cjs'); + } } if (packageJson.module) { packageJson.module = packageJson.module.replace(/^dist\//, ''); @@ -59,6 +67,15 @@ export function baseConfig(options: { if (packageJson.types) { packageJson.types = packageJson.types.replace(/^dist\//, ''); } + if (packageJson.typings) { + packageJson.typings = packageJson.typings.replace(/^dist\//, ''); + if (isCjsOnly) { + packageJson.typings = packageJson.typings.replace( + /\.d\.ts$/, + '.d.cts', + ); + } + } // Update bin field to use correct extension for built files if (packageJson.bin) { @@ -80,29 +97,52 @@ export function baseConfig(options: { } } - // Generate exports field for dual ESM/CJS support - packageJson.exports = { - '.': { - import: './src/index.mjs', - require: './src/index.cjs', - types: './src/index.d.mts', - }, - './*': { - import: './src/*/index.mjs', - require: './src/*/index.cjs', - types: './src/*/index.d.mts', - }, - './*/': { - import: './src/*/index.mjs', - require: './src/*/index.cjs', - types: './src/*/index.d.mts', - }, - './*.js': { - import: './src/*.mjs', - require: './src/*.cjs', - types: './src/*.d.mts', - }, - }; + // Generate exports field based on format + if (isCjsOnly) { + // CJS-only exports + packageJson.exports = { + '.': { + require: './src/index.cjs', + types: './src/index.d.cts', + }, + './*': { + require: './src/*/index.cjs', + types: './src/*/index.d.cts', + }, + './*/': { + require: './src/*/index.cjs', + types: './src/*/index.d.cts', + }, + './*.js': { + require: './src/*.cjs', + types: './src/*.d.cts', + }, + }; + } else { + // Dual ESM/CJS exports + packageJson.exports = { + '.': { + import: './src/index.mjs', + require: './src/index.cjs', + types: './src/index.d.mts', + }, + './*': { + import: './src/*/index.mjs', + require: './src/*/index.cjs', + types: './src/*/index.d.mts', + }, + './*/': { + import: './src/*/index.mjs', + require: './src/*/index.cjs', + types: './src/*/index.d.mts', + }, + './*.js': { + import: './src/*.mjs', + require: './src/*.cjs', + types: './src/*.d.mts', + }, + }; + } await writeFile( distPackageJsonPath, From 1333f3cbde2498978a7dc81ca4317043405e548c Mon Sep 17 00:00:00 2001 From: John Doe Date: Sun, 5 Oct 2025 17:32:42 +0200 Subject: [PATCH 17/17] refactor: adjust tsd cfg 9 --- packages/nx-plugin/tsdown.config.ts | 80 ++++++++++++++++++++++------- tsdown.base.ts | 33 ++++++++++-- 2 files changed, 90 insertions(+), 23 deletions(-) diff --git a/packages/nx-plugin/tsdown.config.ts b/packages/nx-plugin/tsdown.config.ts index f81bbda11..9a429804a 100644 --- a/packages/nx-plugin/tsdown.config.ts +++ b/packages/nx-plugin/tsdown.config.ts @@ -1,28 +1,70 @@ +import { copyFile, readFile, writeFile } from 'node:fs/promises'; +import { join } from 'node:path'; import { defineConfig } from 'tsdown'; import { baseConfig, getExternalDependencies } from '../../tsdown.base'; const __dirname = import.meta.dirname; +const base = baseConfig({ projectRoot: __dirname }); + +// Remove generators.json and executors.json from copy array +// We'll handle them in onSuccess to update the .cjs references +const copyWithoutJsonFiles = ((base as any).copy || []).filter( + (item: any) => + !item.to.endsWith('/generators.json') && + !item.to.endsWith('/executors.json'), +); + export default defineConfig({ - ...baseConfig({ projectRoot: __dirname }), + ...base, format: ['cjs'], // NX supports only commonjs external: await getExternalDependencies(__dirname), - copy: [ - { - from: `${__dirname}/package.json`, - to: `${__dirname}/dist/package.json`, - }, - { - from: `${__dirname}/README.md`, - to: `${__dirname}/dist/README.md`, - }, - { - from: `${__dirname}/generators.json`, - to: `${__dirname}/dist/generators.json`, - }, - { - from: `${__dirname}/executors.json`, - to: `${__dirname}/dist/executors.json`, - }, - ], + copy: copyWithoutJsonFiles, + async onSuccess() { + // Call base onSuccess first + const baseOnSuccess = (base as any).onSuccess; + if (typeof baseOnSuccess === 'function') { + await baseOnSuccess(); + } + + // Copy and update generators.json + const generatorsJsonPath = join(__dirname, 'dist', 'generators.json'); + await copyFile(join(__dirname, 'generators.json'), generatorsJsonPath); + + const generatorsJson = JSON.parse( + await readFile(generatorsJsonPath, 'utf8'), + ); + + for (const generator of Object.values(generatorsJson.generators)) { + const gen = generator as { factory: string }; + if (gen.factory && !gen.factory.endsWith('.cjs')) { + gen.factory = gen.factory.replace(/\.js$/, '') + '.cjs'; + } + } + + await writeFile( + generatorsJsonPath, + JSON.stringify(generatorsJson, null, 2) + '\n', + 'utf8', + ); + + // Copy and update executors.json + const executorsJsonPath = join(__dirname, 'dist', 'executors.json'); + await copyFile(join(__dirname, 'executors.json'), executorsJsonPath); + + const executorsJson = JSON.parse(await readFile(executorsJsonPath, 'utf8')); + + for (const executor of Object.values(executorsJson.executors)) { + const exec = executor as { implementation: string }; + if (exec.implementation && !exec.implementation.endsWith('.cjs')) { + exec.implementation = exec.implementation.replace(/\.js$/, '') + '.cjs'; + } + } + + await writeFile( + executorsJsonPath, + JSON.stringify(executorsJson, null, 2) + '\n', + 'utf8', + ); + }, }); diff --git a/tsdown.base.ts b/tsdown.base.ts index 6f733f128..46ed71acb 100644 --- a/tsdown.base.ts +++ b/tsdown.base.ts @@ -1,13 +1,37 @@ +import { readFileSync } from 'node:fs'; import { readFile, writeFile } from 'node:fs/promises'; import { join } from 'node:path'; import { type UserConfig, defineConfig } from 'tsdown'; -export function baseConfig(options: { - projectRoot: string; - projectName?: string; -}): UserConfig { +export function baseConfig(options: { projectRoot: string }): UserConfig { const { projectRoot } = options; + // Read package.json to get additional files to copy + const packageJsonPath = join(projectRoot, 'package.json'); + let additionalCopyFiles: Array<{ from: string; to: string }> = []; + + try { + const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8')); + + if (packageJson.files && Array.isArray(packageJson.files)) { + additionalCopyFiles = packageJson.files + .filter((file: string) => { + // Skip negation patterns (starting with !) + if (file.startsWith('!')) return false; + // Skip 'src' as it's already handled by the build output + if (file === 'src') return false; + // Include files that start with ./ or are specific files + return file.startsWith('./') || !file.includes('/'); + }) + .map((file: string) => ({ + from: join(projectRoot, file), + to: join(projectRoot, 'dist', file), + })); + } + } catch (error) { + // If package.json doesn't exist or can't be read, continue without additional files + } + return defineConfig({ entry: `${projectRoot}/src/**/!(*.test|*.mock).ts`, tsconfig: `${projectRoot}/tsconfig.lib.json`, @@ -28,6 +52,7 @@ export function baseConfig(options: { from: `${projectRoot}/README.md`, to: `${projectRoot}/dist/README.md`, }, + ...additionalCopyFiles, ], async onSuccess() { const distPackageJsonPath = join(projectRoot, 'dist', 'package.json');