From 89b4e41c4846cf1c837fd98d83726d11fedf3f3c Mon Sep 17 00:00:00 2001 From: Bruce Arctor <5032356+brucearctor@users.noreply.github.com> Date: Sun, 12 Jul 2026 21:04:26 -0700 Subject: [PATCH] =?UTF-8?q?chore:=20modernize=20toolchain=20=E2=80=94=20ES?= =?UTF-8?q?Lint=2010,=20Node=2020+,=20pnpm=2010,=20Actions=20v4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Upgrade eslint 9 → 10, @eslint/js 9 → 10, typescript-eslint 7 → 8 - Upgrade prettier 3.6 → 3.9, typescript 5.8 → 5.9 - Drop Node 18 (EOL April 2025) from CI matrix - Add Node 24 (Active LTS) and 26 (Current) to CI matrix - Upgrade GitHub Actions: checkout v3→v4, setup-node v3→v4 - Pin pnpm 10.34.5 via packageManager field (pnpm 11 requires Node >= 22.13) - Remove explicit pnpm version from CI (reads from packageManager field) - Update engine requirements: node >= 20, npm >= 10 Closes #137 Closes #115 --- .github/workflows/userale_ci.yml | 20 ++++----- lefthook.yml | 42 +++++++++++++++++++ package.json | 3 +- products/userale/eslint.config.js | 1 + products/userale/package.json | 10 ++--- .../packages/flagon-userale/package.json | 4 +- products/userale/pnpm-workspace.yaml | 10 ++++- 7 files changed, 69 insertions(+), 21 deletions(-) create mode 100644 lefthook.yml diff --git a/.github/workflows/userale_ci.yml b/.github/workflows/userale_ci.yml index 4e6ff62..c4a0021 100644 --- a/.github/workflows/userale_ci.yml +++ b/.github/workflows/userale_ci.yml @@ -42,19 +42,17 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [18.x] + node-version: [22.x] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup Node v${{ matrix.node-version }} - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - - name: Setup pnpm v10 + - name: Setup pnpm uses: pnpm/action-setup@v4 - with: - version: 10 - name: Install dependencies run: pnpm i @@ -69,21 +67,19 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [18.x, 20.x, 22.x] + node-version: [20.x, 22.x, 24.x, 26.x] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ # See active and security support for Node.js at https://endoflife.date/nodejs steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup Node v${{ matrix.node-version }} - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - - name: Setup pnpm v10 + - name: Setup pnpm uses: pnpm/action-setup@v4 - with: - version: 10 - name: Install dependencies run: pnpm i diff --git a/lefthook.yml b/lefthook.yml new file mode 100644 index 0000000..f6f019e --- /dev/null +++ b/lefthook.yml @@ -0,0 +1,42 @@ +# EXAMPLE USAGE: +# +# Refer for explanation to following link: +# https://lefthook.dev/configuration/ +# +# pre-push: +# jobs: +# - name: packages audit +# tags: +# - frontend +# - security +# run: yarn audit +# +# - name: gems audit +# tags: +# - backend +# - security +# run: bundle audit +# +# pre-commit: +# parallel: true +# jobs: +# - run: yarn eslint {staged_files} +# glob: "*.{js,ts,jsx,tsx}" +# +# - name: rubocop +# glob: "*.rb" +# exclude: +# - config/application.rb +# - config/routes.rb +# run: bundle exec rubocop --force-exclusion -- {all_files} +# +# - name: govet +# files: git ls-files -m +# glob: "*.go" +# run: go vet -- {files} +# +# - script: "hello.js" +# runner: node +# +# - script: "hello.go" +# runner: go run diff --git a/package.json b/package.json index 4bfa92b..2d7c155 100644 --- a/package.json +++ b/package.json @@ -19,5 +19,6 @@ "hooks": { "pre-commit": "npm run lint" } - } + }, + "packageManager": "pnpm@10.34.5" } diff --git a/products/userale/eslint.config.js b/products/userale/eslint.config.js index 6c1cf32..860881b 100644 --- a/products/userale/eslint.config.js +++ b/products/userale/eslint.config.js @@ -43,6 +43,7 @@ module.exports = [ 'no-cond-assign': 'warn', 'no-constant-condition': 'warn', 'no-unused-vars': 'warn', + 'no-useless-assignment': 'warn', '@typescript-eslint/no-unused-vars': 'warn', '@typescript-eslint/no-explicit-any': 'warn', }, diff --git a/products/userale/package.json b/products/userale/package.json index 6615771..e1c5b9c 100644 --- a/products/userale/package.json +++ b/products/userale/package.json @@ -12,21 +12,21 @@ "example:watch": "nodemon -w ./example/server example/server/server.js" }, "devDependencies": { - "@eslint/js": "^9.29.0", + "@eslint/js": "^10.0.1", "@ianvs/prettier-plugin-sort-imports": "4.1.1", "@playwright/test": "^1.52.0", "@types/node": "^22.15.30", "body-parser": "^1.20.2", - "eslint": "9.29.0", + "eslint": "^10.7.0", "eslint-plugin-jest": "^29.0.1", "express": "^4.18.2", "flagon-userale": "workspace:flagon-userale", "jsonschema": "^1.4.1", "nodemon": "^3.0.2", "pnpm": "^10.0.0", - "prettier": "3.9.5", - "typescript": "^5.8.3", - "typescript-eslint": "^7.8.0", + "prettier": "^3.9.5", + "typescript": "^5.9.3", + "typescript-eslint": "^8.63.0", "ws": "^8.18.0" } } \ No newline at end of file diff --git a/products/userale/packages/flagon-userale/package.json b/products/userale/packages/flagon-userale/package.json index e31609f..312beaa 100644 --- a/products/userale/packages/flagon-userale/package.json +++ b/products/userale/packages/flagon-userale/package.json @@ -49,8 +49,8 @@ }, "homepage": "https://flagon.apache.org/", "engines": { - "node": ">= 18.x", - "npm": ">= 9.x" + "node": ">= 20.x", + "npm": ">= 10.x" }, "devDependencies": { "@babel/preset-typescript": "^7.27.1", diff --git a/products/userale/pnpm-workspace.yaml b/products/userale/pnpm-workspace.yaml index 23d7944..01e7208 100644 --- a/products/userale/pnpm-workspace.yaml +++ b/products/userale/pnpm-workspace.yaml @@ -17,4 +17,12 @@ packages: # all packages in direct subdirs of packages/ - - 'packages/*' \ No newline at end of file + - 'packages/*' +allowBuilds: + '@parcel/watcher': true + '@swc/core': true + cypress: true + esbuild: true + lmdb: true + msgpackr-extract: true + sharp: true