From e067a2a826a201ebe1285823c0715b9d61346f16 Mon Sep 17 00:00:00 2001 From: sapphi-red <49056869+sapphi-red@users.noreply.github.com> Date: Wed, 7 Jan 2026 21:28:05 +0900 Subject: [PATCH 1/2] ci: setup trusted publishing --- .github/workflows/publish.yml | 38 +++ package.json | 7 +- pnpm-lock.yaml | 489 +++++++++++++++------------------- scripts/publishCI.ts | 7 + scripts/release.ts | 204 +------------- scripts/releaseUtils.ts | 37 +++ 6 files changed, 307 insertions(+), 475 deletions(-) create mode 100644 .github/workflows/publish.yml create mode 100644 scripts/publishCI.ts create mode 100644 scripts/releaseUtils.ts diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..a1991ac --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,38 @@ +name: Publish Package + +on: + push: + tags: + - "v*" # Push events to matching v*, i.e. v1.0, v20.15.10 + +jobs: + publish: + runs-on: ubuntu-latest + permissions: + contents: read + id-token: write + environment: Release + steps: + - uses: actions/checkout@v6 + + - uses: pnpm/action-setup@v4 + + - name: Set node version to 22 + uses: actions/setup-node@v6 + with: + node-version: 22 + registry-url: https://registry.npmjs.org/ + # disable cache, to avoid cache poisoning (https://docs.zizmor.sh/audits/#cache-poisoning) + package-manager-cache: false + cache: "pnpm" + + - name: Disallow installation scripts + run: yq '.onlyBuiltDependencies = []' -i pnpm-workspace.yaml + + - name: Install deps + run: pnpm install + env: + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: "1" + + - name: Publish package + run: npm i -g npm@^11.5.2 && pnpm run ci-publish ${{ github.ref_name }} diff --git a/package.json b/package.json index 1f43ea9..dbad826 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "test": "vitest run", "format": "prettier --write --cache .", "release": "tsx -C import scripts/release.ts", - "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s" + "ci-publish": "tsx scripts/publishCI.ts" }, "engines": { "node": "^18.0.0 || ^20.0.0 || >=22.0.0" @@ -47,14 +47,11 @@ }, "devDependencies": { "@types/node": "^24.10.4", - "conventional-changelog-cli": "^5.0.0", - "enquirer": "^2.4.1", + "@vitejs/release-scripts": "^1.6.0", "execa": "^9.6.1", - "minimist": "^1.2.8", "node-forge": "^1.3.3", "picocolors": "^1.1.1", "prettier": "^3.7.4", - "semver": "^7.7.3", "tsx": "^4.21.0", "typescript": "^5.9.3", "unbuild": "^3.6.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8778b06..e05eaef 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,18 +11,12 @@ importers: '@types/node': specifier: ^24.10.4 version: 24.10.4 - conventional-changelog-cli: - specifier: ^5.0.0 - version: 5.0.0(conventional-commits-filter@5.0.0) - enquirer: - specifier: ^2.4.1 - version: 2.4.1 + '@vitejs/release-scripts': + specifier: ^1.6.0 + version: 1.6.0(conventional-commits-filter@5.0.0) execa: specifier: ^9.6.1 version: 9.6.1 - minimist: - specifier: ^1.2.8 - version: 1.2.8 node-forge: specifier: ^1.3.3 version: 1.3.3 @@ -32,9 +26,6 @@ importers: prettier: specifier: ^3.7.4 version: 3.7.4 - semver: - specifier: ^7.7.3 - version: 7.7.3 tsx: specifier: ^4.21.0 version: 4.21.0 @@ -55,28 +46,20 @@ importers: packages: - '@babel/code-frame@7.26.2': - resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} - engines: {node: '>=6.9.0'} - '@babel/code-frame@7.27.1': resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.25.9': - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.27.1': resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} - '@conventional-changelog/git-client@1.0.1': - resolution: {integrity: sha512-PJEqBwAleffCMETaVm/fUgHldzBE35JFk3/9LL6NUA5EXa3qednu+UT6M7E5iBu3zIQZCULYIiZ90fBYHt6xUw==} + '@conventional-changelog/git-client@2.5.1': + resolution: {integrity: sha512-lAw7iA5oTPWOLjiweb7DlGEMDEvzqzLLa6aWOly2FSZ64IwLE8T458rC+o+WvI31Doz6joM7X2DoNog7mX8r4A==} engines: {node: '>=18'} peerDependencies: conventional-commits-filter: ^5.0.0 - conventional-commits-parser: ^6.0.0 + conventional-commits-parser: ^6.1.0 peerDependenciesMeta: conventional-commits-filter: optional: true @@ -395,13 +378,13 @@ packages: cpu: [x64] os: [win32] - '@hutson/parse-repository-url@5.0.0': - resolution: {integrity: sha512-e5+YUKENATs1JgYHMzTr2MW/NDcXGfYFAuOQU8gJgF/kEh4EqKgfGrfLI67bMD4tbhZVlkigz/9YYwWcbOFthg==} - engines: {node: '>=10.13.0'} - '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + '@publint/pack@0.1.2': + resolution: {integrity: sha512-S+9ANAvUmjutrshV4jZjaiG8XQyuJIZ8a4utWmN/vW1sgQ9IfBnPndwkmQYw53QmouOIytT874u65HEmu6H5jw==} + engines: {node: '>=18'} + '@rollup/plugin-alias@5.1.1': resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} engines: {node: '>=14.0.0'} @@ -569,6 +552,14 @@ packages: '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + '@simple-libs/child-process-utils@1.0.1': + resolution: {integrity: sha512-3nWd8irxvDI6v856wpPCHZ+08iQR0oHTZfzAZmnbsLzf+Sf1odraP6uKOHDZToXq3RPRV/LbqGVlSCogm9cJjg==} + engines: {node: '>=18'} + + '@simple-libs/stream-utils@1.1.0': + resolution: {integrity: sha512-6rsHTjodIn/t90lv5snQjRPVtOosM7Vp0AKdrObymq45ojlgVwnpAqdc+0OBBrpEiy31zZ6/TKeIVqV1HwvnuQ==} + engines: {node: '>=18'} + '@sindresorhus/merge-streams@4.0.0': resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} engines: {node: '>=18'} @@ -585,6 +576,9 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/node@22.19.3': + resolution: {integrity: sha512-1N9SBnWYOJTrNZCdh/yJE+t910Y128BoyY+zBLWhL3r0TYzlTmFdXrPwHL9DyFZmlEXNQQolTZh3KHV31QDhyA==} + '@types/node@24.10.4': resolution: {integrity: sha512-vnDVpYPMzs4wunl27jHrfmwojOGKya0xyM3sH+UE5iv5uPS6vX7UIoh6m+vQc5LGBq52HBKPIn/zcSZVzeDEZg==} @@ -594,8 +588,8 @@ packages: '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - '@types/semver@7.5.8': - resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + '@vitejs/release-scripts@1.6.0': + resolution: {integrity: sha512-XV+w22Fvn+wqDtEkz8nQIJzvmRVSh90c2xvOO7cX9fkX8+39ZJpYRiXDIRJG1JRnF8khm1rHjulid+l+khc7TQ==} '@vitest/expect@4.0.16': resolution: {integrity: sha512-eshqULT2It7McaJkQGLkPjPjNph+uevROGuIMJdG3V+0BSR2w9u6J9Lwu+E8cK5TETlfou8GRijhafIMhXsimA==} @@ -636,17 +630,6 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - add-stream@1.0.0: - resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==} - - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - array-ify@1.0.0: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} @@ -713,70 +696,30 @@ packages: resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} engines: {node: ^14.18.0 || >=16.10.0} - conventional-changelog-angular@8.0.0: - resolution: {integrity: sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==} - engines: {node: '>=18'} - - conventional-changelog-atom@5.0.0: - resolution: {integrity: sha512-WfzCaAvSCFPkznnLgLnfacRAzjgqjLUjvf3MftfsJzQdDICqkOOpcMtdJF3wTerxSpv2IAAjX8doM3Vozqle3g==} - engines: {node: '>=18'} - - conventional-changelog-cli@5.0.0: - resolution: {integrity: sha512-9Y8fucJe18/6ef6ZlyIlT2YQUbczvoQZZuYmDLaGvcSBP+M6h+LAvf7ON7waRxKJemcCII8Yqu5/8HEfskTxJQ==} - engines: {node: '>=18'} - hasBin: true - - conventional-changelog-codemirror@5.0.0: - resolution: {integrity: sha512-8gsBDI5Y3vrKUCxN6Ue8xr6occZ5nsDEc4C7jO/EovFGozx8uttCAyfhRrvoUAWi2WMm3OmYs+0mPJU7kQdYWQ==} - engines: {node: '>=18'} - - conventional-changelog-conventionalcommits@8.0.0: - resolution: {integrity: sha512-eOvlTO6OcySPyyyk8pKz2dP4jjElYunj9hn9/s0OB+gapTO8zwS9UQWrZ1pmF2hFs3vw1xhonOLGcGjy/zgsuA==} - engines: {node: '>=18'} - - conventional-changelog-core@8.0.0: - resolution: {integrity: sha512-EATUx5y9xewpEe10UEGNpbSHRC6cVZgO+hXQjofMqpy+gFIrcGvH3Fl6yk2VFKh7m+ffenup2N7SZJYpyD9evw==} - engines: {node: '>=18'} - - conventional-changelog-ember@5.0.0: - resolution: {integrity: sha512-RPflVfm5s4cSO33GH/Ey26oxhiC67akcxSKL8CLRT3kQX2W3dbE19sSOM56iFqUJYEwv9mD9r6k79weWe1urfg==} - engines: {node: '>=18'} - - conventional-changelog-eslint@6.0.0: - resolution: {integrity: sha512-eiUyULWjzq+ybPjXwU6NNRflApDWlPEQEHvI8UAItYW/h22RKkMnOAtfCZxMmrcMO1OKUWtcf2MxKYMWe9zJuw==} - engines: {node: '>=18'} - - conventional-changelog-express@5.0.0: - resolution: {integrity: sha512-D8Q6WctPkQpvr2HNCCmwU5GkX22BVHM0r4EW8vN0230TSyS/d6VQJDAxGb84lbg0dFjpO22MwmsikKL++Oo/oQ==} - engines: {node: '>=18'} - - conventional-changelog-jquery@6.0.0: - resolution: {integrity: sha512-2kxmVakyehgyrho2ZHBi90v4AHswkGzHuTaoH40bmeNqUt20yEkDOSpw8HlPBfvEQBwGtbE+5HpRwzj6ac2UfA==} - engines: {node: '>=18'} - - conventional-changelog-jshint@5.0.0: - resolution: {integrity: sha512-gGNphSb/opc76n2eWaO6ma4/Wqu3tpa2w7i9WYqI6Cs2fncDSI2/ihOfMvXveeTTeld0oFvwMVNV+IYQIk3F3g==} + conventional-changelog-conventionalcommits@9.1.0: + resolution: {integrity: sha512-MnbEysR8wWa8dAEvbj5xcBgJKQlX/m0lhS8DsyAAWDHdfs2faDJxTgzRYlRYpXSe7UiKrIIlB4TrBKU9q9DgkA==} engines: {node: '>=18'} conventional-changelog-preset-loader@5.0.0: resolution: {integrity: sha512-SetDSntXLk8Jh1NOAl1Gu5uLiCNSYenB5tm0YVeZKePRIgDW9lQImromTwLa3c/Gae298tsgOM+/CYT9XAl0NA==} engines: {node: '>=18'} - conventional-changelog-writer@8.0.1: - resolution: {integrity: sha512-hlqcy3xHred2gyYg/zXSMXraY2mjAYYo0msUCpK+BGyaVJMFCKWVXPIHiaacGO2GGp13kvHWXFhYmxT4QQqW3Q==} + conventional-changelog-writer@8.2.0: + resolution: {integrity: sha512-Y2aW4596l9AEvFJRwFGJGiQjt2sBYTjPD18DdvxX9Vpz0Z7HQ+g1Z+6iYDAm1vR3QOJrDBkRHixHK/+FhkR6Pw==} engines: {node: '>=18'} hasBin: true - conventional-changelog@6.0.0: - resolution: {integrity: sha512-tuUH8H/19VjtD9Ig7l6TQRh+Z0Yt0NZ6w/cCkkyzUbGQTnUEmKfGtkC9gGfVgCfOL1Rzno5NgNF4KY8vR+Jo3w==} + conventional-changelog@7.1.1: + resolution: {integrity: sha512-rlqa8Lgh8YzT3Akruk05DR79j5gN9NCglHtJZwpi6vxVeaoagz+84UAtKQj/sT+RsfGaZkt3cdFCjcN6yjr5sw==} engines: {node: '>=18'} + hasBin: true conventional-commits-filter@5.0.0: resolution: {integrity: sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==} engines: {node: '>=18'} - conventional-commits-parser@6.1.0: - resolution: {integrity: sha512-5nxDo7TwKB5InYBl4ZC//1g9GRwB/F3TXOGR9hgUjMGfvSP4Vu5NkpNro2+1+TIEy1vwxApl5ircECr2ri5JIw==} + conventional-commits-parser@6.2.1: + resolution: {integrity: sha512-20pyHgnO40rvfI0NGF/xiEoFMkXDtkF8FwHvk5BokoFoCuTQRI8vrNCNFWUOfuolKJMm1tPCHc8GgYEtr1XRNA==} engines: {node: '>=18'} hasBin: true @@ -862,10 +805,6 @@ packages: electron-to-chromium@1.5.237: resolution: {integrity: sha512-icUt1NvfhGLar5lSWH3tHNzablaA5js3HVHacQimfP8ViEBOQv+L7DKEuHdbTZ0SKCO1ogTJTIL1Gwk9S6Qvcg==} - enquirer@2.4.1: - resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} - engines: {node: '>=8.6'} - entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -893,6 +832,10 @@ packages: estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + execa@9.6.1: resolution: {integrity: sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==} engines: {node: ^18.19.0 || >=20.5.0} @@ -904,6 +847,9 @@ packages: exsolve@1.0.7: resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} + fd-package-json@2.0.0: + resolution: {integrity: sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ==} + fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -917,10 +863,6 @@ packages: resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} engines: {node: '>=18'} - find-up-simple@1.0.0: - resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==} - engines: {node: '>=18'} - fix-dts-default-cjs-exports@1.0.1: resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} @@ -935,6 +877,10 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + get-stream@9.0.1: resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} engines: {node: '>=18'} @@ -942,16 +888,6 @@ packages: get-tsconfig@4.10.0: resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} - git-raw-commits@5.0.0: - resolution: {integrity: sha512-I2ZXrXeOc0KrCvC7swqtIFXFN+rbjnC7b2T943tvemIOVNl+XP8YnA9UVwqFhzzLClnSA60KR/qEjLpXzs73Qg==} - engines: {node: '>=18'} - hasBin: true - - git-semver-tags@8.0.0: - resolution: {integrity: sha512-N7YRIklvPH3wYWAR2vysaqGLPRcpwQ0GKdlqTiVN5w1UmCdaeY3K8s6DMKRCh54DDdzyt/OAB6C8jgVtb7Y2Fg==} - engines: {node: '>=18'} - hasBin: true - handlebars@4.7.8: resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} engines: {node: '>=0.4.7'} @@ -964,18 +900,18 @@ packages: hookable@5.5.3: resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} - hosted-git-info@7.0.2: - resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} - engines: {node: ^16.14.0 || >=18.0.0} + hosted-git-info@8.1.0: + resolution: {integrity: sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==} + engines: {node: ^18.17.0 || >=20.5.0} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} human-signals@8.0.1: resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} engines: {node: '>=18.18.0'} - index-to-position@0.1.2: - resolution: {integrity: sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==} - engines: {node: '>=18'} - is-core-module@2.16.1: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} @@ -994,6 +930,10 @@ packages: is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-stream@4.0.1: resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} engines: {node: '>=18'} @@ -1016,6 +956,10 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + knitwork@1.2.0: resolution: {integrity: sha512-xYSH7AvuQ6nXkq42x0v5S8/Iry+cfulBz/DJQzhIyESdLD7425jXsPy4vn5cCXU+HhRN2kVw51Vd1K6/By4BQg==} @@ -1048,6 +992,13 @@ packages: resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} engines: {node: '>=18'} + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -1078,6 +1029,10 @@ packages: mlly@1.8.0: resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -1096,14 +1051,18 @@ packages: node-releases@2.0.25: resolution: {integrity: sha512-4auku8B/vw5psvTiiN9j1dAOsXvMoGqJuKJcR+dTdqiXEK20mMTk1UEo3HS16LeGQsVG6+qKTPM9u/qQ2LqATA==} - normalize-package-data@6.0.2: - resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} - engines: {node: ^16.14.0 || >=18.0.0} + normalize-package-data@7.0.1: + resolution: {integrity: sha512-linxNAT6M0ebEYZOx2tO6vBEFsVgnPpv+AVjk0wJHfaUIbq31Jm3T6vvZaarnOeWDh8ShnwXuaAyM7WT3RzErA==} + engines: {node: ^18.17.0 || >=20.5.0} normalize-range@0.1.2: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + npm-run-path@6.0.0: resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} engines: {node: '>=18'} @@ -1114,9 +1073,12 @@ packages: obug@2.1.1: resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} - parse-json@8.1.0: - resolution: {integrity: sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==} - engines: {node: '>=18'} + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + package-manager-detector@1.6.0: + resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} parse-ms@4.0.0: resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} @@ -1341,13 +1303,14 @@ packages: resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} engines: {node: '>=18'} - read-package-up@11.0.0: - resolution: {integrity: sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==} - engines: {node: '>=18'} + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} - read-pkg@9.0.1: - resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} + publint@0.3.16: + resolution: {integrity: sha512-MFqyfRLAExPVZdTQFwkAQELzA8idyXzROVOytg6nEJ/GEypXBUmMGrVaID8cTuzRS1U5L8yTOdOJtMXgFUJAeA==} engines: {node: '>=18'} + hasBin: true resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} @@ -1369,6 +1332,10 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + sax@1.4.1: resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} @@ -1395,6 +1362,9 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -1421,9 +1391,9 @@ packages: std-env@3.10.0: resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} strip-final-newline@4.0.0: resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} @@ -1444,14 +1414,6 @@ packages: engines: {node: '>=16'} hasBin: true - temp-dir@3.0.0: - resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} - engines: {node: '>=14.16'} - - tempfile@5.0.0: - resolution: {integrity: sha512-bX655WZI/F7EoTDw9JvQURqAXiPHi8o8+yFxPF2lWYyz1aHnmMRuXWqL6YB6GmeO0o4DIYWHLgGNi/X64T+X4Q==} - engines: {node: '>=14.18'} - tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} @@ -1472,10 +1434,6 @@ packages: engines: {node: '>=18.0.0'} hasBin: true - type-fest@4.35.0: - resolution: {integrity: sha512-2/AwEFQDFEy30iOLjrvHDIH7e4HEWH+f1Yl1bI5XMqzuoCUqwYCdxachgsgv0og/JdVZUhbfjcJAoHj5L1753A==} - engines: {node: '>=16'} - typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} @@ -1501,13 +1459,12 @@ packages: typescript: optional: true + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} - unicorn-magic@0.1.0: - resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} - engines: {node: '>=18'} - unicorn-magic@0.3.0: resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} engines: {node: '>=18'} @@ -1608,6 +1565,10 @@ packages: jsdom: optional: true + walk-up-path@4.0.0: + resolution: {integrity: sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==} + engines: {node: 20 || >=22} + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -1627,12 +1588,6 @@ packages: snapshots: - '@babel/code-frame@7.26.2': - dependencies: - '@babel/helper-validator-identifier': 7.25.9 - js-tokens: 4.0.0 - picocolors: 1.1.1 - '@babel/code-frame@7.27.1': dependencies: '@babel/helper-validator-identifier': 7.27.1 @@ -1640,18 +1595,17 @@ snapshots: picocolors: 1.1.1 optional: true - '@babel/helper-validator-identifier@7.25.9': {} - '@babel/helper-validator-identifier@7.27.1': optional: true - '@conventional-changelog/git-client@1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.1.0)': + '@conventional-changelog/git-client@2.5.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.1)': dependencies: - '@types/semver': 7.5.8 + '@simple-libs/child-process-utils': 1.0.1 + '@simple-libs/stream-utils': 1.1.0 semver: 7.7.3 optionalDependencies: conventional-commits-filter: 5.0.0 - conventional-commits-parser: 6.1.0 + conventional-commits-parser: 6.2.1 '@esbuild/aix-ppc64@0.25.11': optional: true @@ -1809,10 +1763,10 @@ snapshots: '@esbuild/win32-x64@0.27.1': optional: true - '@hutson/parse-repository-url@5.0.0': {} - '@jridgewell/sourcemap-codec@1.5.5': {} + '@publint/pack@0.1.2': {} + '@rollup/plugin-alias@5.1.1(rollup@4.52.5)': optionalDependencies: rollup: 4.52.5 @@ -1928,6 +1882,15 @@ snapshots: '@sec-ant/readable-stream@0.4.1': {} + '@simple-libs/child-process-utils@1.0.1': + dependencies: + '@simple-libs/stream-utils': 1.1.0 + '@types/node': 22.19.3 + + '@simple-libs/stream-utils@1.1.0': + dependencies: + '@types/node': 22.19.3 + '@sindresorhus/merge-streams@4.0.0': {} '@standard-schema/spec@1.0.0': {} @@ -1940,6 +1903,10 @@ snapshots: '@types/estree@1.0.8': {} + '@types/node@22.19.3': + dependencies: + undici-types: 6.21.0 + '@types/node@24.10.4': dependencies: undici-types: 7.16.0 @@ -1948,7 +1915,18 @@ snapshots: '@types/resolve@1.20.2': {} - '@types/semver@7.5.8': {} + '@vitejs/release-scripts@1.6.0(conventional-commits-filter@5.0.0)': + dependencies: + conventional-changelog: 7.1.1(conventional-commits-filter@5.0.0) + conventional-changelog-conventionalcommits: 9.1.0 + execa: 8.0.1 + mri: 1.2.0 + picocolors: 1.1.1 + prompts: 2.4.2 + publint: 0.3.16 + semver: 7.7.3 + transitivePeerDependencies: + - conventional-commits-filter '@vitest/expect@4.0.16': dependencies: @@ -1993,12 +1971,6 @@ snapshots: acorn@8.15.0: {} - add-stream@1.0.0: {} - - ansi-colors@4.1.3: {} - - ansi-regex@5.0.1: {} - array-ify@1.0.0: {} autoprefixer@10.4.21(postcss@8.5.6): @@ -2064,82 +2036,35 @@ snapshots: consola@3.4.2: {} - conventional-changelog-angular@8.0.0: - dependencies: - compare-func: 2.0.0 - - conventional-changelog-atom@5.0.0: {} - - conventional-changelog-cli@5.0.0(conventional-commits-filter@5.0.0): - dependencies: - add-stream: 1.0.0 - conventional-changelog: 6.0.0(conventional-commits-filter@5.0.0) - meow: 13.2.0 - tempfile: 5.0.0 - transitivePeerDependencies: - - conventional-commits-filter - - conventional-changelog-codemirror@5.0.0: {} - - conventional-changelog-conventionalcommits@8.0.0: - dependencies: - compare-func: 2.0.0 - - conventional-changelog-core@8.0.0(conventional-commits-filter@5.0.0): - dependencies: - '@hutson/parse-repository-url': 5.0.0 - add-stream: 1.0.0 - conventional-changelog-writer: 8.0.1 - conventional-commits-parser: 6.1.0 - git-raw-commits: 5.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.1.0) - git-semver-tags: 8.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.1.0) - hosted-git-info: 7.0.2 - normalize-package-data: 6.0.2 - read-package-up: 11.0.0 - read-pkg: 9.0.1 - transitivePeerDependencies: - - conventional-commits-filter - - conventional-changelog-ember@5.0.0: {} - - conventional-changelog-eslint@6.0.0: {} - - conventional-changelog-express@5.0.0: {} - - conventional-changelog-jquery@6.0.0: {} - - conventional-changelog-jshint@5.0.0: + conventional-changelog-conventionalcommits@9.1.0: dependencies: compare-func: 2.0.0 conventional-changelog-preset-loader@5.0.0: {} - conventional-changelog-writer@8.0.1: + conventional-changelog-writer@8.2.0: dependencies: conventional-commits-filter: 5.0.0 handlebars: 4.7.8 meow: 13.2.0 semver: 7.7.3 - conventional-changelog@6.0.0(conventional-commits-filter@5.0.0): - dependencies: - conventional-changelog-angular: 8.0.0 - conventional-changelog-atom: 5.0.0 - conventional-changelog-codemirror: 5.0.0 - conventional-changelog-conventionalcommits: 8.0.0 - conventional-changelog-core: 8.0.0(conventional-commits-filter@5.0.0) - conventional-changelog-ember: 5.0.0 - conventional-changelog-eslint: 6.0.0 - conventional-changelog-express: 5.0.0 - conventional-changelog-jquery: 6.0.0 - conventional-changelog-jshint: 5.0.0 + conventional-changelog@7.1.1(conventional-commits-filter@5.0.0): + dependencies: + '@conventional-changelog/git-client': 2.5.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.2.1) + '@types/normalize-package-data': 2.4.4 conventional-changelog-preset-loader: 5.0.0 + conventional-changelog-writer: 8.2.0 + conventional-commits-parser: 6.2.1 + fd-package-json: 2.0.0 + meow: 13.2.0 + normalize-package-data: 7.0.1 transitivePeerDependencies: - conventional-commits-filter conventional-commits-filter@5.0.0: {} - conventional-commits-parser@6.1.0: + conventional-commits-parser@6.2.1: dependencies: meow: 13.2.0 @@ -2253,11 +2178,6 @@ snapshots: electron-to-chromium@1.5.237: {} - enquirer@2.4.1: - dependencies: - ansi-colors: 4.1.3 - strip-ansi: 6.0.1 - entities@4.5.0: {} es-module-lexer@1.7.0: {} @@ -2328,6 +2248,18 @@ snapshots: dependencies: '@types/estree': 1.0.8 + execa@8.0.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + execa@9.6.1: dependencies: '@sindresorhus/merge-streams': 4.0.0 @@ -2347,6 +2279,10 @@ snapshots: exsolve@1.0.7: {} + fd-package-json@2.0.0: + dependencies: + walk-up-path: 4.0.0 + fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 @@ -2355,8 +2291,6 @@ snapshots: dependencies: is-unicode-supported: 2.1.0 - find-up-simple@1.0.0: {} - fix-dts-default-cjs-exports@1.0.1: dependencies: magic-string: 0.30.21 @@ -2370,6 +2304,8 @@ snapshots: function-bind@1.1.2: {} + get-stream@8.0.1: {} + get-stream@9.0.1: dependencies: '@sec-ant/readable-stream': 0.4.1 @@ -2379,22 +2315,6 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 - git-raw-commits@5.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.1.0): - dependencies: - '@conventional-changelog/git-client': 1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.1.0) - meow: 13.2.0 - transitivePeerDependencies: - - conventional-commits-filter - - conventional-commits-parser - - git-semver-tags@8.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.1.0): - dependencies: - '@conventional-changelog/git-client': 1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.1.0) - meow: 13.2.0 - transitivePeerDependencies: - - conventional-commits-filter - - conventional-commits-parser - handlebars@4.7.8: dependencies: minimist: 1.2.8 @@ -2410,13 +2330,13 @@ snapshots: hookable@5.5.3: {} - hosted-git-info@7.0.2: + hosted-git-info@8.1.0: dependencies: lru-cache: 10.4.3 - human-signals@8.0.1: {} + human-signals@5.0.0: {} - index-to-position@0.1.2: {} + human-signals@8.0.1: {} is-core-module@2.16.1: dependencies: @@ -2432,6 +2352,8 @@ snapshots: dependencies: '@types/estree': 1.0.8 + is-stream@3.0.0: {} + is-stream@4.0.1: {} is-unicode-supported@2.1.0: {} @@ -2442,7 +2364,10 @@ snapshots: jiti@2.6.1: {} - js-tokens@4.0.0: {} + js-tokens@4.0.0: + optional: true + + kleur@3.0.3: {} knitwork@1.2.0: {} @@ -2468,6 +2393,10 @@ snapshots: meow@13.2.0: {} + merge-stream@2.0.0: {} + + mimic-fn@4.0.0: {} + minimist@1.2.8: {} mkdist@2.4.1(typescript@5.9.3): @@ -2502,6 +2431,8 @@ snapshots: pkg-types: 1.3.1 ufo: 1.6.1 + mri@1.2.0: {} + nanoid@3.3.11: {} neo-async@2.6.2: {} @@ -2512,14 +2443,18 @@ snapshots: node-releases@2.0.25: {} - normalize-package-data@6.0.2: + normalize-package-data@7.0.1: dependencies: - hosted-git-info: 7.0.2 + hosted-git-info: 8.1.0 semver: 7.7.3 validate-npm-package-license: 3.0.4 normalize-range@0.1.2: {} + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + npm-run-path@6.0.0: dependencies: path-key: 4.0.0 @@ -2531,11 +2466,11 @@ snapshots: obug@2.1.1: {} - parse-json@8.1.0: + onetime@6.0.0: dependencies: - '@babel/code-frame': 7.26.2 - index-to-position: 0.1.2 - type-fest: 4.35.0 + mimic-fn: 4.0.0 + + package-manager-detector@1.6.0: {} parse-ms@4.0.0: {} @@ -2738,19 +2673,17 @@ snapshots: dependencies: parse-ms: 4.0.0 - read-package-up@11.0.0: + prompts@2.4.2: dependencies: - find-up-simple: 1.0.0 - read-pkg: 9.0.1 - type-fest: 4.35.0 + kleur: 3.0.3 + sisteransi: 1.0.5 - read-pkg@9.0.1: + publint@0.3.16: dependencies: - '@types/normalize-package-data': 2.4.4 - normalize-package-data: 6.0.2 - parse-json: 8.1.0 - type-fest: 4.35.0 - unicorn-magic: 0.1.0 + '@publint/pack': 0.1.2 + package-manager-detector: 1.6.0 + picocolors: 1.1.1 + sade: 1.8.1 resolve-pkg-maps@1.0.0: {} @@ -2796,6 +2729,10 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.52.5 fsevents: 2.3.3 + sade@1.8.1: + dependencies: + mri: 1.2.0 + sax@1.4.1: {} scule@1.3.0: {} @@ -2812,6 +2749,8 @@ snapshots: signal-exit@4.1.0: {} + sisteransi@1.0.5: {} + source-map-js@1.2.1: {} source-map@0.6.1: {} @@ -2834,9 +2773,7 @@ snapshots: std-env@3.10.0: {} - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 + strip-final-newline@3.0.0: {} strip-final-newline@4.0.0: {} @@ -2858,12 +2795,6 @@ snapshots: picocolors: 1.1.1 sax: 1.4.1 - temp-dir@3.0.0: {} - - tempfile@5.0.0: - dependencies: - temp-dir: 3.0.0 - tinybench@2.9.0: {} tinyexec@1.0.2: {} @@ -2882,8 +2813,6 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - type-fest@4.35.0: {} - typescript@5.9.3: {} ufo@1.5.4: {} @@ -2927,9 +2856,9 @@ snapshots: - vue-sfc-transformer - vue-tsc - undici-types@7.16.0: {} + undici-types@6.21.0: {} - unicorn-magic@0.1.0: {} + undici-types@7.16.0: {} unicorn-magic@0.3.0: {} @@ -3011,6 +2940,8 @@ snapshots: - tsx - yaml + walk-up-path@4.0.0: {} + which@2.0.2: dependencies: isexe: 2.0.0 diff --git a/scripts/publishCI.ts b/scripts/publishCI.ts new file mode 100644 index 0000000..824df24 --- /dev/null +++ b/scripts/publishCI.ts @@ -0,0 +1,7 @@ +import { publish } from '@vitejs/release-scripts' + +publish({ + defaultPackage: 'plugin-basic-ssl', + getPkgDir: () => '', + packageManager: 'pnpm', +}) diff --git a/scripts/release.ts b/scripts/release.ts index 64248c2..d3435aa 100644 --- a/scripts/release.ts +++ b/scripts/release.ts @@ -1,193 +1,15 @@ -import minimist from 'minimist' -import fs from 'fs' -import path from 'path' +import { generateChangelog, release } from '@vitejs/release-scripts' import colors from 'picocolors' -import semver from 'semver' -import { prompt } from 'enquirer' -import { execa } from 'execa' - -const packageJson = JSON.parse(fs.readFileSync('./package.json', 'utf-8')) -const currentVersion: string = packageJson.version -const args = minimist(process.argv.slice(2)) - -const preId = - args.preid || - (semver.prerelease(currentVersion) && semver.prerelease(currentVersion)[0]) -const isDryRun = args.dry -const skipTests = args.skipTests -const skipBuild = args.skipBuild - -const versionIncrements = [ - 'patch', - 'minor', - 'major', - ...(preId ? ['prepatch', 'preminor', 'premajor', 'prerelease'] : []), -] - -const inc = (i) => semver.inc(currentVersion, i, preId) -const run = (bin, args, opts = {}) => - execa(bin, args, { stdio: 'inherit', ...opts }) -const dryRun = (bin, args, opts = {}) => - console.log(colors.blue(`[dryrun] ${bin} ${args.join(' ')}`), opts) -const runIfNotDry = isDryRun ? dryRun : run -const step = (msg) => console.log(colors.cyan(msg)) - -async function main() { - let targetVersion: string = args._[0] - - if (!targetVersion) { - const choices = versionIncrements - .map((i) => `${i} (${inc(i)})`) - .concat(['custom']) - - // no explicit version, offer suggestions - const { release } = await prompt<{ release: (typeof choices)[number] }>({ - type: 'select', - name: 'release', - message: 'Select release type', - choices: choices, - }) - - if (release === 'custom') { - targetVersion = ( - await prompt<{ version: typeof currentVersion }>({ - type: 'input', - name: 'version', - message: 'Input custom version', - initial: currentVersion, - }) - ).version - } else { - const match = release.match(/\((.*)\)/) - - if (match) { - targetVersion = match[1] - } - } - } - - if (!semver.valid(targetVersion)) { - throw new Error(`invalid target version: ${targetVersion}`) - } - - const { yes } = await prompt<{ yes: boolean }>({ - type: 'confirm', - name: 'yes', - message: `Releasing v${targetVersion}. Confirm?`, - }) - - if (!yes) { - return - } - - // run tests before release - step('\nRunning tests...') - if (!skipTests && !isDryRun) { - await run('pnpm', ['test']) - } else { - console.log(`(skipped)`) - } - - // update package version - updatePackage(targetVersion) - - // build all packages with types - step('\nBuilding for production...') - if (!skipBuild && !isDryRun) { - await run('pnpm', ['run', 'build']) - } else { - console.log(`(skipped)`) - } - - // generate changelog - step('\nGenerating changelog...') - await run(`pnpm`, ['run', 'changelog']) - - // update pnpm-lock.yaml - step('\nUpdating lockfile...') - await run(`pnpm`, ['install', '--prefer-offline']) - - const { stdout } = await run('git', ['diff'], { stdio: 'pipe' }) - if (stdout) { - step('\nCommitting changes...') - await runIfNotDry('git', ['add', '-A']) - await runIfNotDry('git', ['commit', '-m', `release: v${targetVersion}`]) - } else { - console.log('No changes to commit.') - } - - // publish packages - step('\nPublishing...') - await publishPackage(targetVersion, runIfNotDry) - - // push to GitHub - step('\nPushing to GitHub...') - await runIfNotDry('git', ['tag', `v${targetVersion}`]) - await runIfNotDry('git', ['push', 'origin', `refs/tags/v${targetVersion}`]) - await runIfNotDry('git', ['push']) - - if (isDryRun) { - console.log(`\nDry run finished - run git diff to see package changes.`) - } - console.log() -} - -function updatePackage(version) { - const pkgRoot = path.resolve(__dirname, '../') - const pkgPath = path.resolve(pkgRoot, 'package.json') - const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8')) - pkg.version = version - fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n') -} - -async function publishPackage(version, runIfNotDry) { - const pkgRoot = path.resolve(__dirname, '../') - const pkgPath = path.resolve(pkgRoot, 'package.json') - const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8')) - const publishedName = pkg.name - if (pkg.private) { - return - } - - let releaseTag: string | null = null - if (args.tag) { - releaseTag = args.tag - } else if (version.includes('alpha')) { - releaseTag = 'alpha' - } else if (version.includes('beta')) { - releaseTag = 'beta' - } else if (version.includes('rc')) { - releaseTag = 'rc' - } - - step(`Publishing ${publishedName}...`) - try { - await runIfNotDry( - 'pnpm', - [ - 'publish', - ...(releaseTag ? ['--tag', releaseTag] : []), - '--access', - 'public', - ], - { - cwd: pkgRoot, - stdio: 'pipe', - }, - ) - console.log( - colors.green(`Successfully published ${publishedName}@${version}`), - ) - } catch (e) { - if (e.stderr.match(/previously published/)) { - console.log(colors.red(`Skipping already published: ${publishedName}`)) - } else { - throw e - } - } -} - -main().catch((err) => { - updatePackage(currentVersion) - console.error(err) +import { logRecentCommits } from './releaseUtils' + +release({ + repo: 'vite-plugin-basic-ssl', + packages: ['plugin-basic-ssl'], + getPkgDir: () => '', + toTag: (_pkg, version) => `v${version}`, + logChangelog: (pkg) => logRecentCommits(pkg), + generateChangelog: async (_pkgName) => { + console.log(colors.cyan('\nGenerating changelog...')) + await generateChangelog({ getPkgDir: () => '' }) + }, }) diff --git a/scripts/releaseUtils.ts b/scripts/releaseUtils.ts new file mode 100644 index 0000000..e1dd500 --- /dev/null +++ b/scripts/releaseUtils.ts @@ -0,0 +1,37 @@ +import colors from 'picocolors' +import type { Options as ExecaOptions, ResultPromise } from 'execa' +import { execa } from 'execa' +import fs from 'node:fs/promises' + +function run( + bin: string, + args: string[], + opts?: EO, +): ResultPromise { + return execa(bin, args, { stdio: 'inherit', ...opts }) as any +} + +export async function getLatestTag(): Promise { + const pkgJson = JSON.parse(await fs.readFile('package.json', 'utf8')) + const version = pkgJson.version + return `v${version}` +} + +export async function logRecentCommits(pkgName: string): Promise { + const tag = await getLatestTag() + if (!tag) return + const sha = await run('git', ['rev-list', '-n', '1', tag], { + stdio: 'pipe', + }).then((res) => res.stdout.trim()) + console.log( + colors.bold( + `\n${colors.blue(`i`)} Commits of ${colors.green( + pkgName, + )} since ${colors.green(tag)} ${colors.gray(`(${sha.slice(0, 5)})`)}`, + ), + ) + await run('git', ['--no-pager', 'log', `${sha}..HEAD`, '--oneline'], { + stdio: 'inherit', + }) + console.log() +} From 23b91d223dda02076431056de9b1fa6687874f0a Mon Sep 17 00:00:00 2001 From: sapphi-red <49056869+sapphi-red@users.noreply.github.com> Date: Thu, 8 Jan 2026 11:33:03 +0900 Subject: [PATCH 2/2] chore: fix --- scripts/release.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/release.ts b/scripts/release.ts index d3435aa..85ea995 100644 --- a/scripts/release.ts +++ b/scripts/release.ts @@ -5,11 +5,11 @@ import { logRecentCommits } from './releaseUtils' release({ repo: 'vite-plugin-basic-ssl', packages: ['plugin-basic-ssl'], - getPkgDir: () => '', + getPkgDir: () => '.', toTag: (_pkg, version) => `v${version}`, logChangelog: (pkg) => logRecentCommits(pkg), generateChangelog: async (_pkgName) => { console.log(colors.cyan('\nGenerating changelog...')) - await generateChangelog({ getPkgDir: () => '' }) + await generateChangelog({ getPkgDir: () => '.' }) }, })