diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 67cf02dd..d0285b3b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,6 +3,8 @@ name: CI on: pull_request: push: + branches: + - master permissions: contents: read @@ -65,7 +67,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v7 with: - node-version: '22' + node-version: '24' - name: Install Cypress system dependencies run: | @@ -135,7 +137,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v7 with: - node-version: '22' + node-version: '24' - name: Install Composer dependencies run: composer update --no-interaction --prefer-dist --no-progress diff --git a/AGENTS.md b/AGENTS.md index fa2c4384..920012d7 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -39,8 +39,8 @@ Local path: `/Volumes/SRC/JsFormValidatorBundle` ## Nix Development Environment - Prefer `nix develop` from the repository root when Nix is available. -- The Nix shell provides the latest PHP available in pinned nixpkgs with Xdebug coverage support, Composer, Node.js 22, npm, zip/unzip, and Linux Cypress runtime libraries. It currently resolves to PHP 8.5. -- The Docker `php-fpm` development image is maintained for vendor installation and ad hoc commands. It uses PHP 8.5, Composer 2, Node.js 22, and the PHP extensions required by the Symfony 8 fixture. +- The Nix shell provides the latest PHP available in pinned nixpkgs with Xdebug coverage support, Composer, Node.js 24, npm, zip/unzip, and Linux Cypress runtime libraries. It currently resolves to PHP 8.5. +- The Docker `php-fpm` development image is maintained for vendor installation and ad hoc commands. It uses PHP 8.5, Composer 2, Node.js 24, and the PHP extensions required by the Symfony 8 fixture. - Run one-off commands with `nix develop -c `, for example: - `nix develop -c composer validate --strict` - `nix develop -c composer test` diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 643d59fe..c873e2e4 100755 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -8,7 +8,7 @@ Prefer the Nix development shell from the repository root: nix develop ``` -The shell provides PHP 8.5, Xdebug coverage support, Composer, Node.js 22, npm, +The shell provides PHP 8.5, Xdebug coverage support, Composer, Node.js 24, npm, zip/unzip, and the Linux runtime libraries needed by Cypress. It also keeps Composer, npm, and Cypress caches under `.cache/`. @@ -36,7 +36,7 @@ If Cypress reports that its binary is missing, install it into the local cache: npx cypress install ``` -Without Nix, install PHP 8.4 or newer, Composer, Node.js 22, npm, and the +Without Nix, install PHP 8.4 or newer, Composer, Node.js 24, npm, and the Cypress system dependencies locally before running the same commands. ## Install Vendors Via Docker @@ -50,7 +50,7 @@ docker compose run --rm --no-deps -u "$(id -u):$(id -g)" php-fpm composer update docker compose run --rm --no-deps -u "$(id -u):$(id -g)" php-fpm npm install ``` -The image uses PHP 8.5, Composer 2, Node.js 22, and the PHP extensions needed by +The image uses PHP 8.5, Composer 2, Node.js 24, and the PHP extensions needed by the Symfony 8 test fixture. It also stores Composer, npm, and Cypress caches under `.cache/`. diff --git a/README.md b/README.md index 88f97ae4..7a15bd80 100644 --- a/README.md +++ b/README.md @@ -191,7 +191,7 @@ nix develop ``` It provides the latest PHP available in the pinned nixpkgs input, currently -PHP 8.5, with Xdebug coverage support, Composer, Node.js 22, npm, zip/unzip, +PHP 8.5, with Xdebug coverage support, Composer, Node.js 24, npm, zip/unzip, and Cypress runtime libraries. If flakes are not enabled globally, prefix Nix commands with `nix --extra-experimental-features "nix-command flakes"`. @@ -215,7 +215,7 @@ nix develop -c composer test nix develop -c npm test ``` -Without Nix, install PHP 8.4 or newer, Composer, Node.js 22, npm, and the +Without Nix, install PHP 8.4 or newer, Composer, Node.js 24, npm, and the Cypress system dependencies locally before running the same commands. To install vendors via Docker instead of host PHP/Composer: @@ -273,6 +273,6 @@ The same maintained test, static-analysis, and coverage checks are also run by GitHub Actions on pushes and pull requests. Coverage runs generate Cobertura reports and upload them to GitHub Code Quality when workflow permissions allow. -The Docker stack uses PHP 8.5, Composer 2, and Node.js 22. It is maintained for +The Docker stack uses PHP 8.5, Composer 2, and Node.js 24. It is maintained for dependency installation and ad hoc local commands; Nix remains the preferred environment for exact local parity with the documented checks. diff --git a/Tests/app/package.json b/Tests/app/package.json index 706ac59d..9bd400b7 100644 --- a/Tests/app/package.json +++ b/Tests/app/package.json @@ -1,7 +1,12 @@ { "devDependencies": { + "@babel/core": "^8.0.1", + "@babel/preset-env": "^8.0.2", + "@symfony/webpack-encore": "^7.2.0", + "babel-plugin-polyfill-corejs3": "^1.0.0", "core-js": "^3.50.0", - "@symfony/webpack-encore": "^6.0.0" + "webpack": "^5.102.0", + "webpack-cli": "^7.0.2" }, "dependencies": { "jquery": "^4.0.0" diff --git a/Tests/app/webpack.config.js b/Tests/app/webpack.config.mjs similarity index 67% rename from Tests/app/webpack.config.js rename to Tests/app/webpack.config.mjs index 1e6f23a1..84ca12ca 100755 --- a/Tests/app/webpack.config.js +++ b/Tests/app/webpack.config.mjs @@ -4,7 +4,7 @@ // // Read https://symfony.com/doc/current/frontend.html to learn more about how // to manage CSS and JavaScript files in Symfony applications. -var Encore = require('@symfony/webpack-encore'); +import Encore from '@symfony/webpack-encore'; Encore .setOutputPath('public/build/') @@ -19,10 +19,17 @@ Encore .splitEntryChunks() .enableSingleRuntimeChunk() .enableIntegrityHashes(Encore.isProduction()) - .configureBabel(null, { - useBuiltIns: 'usage', - corejs: 3, + // Babel 8 removed the "useBuiltIns"/"corejs" options from @babel/preset-env, + // so core-js polyfills are now injected by babel-plugin-polyfill-corejs3. + .configureBabel((babelConfig) => { + babelConfig.plugins.push([ + 'babel-plugin-polyfill-corejs3', + { + method: 'usage-global', + version: '3.50', + }, + ]); }) ; -module.exports = Encore.getWebpackConfig(); +export default await Encore.getWebpackConfig(); diff --git a/flake.nix b/flake.nix index 7a734b46..456ebcd5 100644 --- a/flake.nix +++ b/flake.nix @@ -56,7 +56,7 @@ packages = with pkgs; [ composer git - nodejs_22 + nodejs_24 php unzip zip diff --git a/phpdocker/README.html b/phpdocker/README.html index d4aca85d..b80eab36 100755 --- a/phpdocker/README.html +++ b/phpdocker/README.html @@ -11,7 +11,7 @@

