diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 469a4c9f..a952b56b 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -71,6 +71,8 @@ jobs: # satisfying each package's required peer dependencies (e.g. valibot ^1.0.0 → 1.0.0) to catch # use of features they lack. Optional peers (i.e. TypeScript) are covered by their own matrix. - name: Install Lowest Peer Dependencies + # Explicit bash adds pipefail, so a failing `npm view` fails the step instead of being piped onward + shell: bash run: | { echo "### Lowest Peer Dependencies" @@ -83,7 +85,8 @@ jobs: name="$(jq -r '.name' "$manifest")" specifiers=() while IFS=$'\t' read -r peer range; do - version="$(npm view "$peer@$range" version --json | jq -r 'if type == "array" then .[] else . end' | sort -V | head -n 1)" + # --prefix keeps npm from reading the root package.json, whose devEngines (pnpm) npm rejects + version="$(npm view "$peer@$range" version --json --prefix "$RUNNER_TEMP" | jq -r 'if type == "array" then .[] else . end' | sort -V | head -n 1)" if [[ -z "$version" ]]; then echo "::error file=$manifest::No published version of $peer satisfies $range." exit 1 diff --git a/.nvmrc b/.nvmrc deleted file mode 100644 index 7baf24be..00000000 --- a/.nvmrc +++ /dev/null @@ -1 +0,0 @@ -24.21.0 \ No newline at end of file diff --git a/mise.toml b/mise.toml index 157c1568..6a7e1ac3 100644 --- a/mise.toml +++ b/mise.toml @@ -1,2 +1,2 @@ [settings] -idiomatic_version_file_enable_tools = ["node"] +idiomatic_version_file_enable_tools = ["node", "pnpm"] diff --git a/package.json b/package.json index 0d489b3c..374d2c96 100644 --- a/package.json +++ b/package.json @@ -27,5 +27,16 @@ "typescript": "7.0.2", "vitest": "5.0.3" }, - "packageManager": "pnpm@12.9.1" + "devEngines": { + "packageManager": { + "name": "pnpm", + "version": "12.9.1", + "onFail": "download" + }, + "runtime": { + "name": "node", + "version": "^24.21.0", + "onFail": "download" + } + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 63521642..56535df6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -175,6 +175,9 @@ importers: '@vitest/coverage-v8': specifier: 5.0.3 version: 5.0.3(vitest@5.0.3) + node: + specifier: runtime:^24.21.0 + version: runtime:24.21.0 oxfmt: specifier: 0.72.0 version: 0.72.0 @@ -1207,6 +1210,138 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + node@runtime:24.21.0: + resolution: + type: variations + variants: + - resolution: + archive: tarball + bin: + node: bin/node + integrity: sha256-rseyRkr7mfB4wZywbSAdVDvTsxHLoHEoK84bF8l+WLs= + type: binary + url: https://nodejs.org/download/release/v24.21.0/node-v24.21.0-aix-ppc64.tar.gz + targets: + - cpu: ppc64 + os: aix + - resolution: + archive: tarball + bin: + node: bin/node + integrity: sha256-vtfupTJeEQjzLOUijd1qXw8IpJnuQqp0Qq6lg3AvYFc= + type: binary + url: https://nodejs.org/download/release/v24.21.0/node-v24.21.0-darwin-arm64.tar.gz + targets: + - cpu: arm64 + os: darwin + - resolution: + archive: tarball + bin: + node: bin/node + integrity: sha256-FGLLOzBGuBXPjqQ209pFDsGp8R2sflpGsK2lMF1+gJc= + type: binary + url: https://nodejs.org/download/release/v24.21.0/node-v24.21.0-darwin-x64.tar.gz + targets: + - cpu: x64 + os: darwin + - resolution: + archive: tarball + bin: + node: bin/node + integrity: sha256-ckKCw7Q67JmKqVJzgEZbRdIp4CG1gDX19PYwleq/5dU= + type: binary + url: https://nodejs.org/download/release/v24.21.0/node-v24.21.0-linux-arm64.tar.gz + targets: + - cpu: arm64 + os: linux + - resolution: + archive: tarball + bin: + node: bin/node + integrity: sha256-UcXVMGbukpILYXg7A7Buy5nzZhFg97Fcp36EdBFaZ7w= + type: binary + url: https://nodejs.org/download/release/v24.21.0/node-v24.21.0-linux-ppc64le.tar.gz + targets: + - cpu: ppc64le + os: linux + - resolution: + archive: tarball + bin: + node: bin/node + integrity: sha256-Xy+jdCLgx13jXBaG/lHXgyTywqj+LMI5pB2cAAop2Tg= + type: binary + url: https://nodejs.org/download/release/v24.21.0/node-v24.21.0-linux-s390x.tar.gz + targets: + - cpu: s390x + os: linux + - resolution: + archive: tarball + bin: + node: bin/node + integrity: sha256-PWNAX8ZaDS0pdsHwvC/Se7C9ByEkaecFqsPwOuWrTJw= + type: binary + url: https://nodejs.org/download/release/v24.21.0/node-v24.21.0-linux-x64-musl.tar.gz + targets: + - cpu: x64 + os: linux + libc: musl + - resolution: + archive: tarball + bin: + node: bin/node + integrity: sha256-bh24fvWLiBnl1UAu/xU2SRsY7djre+5e94l4duiNxf8= + type: binary + url: https://nodejs.org/download/release/v24.21.0/node-v24.21.0-linux-x64.tar.gz + targets: + - cpu: x64 + os: linux + - resolution: + archive: zip + bin: + node: node.exe + integrity: sha256-h3mxveHTn41CDjtXqmV7OYka9DTT3kSpGQRM7AZ4WSE= + prefix: node-v24.21.0-win-arm64 + type: binary + url: https://nodejs.org/download/release/v24.21.0/node-v24.21.0-win-arm64.zip + targets: + - cpu: arm64 + os: win32 + - resolution: + archive: zip + bin: + node: node.exe + integrity: sha256-FY92hbRN5R9sDfHRU1JsvNPhvHOajfxgdyHO913p5UE= + prefix: node-v24.21.0-win-x64 + type: binary + url: https://nodejs.org/download/release/v24.21.0/node-v24.21.0-win-x64.zip + targets: + - cpu: x64 + os: win32 + - resolution: + archive: tarball + bin: + node: bin/node + integrity: sha256-MEiwgR4VjKDYZytZyDmGF2PhREkpgNjSmzad/uRXR+Q= + type: binary + url: https://unofficial-builds.nodejs.org/download/release/v24.21.0/node-v24.21.0-linux-arm64-musl.tar.gz + targets: + - cpu: arm64 + os: linux + libc: musl + - resolution: + archive: tarball + bin: + node: bin/node + integrity: sha256-AacT402pjntNKjGR7nyj+T3QOE0aLvI8N5shYe5uEzo= + type: binary + url: https://unofficial-builds.nodejs.org/download/release/v24.21.0/node-v24.21.0-linux-x64-musl.tar.gz + targets: + - cpu: x64 + os: linux + libc: musl + version: 24.21.0 + hasBin: true + obug@2.2.1: resolution: {integrity: sha512-XrsrhT5sybtKI6wakr2SPOlGZWWYbUXZ7a0jT8/QOeAPau+1X/bSegNe5YR75oJmEZQbKningirmGOEJCIk61Q==} engines: {node: '>=12.20.0'} @@ -2048,6 +2183,8 @@ snapshots: nanoid@3.3.19: {} + node@runtime:24.21.0: {} + obug@2.2.1: {} obug@3.0.0: {}