build(deps): upgrade Node.js to 26 and pnpm to 11

Update package manager configuration to pnpm 11.22.0 and Node.js requirement to Node 26 across Dockerfile, GitHub Actions workflows, root package.json, and workspace configurations.

Upgrade dependencies, update GitHub Action versions, and remove deprecated scorecard workflow.
This commit is contained in:
neon
2026-08-16 00:41:56 +00:00
parent e2aeaf95ea
commit d7556011df
14 changed files with 12779 additions and 7334 deletions
+4 -4
View File
@@ -5,11 +5,11 @@ inputs:
node-version:
description: Node.js version to install.
required: false
default: "24"
default: "26"
pnpm-version:
description: pnpm version to activate via Corepack.
required: false
default: "10"
default: "11"
install:
description: Whether to run pnpm install.
required: false
@@ -31,7 +31,7 @@ runs:
using: composite
steps:
- name: Set up Node.js
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: ${{ inputs.node-version }}
@@ -51,7 +51,7 @@ runs:
- name: Cache pnpm store
if: ${{ inputs.cache == 'true' }}
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: ${{ steps.pnpm-store.outputs.path }}
key: ${{ runner.os }}-pnpm-${{ inputs.pnpm-version }}-store-${{ hashFiles(inputs.cache-dependency-path) }}
+3 -3
View File
@@ -21,8 +21,8 @@ permissions:
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
NODE_VERSION: "24"
PNPM_VERSION: "10"
NODE_VERSION: "26"
PNPM_VERSION: "11"
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
@@ -580,7 +580,7 @@ jobs:
fetch-depth: 0
- name: Set up Node.js
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v6
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: ${{ env.NODE_VERSION }}
+2 -2
View File
@@ -19,8 +19,8 @@ concurrency:
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
NODE_VERSION: "24"
PNPM_VERSION: "10"
NODE_VERSION: "26"
PNPM_VERSION: "11"
jobs:
synchronize:
+2 -2
View File
@@ -28,8 +28,8 @@ on:
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
NODE_VERSION: "24"
PNPM_VERSION: "10"
NODE_VERSION: "26"
PNPM_VERSION: "11"
E2E_DATABASE_URL: postgres://bookorbit:bookorbit@localhost:5432/bookorbit_e2e
NODE_ENV: test
JWT_SECRET: scanner-e2e-secret-1234
+2 -2
View File
@@ -17,7 +17,7 @@ concurrency:
permissions: read-all
env:
NODE_VERSION: "24"
NODE_VERSION: "26"
jobs:
setup:
@@ -33,7 +33,7 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Set up Node.js
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v6
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: ${{ env.NODE_VERSION }}
+2 -2
View File
@@ -15,8 +15,8 @@ permissions: read-all
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
NODE_VERSION: "24"
PNPM_VERSION: "10"
NODE_VERSION: "26"
PNPM_VERSION: "11"
jobs:
commitlint:
+2 -2
View File
@@ -34,9 +34,9 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Set up Node.js
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v6
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24
node-version: 26
- name: Test generators
run: node --test scripts/star-history/generate.test.mjs scripts/crowdin-stats/generate.test.mjs
-51
View File
@@ -1,51 +0,0 @@
name: OpenSSF Scorecard
on:
branch_protection_rule:
push:
branches: [main]
schedule:
- cron: "30 1 * * 6"
workflow_dispatch:
concurrency:
group: scorecard-${{ github.ref }}
cancel-in-progress: true
permissions: {}
jobs:
analysis:
name: Scorecard analysis
runs-on: ubuntu-latest
timeout-minutes: 15
if: github.event.repository.default_branch == github.ref_name || github.event_name == 'branch_protection_rule'
permissions:
actions: read # Read workflow metadata used by Scorecard checks.
contents: read # Read the repository being analyzed.
id-token: write # Publish signed Scorecard results.
security-events: write # Upload the SARIF report to code scanning.
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Run Scorecard
uses: ossf/scorecard-action@2d1146689b8cda280b9bc96326124645441f03bc # v2.4.4
with:
results_file: results.sarif
results_format: sarif
publish_results: true
- name: Upload artifact
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: scorecard-results
path: results.sarif
retention-days: 5
- name: Upload to code scanning
uses: github/codeql-action/upload-sarif@5595ccaf912efad79be6eef63a5619ff05969be3 # v4
with:
sarif_file: results.sarif
+2 -2
View File
@@ -1,7 +1,7 @@
ARG NODE_IMAGE=node:24.11-alpine@sha256:682368d8253e0c3364b803956085c456a612d738bd635926d73fa24db3ce53d7
ARG NODE_IMAGE=node:26.7.0-alpine@sha256:aadf416b2cdce311a8811ba3f0608a61b77dbf997500e2eafe781b51f6a0b019
FROM ${NODE_IMAGE} AS base
RUN npm install -g pnpm@10.33.4
RUN npm install -g pnpm@11.22.0
# Stage 1: Build client
FROM base AS client-builder
+17 -17
View File
@@ -66,10 +66,10 @@
"@tailwindcss/vite": "^4.3.3",
"@tanstack/vue-table": "^8.21.3",
"@tanstack/vue-virtual": "^3.13.35",
"@tiptap/extension-link": "^3.29.2",
"@tiptap/pm": "^3.29.2",
"@tiptap/starter-kit": "^3.29.2",
"@tiptap/vue-3": "^3.29.2",
"@tiptap/extension-link": "^3.30.1",
"@tiptap/pm": "^3.30.1",
"@tiptap/starter-kit": "^3.30.1",
"@tiptap/vue-3": "^3.30.1",
"@types/howler": "^2.2.13",
"@vueuse/core": "^14.4.0",
"canvas-confetti": "^1.9.4",
@@ -89,40 +89,40 @@
"vite-plugin-pwa": "^1.3.0",
"vue": "^3.5.41",
"vue-draggable-plus": "^0.6.1",
"vue-echarts": "8.1.0-beta.2",
"vue-echarts": "8.1.0",
"vue-i18n": "^11.4.8",
"vue-router": "^5.2.0",
"vue-sonner": "^2.0.9",
"vue-virtual-scroller": "^3.0.4"
"vue-virtual-scroller": "^3.0.5"
},
"devDependencies": {
"@intlify/message-compiler": "^11.4.8",
"@tsconfig/node24": "^24.0.4",
"@tsconfig/node24": "^24.0.5",
"@types/canvas-confetti": "^1.9.0",
"@types/jsdom": "^28.0.3",
"@types/node": "^26.1.1",
"@types/node": "^26.2.0",
"@vite-pwa/assets-generator": "^1.0.2",
"@vitejs/plugin-vue": "^6.0.8",
"@vitest/coverage-v8": "^4.1.10",
"@vitest/eslint-plugin": "^1.6.24",
"@vitest/eslint-plugin": "^1.6.27",
"@vue/eslint-config-typescript": "^14.9.0",
"@vue/test-utils": "^2.4.11",
"@vue/tsconfig": "^0.9.1",
"eslint": "^10.8.0",
"eslint": "^10.8.1",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-oxlint": "~1.73.0",
"eslint-plugin-vue": "~10.9.2",
"eslint-plugin-oxlint": "~1.78.0",
"eslint-plugin-vue": "~10.10.0",
"jiti": "^2.7.0",
"jsdom": "^29.1.1",
"npm-run-all2": "^9.0.2",
"oxlint": "~1.73.0",
"prettier": "3.9.5",
"npm-run-all2": "^9.0.3",
"oxlint": "~1.78.0",
"prettier": "3.9.6",
"tw-animate-css": "^1.4.0",
"typescript": "~6.0.3",
"vite": "^8.1.5",
"vite": "^8.2.1",
"vite-plugin-vue-devtools": "^8.2.1",
"vitest": "^4.1.10",
"vue-tsc": "^3.3.8"
"vue-tsc": "^3.3.10"
},
"engines": {
"node": "^20.19.0 || >=22.12.0"
+8 -46
View File
@@ -12,7 +12,7 @@
"url": "https://github.com/bookorbit/bookorbit/issues"
},
"private": true,
"packageManager": "pnpm@10.32.1",
"packageManager": "pnpm@11.22.0",
"scripts": {
"setup": "bash ./scripts/bootstrap/local.sh",
"dev": "concurrently --names \"types,server,client\" --prefix-colors \"cyan,blue,green\" \"pnpm --filter @bookorbit/types dev\" \"pnpm run dev:server\" \"pnpm run dev:client\"",
@@ -54,20 +54,20 @@
},
"engines": {
"node": ">=24",
"pnpm": ">=9"
"pnpm": ">=11"
},
"devDependencies": {
"@commitlint/cli": "^21.2.1",
"@commitlint/config-conventional": "^21.2.0",
"@commitlint/cli": "^21.2.2",
"@commitlint/config-conventional": "^21.2.2",
"@semantic-release/commit-analyzer": "^13.0.1",
"@semantic-release/github": "^12.0.9",
"@semantic-release/release-notes-generator": "^14.1.1",
"concurrently": "^10.0.4",
"conventional-changelog-conventionalcommits": "^9.3.1",
"concurrently": "^10.0.5",
"conventional-changelog-conventionalcommits": "^10.3.0",
"husky": "^9.1.7",
"lint-staged": "^17.2.0",
"lint-staged": "^17.3.0",
"prettier": "^3.9.6",
"semantic-release": "^25.0.8"
"semantic-release": "^25.0.9"
},
"lint-staged": {
"*.{md,json,yml,yaml}": [
@@ -81,43 +81,5 @@
"pnpm --dir server exec eslint --fix",
"pnpm exec prettier --write"
]
},
"pnpm": {
"overrides": {
"@xhmikosr/decompress": "^11.1.3",
"@esbuild-kit/core-utils>esbuild": "^0.25.12",
"@nestjs/swagger>js-yaml": "^5.2.2",
"brace-expansion@>=5.0.0 <5.0.9": "^5.0.9",
"engine.io": "^6.6.7",
"esbuild": "^0.28.1",
"fastify": "^5.10.0",
"fast-uri": "^3.1.5",
"fast-xml-builder": "^1.1.7",
"find-my-way": "^9.7.0",
"form-data": "^4.0.6",
"piscina": "^4.9.3",
"qs": "^6.15.2",
"ws": "^8.21.0"
},
"packageExtensions": {
"@embedpdf/utils@2.15.0": {
"dependencies": {
"@embedpdf/models": "2.15.0"
}
}
},
"onlyBuiltDependencies": [
"@nestjs/core",
"@parcel/watcher",
"@swc/core",
"esbuild",
"sharp",
"unrs-resolver"
],
"patchedDependencies": {
"@embedpdf/core@2.15.0": "patches/@embedpdf__core@2.15.0.patch",
"@embedpdf/engines@2.15.0": "patches/@embedpdf__engines@2.15.0.patch",
"@embedpdf/plugin-scroll@2.15.0": "patches/@embedpdf__plugin-scroll@2.15.0.patch"
}
}
}
+12660 -7184
View File
File diff suppressed because it is too large Load Diff
+61 -3
View File
@@ -1,4 +1,62 @@
packages:
- 'client'
- 'server'
- 'packages/*'
- "client"
- "server"
- "packages/*"
overrides:
"@xhmikosr/decompress": ^11.1.4
"@esbuild-kit/core-utils>esbuild": ^0.25.12
"@nestjs/swagger>js-yaml": ^5.3.0
"@typescript-eslint/eslint-plugin": ^8.67.0
"@typescript-eslint/parser": ^8.67.0
"@typescript-eslint/utils": ^8.67.0
"brace-expansion@>=5.0.0 <5.0.9": ^5.0.9
engine.io: ^6.6.7
esbuild: ^0.28.2
fastify: ^5.10.0
fast-uri: ^3.1.5
fast-xml-builder: ^1.3.1
find-my-way: ^9.8.0
form-data: ^4.0.6
piscina: ^4.9.3
qs: ^6.15.2
typescript-eslint: ^8.67.0
ws: ^8.21.3
packageExtensions:
"@embedpdf/utils@2.15.0":
dependencies:
"@embedpdf/models": 2.15.0
allowBuilds:
"@ffmpeg-installer/darwin-arm64": true
"@ffmpeg-installer/darwin-x64": true
"@ffmpeg-installer/linux-arm": true
"@ffmpeg-installer/linux-arm64": true
"@ffmpeg-installer/linux-ia32": true
"@ffmpeg-installer/linux-x64": true
"@ffmpeg-installer/win32-ia32": true
"@ffmpeg-installer/win32-x64": true
"@ffprobe-installer/darwin-arm64": true
"@ffprobe-installer/darwin-x64": true
"@ffprobe-installer/linux-arm": true
"@ffprobe-installer/linux-arm64": true
"@ffprobe-installer/linux-ia32": true
"@ffprobe-installer/linux-x64": true
"@ffprobe-installer/win32-ia32": true
"@ffprobe-installer/win32-x64": true
"@nestjs/core": true
"@parcel/watcher": true
"@scarf/scarf": false
"@swc/core": true
esbuild: true
sharp: true
unrs-resolver: true
vue-demi: false
patchedDependencies:
"@embedpdf/core@2.15.0": patches/@embedpdf__core@2.15.0.patch
"@embedpdf/engines@2.15.0": patches/@embedpdf__engines@2.15.0.patch
"@embedpdf/plugin-scroll@2.15.0": patches/@embedpdf__plugin-scroll@2.15.0.patch
minimumReleaseAgeExclude:
- "@tsconfig/node24@24.0.5"
- "@vue/language-core@3.3.10"
- concurrently@10.0.5
- jose@6.2.9
- vue-tsc@3.3.10
+14 -14
View File
@@ -55,20 +55,20 @@
"@fastify/cookie": "^11.1.2",
"@fastify/formbody": "^8.0.2",
"@fastify/helmet": "^13.1.0",
"@fastify/multipart": "^10.1.0",
"@fastify/multipart": "^10.1.1",
"@fastify/static": "^10.1.3",
"@nestjs/common": "^11.1.29",
"@nestjs/common": "^11.2.1",
"@nestjs/config": "^4.0.4",
"@nestjs/core": "^11.1.29",
"@nestjs/core": "^11.2.1",
"@nestjs/jwt": "^11.0.2",
"@nestjs/passport": "^11.0.5",
"@nestjs/platform-fastify": "^11.1.29",
"@nestjs/platform-socket.io": "^11.1.29",
"@nestjs/platform-fastify": "^11.2.1",
"@nestjs/platform-socket.io": "^11.2.1",
"@nestjs/schedule": "^6.1.3",
"@nestjs/swagger": "^11.4.6",
"@nestjs/terminus": "^11.1.1",
"@nestjs/throttler": "^6.5.0",
"@nestjs/websockets": "^11.1.29",
"@nestjs/websockets": "^11.2.1",
"@types/archiver": "^8.0.0",
"archiver": "~8.0.0",
"bcryptjs": "^3.0.3",
@@ -83,7 +83,7 @@
"fastest-levenshtein": "^1.0.16",
"fastify": "^5.11.3",
"iconv-lite": "^0.7.3",
"jose": "^6.2.8",
"jose": "^6.2.9",
"langs": "^2.0.0",
"ms": "^2.1.3",
"mysql2": "^3.23.3",
@@ -110,13 +110,13 @@
"@ffprobe-installer/ffprobe": "^2.1.2",
"@nestjs/cli": "^11.0.24",
"@nestjs/schematics": "^11.1.0",
"@nestjs/testing": "^11.1.28",
"@nestjs/testing": "^11.2.1",
"@swc/cli": "^0.8.1",
"@swc/core": "^1.15.46",
"@swc/core": "^1.16.0",
"@types/bcrypt": "^6.0.0",
"@types/express": "^5.0.6",
"@types/langs": "^2.0.5",
"@types/node": "^26.1.1",
"@types/node": "^26.2.0",
"@types/nodemailer": "^8.0.1",
"@types/passport-jwt": "^4.0.1",
"@types/pg": "^8.21.0",
@@ -124,10 +124,10 @@
"@types/unzipper": "^0.10.11",
"@vitest/coverage-v8": "^4.1.10",
"drizzle-kit": "^0.31.10",
"eslint": "^10.8.0",
"eslint": "^10.8.1",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-prettier": "^5.5.6",
"globals": "^17.8.0",
"globals": "^17.11.0",
"pino-pretty": "^13.1.3",
"prettier": "^3.9.6",
"source-map-support": "^0.5.21",
@@ -135,9 +135,9 @@
"ts-loader": "^9.6.2",
"ts-node": "^10.9.2",
"tsconfig-paths": "^4.2.0",
"tsx": "^4.23.1",
"tsx": "^4.23.12",
"typescript": "^6.0.3",
"typescript-eslint": "^8.65.0",
"typescript-eslint": "^8.67.0",
"vitest": "^4.1.10"
}
}