PHP Docker Development Image

and run ad hoc local commands without host PHP or Composer.

The php-fpm image provides PHP 8.5 FPM, Composer 2, - Node.js 22, npm, the PHP extensions used by the Symfony 8 fixture, and the + Node.js 24, npm, the PHP extensions used by the Symfony 8 fixture, and the Linux libraries needed by Cypress.

Build

diff --git a/phpdocker/README.md b/phpdocker/README.md index e3262150..77f83876 100755 --- a/phpdocker/README.md +++ b/phpdocker/README.md @@ -8,7 +8,7 @@ The `php-fpm` image provides: * PHP 8.5 FPM * Composer 2 -* Node.js 22 and npm +* Node.js 24 and npm * PHP extensions used by the Symfony 8 fixture: `intl`, `pdo_mysql`, `pdo_sqlite`, and `zip` * Linux libraries needed by the Cypress binary diff --git a/phpdocker/php-fpm/Dockerfile b/phpdocker/php-fpm/Dockerfile index 1b4400c8..2c295a05 100755 --- a/phpdocker/php-fpm/Dockerfile +++ b/phpdocker/php-fpm/Dockerfile @@ -29,7 +29,7 @@ RUN set -eux; \ mkdir -p /etc/apt/keyrings; \ curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key \ | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg; \ - echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" \ + echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_24.x nodistro main" \ > /etc/apt/sources.list.d/nodesource.list; \ apt-get update; \ apt-get install -y --no-install-recommends nodejs; \