From 7869dabda0ac6964b17945caf114d4a41795188f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dami=C3=A1n=20Su=C3=A1rez?= Date: Tue, 14 Apr 2026 11:02:14 +0100 Subject: [PATCH 01/27] add premium-analytics plugin --- .../plugins/premium-analytics/.gitattributes | 14 +++ .../premium-analytics/.phan/baseline.php | 12 +++ .../premium-analytics/.phan/config.php | 13 +++ .../plugins/premium-analytics/.phpcs.dir.xml | 24 +++++ .../plugins/premium-analytics/CHANGELOG.md | 7 ++ projects/plugins/premium-analytics/README.md | 10 +++ .../changelog/initial-version | 4 + .../plugins/premium-analytics/composer.json | 60 +++++++++++++ .../jetpack-premium-analytics.php | 87 +++++++++++++++++++ .../plugins/premium-analytics/package.json | 6 ++ .../premium-analytics/phpunit.11.xml.dist | 34 ++++++++ .../premium-analytics/phpunit.12.xml.dist | 1 + .../premium-analytics/phpunit.8.xml.dist | 1 + .../premium-analytics/phpunit.9.xml.dist | 17 ++++ projects/plugins/premium-analytics/readme.txt | 25 ++++++ .../src/class-jetpack-premium-analytics.php | 29 +++++++ .../premium-analytics/tests/.phpcs.dir.xml | 6 ++ .../premium-analytics/tests/php/bootstrap.php | 11 +++ 18 files changed, 361 insertions(+) create mode 100644 projects/plugins/premium-analytics/.gitattributes create mode 100644 projects/plugins/premium-analytics/.phan/baseline.php create mode 100644 projects/plugins/premium-analytics/.phan/config.php create mode 100644 projects/plugins/premium-analytics/.phpcs.dir.xml create mode 100644 projects/plugins/premium-analytics/CHANGELOG.md create mode 100644 projects/plugins/premium-analytics/README.md create mode 100644 projects/plugins/premium-analytics/changelog/initial-version create mode 100644 projects/plugins/premium-analytics/composer.json create mode 100644 projects/plugins/premium-analytics/jetpack-premium-analytics.php create mode 100644 projects/plugins/premium-analytics/package.json create mode 100644 projects/plugins/premium-analytics/phpunit.11.xml.dist create mode 120000 projects/plugins/premium-analytics/phpunit.12.xml.dist create mode 120000 projects/plugins/premium-analytics/phpunit.8.xml.dist create mode 100644 projects/plugins/premium-analytics/phpunit.9.xml.dist create mode 100644 projects/plugins/premium-analytics/readme.txt create mode 100644 projects/plugins/premium-analytics/src/class-jetpack-premium-analytics.php create mode 100644 projects/plugins/premium-analytics/tests/.phpcs.dir.xml create mode 100644 projects/plugins/premium-analytics/tests/php/bootstrap.php diff --git a/projects/plugins/premium-analytics/.gitattributes b/projects/plugins/premium-analytics/.gitattributes new file mode 100644 index 000000000000..d72919c69286 --- /dev/null +++ b/projects/plugins/premium-analytics/.gitattributes @@ -0,0 +1,14 @@ +# Files not needed to be distributed in the package. +.gitattributes export-ignore +.github/ export-ignore + +# Files to include in the mirror repo, but excluded via gitignore +# Remember to end all directories with `/**` to properly tag every file. +# /build/** production-include + +# Files to exclude from the mirror repo, but included in the monorepo. +# Remember to end all directories with `/**` to properly tag every file. +.gitignore production-exclude +changelog/** production-exclude +tests/** production-exclude +.phpcsignore production-exclude diff --git a/projects/plugins/premium-analytics/.phan/baseline.php b/projects/plugins/premium-analytics/.phan/baseline.php new file mode 100644 index 000000000000..c7aa9a4dd4f3 --- /dev/null +++ b/projects/plugins/premium-analytics/.phan/baseline.php @@ -0,0 +1,12 @@ + [], + // 'directory_suppressions' => ['src/directory_name' => ['PhanIssueName1', 'PhanIssueName2']] can be manually added if needed. + // (directory_suppressions will currently be ignored by subsequent calls to --save-baseline, but may be preserved in future Phan releases) +]; diff --git a/projects/plugins/premium-analytics/.phan/config.php b/projects/plugins/premium-analytics/.phan/config.php new file mode 100644 index 000000000000..8c6062f0c692 --- /dev/null +++ b/projects/plugins/premium-analytics/.phan/config.php @@ -0,0 +1,13 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/projects/plugins/premium-analytics/CHANGELOG.md b/projects/plugins/premium-analytics/CHANGELOG.md new file mode 100644 index 000000000000..721294abd00a --- /dev/null +++ b/projects/plugins/premium-analytics/CHANGELOG.md @@ -0,0 +1,7 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + diff --git a/projects/plugins/premium-analytics/README.md b/projects/plugins/premium-analytics/README.md new file mode 100644 index 000000000000..4376a5be9942 --- /dev/null +++ b/projects/plugins/premium-analytics/README.md @@ -0,0 +1,10 @@ +# Jetpack Premium Analytics Plugin + +Internal WordPress plugin that activates the `automattic/jetpack-premium-analytics` package. + +## Development + +```bash +jetpack build plugins/premium-analytics +jetpack watch plugins/premium-analytics +``` diff --git a/projects/plugins/premium-analytics/changelog/initial-version b/projects/plugins/premium-analytics/changelog/initial-version new file mode 100644 index 000000000000..fb1837c901e5 --- /dev/null +++ b/projects/plugins/premium-analytics/changelog/initial-version @@ -0,0 +1,4 @@ +Significance: patch +Type: added + +Initial version. diff --git a/projects/plugins/premium-analytics/composer.json b/projects/plugins/premium-analytics/composer.json new file mode 100644 index 000000000000..82188e5e0ea9 --- /dev/null +++ b/projects/plugins/premium-analytics/composer.json @@ -0,0 +1,60 @@ +{ + "name": "automattic/jetpack-premium-analytics-plugin", + "description": "Premium Analytics dashboard for Jetpack sites.", + "type": "wordpress-plugin", + "license": "GPL-2.0-or-later", + "require": { + "automattic/jetpack-premium-analytics": "@dev", + "automattic/jetpack-autoloader": "@dev", + "automattic/jetpack-composer-plugin": "@dev" + }, + "require-dev": { + "yoast/phpunit-polyfills": "^4.0.0", + "automattic/jetpack-changelogger": "@dev", + "automattic/phpunit-select-config": "@dev" + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "scripts": { + "phpunit": [ + "phpunit-select-config phpunit.#.xml.dist --colors=always" + ], + "test-php": [ + "@composer phpunit" + ] + }, + "repositories": [ + { + "type": "path", + "url": "../../packages/*", + "options": { + "monorepo": true + } + } + ], + "minimum-stability": "dev", + "prefer-stable": true, + "extra": { + "autotagger": false, + "autorelease": false, + "mirror-repo": "Automattic/jetpack-premium-analytics-plugin", + "release-branch-prefix": "premium-analytics", + "changelogger": { + "versioning": "semver" + }, + "version-constants": { + "JETPACK_PREMIUM_ANALYTICS__VERSION": "jetpack-premium-analytics.php" + } + }, + "config": { + "allow-plugins": { + "roots/wordpress-core-installer": true, + "automattic/jetpack-autoloader": true, + "automattic/jetpack-composer-plugin": true + }, + "autoloader-suffix": "premium_analytics_pluginⓥ0_1_0" + } +} diff --git a/projects/plugins/premium-analytics/jetpack-premium-analytics.php b/projects/plugins/premium-analytics/jetpack-premium-analytics.php new file mode 100644 index 000000000000..5f556bad345b --- /dev/null +++ b/projects/plugins/premium-analytics/jetpack-premium-analytics.php @@ -0,0 +1,87 @@ +id !== 'plugins' ) { + return; + } + + $message = sprintf( + wp_kses( + /* translators: Placeholder is a link to a support document. */ + __( 'Your installation of Jetpack Premium Analytics is incomplete. If you installed Jetpack Premium Analytics from GitHub, please refer to this document to set up your development environment.', 'jetpack-premium-analytics' ), + array( + 'a' => array( + 'href' => array(), + 'target' => array(), + 'rel' => array(), + ), + ) + ), + 'https://github.com/Automattic/jetpack/blob/trunk/docs/development-environment.md#building-your-project' + ); + wp_admin_notice( + $message, + array( + 'type' => 'error', + 'dismissible' => true, + ) + ); + } + ); + + return; +} + +// Add "Settings" link to plugins page. +add_filter( + 'plugin_action_links_' . JETPACK_PREMIUM_ANALYTICS_FOLDER . '/jetpack-premium-analytics.php', + function ( $actions ) { + $settings_link = '' . __( 'Settings', 'jetpack-premium-analytics' ) . ''; + array_unshift( $actions, $settings_link ); + + return $actions; + } +); + +// Main plugin class. +new Jetpack_Premium_Analytics(); diff --git a/projects/plugins/premium-analytics/package.json b/projects/plugins/premium-analytics/package.json new file mode 100644 index 000000000000..bda72ceb04b7 --- /dev/null +++ b/projects/plugins/premium-analytics/package.json @@ -0,0 +1,6 @@ +{ + "private": true, + "description": "Premium Analytics dashboard for Jetpack sites.", + "license": "GPL-2.0-or-later", + "author": "Automattic" +} diff --git a/projects/plugins/premium-analytics/phpunit.11.xml.dist b/projects/plugins/premium-analytics/phpunit.11.xml.dist new file mode 100644 index 000000000000..24f0f1e361af --- /dev/null +++ b/projects/plugins/premium-analytics/phpunit.11.xml.dist @@ -0,0 +1,34 @@ + + + + + tests/php + + + + + + src + + + + + diff --git a/projects/plugins/premium-analytics/phpunit.12.xml.dist b/projects/plugins/premium-analytics/phpunit.12.xml.dist new file mode 120000 index 000000000000..9fdb7a2c745c --- /dev/null +++ b/projects/plugins/premium-analytics/phpunit.12.xml.dist @@ -0,0 +1 @@ +phpunit.11.xml.dist \ No newline at end of file diff --git a/projects/plugins/premium-analytics/phpunit.8.xml.dist b/projects/plugins/premium-analytics/phpunit.8.xml.dist new file mode 120000 index 000000000000..707bde67863c --- /dev/null +++ b/projects/plugins/premium-analytics/phpunit.8.xml.dist @@ -0,0 +1 @@ +phpunit.9.xml.dist \ No newline at end of file diff --git a/projects/plugins/premium-analytics/phpunit.9.xml.dist b/projects/plugins/premium-analytics/phpunit.9.xml.dist new file mode 100644 index 000000000000..3965963c485e --- /dev/null +++ b/projects/plugins/premium-analytics/phpunit.9.xml.dist @@ -0,0 +1,17 @@ + + + + + tests/php + + + diff --git a/projects/plugins/premium-analytics/readme.txt b/projects/plugins/premium-analytics/readme.txt new file mode 100644 index 000000000000..a2289bfe320d --- /dev/null +++ b/projects/plugins/premium-analytics/readme.txt @@ -0,0 +1,25 @@ +=== Jetpack Premium Analytics === +Contributors: automattic +Tags: analytics, jetpack +Requires at least: 6.6 +Requires PHP: 7.2 +Tested up to: 6.8 +Stable tag: 0.1.0-alpha +License: GPLv2 or later +License URI: https://www.gnu.org/licenses/gpl-2.0.html + +Premium Analytics dashboard for Jetpack sites. + +== Description == + +Provides a premium analytics dashboard for Jetpack-connected WordPress sites. + +== Installation == + +1. Install the plugin through the WordPress plugins screen. +2. Activate the plugin. +3. Navigate to the Analytics menu to view the dashboard. + +== Changelog == + + diff --git a/projects/plugins/premium-analytics/src/class-jetpack-premium-analytics.php b/projects/plugins/premium-analytics/src/class-jetpack-premium-analytics.php new file mode 100644 index 000000000000..acbfbf33bca7 --- /dev/null +++ b/projects/plugins/premium-analytics/src/class-jetpack-premium-analytics.php @@ -0,0 +1,29 @@ + + + + 0 + + diff --git a/projects/plugins/premium-analytics/tests/php/bootstrap.php b/projects/plugins/premium-analytics/tests/php/bootstrap.php new file mode 100644 index 000000000000..2a2e69861c4a --- /dev/null +++ b/projects/plugins/premium-analytics/tests/php/bootstrap.php @@ -0,0 +1,11 @@ + Date: Tue, 14 Apr 2026 12:31:29 +0100 Subject: [PATCH 02/27] add composer.lock for premium-analytics plugin --- .../plugins/premium-analytics/composer.lock | 2891 +++++++++++++++++ 1 file changed, 2891 insertions(+) create mode 100644 projects/plugins/premium-analytics/composer.lock diff --git a/projects/plugins/premium-analytics/composer.lock b/projects/plugins/premium-analytics/composer.lock new file mode 100644 index 000000000000..32c6c543e561 --- /dev/null +++ b/projects/plugins/premium-analytics/composer.lock @@ -0,0 +1,2891 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "59c99d35846a5d3b2beb37a096407c8b", + "packages": [ + { + "name": "automattic/jetpack-autoloader", + "version": "dev-trunk", + "dist": { + "type": "path", + "url": "../../packages/autoloader", + "reference": "68901f3b3a256085ebd939a3461ee833be10f86d" + }, + "require": { + "composer-plugin-api": "^2.2", + "php": ">=7.2" + }, + "require-dev": { + "automattic/jetpack-changelogger": "@dev", + "automattic/phpunit-select-config": "@dev", + "composer/composer": "^2.2", + "yoast/phpunit-polyfills": "^4.0.0" + }, + "type": "composer-plugin", + "extra": { + "autotagger": true, + "class": "Automattic\\Jetpack\\Autoloader\\CustomAutoloaderPlugin", + "mirror-repo": "Automattic/jetpack-autoloader", + "changelogger": { + "link-template": "https://github.com/Automattic/jetpack-autoloader/compare/v${old}...v${new}" + }, + "version-constants": { + "::VERSION": "src/AutoloadGenerator.php" + }, + "branch-alias": { + "dev-trunk": "5.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/AutoloadGenerator.php" + ], + "psr-4": { + "Automattic\\Jetpack\\Autoloader\\": "src" + } + }, + "scripts": { + "phpunit": [ + "phpunit-select-config phpunit.#.xml.dist --colors=always" + ], + "test-coverage": [ + "php -dpcov.directory=. ./vendor/bin/phpunit-select-config phpunit.#.xml.dist --coverage-php \"./tests/php/tmp/coverage-report.php\"", + "php ./tests/php/bin/test-coverage.php \"$COVERAGE_DIR/php.cov\"" + ], + "test-php": [ + "@composer phpunit" + ] + }, + "license": [ + "GPL-2.0-or-later" + ], + "description": "Creates a custom autoloader for a plugin or theme.", + "keywords": [ + "autoload", + "autoloader", + "composer", + "jetpack", + "plugin", + "wordpress" + ], + "transport-options": { + "relative": true + } + }, + { + "name": "automattic/jetpack-composer-plugin", + "version": "dev-trunk", + "dist": { + "type": "path", + "url": "../../packages/composer-plugin", + "reference": "eb028c7425d0591689e2a0b3047c278d8ff2395e" + }, + "require": { + "composer-plugin-api": "^2.2", + "php": ">=7.2" + }, + "require-dev": { + "automattic/jetpack-changelogger": "@dev", + "automattic/phpunit-select-config": "@dev", + "composer/composer": "^2.2", + "yoast/phpunit-polyfills": "^4.0.0" + }, + "type": "composer-plugin", + "extra": { + "plugin-modifies-install-path": true, + "class": "Automattic\\Jetpack\\Composer\\Plugin", + "mirror-repo": "Automattic/jetpack-composer-plugin", + "changelogger": { + "link-template": "https://github.com/Automattic/jetpack-composer-plugin/compare/v${old}...v${new}" + }, + "autotagger": true, + "branch-alias": { + "dev-trunk": "4.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "scripts": { + "phpunit": [ + "phpunit-select-config phpunit.#.xml.dist --colors=always" + ], + "test-coverage": [ + "php -dpcov.directory=. ./vendor/bin/phpunit-select-config phpunit.#.xml.dist --coverage-php \"$COVERAGE_DIR/php.cov\"" + ], + "test-php": [ + "@composer phpunit" + ] + }, + "license": [ + "GPL-2.0-or-later" + ], + "description": "A custom installer plugin for Composer to move Jetpack packages out of `vendor/` so WordPress's translation infrastructure will find their strings.", + "keywords": [ + "composer", + "i18n", + "jetpack", + "plugin" + ], + "transport-options": { + "relative": true + } + }, + { + "name": "automattic/jetpack-premium-analytics", + "version": "dev-trunk", + "dist": { + "type": "path", + "url": "../../packages/premium-analytics", + "reference": "2c6f6f7059ee108c5d6cb9aa079a757824c2d845" + }, + "require": { + "php": ">=7.2" + }, + "require-dev": { + "automattic/jetpack-changelogger": "@dev", + "automattic/phpunit-select-config": "@dev", + "yoast/phpunit-polyfills": "^4.0.0" + }, + "type": "jetpack-library", + "extra": { + "autotagger": true, + "mirror-repo": "Automattic/jetpack-premium-analytics", + "textdomain": "jetpack-premium-analytics", + "version-constants": { + "::PACKAGE_VERSION": "src/class-analytics.php" + }, + "changelogger": { + "link-template": "https://github.com/Automattic/jetpack-premium-analytics/compare/${old}...${new}" + }, + "branch-alias": { + "dev-trunk": "0.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "scripts": { + "phpunit": [ + "phpunit-select-config phpunit.#.xml.dist --colors=always" + ], + "test-coverage": [ + "php -dpcov.directory=. ./vendor/bin/phpunit-select-config phpunit.#.xml.dist --coverage-php \"$COVERAGE_DIR/php.cov\"" + ], + "test-php": [ + "@composer phpunit" + ], + "build-development": [ + "pnpm run build" + ], + "build-production": [ + "pnpm run build-production" + ] + }, + "license": [ + "GPL-2.0-or-later" + ], + "description": "Premium Analytics dashboard for Jetpack sites.", + "transport-options": { + "relative": true + } + } + ], + "packages-dev": [ + { + "name": "automattic/jetpack-changelogger", + "version": "dev-trunk", + "dist": { + "type": "path", + "url": "../../packages/changelogger", + "reference": "b5353c88e04d5fae32ee501b1a0a4234ee968e56" + }, + "require": { + "composer-runtime-api": "^2.2.0", + "php": ">=7.2.5", + "symfony/console": "^5.4 || ^6.4 || ^7.1", + "symfony/process": "^5.4 || ^6.4 || ^7.1" + }, + "require-dev": { + "automattic/phpunit-select-config": "@dev", + "wikimedia/testing-access-wrapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", + "yoast/phpunit-polyfills": "^4.0.0" + }, + "bin": [ + "bin/changelogger" + ], + "type": "project", + "extra": { + "autotagger": true, + "branch-alias": { + "dev-trunk": "6.0.x-dev" + }, + "mirror-repo": "Automattic/jetpack-changelogger", + "version-constants": { + "::VERSION": "src/Application.php" + }, + "changelogger": { + "link-template": "https://github.com/Automattic/jetpack-changelogger/compare/${old}...${new}" + }, + "dependencies": { + "test-only": [ + "packages/phpunit-select-config" + ] + } + }, + "autoload": { + "psr-4": { + "Automattic\\Jetpack\\Changelogger\\": "src", + "Automattic\\Jetpack\\Changelog\\": "lib" + } + }, + "autoload-dev": { + "psr-4": { + "Automattic\\Jetpack\\Changelogger\\Tests\\": "tests/php/includes/src", + "Automattic\\Jetpack\\Changelog\\Tests\\": "tests/php/includes/lib" + } + }, + "scripts": { + "phpunit": [ + "phpunit-select-config phpunit.#.xml.dist --colors=always" + ], + "test-coverage": [ + "php -dpcov.directory=. ./vendor/bin/phpunit-select-config phpunit.#.xml.dist --coverage-php \"$COVERAGE_DIR/php.cov\"" + ], + "test-php": [ + "@composer phpunit" + ], + "post-install-cmd": [ + "rm -f vendor/bin/changelogger && ln -s ../../bin/local-changelogger vendor/bin/changelogger" + ], + "post-update-cmd": [ + "rm -f vendor/bin/changelogger && ln -s ../../bin/local-changelogger vendor/bin/changelogger" + ] + }, + "license": [ + "GPL-2.0-or-later" + ], + "description": "Jetpack Changelogger tool. Allows for managing changelogs by dropping change files into a changelog directory with each PR.", + "keywords": [ + "changelog", + "cli", + "dev", + "keepachangelog" + ], + "transport-options": { + "relative": true + } + }, + { + "name": "automattic/phpunit-select-config", + "version": "dev-trunk", + "dist": { + "type": "path", + "url": "../../packages/phpunit-select-config", + "reference": "3f16352a5a43bdd583b78d895d092a1e1b74c397" + }, + "require": { + "composer-runtime-api": "^2.2.2", + "php": ">=5.4", + "phpunit/phpunit": "*" + }, + "require-dev": { + "antecedent/patchwork": "^2.2", + "automattic/jetpack-changelogger": "@dev", + "yoast/phpunit-polyfills": "^4.0.0" + }, + "bin": [ + "bin/phpunit-select-config" + ], + "type": "library", + "extra": { + "autotagger": true, + "branch-alias": { + "dev-trunk": "1.0.x-dev" + }, + "changelogger": { + "link-template": "https://github.com/Automattic/phpunit-select-config/compare/v${old}...v${new}" + }, + "mirror-repo": "Automattic/phpunit-select-config" + }, + "scripts": { + "phpunit": [ + "./vendor/bin/phpunit-select-config phpunit.#.xml.dist --colors=always" + ], + "test-coverage": [ + "php -dpcov.directory=. ./vendor/bin/phpunit-select-config phpunit.#.xml.dist --coverage-php \"$COVERAGE_DIR/php.cov\"" + ], + "test-php": [ + "@composer phpunit" + ], + "post-install-cmd": [ + "rm -f vendor/bin/phpunit-select-config && ln -s ../../bin/local-phpunit-select-config vendor/bin/phpunit-select-config" + ], + "post-update-cmd": [ + "rm -f vendor/bin/phpunit-select-config && ln -s ../../bin/local-phpunit-select-config vendor/bin/phpunit-select-config" + ] + }, + "license": [ + "GPL-2.0-or-later" + ], + "description": "Run PHPUnit, choosing a configuration file by version.", + "keywords": [ + "config", + "dev", + "phpunit" + ], + "transport-options": { + "relative": true + } + }, + { + "name": "myclabs/deep-copy", + "version": "1.13.4", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3 <3.2.2" + }, + "require-dev": { + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + }, + "type": "library", + "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.4" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2025-08-01T08:46:24+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v5.7.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.4" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v5.7.0" + }, + "time": "2025-12-06T11:56:16+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "54750ef60c58e43759730615a392c31c80e23176" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" + }, + { + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "12.5.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "a25bde1f8f83849f441ef5713c6466e470872a71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/a25bde1f8f83849f441ef5713c6466e470872a71", + "reference": "a25bde1f8f83849f441ef5713c6466e470872a71", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^5.7.0", + "php": ">=8.3", + "phpunit/php-text-template": "^5.0", + "sebastian/complexity": "^5.0", + "sebastian/environment": "^8.0.3", + "sebastian/lines-of-code": "^4.0", + "sebastian/version": "^6.0", + "theseer/tokenizer": "^2.0.1" + }, + "require-dev": { + "phpunit/phpunit": "^12.5.1" + }, + "suggest": { + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "12.5.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/12.5.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-code-coverage", + "type": "tidelift" + } + ], + "time": "2026-04-13T04:53:32+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "6.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "3d1cd096ef6bea4bf2762ba586e35dbd317cbfd5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3d1cd096ef6bea4bf2762ba586e35dbd317cbfd5", + "reference": "3d1cd096ef6bea4bf2762ba586e35dbd317cbfd5", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/6.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-file-iterator", + "type": "tidelift" + } + ], + "time": "2026-02-02T14:04:18+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "6.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "12b54e689b07a25a9b41e57736dfab6ec9ae5406" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/12b54e689b07a25a9b41e57736dfab6ec9ae5406", + "reference": "12b54e689b07a25a9b41e57736dfab6ec9ae5406", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^12.0" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "security": "https://github.com/sebastianbergmann/php-invoker/security/policy", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/6.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-02-07T04:58:58+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "e1367a453f0eda562eedb4f659e13aa900d66c53" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/e1367a453f0eda562eedb4f659e13aa900d66c53", + "reference": "e1367a453f0eda562eedb4f659e13aa900d66c53", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-02-07T04:59:16+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "8.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc", + "reference": "f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "8.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "security": "https://github.com/sebastianbergmann/php-timer/security/policy", + "source": "https://github.com/sebastianbergmann/php-timer/tree/8.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-02-07T04:59:38+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "12.5.19", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "92f7744ca5f5701c9e4b4a60d9e143f2d84956da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/92f7744ca5f5701c9e4b4a60d9e143f2d84956da", + "reference": "92f7744ca5f5701c9e4b4a60d9e143f2d84956da", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.13.4", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", + "php": ">=8.3", + "phpunit/php-code-coverage": "^12.5.5", + "phpunit/php-file-iterator": "^6.0.1", + "phpunit/php-invoker": "^6.0.0", + "phpunit/php-text-template": "^5.0.0", + "phpunit/php-timer": "^8.0.0", + "sebastian/cli-parser": "^4.2.0", + "sebastian/comparator": "^7.1.5", + "sebastian/diff": "^7.0.0", + "sebastian/environment": "^8.0.4", + "sebastian/exporter": "^7.0.2", + "sebastian/global-state": "^8.0.2", + "sebastian/object-enumerator": "^7.0.0", + "sebastian/recursion-context": "^7.0.1", + "sebastian/type": "^6.0.3", + "sebastian/version": "^6.0.0", + "staabm/side-effects-detector": "^1.0.5" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "12.5-dev" + } + }, + "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/12.5.19" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsoring.html", + "type": "other" + } + ], + "time": "2026-04-13T05:38:19+00:00" + }, + { + "name": "psr/container", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" + }, + "time": "2021-11-05T16:47:00+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "4.2.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "90f41072d220e5c40df6e8635f5dafba2d9d4d04" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/90f41072d220e5c40df6e8635f5dafba2d9d4d04", + "reference": "90f41072d220e5c40df6e8635f5dafba2d9d4d04", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/4.2.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/cli-parser", + "type": "tidelift" + } + ], + "time": "2025-09-14T09:36:45+00:00" + }, + { + "name": "sebastian/comparator", + "version": "7.1.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "c769009dee98f494e0edc3fd4f4087501688f11e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/c769009dee98f494e0edc3fd4f4087501688f11e", + "reference": "c769009dee98f494e0edc3fd4f4087501688f11e", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.3", + "sebastian/diff": "^7.0", + "sebastian/exporter": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^12.2" + }, + "suggest": { + "ext-bcmath": "For comparing BcMath\\Number objects" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/7.1.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", + "type": "tidelift" + } + ], + "time": "2026-04-14T08:23:15+00:00" + }, + { + "name": "sebastian/complexity", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "bad4316aba5303d0221f43f8cee37eb58d384bbb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/bad4316aba5303d0221f43f8cee37eb58d384bbb", + "reference": "bad4316aba5303d0221f43f8cee37eb58d384bbb", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^5.0", + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-02-07T04:55:25+00:00" + }, + { + "name": "sebastian/diff", + "version": "7.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "7ab1ea946c012266ca32390913653d844ecd085f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7ab1ea946c012266ca32390913653d844ecd085f", + "reference": "7ab1ea946c012266ca32390913653d844ecd085f", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.0", + "symfony/process": "^7.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/7.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-02-07T04:55:46+00:00" + }, + { + "name": "sebastian/environment", + "version": "8.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "7b8842c2d8e85d0c3a5831236bf5869af6ab2a11" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/7b8842c2d8e85d0c3a5831236bf5869af6ab2a11", + "reference": "7b8842c2d8e85d0c3a5831236bf5869af6ab2a11", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.0" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "8.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "https://github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/8.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/environment", + "type": "tidelift" + } + ], + "time": "2026-03-15T07:05:40+00:00" + }, + { + "name": "sebastian/exporter", + "version": "7.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "016951ae10980765e4e7aee491eb288c64e505b7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/016951ae10980765e4e7aee491eb288c64e505b7", + "reference": "016951ae10980765e4e7aee491eb288c64e505b7", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=8.3", + "sebastian/recursion-context": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^12.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/7.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter", + "type": "tidelift" + } + ], + "time": "2025-09-24T06:16:11+00:00" + }, + { + "name": "sebastian/global-state", + "version": "8.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "ef1377171613d09edd25b7816f05be8313f9115d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/ef1377171613d09edd25b7816f05be8313f9115d", + "reference": "ef1377171613d09edd25b7816f05be8313f9115d", + "shasum": "" + }, + "require": { + "php": ">=8.3", + "sebastian/object-reflector": "^5.0", + "sebastian/recursion-context": "^7.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^12.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "8.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "https://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/8.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/global-state", + "type": "tidelift" + } + ], + "time": "2025-08-29T11:29:25+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "97ffee3bcfb5805568d6af7f0f893678fc076d2f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/97ffee3bcfb5805568d6af7f0f893678fc076d2f", + "reference": "97ffee3bcfb5805568d6af7f0f893678fc076d2f", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^5.0", + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/4.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-02-07T04:57:28+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "7.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "1effe8e9b8e068e9ae228e542d5d11b5d16db894" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1effe8e9b8e068e9ae228e542d5d11b5d16db894", + "reference": "1effe8e9b8e068e9ae228e542d5d11b5d16db894", + "shasum": "" + }, + "require": { + "php": ">=8.3", + "sebastian/object-reflector": "^5.0", + "sebastian/recursion-context": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^12.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/7.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-02-07T04:57:48+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "4bfa827c969c98be1e527abd576533293c634f6a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/4bfa827c969c98be1e527abd576533293c634f6a", + "reference": "4bfa827c969c98be1e527abd576533293c634f6a", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "security": "https://github.com/sebastianbergmann/object-reflector/security/policy", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-02-07T04:58:17+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "7.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "0b01998a7d5b1f122911a66bebcb8d46f0c82d8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/0b01998a7d5b1f122911a66bebcb8d46f0c82d8c", + "reference": "0b01998a7d5b1f122911a66bebcb8d46f0c82d8c", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "https://github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/7.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", + "type": "tidelift" + } + ], + "time": "2025-08-13T04:44:59+00:00" + }, + { + "name": "sebastian/type", + "version": "6.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "e549163b9760b8f71f191651d22acf32d56d6d4d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/e549163b9760b8f71f191651d22acf32d56d6d4d", + "reference": "e549163b9760b8f71f191651d22acf32d56d6d4d", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "security": "https://github.com/sebastianbergmann/type/security/policy", + "source": "https://github.com/sebastianbergmann/type/tree/6.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/type", + "type": "tidelift" + } + ], + "time": "2025-08-09T06:57:12+00:00" + }, + { + "name": "sebastian/version", + "version": "6.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "3e6ccf7657d4f0a59200564b08cead899313b53c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/3e6ccf7657d4f0a59200564b08cead899313b53c", + "reference": "3e6ccf7657d4f0a59200564b08cead899313b53c", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "security": "https://github.com/sebastianbergmann/version/security/policy", + "source": "https://github.com/sebastianbergmann/version/tree/6.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-02-07T05:00:38+00:00" + }, + { + "name": "staabm/side-effects-detector", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/staabm/side-effects-detector.git", + "reference": "d8334211a140ce329c13726d4a715adbddd0a163" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/staabm/side-effects-detector/zipball/d8334211a140ce329c13726d4a715adbddd0a163", + "reference": "d8334211a140ce329c13726d4a715adbddd0a163", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^1.12.6", + "phpunit/phpunit": "^9.6.21", + "symfony/var-dumper": "^5.4.43", + "tomasvotruba/type-coverage": "1.0.0", + "tomasvotruba/unused-public": "1.0.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "lib/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A static analysis tool to detect side effects in PHP code", + "keywords": [ + "static analysis" + ], + "support": { + "issues": "https://github.com/staabm/side-effects-detector/issues", + "source": "https://github.com/staabm/side-effects-detector/tree/1.0.5" + }, + "funding": [ + { + "url": "https://github.com/staabm", + "type": "github" + } + ], + "time": "2024-10-20T05:08:20+00:00" + }, + { + "name": "symfony/console", + "version": "v7.4.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "1e92e39c51f95b88e3d66fa2d9f06d1fb45dd707" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/1e92e39c51f95b88e3d66fa2d9f06d1fb45dd707", + "reference": "1e92e39c51f95b88e3d66fa2d9f06d1fb45dd707", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^7.2|^8.0" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/dotenv": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/lock": "<6.4", + "symfony/process": "<6.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/lock": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v7.4.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-03-30T13:54:39+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:21:43+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.35.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "141046a8f9477948ff284fa65be2095baafb94f2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/141046a8f9477948ff284fa65be2095baafb94f2", + "reference": "141046a8f9477948ff284fa65be2095baafb94f2", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.35.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-04-10T16:19:22+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.35.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "ad1b7b9092976d6c948b8a187cec9faaea9ec1df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/ad1b7b9092976d6c948b8a187cec9faaea9ec1df", + "reference": "ad1b7b9092976d6c948b8a187cec9faaea9ec1df", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.35.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-04-10T16:19:22+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.35.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "3833d7255cc303546435cb650316bff708a1c75c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.35.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.35.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "6a21eb99c6973357967f6ce3708cd55a6bec6315" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6a21eb99c6973357967f6ce3708cd55a6bec6315", + "reference": "6a21eb99c6973357967f6ce3708cd55a6bec6315", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "php": ">=7.2" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.35.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-04-10T17:25:58+00:00" + }, + { + "name": "symfony/process", + "version": "v7.4.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "60f19cd3badc8de688421e21e4305eba50f8089a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/60f19cd3badc8de688421e21e4305eba50f8089a", + "reference": "60f19cd3badc8de688421e21e4305eba50f8089a", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v7.4.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-03-24T13:12:05+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v3.6.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/45112560a3ba2d715666a509a0bc9521d10b6c43", + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v3.6.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-15T11:30:57+00:00" + }, + { + "name": "symfony/string", + "version": "v8.0.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "ae9488f874d7603f9d2dfbf120203882b645d963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/ae9488f874d7603f9d2dfbf120203882b645d963", + "reference": "ae9488f874d7603f9d2dfbf120203882b645d963", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-intl-grapheme": "^1.33", + "symfony/polyfill-intl-normalizer": "^1.0", + "symfony/polyfill-mbstring": "^1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.5" + }, + "require-dev": { + "symfony/emoji": "^7.4|^8.0", + "symfony/http-client": "^7.4|^8.0", + "symfony/intl": "^7.4|^8.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^7.4|^8.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v8.0.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-03-30T15:14:47+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "7989e43bf381af0eac72e4f0ca5bcbfa81658be4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/7989e43bf381af0eac72e4f0ca5bcbfa81658be4", + "reference": "7989e43bf381af0eac72e4f0ca5bcbfa81658be4", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^8.1" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/2.0.1" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2025-12-08T11:19:18+00:00" + }, + { + "name": "yoast/phpunit-polyfills", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/Yoast/PHPUnit-Polyfills.git", + "reference": "134921bfca9b02d8f374c48381451da1d98402f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Yoast/PHPUnit-Polyfills/zipball/134921bfca9b02d8f374c48381451da1d98402f9", + "reference": "134921bfca9b02d8f374c48381451da1d98402f9", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "phpunit/phpunit": "^7.5 || ^8.0 || ^9.0 || ^11.0 || ^12.0" + }, + "require-dev": { + "php-parallel-lint/php-console-highlighter": "^1.0.0", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "yoast/yoastcs": "^3.1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.x-dev" + } + }, + "autoload": { + "files": [ + "phpunitpolyfills-autoload.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Team Yoast", + "email": "support@yoast.com", + "homepage": "https://yoast.com" + }, + { + "name": "Contributors", + "homepage": "https://github.com/Yoast/PHPUnit-Polyfills/graphs/contributors" + } + ], + "description": "Set of polyfills for changed PHPUnit functionality to allow for creating PHPUnit cross-version compatible tests", + "homepage": "https://github.com/Yoast/PHPUnit-Polyfills", + "keywords": [ + "phpunit", + "polyfill", + "testing" + ], + "support": { + "issues": "https://github.com/Yoast/PHPUnit-Polyfills/issues", + "security": "https://github.com/Yoast/PHPUnit-Polyfills/security/policy", + "source": "https://github.com/Yoast/PHPUnit-Polyfills" + }, + "time": "2025-02-09T18:58:54+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": { + "automattic/jetpack-autoloader": 20, + "automattic/jetpack-changelogger": 20, + "automattic/jetpack-composer-plugin": 20, + "automattic/jetpack-premium-analytics": 20, + "automattic/phpunit-select-config": 20 + }, + "prefer-stable": true, + "prefer-lowest": false, + "platform": {}, + "platform-dev": {}, + "plugin-api-version": "2.9.0" +} From c63c65bf390428c49528ef88d145a060733ecc2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dami=C3=A1n=20Su=C3=A1rez?= Date: Tue, 14 Apr 2026 12:56:52 +0100 Subject: [PATCH 03/27] fix autoloader suffix version to match alpha tag --- projects/plugins/premium-analytics/composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/plugins/premium-analytics/composer.json b/projects/plugins/premium-analytics/composer.json index 82188e5e0ea9..ac971ac979e1 100644 --- a/projects/plugins/premium-analytics/composer.json +++ b/projects/plugins/premium-analytics/composer.json @@ -55,6 +55,6 @@ "automattic/jetpack-autoloader": true, "automattic/jetpack-composer-plugin": true }, - "autoloader-suffix": "premium_analytics_pluginⓥ0_1_0" + "autoloader-suffix": "premium_analytics_pluginⓥ0_1_0_alpha" } } From cce9082428f499c686e6bf74c7fc33d688e8819a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dami=C3=A1n=20Su=C3=A1rez?= Date: Tue, 14 Apr 2026 12:58:31 +0100 Subject: [PATCH 04/27] update pnpm-lock.yaml for premium-analytics plugin --- pnpm-lock.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2745fd73b612..9c6a09d5cc1d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5456,6 +5456,8 @@ importers: specifier: ^0.0.26 version: 0.0.26 + projects/plugins/premium-analytics: {} + projects/plugins/protect: dependencies: '@automattic/jetpack-analytics': From 9bdde218aa20b8f9e93cfa9ff1d29c41f15e60b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dami=C3=A1n=20Su=C3=A1rez?= Date: Tue, 14 Apr 2026 13:10:29 +0100 Subject: [PATCH 05/27] fix CI checks for premium-analytics plugin --- projects/plugins/premium-analytics/.gitattributes | 3 +++ projects/plugins/premium-analytics/changelog/.gitkeep | 0 projects/plugins/premium-analytics/composer.json | 3 ++- projects/plugins/premium-analytics/tests/.phpcs.dir.xml | 5 +++-- 4 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 projects/plugins/premium-analytics/changelog/.gitkeep diff --git a/projects/plugins/premium-analytics/.gitattributes b/projects/plugins/premium-analytics/.gitattributes index d72919c69286..ebe2d1c537a5 100644 --- a/projects/plugins/premium-analytics/.gitattributes +++ b/projects/plugins/premium-analytics/.gitattributes @@ -5,6 +5,9 @@ # Files to include in the mirror repo, but excluded via gitignore # Remember to end all directories with `/**` to properly tag every file. # /build/** production-include +/vendor/automattic/jetpack-autoloader/** production-include +/vendor/automattic/jetpack-composer-plugin/** production-include +/jetpack_vendor/automattic/jetpack-premium-analytics/** production-include # Files to exclude from the mirror repo, but included in the monorepo. # Remember to end all directories with `/**` to properly tag every file. diff --git a/projects/plugins/premium-analytics/changelog/.gitkeep b/projects/plugins/premium-analytics/changelog/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/projects/plugins/premium-analytics/composer.json b/projects/plugins/premium-analytics/composer.json index ac971ac979e1..02d8cebdbdd5 100644 --- a/projects/plugins/premium-analytics/composer.json +++ b/projects/plugins/premium-analytics/composer.json @@ -45,6 +45,7 @@ "changelogger": { "versioning": "semver" }, + "wp-plugin-slug": "jetpack-premium-analytics", "version-constants": { "JETPACK_PREMIUM_ANALYTICS__VERSION": "jetpack-premium-analytics.php" } @@ -55,6 +56,6 @@ "automattic/jetpack-autoloader": true, "automattic/jetpack-composer-plugin": true }, - "autoloader-suffix": "premium_analytics_pluginⓥ0_1_0_alpha" + "autoloader-suffix": "27f73650548e1cc5b87270d75ceb203b_premium_analyticsⓥ0_1_0_alpha" } } diff --git a/projects/plugins/premium-analytics/tests/.phpcs.dir.xml b/projects/plugins/premium-analytics/tests/.phpcs.dir.xml index f511ec8665e2..2c5f193d7e58 100644 --- a/projects/plugins/premium-analytics/tests/.phpcs.dir.xml +++ b/projects/plugins/premium-analytics/tests/.phpcs.dir.xml @@ -1,6 +1,7 @@ - - 0 + + + From 851c081c7fe9f3dc6957c0826965767fbd2c610a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dami=C3=A1n=20Su=C3=A1rez?= Date: Tue, 14 Apr 2026 13:16:09 +0100 Subject: [PATCH 06/27] remove wp-plugin-slug and update composer.lock --- projects/plugins/premium-analytics/composer.json | 1 - 1 file changed, 1 deletion(-) diff --git a/projects/plugins/premium-analytics/composer.json b/projects/plugins/premium-analytics/composer.json index 02d8cebdbdd5..ca89dcc1a401 100644 --- a/projects/plugins/premium-analytics/composer.json +++ b/projects/plugins/premium-analytics/composer.json @@ -45,7 +45,6 @@ "changelogger": { "versioning": "semver" }, - "wp-plugin-slug": "jetpack-premium-analytics", "version-constants": { "JETPACK_PREMIUM_ANALYTICS__VERSION": "jetpack-premium-analytics.php" } From 5865f61cbcc9028b4fb519e1b6971286547f61ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dami=C3=A1n=20Su=C3=A1rez?= Date: Tue, 14 Apr 2026 13:24:12 +0100 Subject: [PATCH 07/27] remove textdomain phpcs config from internal plugin --- .../plugins/premium-analytics/.phpcs.dir.xml | 21 ------------------- 1 file changed, 21 deletions(-) diff --git a/projects/plugins/premium-analytics/.phpcs.dir.xml b/projects/plugins/premium-analytics/.phpcs.dir.xml index 70bdaf84b429..88f1672ab998 100644 --- a/projects/plugins/premium-analytics/.phpcs.dir.xml +++ b/projects/plugins/premium-analytics/.phpcs.dir.xml @@ -1,24 +1,3 @@ - - - - - - - - - - - - - - - - - - - - - From 35f7b41a508476472961a67ce50dd38808e71032 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dami=C3=A1n=20Su=C3=A1rez?= Date: Tue, 14 Apr 2026 13:32:14 +0100 Subject: [PATCH 08/27] remove i18n from internal plugin error strings --- .../jetpack-premium-analytics.php | 22 +++---------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/projects/plugins/premium-analytics/jetpack-premium-analytics.php b/projects/plugins/premium-analytics/jetpack-premium-analytics.php index 5f556bad345b..dbfbc8eafa39 100644 --- a/projects/plugins/premium-analytics/jetpack-premium-analytics.php +++ b/projects/plugins/premium-analytics/jetpack-premium-analytics.php @@ -33,9 +33,7 @@ require_once $jetpack_autoloader; } else { if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) { - error_log( // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log - __( 'Error loading autoloader file for Jetpack Premium Analytics plugin', 'jetpack-premium-analytics' ) - ); + error_log( 'Error loading autoloader file for Jetpack Premium Analytics plugin' ); // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log } add_action( @@ -45,22 +43,8 @@ function () { return; } - $message = sprintf( - wp_kses( - /* translators: Placeholder is a link to a support document. */ - __( 'Your installation of Jetpack Premium Analytics is incomplete. If you installed Jetpack Premium Analytics from GitHub, please refer to this document to set up your development environment.', 'jetpack-premium-analytics' ), - array( - 'a' => array( - 'href' => array(), - 'target' => array(), - 'rel' => array(), - ), - ) - ), - 'https://github.com/Automattic/jetpack/blob/trunk/docs/development-environment.md#building-your-project' - ); wp_admin_notice( - $message, + 'Your installation of Jetpack Premium Analytics is incomplete. Please refer to this document to set up your development environment.', array( 'type' => 'error', 'dismissible' => true, @@ -76,7 +60,7 @@ function () { add_filter( 'plugin_action_links_' . JETPACK_PREMIUM_ANALYTICS_FOLDER . '/jetpack-premium-analytics.php', function ( $actions ) { - $settings_link = '' . __( 'Settings', 'jetpack-premium-analytics' ) . ''; + $settings_link = 'Settings'; array_unshift( $actions, $settings_link ); return $actions; From b81ec86907a2ae795ebb90f5464e94b27f2a3f44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dami=C3=A1n=20Su=C3=A1rez?= Date: Tue, 14 Apr 2026 16:30:10 +0100 Subject: [PATCH 09/27] Update projects/plugins/premium-analytics/.gitattributes Co-authored-by: Brad Jorsch --- projects/plugins/premium-analytics/.gitattributes | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/plugins/premium-analytics/.gitattributes b/projects/plugins/premium-analytics/.gitattributes index ebe2d1c537a5..0d307e670223 100644 --- a/projects/plugins/premium-analytics/.gitattributes +++ b/projects/plugins/premium-analytics/.gitattributes @@ -15,3 +15,5 @@ changelog/** production-exclude tests/** production-exclude .phpcsignore production-exclude +.phpcs.dir.xml production-exclude +/composer.lock production-exclude From ecf8b9064a932b1c6b861ec30c6271d27eb0570c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dami=C3=A1n=20Su=C3=A1rez?= Date: Tue, 14 Apr 2026 18:59:23 +0100 Subject: [PATCH 10/27] remove empty phpcs, phan baseline, and package.json --- .../plugins/premium-analytics/.phan/baseline.php | 12 ------------ projects/plugins/premium-analytics/.phpcs.dir.xml | 3 --- projects/plugins/premium-analytics/package.json | 6 ------ 3 files changed, 21 deletions(-) delete mode 100644 projects/plugins/premium-analytics/.phan/baseline.php delete mode 100644 projects/plugins/premium-analytics/.phpcs.dir.xml delete mode 100644 projects/plugins/premium-analytics/package.json diff --git a/projects/plugins/premium-analytics/.phan/baseline.php b/projects/plugins/premium-analytics/.phan/baseline.php deleted file mode 100644 index c7aa9a4dd4f3..000000000000 --- a/projects/plugins/premium-analytics/.phan/baseline.php +++ /dev/null @@ -1,12 +0,0 @@ - [], - // 'directory_suppressions' => ['src/directory_name' => ['PhanIssueName1', 'PhanIssueName2']] can be manually added if needed. - // (directory_suppressions will currently be ignored by subsequent calls to --save-baseline, but may be preserved in future Phan releases) -]; diff --git a/projects/plugins/premium-analytics/.phpcs.dir.xml b/projects/plugins/premium-analytics/.phpcs.dir.xml deleted file mode 100644 index 88f1672ab998..000000000000 --- a/projects/plugins/premium-analytics/.phpcs.dir.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/projects/plugins/premium-analytics/package.json b/projects/plugins/premium-analytics/package.json deleted file mode 100644 index bda72ceb04b7..000000000000 --- a/projects/plugins/premium-analytics/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "private": true, - "description": "Premium Analytics dashboard for Jetpack sites.", - "license": "GPL-2.0-or-later", - "author": "Automattic" -} From 86ea16e6ebfe2e5dba07cbfae65b6f1db13c12ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dami=C3=A1n=20Su=C3=A1rez?= Date: Wed, 15 Apr 2026 15:08:23 +0100 Subject: [PATCH 11/27] allow consumer to configure admin menu title default remains 'Analytics'; plugin passes 'Premium Analytics' --- pnpm-lock.yaml | 4 +--- .../changelog/update-premium-analytics-plugin | 4 ++++ .../premium-analytics/src/class-analytics.php | 20 ++++++++++++++++--- .../src/class-jetpack-premium-analytics.php | 2 +- 4 files changed, 23 insertions(+), 7 deletions(-) create mode 100644 projects/packages/premium-analytics/changelog/update-premium-analytics-plugin diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9c6a09d5cc1d..06fa90d7bc32 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3473,7 +3473,7 @@ importers: version: 6.16.0 '@wordpress/icons': specifier: ^12.0.0 - version: 12.0.0(react@18.3.1) + version: 12.1.0(react@18.3.1) '@wordpress/route': specifier: 0.9.0 version: 0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -5456,8 +5456,6 @@ importers: specifier: ^0.0.26 version: 0.0.26 - projects/plugins/premium-analytics: {} - projects/plugins/protect: dependencies: '@automattic/jetpack-analytics': diff --git a/projects/packages/premium-analytics/changelog/update-premium-analytics-plugin b/projects/packages/premium-analytics/changelog/update-premium-analytics-plugin new file mode 100644 index 000000000000..41480723c7e7 --- /dev/null +++ b/projects/packages/premium-analytics/changelog/update-premium-analytics-plugin @@ -0,0 +1,4 @@ +Significance: patch +Type: changed + +Allow consumers to configure the admin menu title via init options. diff --git a/projects/packages/premium-analytics/src/class-analytics.php b/projects/packages/premium-analytics/src/class-analytics.php index bdd91c6f9cbe..e3cc93a370e7 100644 --- a/projects/packages/premium-analytics/src/class-analytics.php +++ b/projects/packages/premium-analytics/src/class-analytics.php @@ -24,18 +24,32 @@ class Analytics { */ private static $initialized = false; + /** + * Menu title for the admin page. + * + * @var string + */ + private static $menu_title = 'Analytics'; + /** * Initialize the Analytics app. * + * @param array $options Optional configuration options. + * Supported keys: + * - menu_title (string): Admin menu label. * @return void */ - public static function init() { + public static function init( $options = array() ) { if ( self::$initialized ) { return; } self::$initialized = true; + if ( ! empty( $options['menu_title'] ) ) { + self::$menu_title = $options['menu_title']; + } + // Load wp-build output (interceptor, modules, routes, page render). $build_entry = __DIR__ . '/../build/build.php'; if ( file_exists( $build_entry ) ) { @@ -57,8 +71,8 @@ public static function init() { */ public static function register_admin_menu() { add_menu_page( - __( 'Analytics', 'jetpack-premium-analytics' ), - __( 'Analytics', 'jetpack-premium-analytics' ), + esc_html( self::$menu_title ), + esc_html( self::$menu_title ), 'manage_options', 'jetpack-premium-analytics', '__return_null', diff --git a/projects/plugins/premium-analytics/src/class-jetpack-premium-analytics.php b/projects/plugins/premium-analytics/src/class-jetpack-premium-analytics.php index acbfbf33bca7..88d943ebc3c2 100644 --- a/projects/plugins/premium-analytics/src/class-jetpack-premium-analytics.php +++ b/projects/plugins/premium-analytics/src/class-jetpack-premium-analytics.php @@ -24,6 +24,6 @@ class Jetpack_Premium_Analytics { * Constructor. */ public function __construct() { - Analytics::init(); + Analytics::init( array( 'menu_title' => 'Premium Analytics' ) ); } } From 4e68e5a8f8616c6315f19ea32bc902bc6a0f7e62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dami=C3=A1n=20Su=C3=A1rez?= Date: Wed, 15 Apr 2026 15:38:29 +0100 Subject: [PATCH 12/27] add placeholder test for premium-analytics plugin --- .../tests/php/AnalyticsInitTest.php | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 projects/plugins/premium-analytics/tests/php/AnalyticsInitTest.php diff --git a/projects/plugins/premium-analytics/tests/php/AnalyticsInitTest.php b/projects/plugins/premium-analytics/tests/php/AnalyticsInitTest.php new file mode 100644 index 000000000000..4cd60d853193 --- /dev/null +++ b/projects/plugins/premium-analytics/tests/php/AnalyticsInitTest.php @@ -0,0 +1,22 @@ +assertTrue( class_exists( Analytics::class ) ); + } +} From 61e4b829b8410db0e7b467143eb78a05f675b7fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dami=C3=A1n=20Su=C3=A1rez?= Date: Fri, 10 Apr 2026 19:52:23 +0100 Subject: [PATCH 13/27] add analytics package with wp-build SPA framework Composer package (automattic/jetpack-analytics) that renders a full-page admin dashboard using @wordpress/boot. Designed to be consumed by any plugin via Analytics::init(). --- projects/packages/analytics/.gitattributes | 16 +++ projects/packages/analytics/.gitignore | 6 + .../packages/analytics/.phan/baseline.php | 12 ++ projects/packages/analytics/.phan/config.php | 13 ++ projects/packages/analytics/.phpcs.dir.xml | 24 ++++ projects/packages/analytics/CHANGELOG.md | 7 + projects/packages/analytics/README.md | 132 ++++++++++++++++++ .../analytics/changelog/initial-version | 4 + projects/packages/analytics/composer.json | 61 ++++++++ projects/packages/analytics/package.json | 44 ++++++ .../analytics/packages/init/package.json | 14 ++ .../analytics/packages/init/src/index.ts | 16 +++ .../packages/analytics/phpunit.11.xml.dist | 34 +++++ .../packages/analytics/phpunit.12.xml.dist | 1 + .../packages/analytics/phpunit.8.xml.dist | 1 + .../packages/analytics/phpunit.9.xml.dist | 17 +++ .../analytics/routes/dashboard/package.json | 11 ++ .../analytics/routes/dashboard/stage.tsx | 10 ++ .../packages/analytics/shims/boot-asset.php | 36 +++++ .../analytics/src/class-analytics.php | 86 ++++++++++++ .../packages/analytics/tests/.phpcs.dir.xml | 6 + .../analytics/tests/php/bootstrap.php | 11 ++ projects/packages/analytics/tsconfig.json | 16 +++ 23 files changed, 578 insertions(+) create mode 100644 projects/packages/analytics/.gitattributes create mode 100644 projects/packages/analytics/.gitignore create mode 100644 projects/packages/analytics/.phan/baseline.php create mode 100644 projects/packages/analytics/.phan/config.php create mode 100644 projects/packages/analytics/.phpcs.dir.xml create mode 100644 projects/packages/analytics/CHANGELOG.md create mode 100644 projects/packages/analytics/README.md create mode 100644 projects/packages/analytics/changelog/initial-version create mode 100644 projects/packages/analytics/composer.json create mode 100644 projects/packages/analytics/package.json create mode 100644 projects/packages/analytics/packages/init/package.json create mode 100644 projects/packages/analytics/packages/init/src/index.ts create mode 100644 projects/packages/analytics/phpunit.11.xml.dist create mode 120000 projects/packages/analytics/phpunit.12.xml.dist create mode 120000 projects/packages/analytics/phpunit.8.xml.dist create mode 100644 projects/packages/analytics/phpunit.9.xml.dist create mode 100644 projects/packages/analytics/routes/dashboard/package.json create mode 100644 projects/packages/analytics/routes/dashboard/stage.tsx create mode 100644 projects/packages/analytics/shims/boot-asset.php create mode 100644 projects/packages/analytics/src/class-analytics.php create mode 100644 projects/packages/analytics/tests/.phpcs.dir.xml create mode 100644 projects/packages/analytics/tests/php/bootstrap.php create mode 100644 projects/packages/analytics/tsconfig.json diff --git a/projects/packages/analytics/.gitattributes b/projects/packages/analytics/.gitattributes new file mode 100644 index 000000000000..7016f77831b7 --- /dev/null +++ b/projects/packages/analytics/.gitattributes @@ -0,0 +1,16 @@ +# Files not needed to be distributed in the package. +.gitattributes export-ignore +.github/ export-ignore +package.json export-ignore + +# Files to include in the mirror repo, but excluded via gitignore +# Remember to end all directories with `/**` to properly tag every file. +/build/** production-include + +# Files to exclude from the mirror repo, but included in the monorepo. +# Remember to end all directories with `/**` to properly tag every file. +.gitignore production-exclude +changelog/** production-exclude +.phpcs.dir.xml production-exclude +tests/** production-exclude +.phpcsignore production-exclude diff --git a/projects/packages/analytics/.gitignore b/projects/packages/analytics/.gitignore new file mode 100644 index 000000000000..1cc5f800eed7 --- /dev/null +++ b/projects/packages/analytics/.gitignore @@ -0,0 +1,6 @@ +vendor/ +node_modules/ +build/ +build-module/ +composer.lock +.phpunit.cache/ diff --git a/projects/packages/analytics/.phan/baseline.php b/projects/packages/analytics/.phan/baseline.php new file mode 100644 index 000000000000..c7aa9a4dd4f3 --- /dev/null +++ b/projects/packages/analytics/.phan/baseline.php @@ -0,0 +1,12 @@ + [], + // 'directory_suppressions' => ['src/directory_name' => ['PhanIssueName1', 'PhanIssueName2']] can be manually added if needed. + // (directory_suppressions will currently be ignored by subsequent calls to --save-baseline, but may be preserved in future Phan releases) +]; diff --git a/projects/packages/analytics/.phan/config.php b/projects/packages/analytics/.phan/config.php new file mode 100644 index 000000000000..0270d51734fb --- /dev/null +++ b/projects/packages/analytics/.phan/config.php @@ -0,0 +1,13 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/projects/packages/analytics/CHANGELOG.md b/projects/packages/analytics/CHANGELOG.md new file mode 100644 index 000000000000..721294abd00a --- /dev/null +++ b/projects/packages/analytics/CHANGELOG.md @@ -0,0 +1,7 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + diff --git a/projects/packages/analytics/README.md b/projects/packages/analytics/README.md new file mode 100644 index 000000000000..a482a5f6064a --- /dev/null +++ b/projects/packages/analytics/README.md @@ -0,0 +1,132 @@ +# Jetpack Analytics + +Analytics dashboard package for Jetpack sites. Built on `@wordpress/build` and the +`@wordpress/boot` SPA framework. + +## Architecture + +This is a **Composer package** (`automattic/jetpack-analytics`) — not a plugin. Any plugin +can consume it by adding the dependency and calling `Analytics::init()`. + +``` +Package (this) Plugin (consumer) +┌─────────────────────┐ ┌──────────────────────┐ +│ wp-build app │ │ autoloader │ +│ ├── routes/ │ require │ Analytics::init() │ +│ ├── packages/init/ │◄─────────│ │ +│ ├── shims/ │ │ (that's it) │ +│ └── build/ (gen) │ └──────────────────────┘ +│ │ +│ src/class-analytics │ +│ ├── load build.php │ +│ ├── add_menu_page() │ +│ └── sidebar items │ +└─────────────────────┘ +``` + +### How it works + +1. `Analytics::init()` loads `build/build.php` — the auto-generated entry point from `@wordpress/build` +2. `build.php` registers an interceptor on `admin_init` that checks for `?page=jetpack-analytics` +3. When the page is requested, the interceptor renders a full-page HTML shell with `@wordpress/boot` +4. Boot initializes the SPA: sidebar, routing, init modules +5. Routes are loaded as ES modules — `routes/dashboard/stage.tsx` renders the dashboard + +### Consumer plugins + +The package is designed to be activated from different contexts: + +- **Standalone plugin** (`projects/plugins/analytics/`) — thin wrapper, calls `Analytics::init()` +- **Jetpack plugin** — via feature flag, call `Analytics::init()` conditionally +- **Any other plugin** — `composer require automattic/jetpack-analytics` + `Analytics::init()` + +## Requirements + +- **PHP** >= 7.2 +- **Gutenberg plugin** — provides `@wordpress/boot`, `@wordpress/route`, and `@wordpress/a11y` + as script modules. Required until WordPress Core 7.0+ ships these natively. + +## Development + +### Build + +```bash +# From the package directory +pnpm run build + +# Or via Jetpack CLI +jetpack build packages/analytics +``` + +### Watch + +```bash +pnpm run watch +``` + +### Adding a new route + +1. Create `routes//package.json`: + ```json + { + "name": "-route", + "route": { + "path": "/", + "page": "jetpack-analytics" + } + } + ``` + +2. Create `routes//stage.tsx` exporting `stage()`: + ```tsx + export const stage = () =>
My new page
; + ``` + +3. Rebuild — `@wordpress/build` auto-discovers routes from `package.json` metadata. + +4. Optionally register a sidebar item in `class-analytics.php`: + ```php + jpa_register_jetpack_analytics_menu_item( 'name', 'Label', '/name' ); + ``` + +## Known issues + +### Boot asset shim (`shims/boot-asset.php`) + +`@wordpress/build` v0.10.0 removed local bundling of `@wordpress/boot` (expects Core 7.0+ +or Gutenberg). However, the generated `page.php` template still looks for a local +`modules/boot/index.min.asset.php` to determine classic script prerequisites. Without it, +no scripts are enqueued and the page is blank. + +The shim provides the dependency list so the template works. Gutenberg provides the actual +boot JS module at runtime. This shim can be removed when `@wordpress/build` updates the +template to handle external boot, or when the minimum WordPress version is 7.0+. + +### Init module (`packages/init/`) + +The init module serves two purposes: +1. Configures the dashboard menu icon via `@wordpress/boot` store +2. Triggers `@wordpress/build` to process `@wordpress/boot` as a module dependency — without + an init module that imports boot, the build has no reason to track it + +## File structure + +``` +analytics/ +├── composer.json # PHP package: automattic/jetpack-analytics +├── package.json # wp-build config, JS dependencies +├── tsconfig.json # TypeScript configuration +├── src/ +│ └── class-analytics.php # PHP entry point +├── packages/ +│ └── init/ # App initialization (runs before routes) +│ ├── package.json # { wpScript: true } module +│ └── src/index.ts +├── routes/ +│ └── dashboard/ # Dashboard route (/) +│ ├── package.json # { route: { path: "/", page: "..." } } +│ └── stage.tsx # React component +├── shims/ +│ └── boot-asset.php # Boot prereqs shim (see Known Issues) +└── build/ # Auto-generated by wp-build (gitignored) +``` diff --git a/projects/packages/analytics/changelog/initial-version b/projects/packages/analytics/changelog/initial-version new file mode 100644 index 000000000000..fb1837c901e5 --- /dev/null +++ b/projects/packages/analytics/changelog/initial-version @@ -0,0 +1,4 @@ +Significance: patch +Type: added + +Initial version. diff --git a/projects/packages/analytics/composer.json b/projects/packages/analytics/composer.json new file mode 100644 index 000000000000..cecc071bfa29 --- /dev/null +++ b/projects/packages/analytics/composer.json @@ -0,0 +1,61 @@ +{ + "name": "automattic/jetpack-analytics", + "description": "Analytics dashboard for Jetpack sites.", + "type": "jetpack-library", + "license": "GPL-2.0-or-later", + "require": { + "php": ">=7.2" + }, + "require-dev": { + "yoast/phpunit-polyfills": "^4.0.0", + "automattic/jetpack-changelogger": "@dev", + "automattic/phpunit-select-config": "@dev" + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "scripts": { + "phpunit": [ + "phpunit-select-config phpunit.#.xml.dist --colors=always" + ], + "test-coverage": [ + "php -dpcov.directory=. ./vendor/bin/phpunit-select-config phpunit.#.xml.dist --coverage-php \"$COVERAGE_DIR/php.cov\"" + ], + "test-php": [ + "@composer phpunit" + ], + "build-development": [ + "pnpm run build" + ], + "build-production": [ + "pnpm run build-production" + ] + }, + "repositories": [ + { + "type": "path", + "url": "../*", + "options": { + "monorepo": true + } + } + ], + "minimum-stability": "dev", + "prefer-stable": true, + "extra": { + "autotagger": true, + "mirror-repo": "Automattic/jetpack-analytics", + "textdomain": "jetpack-analytics", + "version-constants": { + "::PACKAGE_VERSION": "src/class-analytics.php" + }, + "changelogger": { + "link-template": "https://github.com/Automattic/jetpack-analytics/compare/${old}...${new}" + }, + "branch-alias": { + "dev-trunk": "0.1.x-dev" + } + } +} diff --git a/projects/packages/analytics/package.json b/projects/packages/analytics/package.json new file mode 100644 index 000000000000..e63b6ededfc3 --- /dev/null +++ b/projects/packages/analytics/package.json @@ -0,0 +1,44 @@ +{ + "name": "jetpack-analytics-app", + "version": "0.1.0", + "private": true, + "type": "module", + "scripts": { + "build": "wp-build && mkdir -p build/modules/boot && cp shims/boot-asset.php build/modules/boot/index.min.asset.php", + "build-production": "NODE_ENV=production wp-build && mkdir -p build/modules/boot && cp shims/boot-asset.php build/modules/boot/index.min.asset.php", + "watch": "wp-build --watch" + }, + "wpPlugin": { + "name": "jpa", + "packageNamespace": "jetpack-analytics", + "handlePrefix": "jetpack-analytics", + "pages": [ + { + "id": "jetpack-analytics", + "init": [ + "@jetpack-analytics/init" + ] + } + ], + "externalNamespaces": { + "wordpress": { + "global": "wp", + "handlePrefix": "wp" + } + } + }, + "dependencies": { + "@wordpress/boot": "0.10.0", + "@wordpress/data": "10.43.0", + "@wordpress/i18n": "^6.9.0", + "@wordpress/icons": "^11.3.0", + "@wordpress/route": "0.9.0", + "react": "18.3.1", + "react-dom": "18.3.1" + }, + "devDependencies": { + "@babel/core": "7.29.0", + "@wordpress/build": "0.11.0", + "browserslist": "4.25.2" + } +} diff --git a/projects/packages/analytics/packages/init/package.json b/projects/packages/analytics/packages/init/package.json new file mode 100644 index 000000000000..f12fc01b7481 --- /dev/null +++ b/projects/packages/analytics/packages/init/package.json @@ -0,0 +1,14 @@ +{ + "private": true, + "name": "@jetpack-analytics/init", + "version": "0.1.0", + "type": "module", + "wpScript": true, + "module": "build-module/index.mjs", + "wpScriptModuleExports": "./build-module/index.mjs", + "dependencies": { + "@wordpress/boot": "0.10.0", + "@wordpress/data": "10.43.0", + "@wordpress/icons": "^11.3.0" + } +} diff --git a/projects/packages/analytics/packages/init/src/index.ts b/projects/packages/analytics/packages/init/src/index.ts new file mode 100644 index 000000000000..f4a5da3c37c8 --- /dev/null +++ b/projects/packages/analytics/packages/init/src/index.ts @@ -0,0 +1,16 @@ +/** + * External dependencies + */ +import { store as bootStore } from '@wordpress/boot'; +import { dispatch } from '@wordpress/data'; +import { chartBar } from '@wordpress/icons'; + +/** + * Initialize the Jetpack Analytics app. + * Runs before routes render. + */ +export async function init(): Promise< void > { + dispatch( bootStore ).updateMenuItem( 'dashboard', { + icon: chartBar, + } ); +} diff --git a/projects/packages/analytics/phpunit.11.xml.dist b/projects/packages/analytics/phpunit.11.xml.dist new file mode 100644 index 000000000000..24f0f1e361af --- /dev/null +++ b/projects/packages/analytics/phpunit.11.xml.dist @@ -0,0 +1,34 @@ + + + + + tests/php + + + + + + src + + + + + diff --git a/projects/packages/analytics/phpunit.12.xml.dist b/projects/packages/analytics/phpunit.12.xml.dist new file mode 120000 index 000000000000..9fdb7a2c745c --- /dev/null +++ b/projects/packages/analytics/phpunit.12.xml.dist @@ -0,0 +1 @@ +phpunit.11.xml.dist \ No newline at end of file diff --git a/projects/packages/analytics/phpunit.8.xml.dist b/projects/packages/analytics/phpunit.8.xml.dist new file mode 120000 index 000000000000..707bde67863c --- /dev/null +++ b/projects/packages/analytics/phpunit.8.xml.dist @@ -0,0 +1 @@ +phpunit.9.xml.dist \ No newline at end of file diff --git a/projects/packages/analytics/phpunit.9.xml.dist b/projects/packages/analytics/phpunit.9.xml.dist new file mode 100644 index 000000000000..3965963c485e --- /dev/null +++ b/projects/packages/analytics/phpunit.9.xml.dist @@ -0,0 +1,17 @@ + + + + + tests/php + + + diff --git a/projects/packages/analytics/routes/dashboard/package.json b/projects/packages/analytics/routes/dashboard/package.json new file mode 100644 index 000000000000..912f6f7cfdec --- /dev/null +++ b/projects/packages/analytics/routes/dashboard/package.json @@ -0,0 +1,11 @@ +{ + "private": true, + "name": "dashboard-route", + "route": { + "path": "/", + "page": "jetpack-analytics" + }, + "dependencies": { + "@wordpress/i18n": "^6.9.0" + } +} diff --git a/projects/packages/analytics/routes/dashboard/stage.tsx b/projects/packages/analytics/routes/dashboard/stage.tsx new file mode 100644 index 000000000000..04366460ae94 --- /dev/null +++ b/projects/packages/analytics/routes/dashboard/stage.tsx @@ -0,0 +1,10 @@ +import { __ } from '@wordpress/i18n'; + +export const stage = () => { + return ( +
+

{ __( 'Analytics', 'jetpack-analytics' ) }

+

{ __( 'Welcome to the Analytics dashboard.', 'jetpack-analytics' ) }

+
+ ); +}; diff --git a/projects/packages/analytics/shims/boot-asset.php b/projects/packages/analytics/shims/boot-asset.php new file mode 100644 index 000000000000..28f7bab6f0d7 --- /dev/null +++ b/projects/packages/analytics/shims/boot-asset.php @@ -0,0 +1,36 @@ + array( + 'react', + 'react-dom', + 'react-jsx-runtime', + 'wp-commands', + 'wp-components', + 'wp-compose', + 'wp-core-data', + 'wp-data', + 'wp-editor', + 'wp-element', + 'wp-html-entities', + 'wp-i18n', + 'wp-keyboard-shortcuts', + 'wp-keycodes', + 'wp-notices', + 'wp-primitives', + 'wp-private-apis', + 'wp-theme', + 'wp-url', + ), + 'version' => '0.1.0', +); diff --git a/projects/packages/analytics/src/class-analytics.php b/projects/packages/analytics/src/class-analytics.php new file mode 100644 index 000000000000..a92f4bc04a98 --- /dev/null +++ b/projects/packages/analytics/src/class-analytics.php @@ -0,0 +1,86 @@ + + + + 0 + + diff --git a/projects/packages/analytics/tests/php/bootstrap.php b/projects/packages/analytics/tests/php/bootstrap.php new file mode 100644 index 000000000000..a891c3350762 --- /dev/null +++ b/projects/packages/analytics/tests/php/bootstrap.php @@ -0,0 +1,11 @@ + Date: Tue, 14 Apr 2026 13:29:02 +0100 Subject: [PATCH 14/27] add wpPlugin.packageSources via pnpm patch on @wordpress/build Patches @wordpress/build@0.11.0 to support packageSources config for cross-directory package discovery. Per-package externals instead of namespace-wide inference, skip transpilation for external sources. Adds wpScriptModuleExports to number-formatters. Upstream: https://github.com/WordPress/gutenberg/pull/77226 --- patches/@wordpress__build@0.11.0.patch | 584 ++++ pnpm-lock.yaml | 2504 +++++++++-------- pnpm-workspace.yaml | 4 + .../number-formatters/package.json | 1 + 4 files changed, 1971 insertions(+), 1122 deletions(-) create mode 100644 patches/@wordpress__build@0.11.0.patch diff --git a/patches/@wordpress__build@0.11.0.patch b/patches/@wordpress__build@0.11.0.patch new file mode 100644 index 000000000000..cd86dd75ebd9 --- /dev/null +++ b/patches/@wordpress__build@0.11.0.patch @@ -0,0 +1,584 @@ +diff --git a/lib/build.mjs b/lib/build.mjs +index 5fa8d66b5e6481af02fa03dd3c8587fcc533a6a5..e36ade4cc12b34f877a757c4beee4ca0c0c3c515 100755 +--- a/lib/build.mjs ++++ b/lib/build.mjs +@@ -4,8 +4,10 @@ + * External dependencies + */ + import { readFile, writeFile, copyFile, mkdir, unlink } from 'fs/promises'; ++import { existsSync } from 'fs'; + import path from 'path'; + import { createHash } from 'node:crypto'; ++import { createRequire } from 'node:module'; + import { parseArgs } from 'node:util'; + import esbuild from 'esbuild'; + import glob from 'fast-glob'; +@@ -90,29 +92,166 @@ const TEST_FILE_PATTERNS = [ + ]; + + /** +- * Get all package names from the packages directory. ++ * A discovered package in the registry. + * +- * @return {string[]} Array of package names. ++ * @typedef {Object} PackageEntry ++ * @property {string} dir Absolute path to the package directory. ++ * @property {import('./package-utils.mjs').PackageJson} packageJson Parsed package.json contents. ++ * @property {boolean} [externalSource] True when the entry comes from a named ++ * package source (e.g. `@scope/name`). ++ * These packages preserve their own npm ++ * identity for script-module IDs instead ++ * of being scoped under `packageNamespace`. + */ +-function getAllPackages() { +- return glob +- .sync( normalizePath( path.join( PACKAGES_DIR, '*', 'package.json' ) ) ) +- .map( ( packageJsonPath ) => +- path.basename( path.dirname( packageJsonPath ) ) +- ); +-} + +-const PACKAGES = getAllPackages(); + const ROOT_PACKAGE_JSON = getPackageInfoFromFile( + path.join( ROOT_DIR, 'package.json' ) + ); + const WP_PLUGIN_CONFIG = ROOT_PACKAGE_JSON.wpPlugin || {}; ++ ++/** ++ * Check whether a sources entry is a npm package name rather than a ++ * relative/absolute directory path. ++ * ++ * Package names follow the npm naming rules: ++ * - Scoped: `@scope/name` ++ * - Bare: `my-package` (starts with a letter or digit, no path separators) ++ * ++ * Directory paths start with `.`, `/`, or a drive letter on Windows (`C:\`). ++ * ++ * @param {string} source A single entry from `wpPlugin.packageSources`. ++ * @return {boolean} True when the entry looks like a package name. ++ */ ++function isPackageName( source ) { ++ if ( source.startsWith( '@' ) ) { ++ return true; ++ } ++ // Relative or absolute paths. ++ if ( source.startsWith( '.' ) || path.isAbsolute( source ) ) { ++ return false; ++ } ++ // Bare package name (no slashes → not a path). ++ return ! source.includes( '/' ); ++} ++ ++/** ++ * Resolve a npm package name to its directory and parsed package.json. ++ * Uses Node's module resolution from the project root context so that ++ * workspace symlinks (pnpm, yarn, npm) are followed automatically. ++ * ++ * @param {string} npmName Full package name (e.g. `@acme/shared-ui`). ++ * @return {{ dir: string, packageJson: import('./package-utils.mjs').PackageJson }|null} ++ * Resolved entry or null when the package is not resolvable. ++ */ ++function resolveNamedSource( npmName ) { ++ // Read directly from node_modules instead of require.resolve() to ++ // avoid ERR_PACKAGE_PATH_NOT_EXPORTED when the package's `exports` ++ // field does not include `./package.json`. ++ const pkgJsonPath = path.join( ++ ROOT_DIR, ++ 'node_modules', ++ npmName, ++ 'package.json' ++ ); ++ ++ if ( ! existsSync( pkgJsonPath ) ) { ++ console.warn( ++ `⚠️ Source "${ npmName }" could not be resolved. ` + ++ 'Make sure it is listed in dependencies and installed.' ++ ); ++ return null; ++ } ++ ++ return { ++ dir: path.dirname( pkgJsonPath ), ++ packageJson: getPackageInfoFromFile( pkgJsonPath ), ++ }; ++} ++ ++/** ++ * Directories to scan for packages. Always starts with `./packages/`. ++ * Additional directory-type entries from `wpPlugin.packageSources` are ++ * appended. Package-name entries are handled separately in ++ * `getAllPackages()`. ++ * ++ * @type {string[]} ++ */ ++const PACKAGE_SOURCES = WP_PLUGIN_CONFIG.packageSources || []; ++const PACKAGE_DIRS = [ ++ PACKAGES_DIR, ++ ...PACKAGE_SOURCES.filter( ( s ) => ! isPackageName( s ) ).map( ( s ) => ++ path.resolve( ROOT_DIR, s ) ++ ), ++]; ++const NAMED_SOURCES = PACKAGE_SOURCES.filter( isPackageName ); ++ ++/** ++ * Get all packages by scanning every directory in PACKAGE_DIRS and ++ * resolving every named source in NAMED_SOURCES. ++ * ++ * Local packages (`./packages/`) are scanned first, so they take priority. ++ * Named sources are resolved last — they preserve their npm identity ++ * (e.g. `@acme/shared-ui` stays `@acme/shared-ui` in script-module ++ * IDs instead of being rewritten to `@/shared-ui`). ++ * ++ * @return {Map} Map of package names to their entry data. ++ */ ++function getAllPackages() { ++ const registry = new Map(); ++ ++ // 1. Directory-based discovery (local packages first, then source dirs). ++ for ( const dir of PACKAGE_DIRS ) { ++ const pkgJsonPaths = glob.sync( ++ normalizePath( ++ path.join( dir, '*', 'package.json' ) ++ ) ++ ); ++ ++ for ( const pkgJsonPath of pkgJsonPaths ) { ++ const name = path.basename( path.dirname( pkgJsonPath ) ); ++ // First match wins — local packages take priority over ++ // sources-discovered packages. ++ if ( ! registry.has( name ) ) { ++ registry.set( name, { ++ dir: path.dirname( pkgJsonPath ), ++ packageJson: getPackageInfoFromFile( pkgJsonPath ), ++ } ); ++ } ++ } ++ } ++ ++ // 2. Named sources — resolve via require.resolve() and preserve ++ // the full npm name as the registry key. ++ for ( const npmName of NAMED_SOURCES ) { ++ if ( registry.has( npmName ) ) { ++ continue; ++ } ++ ++ const entry = resolveNamedSource( npmName ); ++ if ( entry ) { ++ registry.set( npmName, { ++ ...entry, ++ externalSource: true, ++ } ); ++ } ++ } ++ ++ return registry; ++} ++ ++const PACKAGES = getAllPackages(); + const SCRIPT_GLOBAL = WP_PLUGIN_CONFIG.scriptGlobal; + const PACKAGE_NAMESPACE = WP_PLUGIN_CONFIG.packageNamespace; + const HANDLE_PREFIX = WP_PLUGIN_CONFIG.handlePrefix || PACKAGE_NAMESPACE; +-const EXTERNAL_NAMESPACES = WP_PLUGIN_CONFIG.externalNamespaces || {}; + const PAGES = WP_PLUGIN_CONFIG.pages || []; + ++const EXTERNAL_NAMESPACES = WP_PLUGIN_CONFIG.externalNamespaces || {}; ++ ++// Individual packages from named sources to externalize. Unlike ++// EXTERNAL_NAMESPACES (which externalizes an entire `@scope/*`), this ++// targets only the exact packages listed in `packageSources`. ++const EXTERNAL_PACKAGES = new Set( NAMED_SOURCES ); ++ + /** + * Interprets a configuration value as a boolean, where `"true"` and `"1"` + * are considered true while all other values are false. +@@ -153,7 +292,8 @@ const wordpressExternalsPlugin = createWordpressExternalsPlugin( + PACKAGE_NAMESPACE, + SCRIPT_GLOBAL, + EXTERNAL_NAMESPACES, +- HANDLE_PREFIX ++ HANDLE_PREFIX, ++ EXTERNAL_PACKAGES + ); + + /** +@@ -480,7 +620,6 @@ function resolveEntryPoint( packageDir, packageJson ) { + */ + async function bundlePackage( packageName, options = {} ) { + const { +- sourceDir = PACKAGES_DIR, + handlePrefix = HANDLE_PREFIX, + scriptGlobal = SCRIPT_GLOBAL, + packageNamespace = PACKAGE_NAMESPACE, +@@ -489,10 +628,10 @@ async function bundlePackage( packageName, options = {} ) { + const builtModules = []; + const builtScripts = []; + const builtStyles = []; +- const packageDir = path.join( sourceDir, packageName ); +- const packageJson = getPackageInfoFromFile( +- path.join( sourceDir, packageName, 'package.json' ) +- ); ++ const packageEntry = PACKAGES.get( packageName ); ++ const packageDir = packageEntry.dir; ++ const packageJson = packageEntry.packageJson; ++ const isExternalSource = !! packageEntry.externalSource; + + const builds = []; + +@@ -653,10 +792,16 @@ async function bundlePackage( packageName, options = {} ) { + ); + } + +- const scriptModuleId = +- exportName === '.' +- ? `@${ packageNamespace }/${ packageName }` +- : `@${ packageNamespace }/${ packageName }/${ fileName }`; ++ // External sources preserve their npm identity as the ++ // script-module ID (e.g. `@acme/shared-ui`). Local ++ // packages are scoped under the plugin's namespace. ++ const scriptModuleId = isExternalSource ++ ? ( exportName === '.' ++ ? packageName ++ : `${ packageName }/${ fileName }` ) ++ : ( exportName === '.' ++ ? `@${ packageNamespace }/${ packageName }` ++ : `@${ packageNamespace }/${ packageName }/${ fileName }` ); + + builtModules.push( { + id: scriptModuleId, +@@ -862,7 +1007,7 @@ async function inferStyleDependencies( scriptDependencies, packageName ) { + + const styleDeps = []; + // Get the resolve directory for context-aware package resolution +- const resolveDir = path.join( PACKAGES_DIR, packageName ); ++ const resolveDir = PACKAGES.get( packageName ).dir; + + for ( const scriptHandle of scriptDependencies ) { + // Skip non-package dependencies (like 'react', 'lodash', etc.) +@@ -1215,34 +1360,21 @@ async function generatePagesPhp( pageData, replacements ) { + */ + async function transpilePackage( packageName ) { + const startTime = Date.now(); +- const packageDir = path.join( PACKAGES_DIR, packageName ); +- const packageJson = getPackageInfoFromFile( +- path.join( PACKAGES_DIR, packageName, 'package.json' ) +- ); +- +- if ( ! packageJson ) { +- throw new Error( +- `Could not find package.json for package: ${ packageName }` +- ); +- } +- +- const srcFiles = await glob( +- normalizePath( +- path.join( packageDir, `src/**/*.${ SOURCE_EXTENSIONS }` ) +- ), +- { +- ignore: IGNORE_PATTERNS, +- } +- ); ++ const packageEntry = PACKAGES.get( packageName ); ++ const packageDir = packageEntry.dir; ++ const packageJson = packageEntry.packageJson; ++ ++ const srcFiles = await glob( `src/**/*.${ SOURCE_EXTENSIONS }`, { ++ cwd: packageDir, ++ ignore: IGNORE_PATTERNS, ++ absolute: true, ++ } ); + +- const assetFiles = await glob( +- normalizePath( +- path.join( packageDir, `src/**/*.${ ASSET_EXTENSIONS }` ) +- ), +- { +- ignore: IGNORE_PATTERNS, +- } +- ); ++ const assetFiles = await glob( `src/**/*.${ ASSET_EXTENSIONS }`, { ++ cwd: packageDir, ++ ignore: IGNORE_PATTERNS, ++ absolute: true, ++ } ); + + const buildDir = path.join( packageDir, 'build' ); + const buildModuleDir = path.join( packageDir, 'build-module' ); +@@ -1438,10 +1570,9 @@ async function transpilePackage( packageName ) { + * @return {Promise} Build time in milliseconds, or null if no styles. + */ + async function compileStyles( packageName ) { +- const packageDir = path.join( PACKAGES_DIR, packageName ); +- const packageJson = getPackageInfoFromFile( +- path.join( PACKAGES_DIR, packageName, 'package.json' ) +- ); ++ const packageEntry = PACKAGES.get( packageName ); ++ const packageDir = packageEntry.dir; ++ const packageJson = packageEntry.packageJson; + + // Get SCSS entry point patterns from package.json, default to root-level only + const scssEntryPointPatterns = packageJson.wpStyleEntryPoints || [ +@@ -1549,12 +1680,15 @@ function isPackageSourceFile( filename ) { + return false; + } + +- return PACKAGES.some( ( packageName ) => { ++ for ( const entry of PACKAGES.values() ) { + const packagePath = normalizePath( +- path.join( 'packages', packageName ) ++ path.relative( ROOT_DIR, entry.dir ) + ); +- return relativePath.startsWith( packagePath + '/' ); +- } ); ++ if ( relativePath.startsWith( packagePath + '/' ) ) { ++ return true; ++ } ++ } ++ return false; + } + + /** +@@ -1568,9 +1702,9 @@ function getPackageName( filename ) { + path.relative( process.cwd(), filename ) + ); + +- for ( const packageName of PACKAGES ) { ++ for ( const [ packageName, entry ] of PACKAGES ) { + const packagePath = normalizePath( +- path.join( 'packages', packageName ) ++ path.relative( ROOT_DIR, entry.dir ) + ); + if ( relativePath.startsWith( packagePath + '/' ) ) { + return packageName; +@@ -1733,17 +1867,14 @@ async function buildAll( baseUrlExpression ) { + + const startTime = Date.now(); + +- // Build maps: short name ↔ full name ↔ package.json from package.json files ++ // Build maps: short name ↔ full name ↔ package.json from the registry + const shortToFull = new Map(); + const fullToShort = new Map(); + const fullToPackageJson = new Map(); +- for ( const pkg of PACKAGES ) { +- const packageJson = getPackageInfoFromFile( +- path.join( PACKAGES_DIR, pkg, 'package.json' ) +- ); +- shortToFull.set( pkg, packageJson.name ); +- fullToShort.set( packageJson.name, pkg ); +- fullToPackageJson.set( packageJson.name, packageJson ); ++ for ( const [ pkg, entry ] of PACKAGES ) { ++ shortToFull.set( pkg, entry.packageJson.name ); ++ fullToShort.set( entry.packageJson.name, pkg ); ++ fullToPackageJson.set( entry.packageJson.name, entry.packageJson ); + } + + const levels = groupByDepth( fullToPackageJson ); +@@ -1754,6 +1885,13 @@ async function buildAll( baseUrlExpression ) { + await Promise.all( + level.map( async ( fullName ) => { + const packageName = fullToShort.get( fullName ); ++ const entry = PACKAGES.get( packageName ); ++ ++ // External sources are pre-built — only bundle, skip transpilation. ++ if ( entry.externalSource ) { ++ return; ++ } ++ + const buildTime = await transpilePackage( packageName ); + console.log( + ` ✔ Transpiled ${ packageName } (${ buildTime }ms)` +@@ -1767,7 +1905,7 @@ async function buildAll( baseUrlExpression ) { + const scripts = []; + const styles = []; + await Promise.all( +- PACKAGES.map( async ( packageName ) => { ++ Array.from( PACKAGES.keys() ).map( async ( packageName ) => { + const startBundleTime = Date.now(); + const ret = await bundlePackage( packageName ); + const buildTime = Date.now() - startBundleTime; +@@ -1900,17 +2038,14 @@ async function watchMode() { + let isRebuilding = false; + const needsRebuild = new Set(); + +- // Build maps: short name ↔ full name ↔ package.json from package.json files (once) ++ // Build maps: short name ↔ full name ↔ package.json from the registry (once) + const shortToFull = new Map(); + const fullToShort = new Map(); + const fullToPackageJson = new Map(); +- for ( const pkg of PACKAGES ) { +- const packageJson = getPackageInfoFromFile( +- path.join( PACKAGES_DIR, pkg, 'package.json' ) +- ); +- shortToFull.set( pkg, packageJson.name ); +- fullToShort.set( packageJson.name, pkg ); +- fullToPackageJson.set( packageJson.name, packageJson ); ++ for ( const [ pkg, entry ] of PACKAGES ) { ++ shortToFull.set( pkg, entry.packageJson.name ); ++ fullToShort.set( entry.packageJson.name, pkg ); ++ fullToPackageJson.set( entry.packageJson.name, entry.packageJson ); + } + + // Get all routes for dependency tracking +@@ -1924,8 +2059,13 @@ async function watchMode() { + async function rebuildPackage( packageName ) { + try { + const startTime = Date.now(); ++ const entry = PACKAGES.get( packageName ); ++ ++ // External sources are pre-built — only rebundle. ++ if ( ! entry.externalSource ) { ++ await transpilePackage( packageName ); ++ } + +- await transpilePackage( packageName ); + await bundlePackage( packageName ); + + const buildTime = Date.now() - startTime; +@@ -2021,8 +2161,8 @@ async function watchMode() { + await processNextRebuild(); + } + +- const watchPaths = PACKAGES.map( ( packageName ) => +- path.join( PACKAGES_DIR, packageName, 'src' ) ++ const watchPaths = Array.from( PACKAGES.values() ).map( ( entry ) => ++ path.join( entry.dir, 'src' ) + ); + + const watcher = chokidar.watch( watchPaths, { +diff --git a/lib/package-utils.mjs b/lib/package-utils.mjs +index 15b7dd04c5781a2f9bae022be83702a0a21ea29d..79437f2b3b48f9dcbfbe6907258460056c19a3d2 100644 +--- a/lib/package-utils.mjs ++++ b/lib/package-utils.mjs +@@ -84,10 +84,41 @@ export function getPackageInfo( fullPackageName, resolveDir = null ) { + return packageJsonCache.get( cacheKey ); + } + +- // Resolve from the package root context to get correct versions + const contextPath = path.join( packageRoot, 'package.json' ); +- const require = createRequire( contextPath ); +- const resolved = require.resolve( `${ fullPackageName }/package.json` ); ++ const localRequire = createRequire( contextPath ); ++ ++ let resolved; ++ try { ++ // Preferred: resolve the package.json subpath directly. ++ resolved = localRequire.resolve( ++ `${ fullPackageName }/package.json` ++ ); ++ } catch { ++ // Fallback for packages whose `exports` field does not expose ++ // `./package.json`. Walk up the directory tree checking each ++ // `node_modules/` — mirrors Node's resolution algorithm without ++ // the exports restriction. ++ let searchDir = packageRoot; ++ const fsRoot = path.parse( searchDir ).root; ++ while ( searchDir !== fsRoot ) { ++ const directPath = path.join( ++ searchDir, ++ 'node_modules', ++ fullPackageName, ++ 'package.json' ++ ); ++ if ( existsSync( directPath ) ) { ++ resolved = directPath; ++ break; ++ } ++ searchDir = path.dirname( searchDir ); ++ } ++ ++ if ( ! resolved ) { ++ return null; ++ } ++ } ++ + const result = getPackageInfoFromFile( resolved ); + packageJsonCache.set( cacheKey, result ); + +diff --git a/lib/wordpress-externals-plugin.mjs b/lib/wordpress-externals-plugin.mjs +index 281749e185b3ec188c4fb93920081869751aab9a..fb028d2cc732229f44d5641bfc84c9aae182bfd9 100644 +--- a/lib/wordpress-externals-plugin.mjs ++++ b/lib/wordpress-externals-plugin.mjs +@@ -56,7 +56,8 @@ export function createWordpressExternalsPlugin( + packageNamespace, + scriptGlobal, + externalNamespaces = {}, +- handlePrefix ++ handlePrefix, ++ externalPackages = new Set() + ) { + /** + * WordPress externals plugin for esbuild. +@@ -277,6 +278,74 @@ export function createWordpressExternalsPlugin( + ); + } + ++ // Handle individual package externals from packageSources. ++ // These match exact package names rather than whole scopes, ++ // avoiding over-broad externalization. ++ for ( const extPkg of externalPackages ) { ++ const escaped = extPkg.replace( ++ /[.*+?^${}()|[\]\\]/g, ++ '\\$&' ++ ); ++ build.onResolve( ++ { filter: new RegExp( `^${ escaped }(/|$)` ) }, ++ /** @param {import('esbuild').OnResolveArgs} args */ ++ ( args ) => { ++ const subpath = ++ args.path.length > extPkg.length ++ ? args.path.slice( ++ extPkg.length + 1 ++ ) ++ : null; ++ ++ const packageJson = getPackageInfo( ++ extPkg, ++ args.resolveDir ++ ); ++ if ( ! packageJson ) { ++ return undefined; ++ } ++ ++ const isScriptModule = ++ isScriptModuleImport( ++ packageJson, ++ subpath ++ ); ++ if ( isScriptModule ) { ++ const kind = ++ args.kind === 'dynamic-import' ++ ? 'dynamic' ++ : 'static'; ++ if ( kind === 'static' ) { ++ moduleDependencies.set( ++ args.path, ++ 'static' ++ ); ++ } else if ( ++ ! moduleDependencies.has( ++ args.path ++ ) ++ ) { ++ moduleDependencies.set( ++ args.path, ++ 'dynamic' ++ ); ++ } ++ ++ return { ++ path: args.path, ++ external: true, ++ sideEffects: ++ !! packageJson.sideEffects, ++ }; ++ } ++ ++ // Not a script module — let esbuild ++ // bundle it inline. ++ return undefined; ++ } ++ ); ++ } ++ + build.onLoad( + { filter: /.*/, namespace: 'vendor-external' }, + /** @param {import('esbuild').OnLoadArgs} args */ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 06fa90d7bc32..748adb9e53d8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,6 +7,9 @@ settings: pnpmfileChecksum: sha256-Pzf3LTskBBhaUVLGp1XcevWWCvkOS5YwOLAhGz0XPU4= patchedDependencies: + '@wordpress/build@0.11.0': + hash: 357b8fc7ce7985a4d7aa9062f5b8826762fbacf279e4d7e55a822f9842658123 + path: patches/@wordpress__build@0.11.0.patch react-autosize-textarea: hash: 5c09e1dee59caaaba3871f9d722f93e56b41169db486b059597e8f8c788aa464 path: .pnpm-patches/react-autosize-textarea.patch @@ -81,7 +84,7 @@ importers: version: 7.6.1 '@types/node': specifier: ^24.12.0 - version: 24.12.2 + version: 24.12.0 '@typescript/native-preview': specifier: 7.0.0-dev.20260225.1 version: 7.0.0-dev.20260225.1 @@ -93,7 +96,7 @@ importers: version: 30.3.0(@babel/core@7.29.0) jest: specifier: 30.3.0 - version: 30.3.0(@types/node@24.12.2) + version: 30.3.0(@types/node@24.12.0) typescript: specifier: 5.9.3 version: 5.9.3 @@ -217,8 +220,8 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.1.0 - version: 12.1.0(react@18.3.1) + specifier: 12.0.0 + version: 12.0.0(react@18.3.1) '@wordpress/primitives': specifier: 4.43.0 version: 4.43.0(react@18.3.1) @@ -405,13 +408,13 @@ importers: version: 6.16.0 '@wordpress/icons': specifier: ^12.0.0 - version: 12.1.0(react@18.3.1) + version: 12.0.0(react@18.3.1) '@wordpress/theme': specifier: 0.10.0 version: 0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) '@wordpress/ui': - specifier: 0.10.0 - version: 0.10.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + specifier: 0.9.0 + version: 0.9.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) clsx: specifier: 2.1.1 version: 2.1.1 @@ -558,8 +561,8 @@ importers: specifier: ^7 version: 7.29.2 '@wordpress/admin-ui': - specifier: 1.11.0 - version: 1.11.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + specifier: 1.10.0 + version: 1.10.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) '@wordpress/browserslist-config': specifier: 6.43.0 version: 6.43.0 @@ -582,8 +585,8 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.1.0 - version: 12.1.0(react@18.3.1) + specifier: 12.0.0 + version: 12.0.0(react@18.3.1) '@wordpress/notices': specifier: 5.43.0 version: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -591,8 +594,8 @@ importers: specifier: 0.10.0 version: 0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) '@wordpress/ui': - specifier: 0.10.0 - version: 0.10.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + specifier: 0.9.0 + version: 0.9.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) clsx: specifier: 2.1.1 version: 2.1.1 @@ -727,8 +730,8 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.1.0 - version: 12.1.0(react@18.3.1) + specifier: 12.0.0 + version: 12.0.0(react@18.3.1) '@wordpress/url': specifier: 4.43.0 version: 4.43.0 @@ -808,7 +811,7 @@ importers: version: 2.3.11 '@types/node': specifier: ^24.12.0 - version: 24.12.2 + version: 24.12.0 '@typescript/native-preview': specifier: 7.0.0-dev.20260225.1 version: 7.0.0-dev.20260225.1 @@ -817,7 +820,7 @@ importers: version: 4.22.1 jest: specifier: 30.3.0 - version: 30.3.0(@types/node@24.12.2) + version: 30.3.0(@types/node@24.12.0) path-browserify: specifier: 1.0.1 version: 1.0.1 @@ -826,7 +829,7 @@ importers: version: 1.58.2 playwright-core: specifier: ^1.45.1 - version: 1.59.1 + version: 1.58.2 process: specifier: 0.11.10 version: 0.11.10 @@ -1097,8 +1100,8 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.1.0 - version: 12.1.0(react@18.3.1) + specifier: 12.0.0 + version: 12.0.0(react@18.3.1) clsx: specifier: 2.1.1 version: 2.1.1 @@ -1323,8 +1326,8 @@ importers: specifier: 32.5.0 version: 32.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@wordpress/dataviews': - specifier: 14.0.0 - version: 14.0.0(@types/react@18.3.28)(react@18.3.1)(stylelint@17.7.0) + specifier: 13.1.0 + version: 13.1.0(@types/react@18.3.28)(react@18.3.1)(stylelint@17.7.0) '@wordpress/date': specifier: 5.43.0 version: 5.43.0 @@ -1335,8 +1338,8 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.1.0 - version: 12.1.0(react@18.3.1) + specifier: 12.0.0 + version: 12.0.0(react@18.3.1) '@wordpress/theme': specifier: 0.10.0 version: 0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) @@ -1852,6 +1855,40 @@ importers: specifier: 6.0.1 version: 6.0.1(webpack@5.105.2) + projects/packages/analytics: + dependencies: + '@wordpress/boot': + specifier: 0.10.0 + version: 0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + '@wordpress/data': + specifier: 10.43.0 + version: 10.43.0(react@18.3.1) + '@wordpress/i18n': + specifier: ^6.9.0 + version: 6.16.0 + '@wordpress/icons': + specifier: ^11.3.0 + version: 11.8.0(react@18.3.1) + '@wordpress/route': + specifier: 0.9.0 + version: 0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: + specifier: 18.3.1 + version: 18.3.1 + react-dom: + specifier: 18.3.1 + version: 18.3.1(react@18.3.1) + devDependencies: + '@babel/core': + specifier: 7.29.0 + version: 7.29.0 + '@wordpress/build': + specifier: 0.11.0 + version: 0.11.0(patch_hash=357b8fc7ce7985a4d7aa9062f5b8826762fbacf279e4d7e55a822f9842658123)(@babel/core@7.29.0)(@wordpress/boot@0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0))(@wordpress/route@0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(browserslist@4.25.2) + browserslist: + specifier: 4.25.2 + version: 4.25.2 + projects/packages/assets: dependencies: '@automattic/jetpack-script-data': @@ -1928,8 +1965,8 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.1.0 - version: 12.1.0(react@18.3.1) + specifier: 12.0.0 + version: 12.0.0(react@18.3.1) moment: specifier: 2.30.1 version: 2.30.1 @@ -2034,8 +2071,8 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.1.0 - version: 12.1.0(react@18.3.1) + specifier: 12.0.0 + version: 12.0.0(react@18.3.1) '@wordpress/plugins': specifier: 7.43.0 version: 7.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -2206,7 +2243,7 @@ importers: version: 7.29.0 '@types/node': specifier: ^24.12.0 - version: 24.12.2 + version: 24.12.0 '@typescript/native-preview': specifier: 7.0.0-dev.20260225.1 version: 7.0.0-dev.20260225.1 @@ -2215,7 +2252,7 @@ importers: version: 9.2.1 jest: specifier: 30.3.0 - version: 30.3.0(@types/node@24.12.2) + version: 30.3.0(@types/node@24.12.0) webpack: specifier: 5.105.2 version: 5.105.2(webpack-cli@6.0.1) @@ -2323,8 +2360,8 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.1.0 - version: 12.1.0(react@18.3.1) + specifier: 12.0.0 + version: 12.0.0(react@18.3.1) '@wordpress/keycodes': specifier: 4.43.0 version: 4.43.0 @@ -2408,8 +2445,8 @@ importers: specifier: 0.16.0 version: 0.16.0 '@wordpress/admin-ui': - specifier: 1.11.0 - version: 1.11.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + specifier: 1.10.0 + version: 1.10.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) '@wordpress/base-styles': specifier: 6.19.0 version: 6.19.0 @@ -2435,8 +2472,8 @@ importers: specifier: 10.43.0 version: 10.43.0(react@18.3.1) '@wordpress/dataviews': - specifier: 14.0.0 - version: 14.0.0(@types/react@18.3.28)(react@18.3.1)(stylelint@17.7.0) + specifier: 13.1.0 + version: 13.1.0(@types/react@18.3.28)(react@18.3.1)(stylelint@17.7.0) '@wordpress/dom': specifier: 4.43.0 version: 4.43.0 @@ -2459,8 +2496,8 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.1.0 - version: 12.1.0(react@18.3.1) + specifier: 12.0.0 + version: 12.0.0(react@18.3.1) '@wordpress/interactivity': specifier: 6.43.0 version: 6.43.0 @@ -2483,8 +2520,8 @@ importers: specifier: 0.10.0 version: 0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) '@wordpress/ui': - specifier: 0.10.0 - version: 0.10.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + specifier: 0.9.0 + version: 0.9.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) '@wordpress/url': specifier: 4.43.0 version: 4.43.0 @@ -2563,7 +2600,7 @@ importers: version: 7.29.2 '@tanstack/react-router': specifier: ^1.139.12 - version: 1.167.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.166.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@testing-library/dom': specifier: 10.4.1 version: 10.4.1 @@ -2593,7 +2630,7 @@ importers: version: 6.43.0 '@wordpress/build': specifier: 0.11.0 - version: 0.11.0(@babel/core@7.29.0)(@wordpress/boot@0.10.0(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0))(@wordpress/route@0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@wordpress/theme@0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0))(browserslist@4.28.2) + version: 0.11.0(patch_hash=357b8fc7ce7985a4d7aa9062f5b8826762fbacf279e4d7e55a822f9842658123)(@babel/core@7.29.0)(@wordpress/boot@0.10.0(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0))(@wordpress/route@0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@wordpress/theme@0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0))(browserslist@4.28.2) '@wordpress/date': specifier: 5.43.0 version: 5.43.0 @@ -2786,8 +2823,8 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.1.0 - version: 12.1.0(react@18.3.1) + specifier: 12.0.0 + version: 12.0.0(react@18.3.1) '@wordpress/keycodes': specifier: 4.43.0 version: 4.43.0 @@ -2890,7 +2927,7 @@ importers: version: 1.9.0 '@types/node': specifier: ^24.12.0 - version: 24.12.2 + version: 24.12.0 '@types/react': specifier: ^18.3.28 version: 18.3.28 @@ -3064,8 +3101,8 @@ importers: specifier: 10.43.0 version: 10.43.0(react@18.3.1) '@wordpress/dataviews': - specifier: 14.0.0 - version: 14.0.0(@types/react@18.3.28)(react@18.3.1)(stylelint@17.7.0) + specifier: 13.1.0 + version: 13.1.0(@types/react@18.3.28)(react@18.3.1)(stylelint@17.7.0) '@wordpress/date': specifier: 5.43.0 version: 5.43.0 @@ -3076,8 +3113,8 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.1.0 - version: 12.1.0(react@18.3.1) + specifier: 12.0.0 + version: 12.0.0(react@18.3.1) '@wordpress/theme': specifier: 0.10.0 version: 0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) @@ -3132,7 +3169,7 @@ importers: version: 30.0.0 '@types/node': specifier: ^24.12.0 - version: 24.12.2 + version: 24.12.0 '@types/react': specifier: 18.3.28 version: 18.3.28 @@ -3144,7 +3181,7 @@ importers: version: 9.2.1 jest: specifier: 30.3.0 - version: 30.3.0(@types/node@24.12.2) + version: 30.3.0(@types/node@24.12.0) react: specifier: 18.3.1 version: 18.3.1 @@ -3203,8 +3240,8 @@ importers: specifier: 32.5.0 version: 32.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@wordpress/dataviews': - specifier: 14.0.0 - version: 14.0.0(@types/react@18.3.28)(react@18.3.1)(stylelint@17.7.0) + specifier: 13.1.0 + version: 13.1.0(@types/react@18.3.28)(react@18.3.1)(stylelint@17.7.0) '@wordpress/element': specifier: 6.43.0 version: 6.43.0 @@ -3218,8 +3255,8 @@ importers: specifier: 0.10.0 version: 0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) '@wordpress/ui': - specifier: 0.10.0 - version: 0.10.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + specifier: 0.9.0 + version: 0.9.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) '@wordpress/url': specifier: 4.43.0 version: 4.43.0 @@ -3473,7 +3510,7 @@ importers: version: 6.16.0 '@wordpress/icons': specifier: ^12.0.0 - version: 12.1.0(react@18.3.1) + version: 12.0.0(react@18.3.1) '@wordpress/route': specifier: 0.9.0 version: 0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -3489,7 +3526,7 @@ importers: version: 7.29.0 '@wordpress/build': specifier: 0.11.0 - version: 0.11.0(@babel/core@7.29.0)(@wordpress/boot@0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0))(@wordpress/route@0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(browserslist@4.28.2) + version: 0.11.0(patch_hash=357b8fc7ce7985a4d7aa9062f5b8826762fbacf279e4d7e55a822f9842658123)(@babel/core@7.29.0)(@wordpress/boot@0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0))(@wordpress/route@0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(browserslist@4.28.2) browserslist: specifier: 4.28.2 version: 4.28.2 @@ -3552,8 +3589,8 @@ importers: specifier: 10.43.0 version: 10.43.0(react@18.3.1) '@wordpress/dataviews': - specifier: 14.0.0 - version: 14.0.0(@types/react@18.3.28)(react@18.3.1)(stylelint@17.7.0) + specifier: 13.1.0 + version: 13.1.0(@types/react@18.3.28)(react@18.3.1)(stylelint@17.7.0) '@wordpress/date': specifier: 5.43.0 version: 5.43.0 @@ -3576,11 +3613,11 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.1.0 - version: 12.1.0(react@18.3.1) + specifier: 12.0.0 + version: 12.0.0(react@18.3.1) '@wordpress/interface': - specifier: 9.28.0 - version: 9.28.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + specifier: 9.27.0 + version: 9.27.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) '@wordpress/media-utils': specifier: 5.43.0 version: 5.43.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) @@ -3597,8 +3634,8 @@ importers: specifier: 0.10.0 version: 0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) '@wordpress/ui': - specifier: 0.10.0 - version: 0.10.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + specifier: 0.9.0 + version: 0.9.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) '@wordpress/url': specifier: 4.43.0 version: 4.43.0 @@ -3839,8 +3876,8 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.1.0 - version: 12.1.0(react@18.3.1) + specifier: 12.0.0 + version: 12.0.0(react@18.3.1) '@wordpress/url': specifier: 4.43.0 version: 4.43.0 @@ -3986,8 +4023,8 @@ importers: specifier: 10.43.0 version: 10.43.0(react@18.3.1) '@wordpress/dataviews': - specifier: 14.0.0 - version: 14.0.0(react@18.3.1)(stylelint@17.7.0) + specifier: 13.1.0 + version: 13.1.0(react@18.3.1)(stylelint@17.7.0) '@wordpress/element': specifier: 6.43.0 version: 6.43.0 @@ -4115,8 +4152,8 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.1.0 - version: 12.1.0(react@18.3.1) + specifier: 12.0.0 + version: 12.0.0(react@18.3.1) '@wordpress/notices': specifier: 5.43.0 version: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -4265,13 +4302,13 @@ importers: version: 4.43.0 '@wordpress/admin-ui': specifier: ^1.9.0 - version: 1.11.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + version: 1.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) '@wordpress/boot': specifier: ^0.10.0 version: 0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) '@wordpress/icons': specifier: ^12.0.0 - version: 12.1.0(react@18.3.1) + version: 12.0.0(react@18.3.1) '@wordpress/lazy-editor': specifier: ^1.6.1 version: 1.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) @@ -4288,8 +4325,8 @@ importers: specifier: ^0.10.0 version: 0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) '@wordpress/ui': - specifier: ^0.10.0 - version: 0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + specifier: ^0.9.0 + version: 0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) webpack: specifier: ^5.104.1 version: 5.105.2(webpack-cli@6.0.1) @@ -4628,7 +4665,7 @@ importers: version: 1.58.2 '@types/node': specifier: ^24.12.0 - version: 24.12.2 + version: 24.12.0 '@typescript/native-preview': specifier: 7.0.0-dev.20260225.1 version: 7.0.0-dev.20260225.1 @@ -4728,7 +4765,7 @@ importers: version: 1.58.2 '@types/node': specifier: ^24.12.0 - version: 24.12.2 + version: 24.12.0 '@typescript/native-preview': specifier: 7.0.0-dev.20260225.1 version: 7.0.0-dev.20260225.1 @@ -4778,8 +4815,8 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.1.0 - version: 12.1.0(react@18.3.1) + specifier: 12.0.0 + version: 12.0.0(react@18.3.1) '@wordpress/theme': specifier: 0.9.0 version: 0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) @@ -5088,8 +5125,8 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.1.0 - version: 12.1.0(react@18.3.1) + specifier: 12.0.0 + version: 12.0.0(react@18.3.1) '@wordpress/plugins': specifier: 7.43.0 version: 7.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -5099,9 +5136,6 @@ importers: '@wordpress/rich-text': specifier: 7.43.0 version: 7.43.0(react@18.3.1) - '@wordpress/ui': - specifier: 0.10.0 - version: 0.10.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) '@wordpress/url': specifier: 4.43.0 version: 4.43.0 @@ -5364,7 +5398,7 @@ importers: version: 1.58.2 '@types/node': specifier: ^24.12.0 - version: 24.12.2 + version: 24.12.0 '@typescript/native-preview': specifier: 7.0.0-dev.20260225.1 version: 7.0.0-dev.20260225.1 @@ -5498,8 +5532,8 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.1.0 - version: 12.1.0(react@18.3.1) + specifier: 12.0.0 + version: 12.0.0(react@18.3.1) '@wordpress/url': specifier: 4.43.0 version: 4.43.0 @@ -5569,7 +5603,7 @@ importers: version: 1.58.2 '@types/node': specifier: ^24.12.0 - version: 24.12.2 + version: 24.12.0 '@typescript/native-preview': specifier: 7.0.0-dev.20260225.1 version: 7.0.0-dev.20260225.1 @@ -5595,7 +5629,7 @@ importers: version: 1.58.2 '@types/node': specifier: ^24.12.0 - version: 24.12.2 + version: 24.12.0 '@typescript/native-preview': specifier: 7.0.0-dev.20260225.1 version: 7.0.0-dev.20260225.1 @@ -5625,7 +5659,7 @@ importers: version: 1.58.2 '@types/node': specifier: ^24.12.0 - version: 24.12.2 + version: 24.12.0 '@typescript/native-preview': specifier: 7.0.0-dev.20260225.1 version: 7.0.0-dev.20260225.1 @@ -5722,7 +5756,7 @@ importers: version: 1.58.2 '@types/node': specifier: ^24.12.0 - version: 24.12.2 + version: 24.12.0 '@typescript/native-preview': specifier: 7.0.0-dev.20260225.1 version: 7.0.0-dev.20260225.1 @@ -5807,7 +5841,7 @@ importers: version: 1.58.2 '@types/node': specifier: ^24.12.0 - version: 24.12.2 + version: 24.12.0 '@typescript/native-preview': specifier: 7.0.0-dev.20260225.1 version: 7.0.0-dev.20260225.1 @@ -5943,13 +5977,13 @@ importers: version: 4.17.12 '@types/node': specifier: ^24.12.0 - version: 24.12.2 + version: 24.12.0 '@typescript/native-preview': specifier: 7.0.0-dev.20260225.1 version: 7.0.0-dev.20260225.1 '@wordpress/e2e-test-utils-playwright': specifier: 1.43.0 - version: 1.43.0(@playwright/test@1.58.2)(@types/node@24.12.2) + version: 1.43.0(@playwright/test@1.58.2)(@types/node@24.12.0) allure-playwright: specifier: 2.15.1 version: 2.15.1 @@ -6219,20 +6253,20 @@ packages: '@adobe/css-tools@4.4.4': resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} - '@altano/repository-tools@2.0.3': - resolution: {integrity: sha512-cSR/ZYDF6Wp9OeAJMyLYYN1GenAAhV17W+w38ELP+3c5Ltsy9jkkCymi33nz/qnXyef3n6Fbr1h2yt3dvUN5sQ==} + '@altano/repository-tools@2.0.1': + resolution: {integrity: sha512-YE/52CkFtb+YtHPgbWPai7oo5N9AKnMuP5LM+i2AG7G1H2jdYBCO1iDnkDE3dZ3C1MIgckaF+d5PNRulgt0bdw==} - '@ariakit/core@0.4.19': - resolution: {integrity: sha512-PUj/J1eX/b+DkcYwP6m7/tzDUiX1SVST89coljTN6BdQwLYMSkhg71jXcZwmTX19jQmqV9VqhVkKeabLnvciQQ==} + '@ariakit/core@0.4.18': + resolution: {integrity: sha512-9urEa+GbZTSyredq3B/3thQjTcSZSUC68XctwCkJNH/xNfKN5O+VThiem2rcJxpsGw8sRUQenhagZi0yB4foyg==} - '@ariakit/react-core@0.4.25': - resolution: {integrity: sha512-7seOOJ6N71lIKMS2jtNzxITCRIirt7yRrZLLWE8bp4+tQbov96BqSNX8fNCXmr/bDvKWz9PL07YrPrGjTXJXgA==} + '@ariakit/react-core@0.4.22': + resolution: {integrity: sha512-fWzQjMDhMCPGXDJ0/MkYF9vktclwF9XPxKm2fCwYfJMFtAha3ZKXnme2t+IAxguBLtklzW+5xTAEjKV4xn9s7A==} peerDependencies: react: ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 - '@ariakit/react@0.4.25': - resolution: {integrity: sha512-Gs/YgXrz0gCj0k/AWD7Ia9bw5vLPAJpG0KRiv6T/5Tg/DTZYihtE9blWGWhgGu+bSrp1IratNbQLkAvQ4J99cQ==} + '@ariakit/react@0.4.22': + resolution: {integrity: sha512-NKVBwMIGGfgMr2AoxvmUWmAeE/g6X/pDozR1S0yInF5tyem2DZQm+Td/9mKmZPu5e0x0hbEX1AQrb8SvL4VoBg==} peerDependencies: react: ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -6337,8 +6371,8 @@ packages: '@automattic/material-design-icons@1.0.0': resolution: {integrity: sha512-8baJ1l8ftLq/UdLeucOeGXo4/wpaB/pSOBO587/pKC/xv2Oo8Ok21g1WKwp0Y8hEq4+3JNtCzOGVxmIgDBTYvA==} - '@automattic/number-formatters@1.1.5': - resolution: {integrity: sha512-k8jUWruDm0mrJDFlCbQL/KaCv13tz17/TmtUMfRbeM+7eHNhIXf8AwxCxlF+S0TNE/K4ri0L4rQF7iq+wJTbHg==} + '@automattic/number-formatters@1.1.0': + resolution: {integrity: sha512-6+MMlgxEiZIMnSeUxR3YhUjTBgN3hiJMFk23za9h10KMV48G/iMTUvXqbSMTYOZzFr7JCkMUMj4lZO7nfkwogQ==} '@automattic/oauth-token@1.0.1': resolution: {integrity: sha512-do7/iKRiciU8ybEoqsrS3kcPux8Bs7+xslYJ/EhBVzdIPLP3Cn2BysEMhYkKDOSnoUhvRJi7Y9cCaoRuUIgYJw==} @@ -6490,12 +6524,12 @@ packages: resolution: {integrity: sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.29.2': - resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} + '@babel/helpers@7.28.6': + resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.29.2': - resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} + '@babel/parser@7.29.0': + resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} engines: {node: '>=6.0.0'} hasBin: true @@ -7052,8 +7086,8 @@ packages: '@cacheable/memory@2.0.8': resolution: {integrity: sha512-FvEb29x5wVwu/Kf93IWwsOOEuhHh6dYCJF3vcKLzXc0KXIW181AOzv6ceT4ZpBHDvAfG60eqb+ekmrnLHIy+jw==} - '@cacheable/utils@2.4.1': - resolution: {integrity: sha512-eiFgzCbIneyMlLOmNG4g9xzF7Hv3Mga4LjxjcSC/ues6VYq2+gUbQI8JqNuw/ZM8tJIeIaBGpswAsqV2V7ApgA==} + '@cacheable/utils@2.4.0': + resolution: {integrity: sha512-PeMMsqjVq+bF0WBsxFBxr/WozBJiZKY0rUojuaCoIaKnEl3Ju1wfEwS+SV1DU/cSe8fqHIPiYJFif8T3MVt4cQ==} '@cerner/duplicate-package-checker-webpack-plugin@2.3.0': resolution: {integrity: sha512-2FdUL/10qOjXzPTt/2dcjQPHDcsI+svvdU3KERGZaUvH5IwDdzE+nGLAx1+ICxhr6cqU29zvWR6GHGOFp+fbWA==} @@ -7124,8 +7158,8 @@ packages: '@codemirror/lang-xml@6.1.0': resolution: {integrity: sha512-3z0blhicHLfwi2UgkZYRPioSgVTo9PV5GP5ducFH6FaHy0IAJRg+ixj5gTR1gnT/glAIC8xv4w2VL1LoZfs+Jg==} - '@codemirror/lang-yaml@6.1.3': - resolution: {integrity: sha512-AZ8DJBuXGVHybpBQhmZtgew5//4hv3tdkXnr3vDmOUMJRuB6vn/uuwtmTOTlqEaQFg3hQSVeA90NmvIQyUV6FQ==} + '@codemirror/lang-yaml@6.1.2': + resolution: {integrity: sha512-dxrfG8w5Ce/QbT7YID7mWZFKhdhsaTNOYjOkSIMt1qmC4VQnXSDSYVHHHn8k6kJUfIhtLo8t1JJgltlxWdsITw==} '@codemirror/language-data@6.5.1': resolution: {integrity: sha512-0sWxeUSNlBr6OmkqybUTImADFUP0M3P0IiSde4nc24bz/6jIYzqYSgkOSLS+CBIoW1vU8Q9KUWXscBXeoMVC9w==} @@ -7148,9 +7182,6 @@ packages: '@codemirror/view@6.38.0': resolution: {integrity: sha512-yvSchUwHOdupXkd7xJ0ob36jdsSR/I+/C+VbY0ffBiL5NiSTEBDfB1ZGWbbIlDd5xgdUkody+lukAdOxYrOBeg==} - '@colordx/core@5.0.3': - resolution: {integrity: sha512-xBQ0MYRTNNxW3mS2sJtlQTT7C3Sasqgh1/PsHva7fyDb5uqYY+gv9V0utDdX8X80mqzbGz3u/IDJdn2d/uW09g==} - '@colors/colors@1.6.0': resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} engines: {node: '>=0.1.90'} @@ -7179,8 +7210,16 @@ packages: peerDependencies: '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-syntax-patches-for-csstree@1.1.2': - resolution: {integrity: sha512-5GkLzz4prTIpoyeUiIu3iV6CSG3Plo7xRVOFPKI7FVEJ3mZ0A8SwK0XU3Gl7xAkiQ+mDyam+NNp875/C5y+jSA==} + '@csstools/css-syntax-patches-for-csstree@1.1.1': + resolution: {integrity: sha512-BvqN0AMWNAnLk9G8jnUT77D+mUbY/H2b3uDTvg2isJkHaOufUE2R3AOwxWo7VBQKT1lOdwdvorddo2B/lk64+w==} + peerDependencies: + css-tree: ^3.2.1 + peerDependenciesMeta: + css-tree: + optional: true + + '@csstools/css-syntax-patches-for-csstree@1.1.3': + resolution: {integrity: sha512-SH60bMfrRCJF3morcdk57WklujF4Jr/EsQUzqkarfHXEFcAR1gg7fS/chAE922Sehgzc1/+Tz5H3Ypa1HiEKrg==} peerDependencies: css-tree: ^3.2.1 peerDependenciesMeta: @@ -7229,14 +7268,14 @@ packages: resolution: {integrity: sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==} engines: {node: '>=14.17.0'} - '@emnapi/core@1.9.2': - resolution: {integrity: sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==} + '@emnapi/core@1.8.1': + resolution: {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==} - '@emnapi/runtime@1.9.2': - resolution: {integrity: sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==} + '@emnapi/runtime@1.8.1': + resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==} - '@emnapi/wasi-threads@1.2.1': - resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} + '@emnapi/wasi-threads@1.1.0': + resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} '@emotion/babel-plugin@11.13.5': resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} @@ -7490,8 +7529,8 @@ packages: resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@1.2.1': - resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==} + '@eslint/core@1.1.1': + resolution: {integrity: sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@eslint/eslintrc@3.3.5': @@ -7905,50 +7944,50 @@ packages: peerDependencies: tslib: '2' - '@jsonjoy.com/fs-core@4.57.1': - resolution: {integrity: sha512-YrEi/ZPmgc+GfdO0esBF04qv8boK9Dg9WpRQw/+vM8Qt3nnVIJWIa8HwZ/LXVZ0DB11XUROM8El/7yYTJX+WtA==} + '@jsonjoy.com/fs-core@4.56.11': + resolution: {integrity: sha512-wThHjzUp01ImIjfCwhs+UnFkeGPFAymwLEkOtenHewaKe2pTP12p6r1UuwikA9NEvNf9Vlck92r8fb8n/MWM5w==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' - '@jsonjoy.com/fs-fsa@4.57.1': - resolution: {integrity: sha512-ooEPvSW/HQDivPDPZMibHGKZf/QS4WRir1czGZmXmp3MsQqLECZEpN0JobrD8iV9BzsuwdIv+PxtWX9WpPLsIA==} + '@jsonjoy.com/fs-fsa@4.56.11': + resolution: {integrity: sha512-ZYlF3XbMayyp97xEN8ZvYutU99PCHjM64mMZvnCseXkCJXJDVLAwlF8Q/7q/xiWQRsv3pQBj1WXHd9eEyYcaCQ==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' - '@jsonjoy.com/fs-node-builtins@4.57.1': - resolution: {integrity: sha512-XHkFKQ5GSH3uxm8c3ZYXVrexGdscpWKIcMWKFQpMpMJc8gA3AwOMBJXJlgpdJqmrhPyQXxaY9nbkNeYpacC0Og==} + '@jsonjoy.com/fs-node-builtins@4.56.11': + resolution: {integrity: sha512-CNmt3a0zMCIhniFLXtzPWuUxXFU+U+2VyQiIrgt/rRVeEJNrMQUABaRbVxR0Ouw1LyR9RjaEkPM6nYpED+y43A==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' - '@jsonjoy.com/fs-node-to-fsa@4.57.1': - resolution: {integrity: sha512-pqGHyWWzNck4jRfaGV39hkqpY5QjRUQ/nRbNT7FYbBa0xf4bDG+TE1Gt2KWZrSkrkZZDE3qZUjYMbjwSliX6pg==} + '@jsonjoy.com/fs-node-to-fsa@4.56.11': + resolution: {integrity: sha512-5OzGdvJDgZVo+xXWEYo72u81zpOWlxlbG4d4nL+hSiW+LKlua/dldNgPrpWxtvhgyntmdFQad2UTxFyGjJAGhA==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' - '@jsonjoy.com/fs-node-utils@4.57.1': - resolution: {integrity: sha512-vp+7ZzIB8v43G+GLXTS4oDUSQmhAsRz532QmmWBbdYA20s465JvwhkSFvX9cVTqRRAQg+vZ7zWDaIEh0lFe2gw==} + '@jsonjoy.com/fs-node-utils@4.56.11': + resolution: {integrity: sha512-JADOZFDA3wRfsuxkT0+MYc4F9hJO2PYDaY66kRTG6NqGX3+bqmKu66YFYAbII/tEmQWPZeHoClUB23rtQM9UPg==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' - '@jsonjoy.com/fs-node@4.57.1': - resolution: {integrity: sha512-3YaKhP8gXEKN+2O49GLNfNb5l2gbnCFHyAaybbA2JkkbQP3dpdef7WcUaHAulg/c5Dg4VncHsA3NWAUSZMR5KQ==} + '@jsonjoy.com/fs-node@4.56.11': + resolution: {integrity: sha512-D65YrnP6wRuZyEWoSFnBJSr5zARVpVBGctnhie4rCsMuGXNzX7IHKaOt85/Aj7SSoG1N2+/xlNjWmkLvZ2H3Tg==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' - '@jsonjoy.com/fs-print@4.57.1': - resolution: {integrity: sha512-Ynct7ZJmfk6qoXDOKfpovNA36ITUx8rChLmRQtW08J73VOiuNsU8PB6d/Xs7fxJC2ohWR3a5AqyjmLojfrw5yw==} + '@jsonjoy.com/fs-print@4.56.11': + resolution: {integrity: sha512-rnaKRgCRIn8JGTjxhS0JPE38YM3Pj/H7SW4/tglhIPbfKEkky7dpPayNKV2qy25SZSL15oFVgH/62dMZ/z7cyA==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' - '@jsonjoy.com/fs-snapshot@4.57.1': - resolution: {integrity: sha512-/oG8xBNFMbDXTq9J7vepSA1kerS5vpgd3p5QZSPd+nX59uwodGJftI51gDYyHRpP57P3WCQf7LHtBYPqwUg2Bg==} + '@jsonjoy.com/fs-snapshot@4.56.11': + resolution: {integrity: sha512-IIldPX+cIRQuUol9fQzSS3hqyECxVpYMJQMqdU3dCKZFRzEl1rkIkw4P6y7Oh493sI7YdxZlKr/yWdzEWZ1wGQ==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' @@ -8023,14 +8062,14 @@ packages: '@lezer/common@1.3.0': resolution: {integrity: sha512-L9X8uHCYU310o99L3/MpJKYxPzXPOS7S0NmBaM7UO/x2Kb2WbmMLSkfvdr1KxRIFYOpbY0Jhn7CfLSUDzL8arQ==} - '@lezer/common@1.5.2': - resolution: {integrity: sha512-sxQE460fPZyU3sdc8lafxiPwJHBzZRy/udNFynGQky1SePYBdhkBl1kOagA9uT3pxR8K09bOrmTUqA9wb/PjSQ==} + '@lezer/common@1.5.1': + resolution: {integrity: sha512-6YRVG9vBkaY7p1IVxL4s44n5nUnaNnGM2/AckNgYOnxTG2kWh1vR8BMxPseWPjRNpb5VtXnMpeYAEAADoRV1Iw==} '@lezer/cpp@1.1.5': resolution: {integrity: sha512-DIhSXmYtJKLehrjzDFN+2cPt547ySQ41nA8yqcDf/GxMc+YM736xqltFkvADL2M0VebU5I+3+4ks2Vv+Kyq3Aw==} - '@lezer/css@1.3.3': - resolution: {integrity: sha512-RzBo8r+/6QJeow7aPHIpGVIH59xTcJXp399820gZoMo9noQDRVpJLheIBUicYwKcsbOYoBRoLZlf2720dG/4Tg==} + '@lezer/css@1.3.1': + resolution: {integrity: sha512-PYAKeUVBo3HFThruRyp/iK91SwiZJnzXh8QzkQlwijB5y+N5iB28+iLk78o2zmKqqV0uolNhCwFqB8LA7b0Svg==} '@lezer/generator@1.8.0': resolution: {integrity: sha512-/SF4EDWowPqV1jOgoGSGTIFsE7Ezdr7ZYxyihl5eMKVO5tlnpIhFcDavgm1hHY5GEonoOAEnJ0CU0x+tvuAuUg==} @@ -8210,8 +8249,8 @@ packages: resolution: {integrity: sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==} engines: {node: '>=14'} - '@opentelemetry/api@1.9.1': - resolution: {integrity: sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==} + '@opentelemetry/api@1.9.0': + resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} engines: {node: '>=8.0.0'} '@opentelemetry/context-async-hooks@1.30.1': @@ -8600,8 +8639,8 @@ packages: '@popperjs/core@2.11.8': resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} - '@preact/signals-core@1.14.1': - resolution: {integrity: sha512-vxPpfXqrwUe9lpjqfYNjAF/0RF/eFGeLgdJzdmIIZjpOnTmGmAB4BjWone562mJGMRP4frU6iZ6ei3PDsu52Ng==} + '@preact/signals-core@1.13.0': + resolution: {integrity: sha512-slT6XeTCAbdql61GVLlGU4x7XHI7kCZV5Um5uhE4zLX4ApgiiXc0UYFvVOKq06xcovzp7p+61l68oPi563ARKg==} '@preact/signals@1.2.2': resolution: {integrity: sha512-ColCqdo4cRP18bAuIR4Oik5rDpiyFtPIJIygaYPMEAwTnl4buWkBOflGBSzhYyPyJfKpkwlekrvK+1pzQ2ldWw==} @@ -9050,141 +9089,141 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.60.1': - resolution: {integrity: sha512-d6FinEBLdIiK+1uACUttJKfgZREXrF0Qc2SmLII7W2AD8FfiZ9Wjd+rD/iRuf5s5dWrr1GgwXCvPqOuDquOowA==} + '@rollup/rollup-android-arm-eabi@4.59.0': + resolution: {integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.60.1': - resolution: {integrity: sha512-YjG/EwIDvvYI1YvYbHvDz/BYHtkY4ygUIXHnTdLhG+hKIQFBiosfWiACWortsKPKU/+dUwQQCKQM3qrDe8c9BA==} + '@rollup/rollup-android-arm64@4.59.0': + resolution: {integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.60.1': - resolution: {integrity: sha512-mjCpF7GmkRtSJwon+Rq1N8+pI+8l7w5g9Z3vWj4T7abguC4Czwi3Yu/pFaLvA3TTeMVjnu3ctigusqWUfjZzvw==} + '@rollup/rollup-darwin-arm64@4.59.0': + resolution: {integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.60.1': - resolution: {integrity: sha512-haZ7hJ1JT4e9hqkoT9R/19XW2QKqjfJVv+i5AGg57S+nLk9lQnJ1F/eZloRO3o9Scy9CM3wQ9l+dkXtcBgN5Ew==} + '@rollup/rollup-darwin-x64@4.59.0': + resolution: {integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.60.1': - resolution: {integrity: sha512-czw90wpQq3ZsAVBlinZjAYTKduOjTywlG7fEeWKUA7oCmpA8xdTkxZZlwNJKWqILlq0wehoZcJYfBvOyhPTQ6w==} + '@rollup/rollup-freebsd-arm64@4.59.0': + resolution: {integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.60.1': - resolution: {integrity: sha512-KVB2rqsxTHuBtfOeySEyzEOB7ltlB/ux38iu2rBQzkjbwRVlkhAGIEDiiYnO2kFOkJp+Z7pUXKyrRRFuFUKt+g==} + '@rollup/rollup-freebsd-x64@4.59.0': + resolution: {integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.60.1': - resolution: {integrity: sha512-L+34Qqil+v5uC0zEubW7uByo78WOCIrBvci69E7sFASRl0X7b/MB6Cqd1lky/CtcSVTydWa2WZwFuWexjS5o6g==} + '@rollup/rollup-linux-arm-gnueabihf@4.59.0': + resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==} cpu: [arm] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.60.1': - resolution: {integrity: sha512-n83O8rt4v34hgFzlkb1ycniJh7IR5RCIqt6mz1VRJD6pmhRi0CXdmfnLu9dIUS6buzh60IvACM842Ffb3xd6Gg==} + '@rollup/rollup-linux-arm-musleabihf@4.59.0': + resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==} cpu: [arm] os: [linux] libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.60.1': - resolution: {integrity: sha512-Nql7sTeAzhTAja3QXeAI48+/+GjBJ+QmAH13snn0AJSNL50JsDqotyudHyMbO2RbJkskbMbFJfIJKWA6R1LCJQ==} + '@rollup/rollup-linux-arm64-gnu@4.59.0': + resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==} cpu: [arm64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.60.1': - resolution: {integrity: sha512-+pUymDhd0ys9GcKZPPWlFiZ67sTWV5UU6zOJat02M1+PiuSGDziyRuI/pPue3hoUwm2uGfxdL+trT6Z9rxnlMA==} + '@rollup/rollup-linux-arm64-musl@4.59.0': + resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==} cpu: [arm64] os: [linux] libc: [musl] - '@rollup/rollup-linux-loong64-gnu@4.60.1': - resolution: {integrity: sha512-VSvgvQeIcsEvY4bKDHEDWcpW4Yw7BtlKG1GUT4FzBUlEKQK0rWHYBqQt6Fm2taXS+1bXvJT6kICu5ZwqKCnvlQ==} + '@rollup/rollup-linux-loong64-gnu@4.59.0': + resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==} cpu: [loong64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-loong64-musl@4.60.1': - resolution: {integrity: sha512-4LqhUomJqwe641gsPp6xLfhqWMbQV04KtPp7/dIp0nzPxAkNY1AbwL5W0MQpcalLYk07vaW9Kp1PBhdpZYYcEw==} + '@rollup/rollup-linux-loong64-musl@4.59.0': + resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==} cpu: [loong64] os: [linux] libc: [musl] - '@rollup/rollup-linux-ppc64-gnu@4.60.1': - resolution: {integrity: sha512-tLQQ9aPvkBxOc/EUT6j3pyeMD6Hb8QF2BTBnCQWP/uu1lhc9AIrIjKnLYMEroIz/JvtGYgI9dF3AxHZNaEH0rw==} + '@rollup/rollup-linux-ppc64-gnu@4.59.0': + resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==} cpu: [ppc64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-ppc64-musl@4.60.1': - resolution: {integrity: sha512-RMxFhJwc9fSXP6PqmAz4cbv3kAyvD1etJFjTx4ONqFP9DkTkXsAMU4v3Vyc5BgzC+anz7nS/9tp4obsKfqkDHg==} + '@rollup/rollup-linux-ppc64-musl@4.59.0': + resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==} cpu: [ppc64] os: [linux] libc: [musl] - '@rollup/rollup-linux-riscv64-gnu@4.60.1': - resolution: {integrity: sha512-QKgFl+Yc1eEk6MmOBfRHYF6lTxiiiV3/z/BRrbSiW2I7AFTXoBFvdMEyglohPj//2mZS4hDOqeB0H1ACh3sBbg==} + '@rollup/rollup-linux-riscv64-gnu@4.59.0': + resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==} cpu: [riscv64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.60.1': - resolution: {integrity: sha512-RAjXjP/8c6ZtzatZcA1RaQr6O1TRhzC+adn8YZDnChliZHviqIjmvFwHcxi4JKPSDAt6Uhf/7vqcBzQJy0PDJg==} + '@rollup/rollup-linux-riscv64-musl@4.59.0': + resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==} cpu: [riscv64] os: [linux] libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.60.1': - resolution: {integrity: sha512-wcuocpaOlaL1COBYiA89O6yfjlp3RwKDeTIA0hM7OpmhR1Bjo9j31G1uQVpDlTvwxGn2nQs65fBFL5UFd76FcQ==} + '@rollup/rollup-linux-s390x-gnu@4.59.0': + resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==} cpu: [s390x] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.60.1': - resolution: {integrity: sha512-77PpsFQUCOiZR9+LQEFg9GClyfkNXj1MP6wRnzYs0EeWbPcHs02AXu4xuUbM1zhwn3wqaizle3AEYg5aeoohhg==} + '@rollup/rollup-linux-x64-gnu@4.59.0': + resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==} cpu: [x64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.60.1': - resolution: {integrity: sha512-5cIATbk5vynAjqqmyBjlciMJl1+R/CwX9oLk/EyiFXDWd95KpHdrOJT//rnUl4cUcskrd0jCCw3wpZnhIHdD9w==} + '@rollup/rollup-linux-x64-musl@4.59.0': + resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==} cpu: [x64] os: [linux] libc: [musl] - '@rollup/rollup-openbsd-x64@4.60.1': - resolution: {integrity: sha512-cl0w09WsCi17mcmWqqglez9Gk8isgeWvoUZ3WiJFYSR3zjBQc2J5/ihSjpl+VLjPqjQ/1hJRcqBfLjssREQILw==} + '@rollup/rollup-openbsd-x64@4.59.0': + resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==} cpu: [x64] os: [openbsd] - '@rollup/rollup-openharmony-arm64@4.60.1': - resolution: {integrity: sha512-4Cv23ZrONRbNtbZa37mLSueXUCtN7MXccChtKpUnQNgF010rjrjfHx3QxkS2PI7LqGT5xXyYs1a7LbzAwT0iCA==} + '@rollup/rollup-openharmony-arm64@4.59.0': + resolution: {integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.60.1': - resolution: {integrity: sha512-i1okWYkA4FJICtr7KpYzFpRTHgy5jdDbZiWfvny21iIKky5YExiDXP+zbXzm3dUcFpkEeYNHgQ5fuG236JPq0g==} + '@rollup/rollup-win32-arm64-msvc@4.59.0': + resolution: {integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.60.1': - resolution: {integrity: sha512-u09m3CuwLzShA0EYKMNiFgcjjzwqtUMLmuCJLeZWjjOYA3IT2Di09KaxGBTP9xVztWyIWjVdsB2E9goMjZvTQg==} + '@rollup/rollup-win32-ia32-msvc@4.59.0': + resolution: {integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.60.1': - resolution: {integrity: sha512-k+600V9Zl1CM7eZxJgMyTUzmrmhB/0XZnF4pRypKAlAgxmedUA+1v9R+XOFv56W4SlHEzfeMtzujLJD22Uz5zg==} + '@rollup/rollup-win32-x64-gnu@4.59.0': + resolution: {integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.60.1': - resolution: {integrity: sha512-lWMnixq/QzxyhTV6NjQJ4SFo1J6PvOX8vUx5Wb4bBPsEb+8xZ89Bz6kOXpfXj9ak9AHTQVQzlgzBEc1SyM27xQ==} + '@rollup/rollup-win32-x64-msvc@4.59.0': + resolution: {integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==} cpu: [x64] os: [win32] @@ -9257,8 +9296,8 @@ packages: '@opentelemetry/sdk-trace-base': ^1.30.1 || ^2.0.0 '@opentelemetry/semantic-conventions': ^1.34.0 - '@sinclair/typebox@0.34.49': - resolution: {integrity: sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==} + '@sinclair/typebox@0.34.48': + resolution: {integrity: sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==} '@sindresorhus/base62@1.0.0': resolution: {integrity: sha512-TeheYy0ILzBEI/CO55CP6zJCSdSWeRtGnHy8U8dWSUH4I68iqTsy7HkMktR4xakThc9jotkPQUXT4ITdbV7cHA==} @@ -9271,8 +9310,8 @@ packages: '@sinonjs/commons@3.0.1': resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} - '@sinonjs/fake-timers@15.3.2': - resolution: {integrity: sha512-mrn35Jl2pCpns+mE3HaZa1yPN5EYCRgiMI+135COjr2hr8Cls9DXqIZ57vZe2cz7y2XVSq92tcs6kGQcT1J8Rw==} + '@sinonjs/fake-timers@15.1.1': + resolution: {integrity: sha512-cO5W33JgAPbOh07tvZjUOJ7oWhtaqGHiZw+11DPbyqh2kHTBc3eF/CjJDeQ4205RLQsX6rxCuYOroFQwl7JDRw==} '@sitespeed.io/tracium@0.3.3': resolution: {integrity: sha512-dNZafjM93Y+F+sfwTO5gTpsGXlnc/0Q+c2+62ViqP3gkMWvHEMSKkaEHgVJLcLg3i/g19GSIPziiKpgyne07Bw==} @@ -9295,12 +9334,12 @@ packages: peerDependencies: size-limit: 12.0.0 - '@slack/logger@4.0.1': - resolution: {integrity: sha512-6cmdPrV/RYfd2U0mDGiMK8S7OJqpCTm7enMLRR3edccsPX8j7zXTLnaEF4fhxxJJTAIOil6+qZrnUPTuaLvwrQ==} + '@slack/logger@4.0.0': + resolution: {integrity: sha512-Wz7QYfPAlG/DR+DfABddUZeNgoeY7d1J39OCR2jR+v7VBsB8ezulDK5szTnDDPDwLH5IWhLvXIHlCFZV7MSKgA==} engines: {node: '>= 18', npm: '>= 8.6.0'} - '@slack/types@2.20.1': - resolution: {integrity: sha512-eWX2mdt1ktpn8+40iiMc404uGrih+2fxiky3zBcPjtXKj6HLRdYlmhrPkJi7JTJm8dpXR6BWVWEDBXtaWMKD6A==} + '@slack/types@2.20.0': + resolution: {integrity: sha512-PVF6P6nxzDMrzPC8fSCsnwaI+kF8YfEpxf3MqXmdyjyWTYsZQURpkK7WWUWvP5QpH55pB7zyYL9Qem/xSgc5VA==} engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} '@slack/web-api@7.12.0': @@ -9400,11 +9439,11 @@ packages: typescript: optional: true - '@stylistic/stylelint-plugin@5.1.0': - resolution: {integrity: sha512-TFvKCbJUEWUYCD+rDv45qhnStO6nRtbBngaCblS2JGh8c95S3jJi3fIotfF6EDo4IVM15UPa65WP+kp6GNvXRA==} + '@stylistic/stylelint-plugin@5.0.1': + resolution: {integrity: sha512-NaVwCNVZ2LyPA3TnUwvjO9c6P6VUjgRB8UP8SOW+cAOJBVqPPuOIDawsvvtql/LhkuR3JuTdGvr/RM3dUl8l2Q==} engines: {node: '>=20.19.0'} peerDependencies: - stylelint: ^17.6.0 + stylelint: ^17.0.0 '@sveltejs/acorn-typescript@1.0.9': resolution: {integrity: sha512-lVJX6qEgs/4DOcRTpo56tmKzVPtoWAaVbL4hfO7t7NVwl9AAXzQR6cihesW1BmNMPl+bK6dreu2sOKBP2Q9CIA==} @@ -9435,8 +9474,8 @@ packages: peerDependencies: eslint: ^8.57.0 || ^9.0.0 - '@tanstack/history@1.161.5': - resolution: {integrity: sha512-g9rWt2rNC0Ztga4LAFWfBDT0VREij5mxBo+oH5+cQ5Q46HVIhtJNty/UU5wPzbTKMHJHGNJOWgrlEfcQ4GgjEA==} + '@tanstack/history@1.161.4': + resolution: {integrity: sha512-Kp/WSt411ZWYvgXy6uiv5RmhHrz9cAml05AQPrtdAp7eUqvIDbMGPnML25OKbzR3RJ1q4wgENxDTvlGPa9+Mww==} engines: {node: '>=20.19'} '@tanstack/query-core@5.90.8': @@ -9456,25 +9495,25 @@ packages: peerDependencies: react: ^18 || ^19 - '@tanstack/react-router@1.167.1': - resolution: {integrity: sha512-hjBvkqXAQBligGekD6wYidl0jlXYwigYMcVkBQz3kXdWQ9fP/Ifbwu5w8zKnlRbuFHF90k1vY9UHjaWdsY3ILA==} + '@tanstack/react-router@1.166.2': + resolution: {integrity: sha512-pKhUtrvVLlhjWhsHkJSuIzh1J4LcP+8ErbIqRLORX9Js8dUFMKoT0+8oFpi+P8QRpuhm/7rzjYiWfcyTsqQZtA==} engines: {node: '>=20.19'} peerDependencies: react: '>=18.0.0 || >=19.0.0' react-dom: '>=18.0.0 || >=19.0.0' - '@tanstack/react-store@0.9.3': - resolution: {integrity: sha512-y2iHd/N9OkoQbFJLUX1T9vbc2O9tjH0pQRgTcx1/Nz4IlwLvkgpuglXUx+mXt0g5ZDFrEeDnONPqkbfxXJKwRg==} + '@tanstack/react-store@0.9.2': + resolution: {integrity: sha512-Vt5usJE5sHG/cMechQfmwvwne6ktGCELe89Lmvoxe3LKRoFrhPa8OCKWs0NliG8HTJElEIj7PLtaBQIcux5pAQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tanstack/router-core@1.167.1': - resolution: {integrity: sha512-8xvS3rWxJ/FZTLxqrh/5KetnDB2B/aFG393C1BjYbinhPXMUhsToW/5fN+l4qbtmQ4BfoNLUmrQUzVRNCN22mw==} + '@tanstack/router-core@1.166.2': + resolution: {integrity: sha512-zn3NhENOAX9ToQiX077UV2OH3aJKOvV2ZMNZZxZ3gDG3i3WqL8NfWfEgetEAfMN37/Mnt90PpotYgf7IyuoKqQ==} engines: {node: '>=20.19'} - '@tanstack/store@0.9.3': - resolution: {integrity: sha512-8reSzl/qGWGGVKhBoxXPMWzATSbZLZFWhwBAFO9NAyp0TxzfBP0mIrGb8CP8KrQTmvzXlR/vFPPUrHTLBGyFyw==} + '@tanstack/store@0.9.2': + resolution: {integrity: sha512-K013lUJEFJK2ofFQ/hZKJUmCnpcV00ebLyOyFOWQvyQHUOZp/iYO84BM6aOGiV81JzwbX0APTVmW8YI7yiG5oA==} '@testing-library/dom@10.4.1': resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==} @@ -9602,8 +9641,8 @@ packages: '@types/d3-voronoi@1.1.12': resolution: {integrity: sha512-DauBl25PKZZ0WVJr42a6CNvI6efsdzofl9sajqZr2Gf5Gu733WkDdUGiPkUHXiUvYGzNNlFQde2wdZdfQPG+yw==} - '@types/debug@4.1.13': - resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} @@ -9703,8 +9742,8 @@ packages: '@types/mysql@2.15.26': resolution: {integrity: sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ==} - '@types/node@24.12.2': - resolution: {integrity: sha512-A1sre26ke7HDIuY/M23nd9gfB+nrmhtYyMINbjI1zHJxYteKR6qSMX56FsmjMcDb3SMcjJg5BiRRgOCC/yBD0g==} + '@types/node@24.12.0': + resolution: {integrity: sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -9840,32 +9879,16 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.58.1': - resolution: {integrity: sha512-gfQ8fk6cxhtptek+/8ZIqw8YrRW5048Gug8Ts5IYcMLCw18iUgrZAEY/D7s4hkI0FxEfGakKuPK/XUMPzPxi5g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@8.57.1': resolution: {integrity: sha512-hs/QcpCwlwT2L5S+3fT6gp0PabyGk4Q0Rv2doJXA0435/OpnSR3VRgvrp8Xdoc3UAYSg9cyUjTeFXZEPg/3OKg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.58.1': - resolution: {integrity: sha512-TPYUEqJK6avLcEjumWsIuTpuYODTTDAtoMdt8ZZa93uWMTX13Nb8L5leSje1NluammvU+oI3QRr5lLXPgihX3w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.57.1': resolution: {integrity: sha512-0lgOZB8cl19fHO4eI46YUx2EceQqhgkPSuCGLlGi79L2jwYY1cxeYc1Nae8Aw1xjgW3PKVDLlr3YJ6Bxx8HkWg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/tsconfig-utils@8.58.1': - resolution: {integrity: sha512-JAr2hOIct2Q+qk3G+8YFfqkqi7sC86uNryT+2i5HzMa2MPjw4qNFvtjnw1IiA1rP7QhNKVe21mSSLaSjwA1Olw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.57.1': resolution: {integrity: sha512-+Bwwm0ScukFdyoJsh2u6pp4S9ktegF98pYUU0hkphOOqdMB+1sNQhIz8y5E9+4pOioZijrkfNO/HUJVAFFfPKA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -9877,22 +9900,12 @@ packages: resolution: {integrity: sha512-S29BOBPJSFUiblEl6RzPPjJt6w25A6XsBqRVDt53tA/tlL8q7ceQNZHTjPeONt/3S7KRI4quk+yP9jK2WjBiPQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.58.1': - resolution: {integrity: sha512-io/dV5Aw5ezwzfPBBWLoT+5QfVtP8O7q4Kftjn5azJ88bYyp/ZMCsyW1lpKK46EXJcaYMZ1JtYj+s/7TdzmQMw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.57.1': resolution: {integrity: sha512-ybe2hS9G6pXpqGtPli9Gx9quNV0TWLOmh58ADlmZe9DguLq0tiAKVjirSbtM1szG6+QH6rVXyU6GTLQbWnMY+g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/typescript-estree@8.58.1': - resolution: {integrity: sha512-w4w7WR7GHOjqqPnvAYbazq+Y5oS68b9CzasGtnd6jIeOIeKUzYzupGTB2T4LTPSv4d+WPeccbxuneTFHYgAAWg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.57.1': resolution: {integrity: sha512-XUNSJ/lEVFttPMMoDVA2r2bwrl8/oPx8cURtczkSEswY5T3AeLmCy+EKWQNdL4u0MmAHOjcWrqJp2cdvgjn8dQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -9900,21 +9913,10 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.58.1': - resolution: {integrity: sha512-Ln8R0tmWC7pTtLOzgJzYTXSCjJ9rDNHAqTaVONF4FEi2qwce8mD9iSOxOpLFFvWp/wBFlew0mjM1L1ihYWfBdQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/visitor-keys@8.57.1': resolution: {integrity: sha512-YWnmJkXbofiz9KbnbbwuA2rpGkFPLbAIetcCNO6mJ8gdhdZ/v7WDXsoGFAJuM6ikUFKTlSQnjWnVO4ux+UzS6A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.58.1': - resolution: {integrity: sha512-y+vH7QE8ycjoa0bWciFg7OpFcipUuem1ujhrdLtq1gByKwfbC7bPeKsiny9e0urg93DqwGcHey+bGRKCnF1nZQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260225.1': resolution: {integrity: sha512-3qSsqv7FmM4z09wEpEXdhmgMfiJF/OMOZa41AdgMsXTTRpX2/38hDg2KGhi3fc24M2T3MnLPLTqw6HyTOBaV1Q==} cpu: [arm64] @@ -10315,6 +10317,12 @@ packages: resolution: {integrity: sha512-AWNmSi+Cjx5m03JhG/XjDqgRufqCFcIpYddWw7/0vR6rMk/DK5O+Jx6yJcJOwgmz2KFSgjMnjFfqbh3EtX8rRg==} engines: {node: '>=18.12.0', npm: '>=8.19.2'} + '@wordpress/admin-ui@1.10.0': + resolution: {integrity: sha512-Fn/vNDKLQuUSv0feb40Rmbl0TIndOPGtPon3gYiBMBLxgYebT/ET4RS0vktn8IEcP9frPG1wVZ5dM8dT3d/cHw==} + engines: {node: '>=18.12.0', npm: '>=8.19.2'} + peerDependencies: + react: ^18.0.0 + '@wordpress/admin-ui@1.11.0': resolution: {integrity: sha512-9kgXCvAVqTLImGjKH1Q8gRLB69cEYbI6NWcJfgkfLCcMyIBFPKV86jcp/IfXQekWxHg5YTa5i8MkmWL67NnEHw==} engines: {node: '>=18.12.0', npm: '>=8.19.2'} @@ -10450,6 +10458,12 @@ packages: peerDependencies: react: ^18.0.0 + '@wordpress/dataviews@13.1.0': + resolution: {integrity: sha512-nZQux6jhcgKQhkD+eBwC9YojA2xWerutShUvPWyBu6mLhArGWUSYniuX1An8rhSMkm6nwju7Omgui7BdvqJhhw==} + engines: {node: '>=18.12.0', npm: '>=8.19.2'} + peerDependencies: + react: ^18.0.0 + '@wordpress/dataviews@14.0.0': resolution: {integrity: sha512-DTfJiwNL+Yt60P4BmLvYLjpd/QeOmJJry/DRdMqcPyt6w98rRFwr32hcbn0FwVkADJXmW8l2Y2vczf01StnZJw==} engines: {node: '>=18.12.0', npm: '>=8.19.2'} @@ -10579,6 +10593,18 @@ packages: peerDependencies: react: ^18 + '@wordpress/icons@11.8.0': + resolution: {integrity: sha512-ZMNHApHMmPLpNnNLfPLRf6XWoPhZFNKFKdpMlhA6Lx04J1hLVyLRz8PuM+1o3ByxD2ZiExfSRhdmI+7VvEg6DA==} + engines: {node: '>=18.12.0', npm: '>=8.19.2'} + peerDependencies: + react: ^18.0.0 + + '@wordpress/icons@12.0.0': + resolution: {integrity: sha512-bDYsBGb1Ig/HWMt7aNrFWeABrD2wbReMazn9cZxUnXTf9ZFFrmG8PEdwmmJErDiEH9MvvAzLxadcNylWNNgeZA==} + engines: {node: '>=18.12.0', npm: '>=8.19.2'} + peerDependencies: + react: ^18.0.0 + '@wordpress/icons@12.1.0': resolution: {integrity: sha512-JOEVd94kZQsGYyLhjq1edfaMOTPON/7qUDuzT74uSwSCJ6OiHf3yJHfxMlLOMoh12dQshWPciLVLagkYLCldag==} engines: {node: '>=18.12.0', npm: '>=8.19.2'} @@ -10600,6 +10626,13 @@ packages: resolution: {integrity: sha512-v+7isar/S6XECBF3NbRr3+PW8lSGo+c8nt80NHqb+LIPQmG6/0xZ7GourL7OZLkY1cRSSqvSokV6zwQ2kfmRhg==} engines: {node: '>=18.12.0', npm: '>=8.19.2'} + '@wordpress/interface@9.27.0': + resolution: {integrity: sha512-nKjrAi2grZM7of3HP68orGrQJB2nreWrtuxcJ8A1rWzpskQNzInPzRTbH0XcfN0ifmaLeI84h+kZaHrW4z6Bnw==} + engines: {node: '>=18.12.0', npm: '>=8.19.2'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + '@wordpress/interface@9.28.0': resolution: {integrity: sha512-JaxQbL38DeFG7sniv5ENKnJY4emzEw+JxVjU6oVBHUh7vHN6DoMTBIUDQdluUpaYexQ3lLqq3eQODep0vX70oQ==} engines: {node: '>=18.12.0', npm: '>=8.19.2'} @@ -10700,8 +10733,8 @@ packages: resolution: {integrity: sha512-ADZB20UjyQgdL43uFkFE9tm49URMRphydi+ngaxbAJnT/3n5x7WSzfXMBqrdQOuBpdy44O9yHz7JtzLXRapkjQ==} engines: {node: '>=18.12.0', npm: '>=8.19.2'} - '@wordpress/react-i18n@4.43.0': - resolution: {integrity: sha512-NASm8oHzEtZsHeqR4vnM27/j//zbojJUefZ4LMXCp2LlCWn63dJMYb8JVMOJtp9rYDwKx0UzztBnVsoN/4H2lA==} + '@wordpress/react-i18n@4.41.0': + resolution: {integrity: sha512-Ud5wSVsFXwZxAC11VRbCGPnjR2RgnMwNQ3BNIB+wsbd8ENxvyUKdLBskWLGrBeDECvwMjK7L4lguigq3dYlYZQ==} engines: {node: '>=18.12.0', npm: '>=8.19.2'} '@wordpress/redux-routine@5.43.0': @@ -10723,6 +10756,12 @@ packages: peerDependencies: react: ^18.0.0 + '@wordpress/route@0.8.0': + resolution: {integrity: sha512-mVksg5UcNKWviox/wZUDfuNifwjKcpoSW1WGFKsTm7OFRAQQgCIwbNZBV5bQ3Y77W69cLQ4ylTkuAeHaaN2dIg==} + engines: {node: '>=18.12.0', npm: '>=8.19.2'} + peerDependencies: + react: ^18.0.0 + '@wordpress/route@0.9.0': resolution: {integrity: sha512-OU2O8uGNCQL32XKl2xHFj+2SlD3efrity30lgtxPmR8zKOLKfOUz8TjdbQUtto1iZFDZz8+7ONPx5xgip11ntg==} engines: {node: '>=18.12.0', npm: '>=8.19.2'} @@ -10794,6 +10833,13 @@ packages: react: ^18.0.0 react-dom: ^18.0.0 + '@wordpress/ui@0.9.0': + resolution: {integrity: sha512-PXx0CU5ngJOaC69ylhyyS33Ac4njVudGMkrPjXuRd6cXZeizD3q6KO0ws1ECtm4FYlrWv5YvYyNhT5salP9hTg==} + engines: {node: '>=20.10.0', npm: '>=10.2.3'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + '@wordpress/undo-manager@1.43.0': resolution: {integrity: sha512-G1hP30a1iV6QaUQ+oouUgFN2VetBVcMPmL+zD04TO1Gs0Dq+4Dgego7/GFuOPBZWO2qiuXTMJUUmi1wO6FSh9A==} engines: {node: '>=18.12.0', npm: '>=8.19.2'} @@ -11118,10 +11164,13 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - axe-core@4.11.2: - resolution: {integrity: sha512-byD6KPdvo72y/wj2T/4zGEvvlis+PsZsn/yPS3pEO+sFpcrqRpX/TJCxvVaEsNeMrfQbCr7w163YqoD9IYwHXw==} + axe-core@4.11.1: + resolution: {integrity: sha512-BASOg+YwO2C+346x3LZOeoovTIoTrRqEsqMa6fmfAV0P+U9mFr9NsyOEpiYvFjbc64NMrSswhV50WdXzdb/Z5A==} engines: {node: '>=4'} + axios@1.13.5: + resolution: {integrity: sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==} + axios@1.15.0: resolution: {integrity: sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==} @@ -11228,8 +11277,8 @@ packages: bare-abort-controller: optional: true - bare-fs@4.7.0: - resolution: {integrity: sha512-xzqKsCFxAek9aezYhjJuJRXBIaYlg/0OGDTZp+T8eYmYMlm66cs6cYko02drIyjN2CBbi+I6L7YfXyqpqtKRXA==} + bare-fs@4.5.5: + resolution: {integrity: sha512-XvwYM6VZqKoqDll8BmSww5luA5eflDzY0uEFfBJtFKe4PAAtxBjU3YIxzIBzhyaEQBy1VXEQBto4cpN5RZJw+w==} engines: {bare: '>=1.16.0'} peerDependencies: bare-buffer: '*' @@ -11237,37 +11286,34 @@ packages: bare-buffer: optional: true - bare-os@3.8.7: - resolution: {integrity: sha512-G4Gr1UsGeEy2qtDTZwL7JFLo2wapUarz7iTMcYcMFdS89AIQuBoyjgXZz0Utv7uHs3xA9LckhVbeBi8lEQrC+w==} + bare-os@3.7.1: + resolution: {integrity: sha512-ebvMaS5BgZKmJlvuWh14dg9rbUI84QeV3WlWn6Ph6lFI8jJoh7ADtVTyD2c93euwbe+zgi0DVrl4YmqXeM9aIA==} engines: {bare: '>=1.14.0'} bare-path@3.0.0: resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==} - bare-stream@2.13.0: - resolution: {integrity: sha512-3zAJRZMDFGjdn+RVnNpF9kuELw+0Fl3lpndM4NcEOhb9zwtSo/deETfuIwMSE5BXanA0FrN1qVjffGwAg2Y7EA==} + bare-stream@2.8.0: + resolution: {integrity: sha512-reUN0M2sHRqCdG4lUK3Fw8w98eeUIZHL5c3H7Mbhk2yVBL+oofgaIp0ieLfD5QXwPCypBpmEEKU2WZKzbAk8GA==} peerDependencies: - bare-abort-controller: '*' bare-buffer: '*' bare-events: '*' peerDependenciesMeta: - bare-abort-controller: - optional: true bare-buffer: optional: true bare-events: optional: true - bare-url@2.4.0: - resolution: {integrity: sha512-NSTU5WN+fy/L0DDenfE8SXQna4voXuW0FHM7wH8i3/q9khUSchfPbPezO4zSFMnDGIf9YE+mt/RWhZgNRKRIXA==} + bare-url@2.3.2: + resolution: {integrity: sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==} - baseline-browser-mapping@2.10.18: - resolution: {integrity: sha512-VSnGQAOLtP5mib/DPyg2/t+Tlv65NTBz83BJBJvmLVHHuKJVaDOBvJJykiT5TR++em5nfAySPccDZDa4oSrn8A==} + baseline-browser-mapping@2.10.13: + resolution: {integrity: sha512-BL2sTuHOdy0YT1lYieUxTw/QMtPBC3pmlJC6xk8BBYVv6vcw3SGdKemQ+Xsx9ik2F/lYDO9tqsFQH1r9PFuHKw==} engines: {node: '>=6.0.0'} hasBin: true - basic-ftp@5.2.2: - resolution: {integrity: sha512-1tDrzKsdCg70WGvbFss/ulVAxupNauGnOlgpyjKzeQxzyllBLS0CGLV7tjIXTK3ZQA9/FBEm9qyFFN1bciA6pw==} + basic-ftp@5.2.1: + resolution: {integrity: sha512-0yaL8JdxTknKDILitVpfYfV2Ob6yb3udX/hK97M7I3jOeznBNxQPtVvTUtnhUkyHlxFWyr5Lvknmgzoc7jf+1Q==} engines: {node: '>=10.0.0'} batch@0.6.1: @@ -11296,11 +11342,11 @@ packages: bounding-client-rect@1.0.5: resolution: {integrity: sha512-3OVNM56TuMbHZYjbIbAkHZ7VHYVK9RPLr3s2nZucuJm1HgDBFEY6twJce4dCNwF0MO3ySOyA9KUZ+pObCd4mow==} - brace-expansion@1.1.14: - resolution: {integrity: sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==} + brace-expansion@1.1.13: + resolution: {integrity: sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==} - brace-expansion@2.1.0: - resolution: {integrity: sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==} + brace-expansion@2.0.3: + resolution: {integrity: sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==} brace-expansion@5.0.5: resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} @@ -11317,6 +11363,11 @@ packages: peerDependencies: browserslist: '*' + browserslist@4.25.2: + resolution: {integrity: sha512-0si2SJK3ooGzIawRu61ZdPCO1IncZwS8IzuX73sPZsXW6EQ/w/DAfPyKI8l1ETTCr2MnvqWitmlCUxgdul45jA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + browserslist@4.28.2: resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -11371,8 +11422,8 @@ packages: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} - call-bind@1.0.9: - resolution: {integrity: sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==} + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} engines: {node: '>= 0.4'} call-bound@1.0.4: @@ -11404,8 +11455,8 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001787: - resolution: {integrity: sha512-mNcrMN9KeI68u7muanUpEejSLghOKlVhRqS/Za2IeyGllJ9I9otGpR9g3nsw7n4W378TE/LyIteA0+/FOZm4Kg==} + caniuse-lite@1.0.30001784: + resolution: {integrity: sha512-WU346nBTklUV9YfUl60fqRbU5ZqyXlqvo1SgigE1OAXK5bFL8LL9q1K7aap3N739l4BvNqnkm3YrGHiY9sfUQw==} canvas-confetti@1.9.4: resolution: {integrity: sha512-yxQbJkAVrFXWNbTUjPqjF7G+g6pDotOUHGbkZq2NELZUMDpiJ85rIEazVb8GTaAptNW2miJAXbs1BtioA251Pw==} @@ -11715,8 +11766,8 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie-es@2.0.1: - resolution: {integrity: sha512-aVf4A4hI2w70LnF7GG+7xDQUkliwiXWXFvTjkip4+b64ygDQ2sJPRSKFDHbxn8o0xu9QzPkMuuiWIXyFSE2slA==} + cookie-es@2.0.0: + resolution: {integrity: sha512-RAj4E421UYRgqokKUmotqAwuplYw15qtdXfY+hGzgCJ/MBjCVZcSoHK/kH9kocfjRjcDME7IiDWR/1WX1TM2Pg==} cookie-signature@1.0.7: resolution: {integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==} @@ -11738,14 +11789,14 @@ packages: core-js-compat@3.49.0: resolution: {integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==} - core-js-pure@3.49.0: - resolution: {integrity: sha512-XM4RFka59xATyJv/cS3O3Kml72hQXUeGRuuTmMYFxwzc9/7C8OYTaIR/Ji+Yt8DXzsFLNhat15cE/JP15HrCgw==} + core-js-pure@3.48.0: + resolution: {integrity: sha512-1slJgk89tWC51HQ1AEqG+s2VuwpTRr8ocu4n20QUcH1v9lAN0RXen0Q0AABa/DK1I7RrNWLucplOHMx8hfTGTw==} core-js@3.38.1: resolution: {integrity: sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==} - core-js@3.49.0: - resolution: {integrity: sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==} + core-js@3.48.0: + resolution: {integrity: sha512-zpEHTy1fjTMZCKLHUZoVeylt9XrzaIN2rbPXEt0k+q7JE5CkCZdo6bNq55bn24a69CH7ErAVLKijxJja4fw+UQ==} core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -11793,8 +11844,8 @@ packages: csp_evaluator@1.1.5: resolution: {integrity: sha512-EL/iN9etCTzw/fBnp0/uj0f5BOOGvZut2mzsiiBZ/FdT6gFQCKRO/tmcKOxn5drWZ2Ndm/xBb1SI4zwWbGtmIw==} - css-declaration-sorter@7.4.0: - resolution: {integrity: sha512-LTuzjPoyA2vMGKKcaOqKSp7Ub2eGrNfKiZH4LpezxpNrsICGCSFvsQOI29psISxNZtaXibkC2CXzrQ5enMeGGw==} + css-declaration-sorter@7.3.1: + resolution: {integrity: sha512-gz6x+KkgNCjxq3Var03pRYLhyNfwhkKF1g/yoLgDNtFvVu0/fOLV9C8fFEZRjACp/XQLumjAYo7JVjzH3wLbxA==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.0.9 @@ -11873,8 +11924,8 @@ packages: engines: {node: '>=4'} hasBin: true - cssnano-preset-default@7.0.12: - resolution: {integrity: sha512-B3Eoouzw/sl2zANI0AL9KbacummJTCww+fkHaDBMZad/xuVx8bUduPLly6hKVQAlrmvYkS1jB1CVQEKm3gn0AA==} + cssnano-preset-default@7.0.11: + resolution: {integrity: sha512-waWlAMuCakP7//UCY+JPrQS1z0OSLeOXk2sKWJximKWGupVxre50bzPlvpbUwZIDylhf/ptf0Pk+Yf7C+hoa3g==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -11885,8 +11936,8 @@ packages: peerDependencies: postcss: ^8.4.32 - cssnano@7.1.4: - resolution: {integrity: sha512-T9PNS7y+5Nc9Qmu9mRONqfxG1RVY7Vuvky0XN6MZ+9hqplesTEwnj9r0ROtVuSwUVfaDhVlavuzWIVLUgm4hkQ==} + cssnano@7.1.3: + resolution: {integrity: sha512-mLFHQAzyapMVFLiJIn7Ef4C2UCEvtlTlbyILR6B5ZsUAV3D/Pa761R5uC1YPhyBkRd3eqaDm2ncaNrD7R4mTRg==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -12101,8 +12152,8 @@ packages: resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} engines: {node: '>= 14'} - delaunator@5.1.0: - resolution: {integrity: sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==} + delaunator@5.0.1: + resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} @@ -12149,8 +12200,8 @@ packages: detect-node@2.1.0: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} - devalue@5.7.1: - resolution: {integrity: sha512-MUbZ586EgQqdRnC4yDrlod3BEdyvE4TapGYHMW2CiaW+KkkFmWEFqBUaLltEZCGi0iFXCEjRF0OjF0DV2QHjOA==} + devalue@5.6.4: + resolution: {integrity: sha512-Gp6rDldRsFh/7XuouDbxMH3Mx8GMCcgzIb1pDTvNyn8pZGQ22u+Wa+lGV9dQCltFQ7uVw0MhRyb8XDskNFOReA==} devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} @@ -12165,8 +12216,8 @@ packages: resolution: {integrity: sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==} engines: {node: '>=0.3.1'} - diff@8.0.4: - resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==} + diff@8.0.3: + resolution: {integrity: sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==} engines: {node: '>=0.3.1'} dns-packet@5.6.1: @@ -12207,8 +12258,8 @@ packages: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} - domino@2.1.7: - resolution: {integrity: sha512-3rcXhx0ixJV2nj8J0tljzejTF73A35LVVdnTQu79UAqTBFEgYPMgGtykMuu/BDqaOZphATku1ddRUn/RtqUHYQ==} + domino@2.1.6: + resolution: {integrity: sha512-3VdM/SXBZX2omc9JF9nOPCtDaYQ67BGp5CoLpIQlO2KCAPETs8TcDHacF26jXadGbvUteZzRTeos2fhID5+ucQ==} dompurify@3.3.3: resolution: {integrity: sha512-Oj6pzI2+RqBfFG+qOaOLbFXLQ90ARpcGG6UePL82bJLtdsa6CYJD7nmiU8MW9nQNOtCHV3lZ/Bzq1X0QYbBZCA==} @@ -12240,8 +12291,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.335: - resolution: {integrity: sha512-q9n5T4BR4Xwa2cwbrwcsDJtHD/enpQ5S1xF1IAtdqf5AAgqDFmR/aakqH3ChFdqd/QXJhS3rnnXFtexU7rax6Q==} + electron-to-chromium@1.5.331: + resolution: {integrity: sha512-IbxXrsTlD3hRodkLnbxAPP4OuJYdWCeM3IOdT+CpcMoIwIoDfCmRpEtSPfwBXxVkg9xmBeY7Lz2Eo2TDn/HC3Q==} elegant-spinner@1.0.1: resolution: {integrity: sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==} @@ -12284,8 +12335,8 @@ packages: end-of-stream@1.4.5: resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} - enhanced-resolve@5.20.1: - resolution: {integrity: sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==} + enhanced-resolve@5.20.0: + resolution: {integrity: sha512-/ce7+jQ1PQ6rVXwe+jKEg5hW5ciicHwIQUagZkp6IufBoY3YDgdTTY1azVs0qoRgVmvsNB+rbjLJxDAeHHtwsQ==} engines: {node: '>=10.13.0'} enquirer@2.4.1: @@ -12329,8 +12380,8 @@ packages: error@10.4.0: resolution: {integrity: sha512-YxIFEJuhgcICugOUvRx5th0UM+ActZ9sjY0QJmeVwsQdvosZ7kYzc9QqS0Da3R5iUmgU5meGIxh0xBeZpMVeLw==} - es-abstract@1.24.2: - resolution: {integrity: sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==} + es-abstract@1.24.1: + resolution: {integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==} engines: {node: '>= 0.4'} es-define-property@1.0.1: @@ -12344,8 +12395,8 @@ packages: es-get-iterator@1.1.3: resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} - es-iterator-helpers@1.3.2: - resolution: {integrity: sha512-HVLACW1TppGYjJ8H6/jqH/pqOtKRw6wMlrB23xfExmFWxFquAIWCmwoLsOyN96K4a5KbmOf5At9ZUO3GZbetAw==} + es-iterator-helpers@1.2.2: + resolution: {integrity: sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w==} engines: {node: '>= 0.4'} es-module-lexer@1.7.0: @@ -12448,8 +12499,8 @@ packages: unrs-resolver: optional: true - eslint-import-resolver-node@0.3.10: - resolution: {integrity: sha512-tRrKqFyCaKict5hOd244sL6EQFNycnMQnBe+j8uqGNXYzsImGbGUU4ibtoaBmv5FLwJwcFJNeg1GeVjQfbMrDQ==} + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} eslint-import-resolver-typescript@4.4.4: resolution: {integrity: sha512-1iM2zeBvrYmUNTj2vSC/90JTHDth+dfOfiNKkxApWRsTJYNrc8rOdxxIf5vazX+BiAXTeOT0UvWpGI/7qIWQOw==} @@ -12687,13 +12738,8 @@ packages: resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} engines: {node: '>=0.10'} - esrap@2.2.5: - resolution: {integrity: sha512-/yLB1538mag+dn0wsePTe8C0rDIjUOaJpMs2McodSzmM2msWcZsBSdRtg6HOBt0A/r82BN+Md3pgwSc/uWt2Ig==} - peerDependencies: - '@typescript-eslint/types': ^8.2.0 - peerDependenciesMeta: - '@typescript-eslint/types': - optional: true + esrap@2.2.3: + resolution: {integrity: sha512-8fOS+GIGCQZl/ZIlhl59htOlms6U8NvX6ZYgYHpRU/b6tVSh3uHkOHZikl3D4cMbYM0JlpBe+p/BkZEi8J9XIQ==} esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} @@ -12785,8 +12831,8 @@ packages: engines: {node: '>= 10.17.0'} hasBin: true - fast-average-color@9.5.2: - resolution: {integrity: sha512-FbaU8iPTPljP7tmnVhXbCyASNw/zxnmaNDf88gn5pTXlNvejl9w4FapeWMh6UNDwIjhJJU28EPfQWwW032YgPA==} + fast-average-color@9.5.0: + resolution: {integrity: sha512-nC6x2YIlJ9xxgkMFMd1BNoM1ctMjNoRKfRliPmiEWW3S6rLTHiQcy9g3pt/xiKv/D0NAAkhb9VyV+WJFvTqMGg==} engines: {node: '>= 12'} fast-content-type-parse@3.0.0: @@ -12908,8 +12954,8 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - flat-cache@6.1.22: - resolution: {integrity: sha512-N2dnzVJIphnNsjHcrxGW7DePckJ6haPrSFqpsBUhHYgwtKGVq4JrBGielEGD2fCVnsGm1zlBVZ8wGhkyuetgug==} + flat-cache@6.1.21: + resolution: {integrity: sha512-2u7cJfSf7Th7NxEk/VzQjnPoglok2YCsevS7TSbJjcDQWJPbqUUnSYtriHSvtnq+fRZHy1s0ugk4ApnQyhPGoQ==} flat@5.0.2: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} @@ -13081,8 +13127,8 @@ packages: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} - get-tsconfig@4.13.7: - resolution: {integrity: sha512-7tN6rFgBlMgpBML5j8typ92BKFi2sFQvIdpAqLA2beia5avZDrMs0FLZiM5etShWq5irVyGcGMEA1jcDaK7A/Q==} + get-tsconfig@4.13.6: + resolution: {integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==} get-uri@6.0.5: resolution: {integrity: sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==} @@ -13142,8 +13188,8 @@ packages: resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} engines: {node: '>=18'} - globals@17.5.0: - resolution: {integrity: sha512-qoV+HK2yFl/366t2/Cb3+xxPUo5BuMynomoDmiaZBIdbs+0pYbjfZU+twLhGKp4uCZ/+NbtpVepH5bGCxRyy2g==} + globals@17.4.0: + resolution: {integrity: sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==} engines: {node: '>=18'} globalthis@1.0.4: @@ -13267,8 +13313,8 @@ packages: hookified@1.15.1: resolution: {integrity: sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==} - hookified@2.1.1: - resolution: {integrity: sha512-AHb76R16GB5EsPBE2J7Ko5kiEyXwviB9P5SMrAKcuAu4vJPZttViAbj9+tZeaQE5zjDme+1vcHP78Yj/WoAveA==} + hookified@2.1.0: + resolution: {integrity: sha512-ootKng4eaxNxa7rx6FJv2YKef3DuhqbEj3l70oGXwddPQEEnISm50TEZQclqiLTAtilT2nu7TErtCO523hHkyg==} hopscotch@0.3.1: resolution: {integrity: sha512-XBvxhh1awi7lWzNP9Os2J8c/Ql66IPKnUn7L3hvqPaEa0Fk2S81mo0n2T/RxE2aNoHitVmn5Bl5C9J63iEWvSw==} @@ -13730,8 +13776,8 @@ packages: isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - isbot@5.1.37: - resolution: {integrity: sha512-5bcicX81xf6NlTEV8rWdg7Pk01LFizDetuYGHx6d/f6y3lR2/oo8IfxjzJqn1UdDEyCcwT9e7NRloj8DwCYujQ==} + isbot@5.1.35: + resolution: {integrity: sha512-waFfC72ZNfwLLuJ2iLaoVaqcNo+CAaLR7xCpAn0Y5WfGzkNHv7ZN39Vbi1y+kb+Zs46XHOX3tZNExroFUPX+Kg==} engines: {node: '>=18'} isexe@2.0.0: @@ -14006,8 +14052,8 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - json-with-bigint@3.5.8: - resolution: {integrity: sha512-eq/4KP6K34kwa7TcFdtvnftvHCD9KvHOGGICWwMFc4dOOKF5t4iYqnfLK8otCRCRv06FXOzGGyqE8h8ElMvvdw==} + json-with-bigint@3.5.7: + resolution: {integrity: sha512-7ei3MdAI5+fJPVnKlW77TKNKwQ5ppSzWvhPuSuINT/GYW9ZOC1eRKOuhV9yHG5aEsUPj9BBx5JIekkmoLHxZOw==} json2php@0.0.7: resolution: {integrity: sha512-dnSoUiLAoVaMXxFsVi4CrPVYMKOuDBXTghXSmMINX44RZ8WM9cXlY7UqrQnlAcODCVO7FV3+8t/5nDKAjimLfg==} @@ -14061,8 +14107,8 @@ packages: resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} engines: {node: '>=0.10'} - launch-editor@2.13.2: - resolution: {integrity: sha512-4VVDnbOpLXy/s8rdRCSXb+zfMeFR0WlJWpET1iA9CQdlZDfwyLjUuGQzXU4VeOoey6AicSAluWan7Etga6Kcmg==} + launch-editor@2.13.1: + resolution: {integrity: sha512-lPSddlAAluRKJ7/cjRFoXUFzaX7q/YKI7yPHuEvSJVqoXvFnJov1/Ud87Aa4zULIbA9Nja4mSPK8l0z/7eV2wA==} legacy-javascript@0.0.1: resolution: {integrity: sha512-lPyntS4/aS7jpuvOlitZDFifBCb4W8L/3QU0PLbUTUj+zYah8rfVjYic88yG7ZKTxhS5h9iz7duT8oUXKszLhg==} @@ -14351,8 +14397,8 @@ packages: lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - lru-cache@11.3.3: - resolution: {integrity: sha512-JvNw9Y81y33E+BEYPr0U7omo+U9AySnsMsEiXgwT6yqd31VQWTLNQqmT4ou5eqPFUrTfIDFta2wKhB1hyohtAQ==} + lru-cache@11.2.6: + resolution: {integrity: sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==} engines: {node: 20 || >=22} lru-cache@5.1.1: @@ -14474,8 +14520,8 @@ packages: resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} engines: {node: '>= 4.0.0'} - memfs@4.57.1: - resolution: {integrity: sha512-WvzrWPwMQT+PtbX2Et64R4qXKK0fj/8pO85MrUCzymX3twwCiJCdvntW3HdhG1teLJcHDDLIKx5+c3HckWYZtQ==} + memfs@4.56.11: + resolution: {integrity: sha512-/GodtwVeKVIHZKLUSr2ZdOxKBC5hHki4JNCU22DoCGPEHr5o2PD5U721zvESKyWwCfTfavFl9WZYgA13OAYK0g==} memize@2.1.1: resolution: {integrity: sha512-8Nl+i9S5D6KXnruM03Jgjb+LwSupvR13WBr4hJegaaEyobvowCVupi79y2WSiWvO1mzBWxPwEYE5feCe8vyA5w==} @@ -14671,8 +14717,8 @@ packages: mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} - mlly@1.8.2: - resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} + mlly@1.8.1: + resolution: {integrity: sha512-SnL6sNutTwRWWR/vcmCYHSADjiEesp5TGQQ0pXyLhW5IoeibRlF/CbSLailbB3CNqJUk9cVJ9dUDnbD7GrcHBQ==} module-details-from-path@1.0.4: resolution: {integrity: sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==} @@ -14717,8 +14763,8 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - nanoid@5.1.7: - resolution: {integrity: sha512-ua3NDgISf6jdwezAheMOk4mbE1LXjm1DfMUDMuJf4AqxLFK3ccGpgWizwa5YV7Yz9EpXwEaWoRXSb/BnV0t5dQ==} + nanoid@5.1.6: + resolution: {integrity: sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==} engines: {node: ^18 || >=20} hasBin: true @@ -14744,8 +14790,8 @@ packages: neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - netmask@2.1.1: - resolution: {integrity: sha512-eonl3sLUha+S1GzTPxychyhnUzKyeQkZ7jLjKrBagJgPla13F+uQ71HgpFefyHgqrjEbCPkDArxYsjY8/+gLKA==} + netmask@2.0.2: + resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} no-case@3.0.4: @@ -14765,8 +14811,8 @@ packages: resolution: {integrity: sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==} engines: {node: '>=8'} - node-releases@2.0.37: - resolution: {integrity: sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==} + node-releases@2.0.36: + resolution: {integrity: sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==} normalize-package-data@8.0.0: resolution: {integrity: sha512-RWk+PI433eESQ7ounYxIp67CYuVsS1uYSonX3kA6ps/3LWfjVQa/ptEg6Y3T6uAMq1mWpX9PQ+qx+QaHpsc7gQ==} @@ -15002,8 +15048,8 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - package-json-validator@1.4.0: - resolution: {integrity: sha512-Nb1qg9Z7Om/r3kw3gZfKbFvFC6e0Cj38Zc5NS2LCogxqbUCbFLTjlvRKk/9doMvaAyrzUVwrR0si/opLru4CHw==} + package-json-validator@1.3.1: + resolution: {integrity: sha512-RfUMqyBoLa1qcPsKNAksnVDRuzDvLi//RqfMbf52RNMKsm+cWR/3Cfe6hvrTS/ATtEwvtm/57dPggXsau6++uA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} param-case@3.0.4: @@ -15154,8 +15200,8 @@ packages: pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - pkijs@3.4.0: - resolution: {integrity: sha512-emEcLuomt2j03vxD54giVB4SxTjnsqkU692xZOZXHDVoYyypEm+b3jpiTcc+Cf+myooc+/Ly0z01jqeNHVgJGw==} + pkijs@3.3.3: + resolution: {integrity: sha512-+KD8hJtqQMYoTuL1bbGOqxb4z+nZkTAwVdNtWwe8Tc2xNbEmdJYIYoc6Qt0uF55e6YW6KuTHw1DjQ18gMhzepw==} engines: {node: '>=16.0.0'} playwright-core@1.58.2: @@ -15163,11 +15209,6 @@ packages: engines: {node: '>=18'} hasBin: true - playwright-core@1.59.1: - resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} - engines: {node: '>=18'} - hasBin: true - playwright-ctrf-json-reporter@0.0.26: resolution: {integrity: sha512-3BtV0R5Vstwu02ARwAlegdCwMhBJC3GYm+0CVBrHOryQACk+TraqD+ZZxLMPhUnlddGFwkHcU57KxPiZb6/k1A==} @@ -15194,8 +15235,8 @@ packages: peerDependencies: postcss: ^8.4.38 - postcss-colormin@7.0.7: - resolution: {integrity: sha512-sBQ628lSj3VQpDquQel8Pen5mmjFPsO4pH9lDLaHB1AVkMRHtkl0pRB5DCWznc9upWsxint/kV+AveSj7W1tew==} + postcss-colormin@7.0.6: + resolution: {integrity: sha512-oXM2mdx6IBTRm39797QguYzVEWzbdlFiMNfq88fCCN1Wepw3CYmJ/1/Ifa/KjWo+j5ZURDl2NTldLJIw51IeNQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -15300,8 +15341,8 @@ packages: peerDependencies: postcss: ^8.4.32 - postcss-minify-gradients@7.0.2: - resolution: {integrity: sha512-fVY3AB8Um7SJR5usHqTY2Ngf9qh8IRN+FFzrBP0ONJy6yYXsP7xyjK2BvSAIrpgs1cST+H91V0TXi3diHLYJtw==} + postcss-minify-gradients@7.0.1: + resolution: {integrity: sha512-X9JjaysZJwlqNkJbUDgOclyG3jZEpAMOfof6PUZjPnPrePnPG62pS17CjdM32uT1Uq1jFvNSff9l7kNbmMSL2A==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: postcss: ^8.4.32 @@ -15472,8 +15513,8 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} - postcss@8.5.9: - resolution: {integrity: sha512-7a70Nsot+EMX9fFU3064K/kdHWZqGVY+BADLyXc8Dfv+mTLLVl6JzJpPaCZ2kQL9gIJvKXSLMHhqdRRjwQeFtw==} + postcss@8.5.8: + resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} engines: {node: ^10 || ^12 || >=14} postgres-array@2.0.0: @@ -15515,8 +15556,8 @@ packages: prettier: ^3.0.0 svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 - prettier@3.8.2: - resolution: {integrity: sha512-8c3mgTe0ASwWAJK+78dpviD+A8EqhndQPUBpNUIPt6+xWlIigCwfN01lWr9MAede4uqXGTEKeQWTvzb3vjia0Q==} + prettier@3.8.1: + resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==} engines: {node: '>=14'} hasBin: true @@ -15560,8 +15601,8 @@ packages: resolution: {integrity: sha512-qYNxyMj1JeW54i/EWEFsM1cVwxJbtgPp8+0Wg9XjNaK6VE/c4oRi6PNu5p7w1mNXEIQIjV5Wwn8v8Gz82/QzdQ==} engines: {node: '>=0.10'} - protocol-buffers-schema@3.6.1: - resolution: {integrity: sha512-VG2K63Igkiv9p76tk1lilczEK1cT+kCjKtkdhw1dQZV3k3IXJbd3o6Ho8b9zJZaHSnT2hKe4I+ObmX9w6m5SmQ==} + protocol-buffers-schema@3.6.0: + resolution: {integrity: sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==} proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} @@ -15589,8 +15630,8 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - puppeteer-core@24.40.0: - resolution: {integrity: sha512-MWL3XbUCfVgGR0gRsidzT6oKJT2QydPLhMITU6HoVWiiv4gkb6gJi3pcdAa8q4HwjBTbqISOWVP4aJiiyUJvag==} + puppeteer-core@24.38.0: + resolution: {integrity: sha512-zB3S/tksIhgi2gZRndUe07AudBz5SXOB7hqG0kEa9/YXWrGwlVlYm3tZtwKgfRftBzbmLQl5iwHkQQl04n/mWw==} engines: {node: '>=18'} pure-rand@7.0.1: @@ -15609,8 +15650,8 @@ packages: q-flat@1.0.7: resolution: {integrity: sha512-Ug+B6yajVE5HF7eAszOvAcYmQ+DbYaDcQlxYuW9RaAqwZTRZQq+lHMGqHlnaxKP7CfuGCpXQXOb4qymRYMkYEQ==} - qified@0.9.1: - resolution: {integrity: sha512-n7mar4T0xQ+39dE2vGTAlbxUEpndwPANH0kDef1/MYsB8Bba9wshkybIRx74qgcvKQPEWErf9AqAdYjhzY2Ilg==} + qified@0.9.0: + resolution: {integrity: sha512-4q61YgkHbY6gmwkqm0BsxyLDO3UYdrdiJTJ7JiaZb3xpW1duxn135SB7KqUEkCiuu5O4W+TtwEWP2VjmSRanvA==} engines: {node: '>=20'} qrcode.react@4.2.0: @@ -15622,8 +15663,8 @@ packages: resolution: {integrity: sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==} engines: {node: '>=0.6'} - qs@6.15.1: - resolution: {integrity: sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==} + qs@6.15.0: + resolution: {integrity: sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==} engines: {node: '>=0.6'} qss@3.0.0: @@ -15676,8 +15717,8 @@ packages: peerDependencies: typescript: '>= 4.3.x' - react-docgen@8.0.3: - resolution: {integrity: sha512-aEZ9qP+/M+58x2qgfSFEWH1BxLyHe5+qkLNJOZQb5iGS017jpbRnoKhNRrXPeA6RfBrZO5wZrT9DMC1UqE1f1w==} + react-docgen@8.0.2: + resolution: {integrity: sha512-+NRMYs2DyTP4/tqWz371Oo50JqmWltR1h2gcdgUMAWZJIAvrd0/SqlCfx7tpzpl/s36rzw6qH2MjoNrxtRNYhA==} engines: {node: ^20.9.0 || >=22} react-dom@18.3.1: @@ -15685,8 +15726,8 @@ packages: peerDependencies: react: ^18.3.1 - react-easy-crop@5.5.7: - resolution: {integrity: sha512-kYo4NtMeXFQB7h1U+h5yhUkE46WQbQdq7if54uDlbMdZHdRgNehfvaFrXnFw5NR1PNoUOJIfTwLnWmEx/MaZnA==} + react-easy-crop@5.5.6: + resolution: {integrity: sha512-Jw3/ozs8uXj3NpL511Suc4AHY+mLRO23rUgipXvNYKqezcFSYHxe4QXibBymkOoY6oOtLVMPO2HNPRHYvMPyTw==} peerDependencies: react: '>=16.4.0' react-dom: '>=16.4.0' @@ -15998,8 +16039,8 @@ packages: resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} engines: {node: '>=10'} - resolve@1.22.12: - resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} + resolve@1.22.11: + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} engines: {node: '>= 0.4'} hasBin: true @@ -16033,8 +16074,8 @@ packages: resolution: {integrity: sha512-s+pyvQeIKIZ0dx5iJiQk1tPLJAWln39+MI5jtM8wnyws+G5azk+dMnMX0qfbqNetKKNgcWWOdi0sfm+FbQbgdQ==} engines: {node: '>=10.0.0'} - robust-predicates@3.0.3: - resolution: {integrity: sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==} + robust-predicates@3.0.2: + resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} rolldown@1.0.0-rc.12: resolution: {integrity: sha512-yP4USLIMYrwpPHEFB5JGH1uxhcslv6/hL0OyvTuY+3qlOSJvZ7ntYnoWpehBxufkgN0cvXxppuTu5hHa/zPh+A==} @@ -16066,8 +16107,8 @@ packages: engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true - rollup@4.60.1: - resolution: {integrity: sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w==} + rollup@4.59.0: + resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -16261,8 +16302,8 @@ packages: webpack: optional: true - sax@1.6.0: - resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} + sax@1.5.0: + resolution: {integrity: sha512-21IYA3Q5cQf089Z6tgaUTr7lDAyzoTPx5HRtbhsME8Udispad8dC/+sziTNugOEx54ilvatQ9YCzl4KQLPcRHA==} engines: {node: '>=11.0.0'} saxes@6.0.0: @@ -16321,14 +16362,14 @@ packages: resolution: {integrity: sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==} engines: {node: '>=20.0.0'} - seroval-plugins@1.5.2: - resolution: {integrity: sha512-qpY0Cl+fKYFn4GOf3cMiq6l72CpuVaawb6ILjubOQ+diJ54LfOWaSSPsaswN8DRPIPW4Yq+tE1k5aKd7ILyaFg==} + seroval-plugins@1.5.0: + resolution: {integrity: sha512-EAHqADIQondwRZIdeW2I636zgsODzoBDwb3PT/+7TLDWyw1Dy/Xv7iGUIEXXav7usHDE9HVhOU61irI3EnyyHA==} engines: {node: '>=10'} peerDependencies: seroval: ^1.0 - seroval@1.5.2: - resolution: {integrity: sha512-xcRN39BdsnO9Tf+VzsE7b3JyTJASItIV1FVFewJKCFcW4s4haIKS3e6vj8PGB9qBwC7tnuOywQMdv5N4qkzi7Q==} + seroval@1.5.0: + resolution: {integrity: sha512-OE4cvmJ1uSPrKorFIH9/w/Qwuvi/IMcGbv5RKgcJ/zjA/IohDLU6SVaxFN9FwajbP7nsX0dQqMDes1whk3y+yw==} engines: {node: '>=10'} serve-index@1.9.2: @@ -16390,8 +16431,8 @@ packages: resolution: {integrity: sha512-9cGuS382HcvExtf5AHk7Cb4pAeQQ+h0eTr33V1mu+crYWV4KvWAw6el92bDrqGEk5d46Ai/fhbEUwqJ/mTCNEA==} hasBin: true - side-channel-list@1.0.1: - resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} engines: {node: '>= 0.4'} side-channel-map@1.0.1: @@ -16466,8 +16507,8 @@ packages: snake-case@3.0.4: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} - social-logos@3.3.12: - resolution: {integrity: sha512-6Kx62JTt5haGLvUlfYXrVzemvpfuNkhXL5RhDkd+CbejhHmPfwRyXcL6Ba5Idkw9iUaXAjdiHAAWv+gEHl12cA==} + social-logos@3.3.10: + resolution: {integrity: sha512-jREr5cbIpNq80xeGOLCk6WJLwfwXEDjtIvftNF7Y6jabxju4Ctrs9m0k+6E1SuIsuE4rIUCtIRhZldlzHO8wgQ==} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 @@ -16601,8 +16642,8 @@ packages: prettier: optional: true - streamx@2.25.0: - resolution: {integrity: sha512-0nQuG6jf1w+wddNEEXCF4nTg3LtufWINB5eFEN+5TNZW7KWJp6x87+JFL43vaAUPyCfH1wID+mNVyW6OHtFamg==} + streamx@2.23.0: + resolution: {integrity: sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==} string-hash@1.1.3: resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==} @@ -16936,8 +16977,8 @@ packages: tannin@1.2.0: resolution: {integrity: sha512-U7GgX/RcSeUETbV7gYgoz8PD7Ni4y95pgIP/Z6ayI3CfhSujwKEBlGFTCRN+Aqnuyf4AN2yHL+L8x+TCGjb9uA==} - tapable@2.3.2: - resolution: {integrity: sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==} + tapable@2.3.0: + resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} engines: {node: '>=6'} tar-fs@3.1.2: @@ -16969,8 +17010,8 @@ packages: uglify-js: optional: true - terser@5.46.1: - resolution: {integrity: sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==} + terser@5.46.0: + resolution: {integrity: sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==} engines: {node: '>=10'} hasBin: true @@ -16995,8 +17036,8 @@ packages: thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - thingies@2.6.0: - resolution: {integrity: sha512-rMHRjmlFLM1R96UYPvpmnc3LYtdFrT33JIB7L9hetGue1qAPfn1N2LJeEjxUSidu1Iku+haLZXDuEXUHNGO/lg==} + thingies@2.5.0: + resolution: {integrity: sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==} engines: {node: '>=10.18'} peerDependencies: tslib: ^2 @@ -17032,12 +17073,12 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyexec@1.1.1: - resolution: {integrity: sha512-VKS/ZaQhhkKFMANmAOhhXVoIfBXblQxGX1myCQ2faQrfmobMftXeJPcZGp0gS07ocvGJWDLZGyOZDadDBqYIJg==} + tinyexec@1.0.4: + resolution: {integrity: sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==} engines: {node: '>=18'} - tinyglobby@0.2.16: - resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} tinyqueue@2.0.3: @@ -17055,14 +17096,14 @@ packages: resolution: {integrity: sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==} engines: {node: '>=14.0.0'} - tldts-core@7.0.28: - resolution: {integrity: sha512-7W5Efjhsc3chVdFhqtaU0KtK32J37Zcr9RKtID54nG+tIpcY79CQK/veYPODxtD/LJ4Lue66jvrQzIX2Z2/pUQ==} + tldts-core@7.0.25: + resolution: {integrity: sha512-ZjCZK0rppSBu7rjHYDYsEaMOIbbT+nWF57hKkv4IUmZWBNrBWBOjIElc0mKRgLM8bm7x/BBlof6t2gi/Oq/Asw==} - tldts-icann@7.0.28: - resolution: {integrity: sha512-brkN3yIgYTzBpSxB71XYBwUMDgutmKmA+6TWzgGD/EPcvCc6LHMTRaYj9ik1u3BxhSW53qIK/7cgjA2rF7BgbA==} + tldts-icann@7.0.25: + resolution: {integrity: sha512-Ybq7DE8uWaqSQlFsQXfagIxVnpn7YTu7XYCJC61BDdCR3SRqHIrTkjFwbBEclm0H+wUxP2BX687OB7T3S6LCRw==} - tldts@7.0.28: - resolution: {integrity: sha512-+Zg3vWhRUv8B1maGSTFdev9mjoo8Etn2Ayfs4cnjlD3CsGkxXX4QyW3j2WJ0wdjYcYmy7Lx2RDsZMhgCWafKIw==} + tldts@7.0.25: + resolution: {integrity: sha512-keinCnPbwXEUG3ilrWQZU+CqcTTzHq9m2HhoUP2l7Xmi8l1LuijAXLpAJ5zRW+ifKTNscs4NdCkfkDCBYm352w==} hasBin: true tmp@0.2.5: @@ -17088,8 +17129,8 @@ packages: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} - tough-cookie@6.0.1: - resolution: {integrity: sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==} + tough-cookie@6.0.0: + resolution: {integrity: sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==} engines: {node: '>=16'} tr46@6.0.0: @@ -17116,8 +17157,8 @@ packages: trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - ts-api-utils@2.5.0: - resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} + ts-api-utils@2.4.0: + resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' @@ -17272,8 +17313,8 @@ packages: undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} - undici@6.24.1: - resolution: {integrity: sha512-sC+b0tB1whOCzbtlx20fx3WgCXwkW627p4EA9uM+/tNNPkSS+eSEld6pAs9nDv7WbY1UUljBMYPtu9BCOrCWKA==} + undici@6.24.0: + resolution: {integrity: sha512-lVLNosgqo5EkGqh5XUDhGfsMSoO8K0BAN0TyJLvwNRSl4xWGZlCVYsAIpa/OpA3TvmnM01GWcoKmc3ZWo5wKKA==} engines: {node: '>=18.17'} undici@7.24.0: @@ -17897,7 +17938,7 @@ snapshots: '@-xun/debug@2.0.2': dependencies: - '@types/debug': 4.1.13 + '@types/debug': 4.1.12 debug: 4.4.3(supports-color@8.1.1) supports-color: 8.1.1 type-fest: 4.41.0 @@ -17925,37 +17966,37 @@ snapshots: '@octokit/plugin-rest-endpoint-methods': 17.0.0(@octokit/core@7.0.6) '@octokit/request': 10.0.8 '@octokit/request-error': 7.1.0 - undici: 6.24.1 + undici: 6.24.0 '@actions/http-client@3.0.2': dependencies: tunnel: 0.0.6 - undici: 6.24.1 + undici: 6.24.0 '@actions/http-client@4.0.0': dependencies: tunnel: 0.0.6 - undici: 6.24.1 + undici: 6.24.0 '@actions/io@3.0.2': {} '@adobe/css-tools@4.4.4': {} - '@altano/repository-tools@2.0.3': {} + '@altano/repository-tools@2.0.1': {} - '@ariakit/core@0.4.19': {} + '@ariakit/core@0.4.18': {} - '@ariakit/react-core@0.4.25(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@ariakit/react-core@0.4.22(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@ariakit/core': 0.4.19 + '@ariakit/core': 0.4.18 '@floating-ui/dom': 1.7.6 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) use-sync-external-store: 1.6.0(react@18.3.1) - '@ariakit/react@0.4.25(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@ariakit/react@0.4.22(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@ariakit/react-core': 0.4.25(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ariakit/react-core': 0.4.22(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -17967,7 +18008,7 @@ snapshots: '@csstools/css-color-parser': 4.0.2(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) '@csstools/css-tokenizer': 4.0.0 - lru-cache: 11.3.3 + lru-cache: 11.2.6 '@asamuzakjp/dom-selector@6.8.1': dependencies: @@ -17975,14 +18016,14 @@ snapshots: bidi-js: 1.0.3 css-tree: 3.2.1 is-potential-custom-element-name: 1.0.1 - lru-cache: 11.3.3 + lru-cache: 11.2.6 '@asamuzakjp/nwsapi@2.3.9': {} '@automattic/api-core@1.0.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0)': dependencies: '@automattic/shopping-cart': 2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@wordpress/dataviews': 14.0.0(@types/react@18.3.28)(react@18.3.1)(stylelint@17.7.0) + '@wordpress/dataviews': 13.1.0(@types/react@18.3.28)(react@18.3.1)(stylelint@17.7.0) '@wordpress/i18n': 6.16.0 he: 1.2.0 tslib: 2.8.1 @@ -18012,7 +18053,7 @@ snapshots: dependencies: '@automattic/create-calypso-config': 1.0.0-alpha.0 '@types/cookie': 0.6.0 - '@types/node': 24.12.2 + '@types/node': 24.12.0 cookie: 0.7.2 tslib: 2.8.1 @@ -18021,7 +18062,7 @@ snapshots: '@automattic/calypso-config': 1.0.0-alpha.0 '@automattic/components': 3.0.3(@types/react@18.3.28)(@wordpress/data@10.43.0(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@automattic/i18n-utils': 1.2.3 - '@automattic/number-formatters': 1.1.5 + '@automattic/number-formatters': 1.1.0 '@automattic/shopping-cart': 2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@automattic/urls': 1.0.0 '@wordpress/data': 10.43.0(react@18.3.1) @@ -18043,14 +18084,14 @@ snapshots: '@automattic/components@3.0.3(@types/react@18.3.28)(@wordpress/data@10.43.0(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@ariakit/react': 0.4.25(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ariakit/react': 0.4.22(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@automattic/calypso-color-schemes': 4.0.0 '@automattic/calypso-url': 1.1.0 '@automattic/color-studio': 4.1.0 '@automattic/i18n-utils': 1.2.3 '@automattic/load-script': 1.0.0 '@automattic/material-design-icons': 1.0.0 - '@automattic/number-formatters': 1.1.5 + '@automattic/number-formatters': 1.1.0 '@automattic/typography': 1.0.0 '@automattic/ui': 1.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@automattic/viewport-react': 1.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -18066,7 +18107,7 @@ snapshots: '@wordpress/i18n': 6.16.0 '@wordpress/icons': 10.32.0(react@18.3.1) '@wordpress/primitives': 4.43.0(react@18.3.1) - '@wordpress/react-i18n': 4.43.0 + '@wordpress/react-i18n': 4.41.0 '@wordpress/url': 4.43.0 '@wordpress/warning': 3.43.0 canvas-confetti: 1.9.4 @@ -18100,7 +18141,7 @@ snapshots: '@automattic/calypso-products': 1.2.2(@types/react@18.3.28)(@wordpress/data@10.43.0(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@automattic/i18n-utils': 1.2.3 '@automattic/js-utils': 0.1.0 - '@automattic/number-formatters': 1.1.5 + '@automattic/number-formatters': 1.1.0 '@automattic/oauth-token': 1.0.1 '@automattic/shopping-cart': 2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/react-query': 5.90.8(react@18.3.1) @@ -18114,7 +18155,7 @@ snapshots: '@wordpress/url': 4.43.0 debug: 4.4.3 i18n-calypso: 7.4.0(@types/react@18.3.28)(react@18.3.1) - qs: 6.15.1 + qs: 6.15.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) redux: 5.0.1 @@ -18180,13 +18221,13 @@ snapshots: '@wordpress/data': 10.43.0(react@18.3.1) '@wordpress/element': 6.43.0 '@wordpress/i18n': 6.16.0 - '@wordpress/icons': 12.1.0(react@18.3.1) + '@wordpress/icons': 12.0.0(react@18.3.1) '@wordpress/url': 4.43.0 clsx: 2.1.1 debug: 4.4.3 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - social-logos: 3.3.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + social-logos: 3.3.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) tslib: 2.8.1 utility-types: 3.11.0 wpcom-proxy-request: 7.0.7 @@ -18205,7 +18246,7 @@ snapshots: '@automattic/material-design-icons@1.0.0': {} - '@automattic/number-formatters@1.1.5': + '@automattic/number-formatters@1.1.0': dependencies: '@wordpress/date': 5.43.0 debug: 4.4.3 @@ -18244,7 +18285,7 @@ snapshots: '@wordpress/compose': 7.43.0(react@18.3.1) '@wordpress/element': 6.43.0 '@wordpress/i18n': 6.16.0 - '@wordpress/icons': 12.1.0(react@18.3.1) + '@wordpress/icons': 12.0.0(react@18.3.1) '@wordpress/primitives': 4.43.0(react@18.3.1) clsx: 2.1.1 date-fns: 4.1.0 @@ -18284,8 +18325,8 @@ snapshots: '@babel/generator': 7.29.1 '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) - '@babel/helpers': 7.29.2 - '@babel/parser': 7.29.2 + '@babel/helpers': 7.28.6 + '@babel/parser': 7.29.0 '@babel/template': 7.28.6 '@babel/traverse': 7.29.0 '@babel/types': 7.29.0 @@ -18308,7 +18349,7 @@ snapshots: '@babel/generator@7.29.1': dependencies: - '@babel/parser': 7.29.2 + '@babel/parser': 7.29.0 '@babel/types': 7.29.0 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 @@ -18353,7 +18394,7 @@ snapshots: '@babel/helper-plugin-utils': 7.28.6 debug: 4.4.3 lodash.debounce: 4.0.8 - resolve: 1.22.12 + resolve: 1.22.11 transitivePeerDependencies: - supports-color @@ -18427,12 +18468,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helpers@7.29.2': + '@babel/helpers@7.28.6': dependencies: '@babel/template': 7.28.6 '@babel/types': 7.29.0 - '@babel/parser@7.29.2': + '@babel/parser@7.29.0': dependencies: '@babel/types': 7.29.0 @@ -19067,7 +19108,7 @@ snapshots: '@babel/template@7.28.6': dependencies: '@babel/code-frame': 7.29.0 - '@babel/parser': 7.29.2 + '@babel/parser': 7.29.0 '@babel/types': 7.29.0 '@babel/traverse@7.29.0': @@ -19075,7 +19116,7 @@ snapshots: '@babel/code-frame': 7.29.0 '@babel/generator': 7.29.1 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.29.2 + '@babel/parser': 7.29.0 '@babel/template': 7.28.6 '@babel/types': 7.29.0 debug: 4.4.3 @@ -19139,12 +19180,12 @@ snapshots: '@cacheable/memory@2.0.8': dependencies: - '@cacheable/utils': 2.4.1 + '@cacheable/utils': 2.4.0 '@keyv/bigmap': 1.3.1(keyv@5.6.0) hookified: 1.15.1 keyv: 5.6.0 - '@cacheable/utils@2.4.1': + '@cacheable/utils@2.4.0': dependencies: hashery: 1.5.1 keyv: 5.6.0 @@ -19191,7 +19232,7 @@ snapshots: '@codemirror/language': 6.11.2 '@codemirror/state': 6.5.2 '@lezer/common': 1.3.0 - '@lezer/css': 1.3.3 + '@lezer/css': 1.3.1 '@codemirror/lang-go@6.0.1': dependencies: @@ -19210,7 +19251,7 @@ snapshots: '@codemirror/state': 6.5.2 '@codemirror/view': 6.38.0 '@lezer/common': 1.3.0 - '@lezer/css': 1.3.3 + '@lezer/css': 1.3.1 '@lezer/html': 1.3.13 '@codemirror/lang-java@6.0.2': @@ -19325,7 +19366,7 @@ snapshots: '@lezer/common': 1.3.0 '@lezer/xml': 1.0.6 - '@codemirror/lang-yaml@6.1.3': + '@codemirror/lang-yaml@6.1.2': dependencies: '@codemirror/autocomplete': 6.18.6 '@codemirror/language': 6.11.2 @@ -19356,7 +19397,7 @@ snapshots: '@codemirror/lang-vue': 0.1.3 '@codemirror/lang-wast': 6.0.2 '@codemirror/lang-xml': 6.1.0 - '@codemirror/lang-yaml': 6.1.3 + '@codemirror/lang-yaml': 6.1.2 '@codemirror/language': 6.11.2 '@codemirror/legacy-modes': 6.5.2 @@ -19396,8 +19437,6 @@ snapshots: style-mod: 4.1.3 w3c-keyname: 2.2.8 - '@colordx/core@5.0.3': {} - '@colors/colors@1.6.0': {} '@csstools/color-helpers@6.0.2': {} @@ -19418,7 +19457,11 @@ snapshots: dependencies: '@csstools/css-tokenizer': 4.0.0 - '@csstools/css-syntax-patches-for-csstree@1.1.2(css-tree@3.2.1)': + '@csstools/css-syntax-patches-for-csstree@1.1.1(css-tree@3.2.1)': + optionalDependencies: + css-tree: 3.2.1 + + '@csstools/css-syntax-patches-for-csstree@1.1.3(css-tree@3.2.1)': optionalDependencies: css-tree: 3.2.1 @@ -19453,18 +19496,18 @@ snapshots: '@discoveryjs/json-ext@0.6.3': {} - '@emnapi/core@1.9.2': + '@emnapi/core@1.8.1': dependencies: - '@emnapi/wasi-threads': 1.2.1 + '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.9.2': + '@emnapi/runtime@1.8.1': dependencies: tslib: 2.8.1 optional: true - '@emnapi/wasi-threads@1.2.1': + '@emnapi/wasi-threads@1.1.0': dependencies: tslib: 2.8.1 optional: true @@ -19594,7 +19637,7 @@ snapshots: '@es-joy/jsdoccomment@0.84.0': dependencies: '@types/estree': 1.0.8 - '@typescript-eslint/types': 8.58.1 + '@typescript-eslint/types': 8.57.1 comment-parser: 1.4.5 esquery: 1.7.0 jsdoc-type-pratt-parser: 7.1.1 @@ -19688,7 +19731,7 @@ snapshots: '@eslint/compat@2.0.3(eslint@9.39.4)': dependencies: - '@eslint/core': 1.2.1 + '@eslint/core': 1.1.1 optionalDependencies: eslint: 9.39.4 @@ -19708,7 +19751,7 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/core@1.2.1': + '@eslint/core@1.1.1': dependencies: '@types/json-schema': 7.0.15 @@ -19730,7 +19773,7 @@ snapshots: '@eslint/json@1.1.0': dependencies: - '@eslint/core': 1.2.1 + '@eslint/core': 1.1.1 '@eslint/plugin-kit': 0.6.1 '@humanwhocodes/momoa': 3.3.10 natural-compare: 1.4.0 @@ -19744,7 +19787,7 @@ snapshots: '@eslint/plugin-kit@0.6.1': dependencies: - '@eslint/core': 1.2.1 + '@eslint/core': 1.1.1 levn: 0.4.1 '@exodus/bytes@1.15.0': {} @@ -19911,7 +19954,7 @@ snapshots: '@img/sharp-wasm32@0.33.5': dependencies: - '@emnapi/runtime': 1.9.2 + '@emnapi/runtime': 1.8.1 optional: true '@img/sharp-win32-ia32@0.33.5': @@ -19933,7 +19976,7 @@ snapshots: '@jest/console@30.3.0': dependencies: '@jest/types': 30.3.0 - '@types/node': 24.12.2 + '@types/node': 24.12.0 chalk: 4.1.2 jest-message-util: 30.3.0 jest-util: 30.3.0 @@ -19947,14 +19990,14 @@ snapshots: '@jest/test-result': 30.3.0 '@jest/transform': 30.3.0 '@jest/types': 30.3.0 - '@types/node': 24.12.2 + '@types/node': 24.12.0 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 4.4.0 exit-x: 0.2.2 graceful-fs: 4.2.11 jest-changed-files: 30.3.0 - jest-config: 30.3.0(@types/node@24.12.2) + jest-config: 30.3.0(@types/node@24.12.0) jest-haste-map: 30.3.0 jest-message-util: 30.3.0 jest-regex-util: 30.0.1 @@ -19982,7 +20025,7 @@ snapshots: '@jest/fake-timers': 30.3.0 '@jest/types': 30.3.0 '@types/jsdom': 21.1.7 - '@types/node': 24.12.2 + '@types/node': 24.12.0 jest-mock: 30.3.0 jest-util: 30.3.0 jsdom: 27.4.0 @@ -19991,7 +20034,7 @@ snapshots: dependencies: '@jest/fake-timers': 30.3.0 '@jest/types': 30.3.0 - '@types/node': 24.12.2 + '@types/node': 24.12.0 jest-mock: 30.3.0 '@jest/expect-utils@30.3.0': @@ -20008,8 +20051,8 @@ snapshots: '@jest/fake-timers@30.3.0': dependencies: '@jest/types': 30.3.0 - '@sinonjs/fake-timers': 15.3.2 - '@types/node': 24.12.2 + '@sinonjs/fake-timers': 15.1.1 + '@types/node': 24.12.0 jest-message-util: 30.3.0 jest-mock: 30.3.0 jest-util: 30.3.0 @@ -20027,7 +20070,7 @@ snapshots: '@jest/pattern@30.0.1': dependencies: - '@types/node': 24.12.2 + '@types/node': 24.12.0 jest-regex-util: 30.0.1 '@jest/reporters@30.3.0': @@ -20038,7 +20081,7 @@ snapshots: '@jest/transform': 30.3.0 '@jest/types': 30.3.0 '@jridgewell/trace-mapping': 0.3.31 - '@types/node': 24.12.2 + '@types/node': 24.12.0 chalk: 4.1.2 collect-v8-coverage: 1.0.3 exit-x: 0.2.2 @@ -20060,7 +20103,7 @@ snapshots: '@jest/schemas@30.0.5': dependencies: - '@sinclair/typebox': 0.34.49 + '@sinclair/typebox': 0.34.48 '@jest/snapshot-utils@30.3.0': dependencies: @@ -20114,7 +20157,7 @@ snapshots: '@jest/schemas': 30.0.5 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 24.12.2 + '@types/node': 24.12.0 '@types/yargs': 17.0.35 chalk: 4.1.2 @@ -20174,58 +20217,58 @@ snapshots: dependencies: tslib: 2.8.1 - '@jsonjoy.com/fs-core@4.57.1(tslib@2.8.1)': + '@jsonjoy.com/fs-core@4.56.11(tslib@2.8.1)': dependencies: - '@jsonjoy.com/fs-node-builtins': 4.57.1(tslib@2.8.1) - '@jsonjoy.com/fs-node-utils': 4.57.1(tslib@2.8.1) - thingies: 2.6.0(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.56.11(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.11(tslib@2.8.1) + thingies: 2.5.0(tslib@2.8.1) tslib: 2.8.1 - '@jsonjoy.com/fs-fsa@4.57.1(tslib@2.8.1)': + '@jsonjoy.com/fs-fsa@4.56.11(tslib@2.8.1)': dependencies: - '@jsonjoy.com/fs-core': 4.57.1(tslib@2.8.1) - '@jsonjoy.com/fs-node-builtins': 4.57.1(tslib@2.8.1) - '@jsonjoy.com/fs-node-utils': 4.57.1(tslib@2.8.1) - thingies: 2.6.0(tslib@2.8.1) + '@jsonjoy.com/fs-core': 4.56.11(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.56.11(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.11(tslib@2.8.1) + thingies: 2.5.0(tslib@2.8.1) tslib: 2.8.1 - '@jsonjoy.com/fs-node-builtins@4.57.1(tslib@2.8.1)': + '@jsonjoy.com/fs-node-builtins@4.56.11(tslib@2.8.1)': dependencies: tslib: 2.8.1 - '@jsonjoy.com/fs-node-to-fsa@4.57.1(tslib@2.8.1)': + '@jsonjoy.com/fs-node-to-fsa@4.56.11(tslib@2.8.1)': dependencies: - '@jsonjoy.com/fs-fsa': 4.57.1(tslib@2.8.1) - '@jsonjoy.com/fs-node-builtins': 4.57.1(tslib@2.8.1) - '@jsonjoy.com/fs-node-utils': 4.57.1(tslib@2.8.1) + '@jsonjoy.com/fs-fsa': 4.56.11(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.56.11(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.11(tslib@2.8.1) tslib: 2.8.1 - '@jsonjoy.com/fs-node-utils@4.57.1(tslib@2.8.1)': + '@jsonjoy.com/fs-node-utils@4.56.11(tslib@2.8.1)': dependencies: - '@jsonjoy.com/fs-node-builtins': 4.57.1(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.56.11(tslib@2.8.1) tslib: 2.8.1 - '@jsonjoy.com/fs-node@4.57.1(tslib@2.8.1)': + '@jsonjoy.com/fs-node@4.56.11(tslib@2.8.1)': dependencies: - '@jsonjoy.com/fs-core': 4.57.1(tslib@2.8.1) - '@jsonjoy.com/fs-node-builtins': 4.57.1(tslib@2.8.1) - '@jsonjoy.com/fs-node-utils': 4.57.1(tslib@2.8.1) - '@jsonjoy.com/fs-print': 4.57.1(tslib@2.8.1) - '@jsonjoy.com/fs-snapshot': 4.57.1(tslib@2.8.1) + '@jsonjoy.com/fs-core': 4.56.11(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.56.11(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.11(tslib@2.8.1) + '@jsonjoy.com/fs-print': 4.56.11(tslib@2.8.1) + '@jsonjoy.com/fs-snapshot': 4.56.11(tslib@2.8.1) glob-to-regex.js: 1.2.0(tslib@2.8.1) - thingies: 2.6.0(tslib@2.8.1) + thingies: 2.5.0(tslib@2.8.1) tslib: 2.8.1 - '@jsonjoy.com/fs-print@4.57.1(tslib@2.8.1)': + '@jsonjoy.com/fs-print@4.56.11(tslib@2.8.1)': dependencies: - '@jsonjoy.com/fs-node-utils': 4.57.1(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.11(tslib@2.8.1) tree-dump: 1.1.0(tslib@2.8.1) tslib: 2.8.1 - '@jsonjoy.com/fs-snapshot@4.57.1(tslib@2.8.1)': + '@jsonjoy.com/fs-snapshot@4.56.11(tslib@2.8.1)': dependencies: '@jsonjoy.com/buffers': 17.67.0(tslib@2.8.1) - '@jsonjoy.com/fs-node-utils': 4.57.1(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.11(tslib@2.8.1) '@jsonjoy.com/json-pack': 17.67.0(tslib@2.8.1) '@jsonjoy.com/util': 17.67.0(tslib@2.8.1) tslib: 2.8.1 @@ -20238,7 +20281,7 @@ snapshots: '@jsonjoy.com/json-pointer': 1.0.2(tslib@2.8.1) '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) hyperdyperid: 1.2.0 - thingies: 2.6.0(tslib@2.8.1) + thingies: 2.5.0(tslib@2.8.1) tree-dump: 1.1.0(tslib@2.8.1) tslib: 2.8.1 @@ -20250,7 +20293,7 @@ snapshots: '@jsonjoy.com/json-pointer': 17.67.0(tslib@2.8.1) '@jsonjoy.com/util': 17.67.0(tslib@2.8.1) hyperdyperid: 1.2.0 - thingies: 2.6.0(tslib@2.8.1) + thingies: 2.5.0(tslib@2.8.1) tree-dump: 1.1.0(tslib@2.8.1) tslib: 2.8.1 @@ -20291,7 +20334,7 @@ snapshots: '@jridgewell/trace-mapping': 0.3.31 '@knighted/module': 1.5.2 find-up: 8.0.0 - get-tsconfig: 4.13.7 + get-tsconfig: 4.13.6 magic-string: 0.30.21 read-package-up: 12.0.0 typescript: 5.9.3 @@ -20308,7 +20351,7 @@ snapshots: '@lezer/common@1.3.0': {} - '@lezer/common@1.5.2': {} + '@lezer/common@1.5.1': {} '@lezer/cpp@1.1.5': dependencies: @@ -20316,7 +20359,7 @@ snapshots: '@lezer/highlight': 1.2.3 '@lezer/lr': 1.4.3 - '@lezer/css@1.3.3': + '@lezer/css@1.3.1': dependencies: '@lezer/common': 1.3.0 '@lezer/highlight': 1.2.3 @@ -20367,7 +20410,7 @@ snapshots: '@lezer/markdown@1.6.3': dependencies: - '@lezer/common': 1.5.2 + '@lezer/common': 1.5.1 '@lezer/highlight': 1.2.3 '@lezer/php@1.0.5': @@ -20451,8 +20494,8 @@ snapshots: '@napi-rs/wasm-runtime@0.2.12': dependencies: - '@emnapi/core': 1.9.2 - '@emnapi/runtime': 1.9.2 + '@emnapi/core': 1.8.1 + '@emnapi/runtime': 1.8.1 '@tybys/wasm-util': 0.10.1 optional: true @@ -20523,7 +20566,7 @@ snapshots: '@octokit/request-error': 7.1.0 '@octokit/types': 16.0.0 fast-content-type-parse: 3.0.0 - json-with-bigint: 3.5.8 + json-with-bigint: 3.5.7 universal-user-agent: 7.0.3 '@octokit/rest@22.0.1': @@ -20541,213 +20584,213 @@ snapshots: '@opentelemetry/api-logs@0.57.2': dependencies: - '@opentelemetry/api': 1.9.1 + '@opentelemetry/api': 1.9.0 - '@opentelemetry/api@1.9.1': {} + '@opentelemetry/api@1.9.0': {} - '@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.1)': + '@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0)': dependencies: - '@opentelemetry/api': 1.9.1 + '@opentelemetry/api': 1.9.0 - '@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.1)': + '@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0)': dependencies: - '@opentelemetry/api': 1.9.1 + '@opentelemetry/api': 1.9.0 '@opentelemetry/semantic-conventions': 1.28.0 - '@opentelemetry/instrumentation-amqplib@0.46.1(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-amqplib@0.46.1(@opentelemetry/api@1.9.0)': dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.40.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-connect@0.43.1(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-connect@0.43.1(@opentelemetry/api@1.9.0)': dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.40.0 '@types/connect': 3.4.38 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-dataloader@0.16.1(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-dataloader@0.16.1(@opentelemetry/api@1.9.0)': dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-express@0.47.1(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-express@0.47.1(@opentelemetry/api@1.9.0)': dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.40.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-fs@0.19.1(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-fs@0.19.1(@opentelemetry/api@1.9.0)': dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-generic-pool@0.43.1(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-generic-pool@0.43.1(@opentelemetry/api@1.9.0)': dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-graphql@0.47.1(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-graphql@0.47.1(@opentelemetry/api@1.9.0)': dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-hapi@0.45.2(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-hapi@0.45.2(@opentelemetry/api@1.9.0)': dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.40.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-http@0.57.2(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-http@0.57.2(@opentelemetry/api@1.9.0)': dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 forwarded-parse: 2.1.2 semver: 7.7.3 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-ioredis@0.47.1(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-ioredis@0.47.1(@opentelemetry/api@1.9.0)': dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) '@opentelemetry/redis-common': 0.36.2 '@opentelemetry/semantic-conventions': 1.40.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-kafkajs@0.7.1(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-kafkajs@0.7.1(@opentelemetry/api@1.9.0)': dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.40.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-knex@0.44.1(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-knex@0.44.1(@opentelemetry/api@1.9.0)': dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.40.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-koa@0.47.1(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-koa@0.47.1(@opentelemetry/api@1.9.0)': dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.40.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-lru-memoizer@0.44.1(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-lru-memoizer@0.44.1(@opentelemetry/api@1.9.0)': dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-mongodb@0.52.0(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-mongodb@0.52.0(@opentelemetry/api@1.9.0)': dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.40.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-mongoose@0.46.1(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-mongoose@0.46.1(@opentelemetry/api@1.9.0)': dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.40.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-mysql2@0.45.2(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-mysql2@0.45.2(@opentelemetry/api@1.9.0)': dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.40.0 - '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.1) + '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-mysql@0.45.1(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-mysql@0.45.1(@opentelemetry/api@1.9.0)': dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.40.0 '@types/mysql': 2.15.26 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-pg@0.51.1(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-pg@0.51.1(@opentelemetry/api@1.9.0)': dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.40.0 - '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.1) + '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) '@types/pg': 8.6.1 '@types/pg-pool': 2.0.6 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-redis-4@0.46.1(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-redis-4@0.46.1(@opentelemetry/api@1.9.0)': dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) '@opentelemetry/redis-common': 0.36.2 '@opentelemetry/semantic-conventions': 1.40.0 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-tedious@0.18.1(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-tedious@0.18.1(@opentelemetry/api@1.9.0)': dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.40.0 '@types/tedious': 4.0.14 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-undici@0.10.1(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation-undici@0.10.1(@opentelemetry/api@1.9.0)': dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.1)': + '@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.0)': dependencies: - '@opentelemetry/api': 1.9.1 + '@opentelemetry/api': 1.9.0 '@opentelemetry/api-logs': 0.57.2 '@types/shimmer': 1.2.0 import-in-the-middle: 1.15.0 @@ -20759,27 +20802,27 @@ snapshots: '@opentelemetry/redis-common@0.36.2': {} - '@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.1)': + '@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0)': dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 - '@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.1)': + '@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)': dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.1) - '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 '@opentelemetry/semantic-conventions@1.28.0': {} '@opentelemetry/semantic-conventions@1.40.0': {} - '@opentelemetry/sql-common@0.40.1(@opentelemetry/api@1.9.1)': + '@opentelemetry/sql-common@0.40.1(@opentelemetry/api@1.9.0)': dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@oxc-parser/binding-android-arm-eabi@0.116.0': optional: true @@ -20946,7 +20989,7 @@ snapshots: '@pmmmwh/react-refresh-webpack-plugin@0.6.2(react-refresh@0.17.0)(webpack-dev-server@5.2.3)(webpack@5.105.2)': dependencies: anser: 2.3.5 - core-js-pure: 3.49.0 + core-js-pure: 3.48.0 error-stack-parser: 2.1.4 html-entities: 2.6.0 react-refresh: 0.17.0 @@ -20960,22 +21003,22 @@ snapshots: '@popperjs/core@2.11.8': {} - '@preact/signals-core@1.14.1': {} + '@preact/signals-core@1.13.0': {} '@preact/signals@1.2.2(preact@10.28.2)': dependencies: - '@preact/signals-core': 1.14.1 + '@preact/signals-core': 1.13.0 preact: 10.28.2 '@preact/signals@1.3.4(preact@10.28.2)': dependencies: - '@preact/signals-core': 1.14.1 + '@preact/signals-core': 1.13.0 preact: 10.28.2 - '@prisma/instrumentation@6.11.1(@opentelemetry/api@1.9.1)': + '@prisma/instrumentation@6.11.1(@opentelemetry/api@1.9.0)': dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color @@ -21497,7 +21540,7 @@ snapshots: '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 - resolve: 1.22.12 + resolve: 1.22.11 optionalDependencies: rollup: 3.30.0 @@ -21512,14 +21555,14 @@ snapshots: dependencies: serialize-javascript: 7.0.5 smob: 1.6.1 - terser: 5.46.1 + terser: 5.46.0 optionalDependencies: rollup: 3.30.0 '@rollup/plugin-typescript@12.1.0(rollup@3.30.0)(tslib@2.8.1)(typescript@5.9.3)': dependencies: '@rollup/pluginutils': 5.3.0(rollup@3.30.0) - resolve: 1.22.12 + resolve: 1.22.11 typescript: 5.9.3 optionalDependencies: rollup: 3.30.0 @@ -21544,79 +21587,79 @@ snapshots: optionalDependencies: rollup: 3.30.0 - '@rollup/rollup-android-arm-eabi@4.60.1': + '@rollup/rollup-android-arm-eabi@4.59.0': optional: true - '@rollup/rollup-android-arm64@4.60.1': + '@rollup/rollup-android-arm64@4.59.0': optional: true - '@rollup/rollup-darwin-arm64@4.60.1': + '@rollup/rollup-darwin-arm64@4.59.0': optional: true - '@rollup/rollup-darwin-x64@4.60.1': + '@rollup/rollup-darwin-x64@4.59.0': optional: true - '@rollup/rollup-freebsd-arm64@4.60.1': + '@rollup/rollup-freebsd-arm64@4.59.0': optional: true - '@rollup/rollup-freebsd-x64@4.60.1': + '@rollup/rollup-freebsd-x64@4.59.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.60.1': + '@rollup/rollup-linux-arm-gnueabihf@4.59.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.60.1': + '@rollup/rollup-linux-arm-musleabihf@4.59.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.60.1': + '@rollup/rollup-linux-arm64-gnu@4.59.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.60.1': + '@rollup/rollup-linux-arm64-musl@4.59.0': optional: true - '@rollup/rollup-linux-loong64-gnu@4.60.1': + '@rollup/rollup-linux-loong64-gnu@4.59.0': optional: true - '@rollup/rollup-linux-loong64-musl@4.60.1': + '@rollup/rollup-linux-loong64-musl@4.59.0': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.60.1': + '@rollup/rollup-linux-ppc64-gnu@4.59.0': optional: true - '@rollup/rollup-linux-ppc64-musl@4.60.1': + '@rollup/rollup-linux-ppc64-musl@4.59.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.60.1': + '@rollup/rollup-linux-riscv64-gnu@4.59.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.60.1': + '@rollup/rollup-linux-riscv64-musl@4.59.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.60.1': + '@rollup/rollup-linux-s390x-gnu@4.59.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.60.1': + '@rollup/rollup-linux-x64-gnu@4.59.0': optional: true - '@rollup/rollup-linux-x64-musl@4.60.1': + '@rollup/rollup-linux-x64-musl@4.59.0': optional: true - '@rollup/rollup-openbsd-x64@4.60.1': + '@rollup/rollup-openbsd-x64@4.59.0': optional: true - '@rollup/rollup-openharmony-arm64@4.60.1': + '@rollup/rollup-openharmony-arm64@4.59.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.60.1': + '@rollup/rollup-win32-arm64-msvc@4.59.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.60.1': + '@rollup/rollup-win32-ia32-msvc@4.59.0': optional: true - '@rollup/rollup-win32-x64-gnu@4.60.1': + '@rollup/rollup-win32-x64-gnu@4.59.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.60.1': + '@rollup/rollup-win32-x64-msvc@4.59.0': optional: true '@rtsao/scc@1.1.0': {} @@ -21659,69 +21702,69 @@ snapshots: '@sentry/core@9.47.1': {} - '@sentry/node-core@9.47.1(@opentelemetry/api@1.9.1)(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.1))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.1))(@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.1))(@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.40.0)': + '@sentry/node-core@9.47.1(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.0))(@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)': dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/context-async-hooks': 1.30.1(@opentelemetry/api@1.9.1) - '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.1) - '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/context-async-hooks': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.40.0 '@sentry/core': 9.47.1 - '@sentry/opentelemetry': 9.47.1(@opentelemetry/api@1.9.1)(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.1))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.40.0) + '@sentry/opentelemetry': 9.47.1(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) import-in-the-middle: 1.15.0 '@sentry/node@9.47.1': dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/context-async-hooks': 1.30.1(@opentelemetry/api@1.9.1) - '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-amqplib': 0.46.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-connect': 0.43.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-dataloader': 0.16.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-express': 0.47.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-fs': 0.19.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-generic-pool': 0.43.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-graphql': 0.47.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-hapi': 0.45.2(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-http': 0.57.2(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-ioredis': 0.47.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-kafkajs': 0.7.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-knex': 0.44.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-koa': 0.47.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-lru-memoizer': 0.44.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-mongodb': 0.52.0(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-mongoose': 0.46.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-mysql': 0.45.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-mysql2': 0.45.2(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-pg': 0.51.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-redis-4': 0.46.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-tedious': 0.18.1(@opentelemetry/api@1.9.1) - '@opentelemetry/instrumentation-undici': 0.10.1(@opentelemetry/api@1.9.1) - '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/context-async-hooks': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-amqplib': 0.46.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-connect': 0.43.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-dataloader': 0.16.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-express': 0.47.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-fs': 0.19.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-generic-pool': 0.43.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-graphql': 0.47.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-hapi': 0.45.2(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-http': 0.57.2(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-ioredis': 0.47.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-kafkajs': 0.7.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-knex': 0.44.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-koa': 0.47.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-lru-memoizer': 0.44.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mongodb': 0.52.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mongoose': 0.46.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mysql': 0.45.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mysql2': 0.45.2(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-pg': 0.51.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-redis-4': 0.46.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-tedious': 0.18.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-undici': 0.10.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.40.0 - '@prisma/instrumentation': 6.11.1(@opentelemetry/api@1.9.1) + '@prisma/instrumentation': 6.11.1(@opentelemetry/api@1.9.0) '@sentry/core': 9.47.1 - '@sentry/node-core': 9.47.1(@opentelemetry/api@1.9.1)(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.1))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.1))(@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.1))(@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.40.0) - '@sentry/opentelemetry': 9.47.1(@opentelemetry/api@1.9.1)(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.1))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.40.0) + '@sentry/node-core': 9.47.1(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.0))(@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@sentry/opentelemetry': 9.47.1(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) import-in-the-middle: 1.15.0 minimatch: 9.0.9 transitivePeerDependencies: - supports-color - '@sentry/opentelemetry@9.47.1(@opentelemetry/api@1.9.1)(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.1))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.40.0)': + '@sentry/opentelemetry@9.47.1(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)': dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/context-async-hooks': 1.30.1(@opentelemetry/api@1.9.1) - '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.1) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/context-async-hooks': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.40.0 '@sentry/core': 9.47.1 - '@sinclair/typebox@0.34.49': {} + '@sinclair/typebox@0.34.48': {} '@sindresorhus/base62@1.0.0': {} @@ -21731,7 +21774,7 @@ snapshots: dependencies: type-detect: 4.0.8 - '@sinonjs/fake-timers@15.3.2': + '@sinonjs/fake-timers@15.1.1': dependencies: '@sinonjs/commons': 3.0.1 @@ -21770,19 +21813,19 @@ snapshots: - supports-color - utf-8-validate - '@slack/logger@4.0.1': + '@slack/logger@4.0.0': dependencies: - '@types/node': 24.12.2 + '@types/node': 24.12.0 - '@slack/types@2.20.1': {} + '@slack/types@2.20.0': {} '@slack/web-api@7.12.0': dependencies: - '@slack/logger': 4.0.1 - '@slack/types': 2.20.1 - '@types/node': 24.12.2 + '@slack/logger': 4.0.0 + '@slack/types': 2.20.0 + '@types/node': 24.12.0 '@types/retry': 0.12.0 - axios: 1.15.0 + axios: 1.13.5 eventemitter3: 5.0.4 form-data: 4.0.5 is-electron: 2.2.2 @@ -21803,7 +21846,7 @@ snapshots: '@storybook/addon-a11y@10.3.3(storybook@10.3.3(@testing-library/dom@10.4.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': dependencies: '@storybook/global': 5.0.0 - axe-core: 4.11.2 + axe-core: 4.11.1 storybook: 10.3.3(@testing-library/dom@10.4.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/addon-docs@10.3.3(@types/react@18.3.28)(esbuild@0.27.4)(storybook@10.3.3(@testing-library/dom@10.4.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': @@ -21945,9 +21988,9 @@ snapshots: empathic: 2.0.0 magic-string: 0.30.21 react: 18.3.1 - react-docgen: 8.0.3 + react-docgen: 8.0.2 react-dom: 18.3.1(react@18.3.1) - resolve: 1.22.12 + resolve: 1.22.11 storybook: 10.3.3(@testing-library/dom@10.4.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) tsconfig-paths: 4.2.0 vite: 8.0.5(sass-embedded@1.97.3) @@ -21963,7 +22006,7 @@ snapshots: '@storybook/global': 5.0.0 '@storybook/react-dom-shim': 10.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.3(@testing-library/dom@10.4.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) react: 18.3.1 - react-docgen: 8.0.3 + react-docgen: 8.0.2 react-docgen-typescript: 2.4.0(typescript@5.9.3) react-dom: 18.3.1(react@18.3.1) storybook: 10.3.3(@testing-library/dom@10.4.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -21972,12 +22015,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@stylistic/stylelint-plugin@5.1.0(stylelint@17.7.0(typescript@5.9.3))': + '@stylistic/stylelint-plugin@5.0.1(stylelint@17.7.0(typescript@5.9.3))': dependencies: '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) '@csstools/css-tokenizer': 4.0.0 '@csstools/media-query-list-parser': 5.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) - postcss: 8.5.9 + postcss: 8.5.6 postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 style-search: 0.1.0 @@ -22006,13 +22049,13 @@ snapshots: '@tanstack/eslint-plugin-query@5.91.2(eslint@9.39.4)(typescript@5.9.3)': dependencies: - '@typescript-eslint/utils': 8.58.1(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.1(eslint@9.39.4)(typescript@5.9.3) eslint: 9.39.4 transitivePeerDependencies: - supports-color - typescript - '@tanstack/history@1.161.5': {} + '@tanstack/history@1.161.4': {} '@tanstack/query-core@5.90.8': {} @@ -22029,35 +22072,35 @@ snapshots: '@tanstack/query-core': 5.90.8 react: 18.3.1 - '@tanstack/react-router@1.167.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@tanstack/react-router@1.166.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tanstack/history': 1.161.5 - '@tanstack/react-store': 0.9.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@tanstack/router-core': 1.167.1 - isbot: 5.1.37 + '@tanstack/history': 1.161.4 + '@tanstack/react-store': 0.9.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tanstack/router-core': 1.166.2 + isbot: 5.1.35 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - '@tanstack/react-store@0.9.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@tanstack/react-store@0.9.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tanstack/store': 0.9.3 + '@tanstack/store': 0.9.2 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) use-sync-external-store: 1.6.0(react@18.3.1) - '@tanstack/router-core@1.167.1': + '@tanstack/router-core@1.166.2': dependencies: - '@tanstack/history': 1.161.5 - '@tanstack/store': 0.9.3 - cookie-es: 2.0.1 - seroval: 1.5.2 - seroval-plugins: 1.5.2(seroval@1.5.2) + '@tanstack/history': 1.161.4 + '@tanstack/store': 0.9.2 + cookie-es: 2.0.0 + seroval: 1.5.0 + seroval-plugins: 1.5.0(seroval@1.5.0) tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - '@tanstack/store@0.9.3': {} + '@tanstack/store@0.9.2': {} '@testing-library/dom@10.4.1': dependencies: @@ -22138,7 +22181,7 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.29.2 + '@babel/parser': 7.29.0 '@babel/types': 7.29.0 '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 @@ -22150,7 +22193,7 @@ snapshots: '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.29.2 + '@babel/parser': 7.29.0 '@babel/types': 7.29.0 '@types/babel__traverse@7.28.0': @@ -22160,11 +22203,11 @@ snapshots: '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 24.12.2 + '@types/node': 24.12.0 '@types/bonjour@3.5.13': dependencies: - '@types/node': 24.12.2 + '@types/node': 24.12.0 '@types/canvas-confetti@1.9.0': {} @@ -22175,17 +22218,17 @@ snapshots: '@types/clean-css@4.2.11': dependencies: - '@types/node': 24.12.2 + '@types/node': 24.12.0 source-map: 0.6.1 '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 4.19.8 - '@types/node': 24.12.2 + '@types/node': 24.12.0 '@types/connect@3.4.38': dependencies: - '@types/node': 24.12.2 + '@types/node': 24.12.0 '@types/cookie@0.6.0': {} @@ -22223,7 +22266,7 @@ snapshots: '@types/d3-voronoi@1.1.12': {} - '@types/debug@4.1.13': + '@types/debug@4.1.12': dependencies: '@types/ms': 2.1.0 @@ -22245,7 +22288,7 @@ snapshots: '@types/express-serve-static-core@4.19.8': dependencies: - '@types/node': 24.12.2 + '@types/node': 24.12.0 '@types/qs': 6.15.0 '@types/range-parser': 1.2.7 '@types/send': 1.2.1 @@ -22272,7 +22315,7 @@ snapshots: '@types/http-proxy@1.17.17': dependencies: - '@types/node': 24.12.2 + '@types/node': 24.12.0 '@types/istanbul-lib-coverage@2.0.6': {} @@ -22295,7 +22338,7 @@ snapshots: '@types/jsdom@21.1.7': dependencies: - '@types/node': 24.12.2 + '@types/node': 24.12.0 '@types/tough-cookie': 4.0.5 parse5: 7.3.0 @@ -22332,9 +22375,9 @@ snapshots: '@types/mysql@2.15.26': dependencies: - '@types/node': 24.12.2 + '@types/node': 24.12.0 - '@types/node@24.12.2': + '@types/node@24.12.0': dependencies: undici-types: 7.16.0 @@ -22348,7 +22391,7 @@ snapshots: '@types/pg@8.6.1': dependencies: - '@types/node': 24.12.2 + '@types/node': 24.12.0 pg-protocol: 1.13.0 pg-types: 2.2.0 @@ -22388,18 +22431,18 @@ snapshots: '@types/sax@1.2.7': dependencies: - '@types/node': 24.12.2 + '@types/node': 24.12.0 '@types/seed-random@2.2.4': {} '@types/send@0.17.6': dependencies: '@types/mime': 1.3.5 - '@types/node': 24.12.2 + '@types/node': 24.12.0 '@types/send@1.2.1': dependencies: - '@types/node': 24.12.2 + '@types/node': 24.12.0 '@types/serve-index@1.9.4': dependencies: @@ -22408,7 +22451,7 @@ snapshots: '@types/serve-static@1.15.10': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 24.12.2 + '@types/node': 24.12.0 '@types/send': 0.17.6 '@types/shimmer@1.2.0': {} @@ -22417,13 +22460,13 @@ snapshots: '@types/sockjs@0.3.36': dependencies: - '@types/node': 24.12.2 + '@types/node': 24.12.0 '@types/stack-utils@2.0.3': {} '@types/tedious@4.0.14': dependencies: - '@types/node': 24.12.2 + '@types/node': 24.12.0 '@types/tough-cookie@4.0.5': {} @@ -22466,7 +22509,7 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 24.12.2 + '@types/node': 24.12.0 '@types/yargs-parser@21.0.3': {} @@ -22476,7 +22519,7 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 24.12.2 + '@types/node': 24.12.0 optional: true '@typescript-eslint/eslint-plugin@8.57.1(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3)': @@ -22490,7 +22533,7 @@ snapshots: eslint: 9.39.4 ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.5.0(typescript@5.9.3) + ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -22509,17 +22552,8 @@ snapshots: '@typescript-eslint/project-service@8.57.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.58.1(typescript@5.9.3) - '@typescript-eslint/types': 8.58.1 - debug: 4.4.3 - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/project-service@8.58.1(typescript@5.9.3)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.58.1(typescript@5.9.3) - '@typescript-eslint/types': 8.58.1 + '@typescript-eslint/tsconfig-utils': 8.57.1(typescript@5.9.3) + '@typescript-eslint/types': 8.57.1 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: @@ -22530,19 +22564,10 @@ snapshots: '@typescript-eslint/types': 8.57.1 '@typescript-eslint/visitor-keys': 8.57.1 - '@typescript-eslint/scope-manager@8.58.1': - dependencies: - '@typescript-eslint/types': 8.58.1 - '@typescript-eslint/visitor-keys': 8.58.1 - '@typescript-eslint/tsconfig-utils@8.57.1(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/tsconfig-utils@8.58.1(typescript@5.9.3)': - dependencies: - typescript: 5.9.3 - '@typescript-eslint/type-utils@8.57.1(eslint@9.39.4)(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.57.1 @@ -22550,15 +22575,13 @@ snapshots: '@typescript-eslint/utils': 8.57.1(eslint@9.39.4)(typescript@5.9.3) debug: 4.4.3 eslint: 9.39.4 - ts-api-utils: 2.5.0(typescript@5.9.3) + ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color '@typescript-eslint/types@8.57.1': {} - '@typescript-eslint/types@8.58.1': {} - '@typescript-eslint/typescript-estree@8.57.1(typescript@5.9.3)': dependencies: '@typescript-eslint/project-service': 8.57.1(typescript@5.9.3) @@ -22568,23 +22591,8 @@ snapshots: debug: 4.4.3 minimatch: 10.2.4 semver: 7.7.3 - tinyglobby: 0.2.16 - ts-api-utils: 2.5.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/typescript-estree@8.58.1(typescript@5.9.3)': - dependencies: - '@typescript-eslint/project-service': 8.58.1(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.58.1(typescript@5.9.3) - '@typescript-eslint/types': 8.58.1 - '@typescript-eslint/visitor-keys': 8.58.1 - debug: 4.4.3 - minimatch: 10.2.4 - semver: 7.7.3 - tinyglobby: 0.2.16 - ts-api-utils: 2.5.0(typescript@5.9.3) + tinyglobby: 0.2.15 + ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -22600,27 +22608,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.58.1(eslint@9.39.4)(typescript@5.9.3)': - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) - '@typescript-eslint/scope-manager': 8.58.1 - '@typescript-eslint/types': 8.58.1 - '@typescript-eslint/typescript-estree': 8.58.1(typescript@5.9.3) - eslint: 9.39.4 - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/visitor-keys@8.57.1': dependencies: '@typescript-eslint/types': 8.57.1 eslint-visitor-keys: 5.0.1 - '@typescript-eslint/visitor-keys@8.58.1': - dependencies: - '@typescript-eslint/types': 8.58.1 - eslint-visitor-keys: 5.0.1 - '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260225.1': optional: true @@ -23146,6 +23138,42 @@ snapshots: '@wordpress/dom-ready': 4.43.0 '@wordpress/i18n': 6.16.0 + '@wordpress/admin-ui@1.10.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0)': + dependencies: + '@wordpress/base-styles': 6.19.0 + '@wordpress/components': 32.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@wordpress/element': 6.43.0 + '@wordpress/i18n': 6.16.0 + '@wordpress/private-apis': 1.43.0 + '@wordpress/route': 0.8.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@wordpress/ui': 0.9.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + clsx: 2.1.1 + react: 18.3.1 + transitivePeerDependencies: + - '@emotion/is-prop-valid' + - '@types/react' + - react-dom + - stylelint + - supports-color + + '@wordpress/admin-ui@1.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0)': + dependencies: + '@wordpress/base-styles': 6.19.0 + '@wordpress/components': 32.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@wordpress/element': 6.43.0 + '@wordpress/i18n': 6.16.0 + '@wordpress/private-apis': 1.43.0 + '@wordpress/route': 0.8.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@wordpress/ui': 0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + clsx: 2.1.1 + react: 18.3.1 + transitivePeerDependencies: + - '@emotion/is-prop-valid' + - '@types/react' + - react-dom + - stylelint + - supports-color + '@wordpress/admin-ui@1.11.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0)': dependencies: '@wordpress/base-styles': 6.19.0 @@ -23278,7 +23306,7 @@ snapshots: react: 18.3.1 react-autosize-textarea: 7.1.0(patch_hash=5c09e1dee59caaaba3871f9d722f93e56b41169db486b059597e8f8c788aa464)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-dom: 18.3.1(react@18.3.1) - react-easy-crop: 5.5.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-easy-crop: 5.5.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) remove-accents: 0.5.0 transitivePeerDependencies: - '@emotion/is-prop-valid' @@ -23341,7 +23369,7 @@ snapshots: react: 18.3.1 react-autosize-textarea: 7.1.0(patch_hash=5c09e1dee59caaaba3871f9d722f93e56b41169db486b059597e8f8c788aa464)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-dom: 18.3.1(react@18.3.1) - react-easy-crop: 5.5.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-easy-crop: 5.5.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) remove-accents: 0.5.0 transitivePeerDependencies: - '@emotion/is-prop-valid' @@ -23404,7 +23432,7 @@ snapshots: react: 18.3.1 react-autosize-textarea: 7.1.0(patch_hash=5c09e1dee59caaaba3871f9d722f93e56b41169db486b059597e8f8c788aa464)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-dom: 18.3.1(react@18.3.1) - react-easy-crop: 5.5.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-easy-crop: 5.5.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) remove-accents: 0.5.0 transitivePeerDependencies: - '@emotion/is-prop-valid' @@ -23455,7 +23483,7 @@ snapshots: change-case: 4.1.2 clsx: 2.1.1 colord: 2.9.3 - fast-average-color: 9.5.2 + fast-average-color: 9.5.0 fast-deep-equal: 3.1.3 html-react-parser: 5.2.11(@types/react@18.3.28)(react@18.3.1) memize: 2.1.1 @@ -23512,7 +23540,7 @@ snapshots: change-case: 4.1.2 clsx: 2.1.1 colord: 2.9.3 - fast-average-color: 9.5.2 + fast-average-color: 9.5.0 fast-deep-equal: 3.1.3 html-react-parser: 5.2.11(@types/react@18.3.28)(react@18.3.1) memize: 2.1.1 @@ -23569,7 +23597,7 @@ snapshots: change-case: 4.1.2 clsx: 2.1.1 colord: 2.9.3 - fast-average-color: 9.5.2 + fast-average-color: 9.5.0 fast-deep-equal: 3.1.3 html-react-parser: 5.2.11(react@18.3.1) memize: 2.1.1 @@ -23686,14 +23714,14 @@ snapshots: '@wordpress/browserslist-config@6.43.0': {} - '@wordpress/build@0.11.0(@babel/core@7.29.0)(@wordpress/boot@0.10.0(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0))(@wordpress/route@0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@wordpress/theme@0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0))(browserslist@4.28.2)': + '@wordpress/build@0.11.0(patch_hash=357b8fc7ce7985a4d7aa9062f5b8826762fbacf279e4d7e55a822f9842658123)(@babel/core@7.29.0)(@wordpress/boot@0.10.0(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0))(@wordpress/route@0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@wordpress/theme@0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0))(browserslist@4.28.2)': dependencies: '@emotion/babel-plugin': 11.13.5 autoprefixer: 10.4.27(postcss@8.5.6) browserslist-to-esbuild: 2.1.1(browserslist@4.28.2) change-case: 4.1.2 chokidar: 4.0.3 - cssnano: 7.1.4(postcss@8.5.6) + cssnano: 7.1.3(postcss@8.5.6) esbuild: 0.27.4 esbuild-plugin-babel: 0.2.3(@babel/core@7.29.0) esbuild-sass-plugin: 3.3.1(esbuild@0.27.4)(sass-embedded@1.97.3) @@ -23712,14 +23740,39 @@ snapshots: - browserslist - supports-color - '@wordpress/build@0.11.0(@babel/core@7.29.0)(@wordpress/boot@0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0))(@wordpress/route@0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(browserslist@4.28.2)': + '@wordpress/build@0.11.0(patch_hash=357b8fc7ce7985a4d7aa9062f5b8826762fbacf279e4d7e55a822f9842658123)(@babel/core@7.29.0)(@wordpress/boot@0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0))(@wordpress/route@0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(browserslist@4.25.2)': + dependencies: + '@emotion/babel-plugin': 11.13.5 + autoprefixer: 10.4.27(postcss@8.5.6) + browserslist-to-esbuild: 2.1.1(browserslist@4.25.2) + change-case: 4.1.2 + chokidar: 4.0.3 + cssnano: 7.1.3(postcss@8.5.6) + esbuild: 0.27.4 + esbuild-plugin-babel: 0.2.3(@babel/core@7.29.0) + esbuild-sass-plugin: 3.3.1(esbuild@0.27.4)(sass-embedded@1.97.3) + fast-glob: 3.3.3 + moment-timezone: 0.5.48 + postcss: 8.5.6 + postcss-modules: 6.0.1(postcss@8.5.6) + rtlcss: 4.3.0 + sass-embedded: 1.97.3 + optionalDependencies: + '@wordpress/boot': 0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + '@wordpress/route': 0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + transitivePeerDependencies: + - '@babel/core' + - browserslist + - supports-color + + '@wordpress/build@0.11.0(patch_hash=357b8fc7ce7985a4d7aa9062f5b8826762fbacf279e4d7e55a822f9842658123)(@babel/core@7.29.0)(@wordpress/boot@0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0))(@wordpress/route@0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(browserslist@4.28.2)': dependencies: '@emotion/babel-plugin': 11.13.5 autoprefixer: 10.4.27(postcss@8.5.6) browserslist-to-esbuild: 2.1.1(browserslist@4.28.2) change-case: 4.1.2 chokidar: 4.0.3 - cssnano: 7.1.4(postcss@8.5.6) + cssnano: 7.1.3(postcss@8.5.6) esbuild: 0.27.4 esbuild-plugin-babel: 0.2.3(@babel/core@7.29.0) esbuild-sass-plugin: 3.3.1(esbuild@0.27.4)(sass-embedded@1.97.3) @@ -23805,7 +23858,7 @@ snapshots: '@wordpress/components@32.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@ariakit/react': 0.4.25(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ariakit/react': 0.4.22(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@date-fns/utc': 2.1.1 '@emotion/cache': 11.14.0 '@emotion/css': 11.13.5 @@ -23996,9 +24049,109 @@ snapshots: rememo: 4.0.2 use-memo-one: 1.1.3(react@18.3.1) + '@wordpress/dataviews@13.1.0(@types/react@18.3.28)(react@18.3.1)(stylelint@17.7.0)': + dependencies: + '@ariakit/react': 0.4.22(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@wordpress/base-styles': 6.19.0 + '@wordpress/components': 32.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@wordpress/compose': 7.43.0(react@18.3.1) + '@wordpress/data': 10.43.0(react@18.3.1) + '@wordpress/deprecated': 4.43.0 + '@wordpress/element': 6.43.0 + '@wordpress/i18n': 6.16.0 + '@wordpress/icons': 12.0.0(react@18.3.1) + '@wordpress/keycodes': 4.43.0 + '@wordpress/primitives': 4.43.0(react@18.3.1) + '@wordpress/private-apis': 1.43.0 + '@wordpress/ui': 0.9.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + '@wordpress/warning': 3.43.0 + clsx: 2.1.1 + react: 18.3.1 + remove-accents: 0.5.0 + optionalDependencies: + '@base-ui/react': 1.3.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@emotion/cache': 11.14.0 + '@emotion/css': 11.13.5 + '@emotion/react': 11.14.0(@types/react@18.3.28)(react@18.3.1) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) + '@emotion/utils': 1.4.2 + '@floating-ui/react-dom': 2.0.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@use-gesture/react': 10.3.1(react@18.3.1) + '@wordpress/date': 5.43.0 + '@wordpress/hooks': 4.43.0 + change-case: 4.1.2 + colord: 2.9.3 + date-fns: 4.1.0 + deepmerge: 4.3.1 + fast-deep-equal: 3.1.3 + framer-motion: 11.18.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + highlight-words-core: 1.2.3 + is-plain-object: 5.0.0 + memize: 2.1.1 + react-colorful: 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-day-picker: 9.14.0(react@18.3.1) + react-dom: 18.3.1(react@18.3.1) + use-memo-one: 1.1.3(react@18.3.1) + uuid: 9.0.1(patch_hash=87a713b75995ed86c0ecd0cadfd1b9f85092ca16fdff7132ff98b62fc3cf2db0) + transitivePeerDependencies: + - '@emotion/is-prop-valid' + - '@types/react' + - stylelint + - supports-color + + '@wordpress/dataviews@13.1.0(react@18.3.1)(stylelint@17.7.0)': + dependencies: + '@ariakit/react': 0.4.22(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@wordpress/base-styles': 6.19.0 + '@wordpress/components': 32.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@wordpress/compose': 7.43.0(react@18.3.1) + '@wordpress/data': 10.43.0(react@18.3.1) + '@wordpress/deprecated': 4.43.0 + '@wordpress/element': 6.43.0 + '@wordpress/i18n': 6.16.0 + '@wordpress/icons': 12.0.0(react@18.3.1) + '@wordpress/keycodes': 4.43.0 + '@wordpress/primitives': 4.43.0(react@18.3.1) + '@wordpress/private-apis': 1.43.0 + '@wordpress/ui': 0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + '@wordpress/warning': 3.43.0 + clsx: 2.1.1 + react: 18.3.1 + remove-accents: 0.5.0 + optionalDependencies: + '@base-ui/react': 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@emotion/cache': 11.14.0 + '@emotion/css': 11.13.5 + '@emotion/react': 11.14.0(react@18.3.1) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(react@18.3.1))(react@18.3.1) + '@emotion/utils': 1.4.2 + '@floating-ui/react-dom': 2.0.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@use-gesture/react': 10.3.1(react@18.3.1) + '@wordpress/date': 5.43.0 + '@wordpress/hooks': 4.43.0 + change-case: 4.1.2 + colord: 2.9.3 + date-fns: 4.1.0 + deepmerge: 4.3.1 + fast-deep-equal: 3.1.3 + framer-motion: 11.18.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + highlight-words-core: 1.2.3 + is-plain-object: 5.0.0 + memize: 2.1.1 + react-colorful: 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-day-picker: 9.14.0(react@18.3.1) + react-dom: 18.3.1(react@18.3.1) + use-memo-one: 1.1.3(react@18.3.1) + uuid: 9.0.1(patch_hash=87a713b75995ed86c0ecd0cadfd1b9f85092ca16fdff7132ff98b62fc3cf2db0) + transitivePeerDependencies: + - '@emotion/is-prop-valid' + - '@types/react' + - stylelint + - supports-color + '@wordpress/dataviews@14.0.0(@types/react@18.3.28)(react@18.3.1)(stylelint@17.7.0)': dependencies: - '@ariakit/react': 0.4.25(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ariakit/react': 0.4.22(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@wordpress/base-styles': 6.19.0 '@wordpress/components': 32.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@wordpress/compose': 7.43.0(react@18.3.1) @@ -24048,7 +24201,7 @@ snapshots: '@wordpress/dataviews@14.0.0(react@18.3.1)(stylelint@17.7.0)': dependencies: - '@ariakit/react': 0.4.25(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ariakit/react': 0.4.22(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@wordpress/base-styles': 6.19.0 '@wordpress/components': 32.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@wordpress/compose': 7.43.0(react@18.3.1) @@ -24117,10 +24270,10 @@ snapshots: dependencies: '@wordpress/deprecated': 4.43.0 - '@wordpress/e2e-test-utils-playwright@1.43.0(@playwright/test@1.58.2)(@types/node@24.12.2)': + '@wordpress/e2e-test-utils-playwright@1.43.0(@playwright/test@1.58.2)(@types/node@24.12.0)': dependencies: '@playwright/test': 1.58.2 - '@types/node': 24.12.2 + '@types/node': 24.12.0 change-case: 4.1.2 get-port: 5.1.1 lighthouse: 12.8.2 @@ -24775,6 +24928,20 @@ snapshots: '@wordpress/primitives': 4.43.0(react@18.3.1) react: 18.3.1 + '@wordpress/icons@11.8.0(react@18.3.1)': + dependencies: + '@wordpress/element': 6.43.0 + '@wordpress/primitives': 4.43.0(react@18.3.1) + change-case: 4.1.2 + react: 18.3.1 + + '@wordpress/icons@12.0.0(react@18.3.1)': + dependencies: + '@wordpress/element': 6.43.0 + '@wordpress/primitives': 4.43.0(react@18.3.1) + change-case: 4.1.2 + react: 18.3.1 + '@wordpress/icons@12.1.0(react@18.3.1)': dependencies: '@wordpress/element': 6.43.0 @@ -24791,7 +24958,7 @@ snapshots: dequal: 2.0.3 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-easy-crop: 5.5.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-easy-crop: 5.5.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - '@emotion/is-prop-valid' - supports-color @@ -24807,6 +24974,30 @@ snapshots: '@preact/signals': 1.3.4(preact@10.28.2) preact: 10.28.2 + '@wordpress/interface@9.27.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0)': + dependencies: + '@wordpress/a11y': 4.43.0 + '@wordpress/admin-ui': 1.10.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + '@wordpress/base-styles': 6.19.0 + '@wordpress/components': 32.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@wordpress/compose': 7.43.0(react@18.3.1) + '@wordpress/data': 10.43.0(react@18.3.1) + '@wordpress/deprecated': 4.43.0 + '@wordpress/element': 6.43.0 + '@wordpress/i18n': 6.16.0 + '@wordpress/icons': 12.0.0(react@18.3.1) + '@wordpress/plugins': 7.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@wordpress/preferences': 4.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@wordpress/viewport': 6.43.0(react@18.3.1) + clsx: 2.1.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - '@emotion/is-prop-valid' + - '@types/react' + - stylelint + - supports-color + '@wordpress/interface@9.28.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0)': dependencies: '@wordpress/a11y': 4.43.0 @@ -25245,7 +25436,7 @@ snapshots: '@wordpress/private-apis@1.43.0': {} - '@wordpress/react-i18n@4.43.0': + '@wordpress/react-i18n@4.41.0': dependencies: '@wordpress/element': 6.43.0 '@wordpress/i18n': 6.16.0 @@ -25343,10 +25534,19 @@ snapshots: memize: 2.1.1 react: 18.3.1 + '@wordpress/route@0.8.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@tanstack/history': 1.161.4 + '@tanstack/react-router': 1.166.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@wordpress/private-apis': 1.43.0 + react: 18.3.1 + transitivePeerDependencies: + - react-dom + '@wordpress/route@0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tanstack/history': 1.161.5 - '@tanstack/react-router': 1.167.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tanstack/history': 1.161.4 + '@tanstack/react-router': 1.166.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@wordpress/private-apis': 1.43.0 react: 18.3.1 transitivePeerDependencies: @@ -25389,7 +25589,7 @@ snapshots: '@wordpress/stylelint-config@23.35.0(postcss@8.5.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint-scss@7.0.0(stylelint@17.7.0(typescript@5.9.3)))(stylelint@17.7.0(typescript@5.9.3))': dependencies: - '@stylistic/stylelint-plugin': 5.1.0(stylelint@17.7.0(typescript@5.9.3)) + '@stylistic/stylelint-plugin': 5.0.1(stylelint@17.7.0(typescript@5.9.3)) '@wordpress/theme': 0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0(typescript@5.9.3)) stylelint: 17.7.0(typescript@5.9.3) stylelint-config-recommended: 17.0.0(stylelint@17.7.0(typescript@5.9.3)) @@ -25406,7 +25606,7 @@ snapshots: '@wordpress/hooks': 4.43.0 '@wordpress/private-apis': 1.43.0 '@wordpress/undo-manager': 1.43.0 - diff: 8.0.4 + diff: 8.0.3 fast-deep-equal: 3.1.3 lib0: 0.2.99 y-protocols: 1.0.7(yjs@13.6.29) @@ -25487,6 +25687,44 @@ snapshots: - '@types/react' - stylelint + '@wordpress/ui@0.9.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0)': + dependencies: + '@base-ui/react': 1.3.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@wordpress/a11y': 4.43.0 + '@wordpress/compose': 7.43.0(react@18.3.1) + '@wordpress/element': 6.43.0 + '@wordpress/i18n': 6.16.0 + '@wordpress/icons': 12.0.0(react@18.3.1) + '@wordpress/keycodes': 4.43.0 + '@wordpress/primitives': 4.43.0(react@18.3.1) + '@wordpress/private-apis': 1.43.0 + '@wordpress/theme': 0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + clsx: 2.1.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - stylelint + + '@wordpress/ui@0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0)': + dependencies: + '@base-ui/react': 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@wordpress/a11y': 4.43.0 + '@wordpress/compose': 7.43.0(react@18.3.1) + '@wordpress/element': 6.43.0 + '@wordpress/i18n': 6.16.0 + '@wordpress/icons': 12.0.0(react@18.3.1) + '@wordpress/keycodes': 4.43.0 + '@wordpress/primitives': 4.43.0(react@18.3.1) + '@wordpress/private-apis': 1.43.0 + '@wordpress/theme': 0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + clsx: 2.1.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - stylelint + '@wordpress/undo-manager@1.43.0': dependencies: '@wordpress/is-shallow-equal': 5.43.0 @@ -25814,10 +26052,10 @@ snapshots: array-includes@3.1.9: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.24.2 + es-abstract: 1.24.1 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 is-string: 1.1.1 @@ -25825,51 +26063,51 @@ snapshots: array.prototype.findlast@1.2.5: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.2 + es-abstract: 1.24.1 es-errors: 1.3.0 es-object-atoms: 1.1.1 es-shim-unscopables: 1.1.0 array.prototype.findlastindex@1.2.6: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.24.2 + es-abstract: 1.24.1 es-errors: 1.3.0 es-object-atoms: 1.1.1 es-shim-unscopables: 1.1.0 array.prototype.flat@1.3.3: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.2 + es-abstract: 1.24.1 es-shim-unscopables: 1.1.0 array.prototype.flatmap@1.3.3: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.2 + es-abstract: 1.24.1 es-shim-unscopables: 1.1.0 array.prototype.tosorted@1.1.4: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.2 + es-abstract: 1.24.1 es-errors: 1.3.0 es-shim-unscopables: 1.1.0 arraybuffer.prototype.slice@1.0.4: dependencies: array-buffer-byte-length: 1.0.2 - call-bind: 1.0.9 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.2 + es-abstract: 1.24.1 es-errors: 1.3.0 get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 @@ -25908,7 +26146,7 @@ snapshots: autoprefixer@10.4.20(postcss@8.5.6): dependencies: browserslist: 4.28.2 - caniuse-lite: 1.0.30001787 + caniuse-lite: 1.0.30001784 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -25918,7 +26156,7 @@ snapshots: autoprefixer@10.4.27(postcss@8.5.6): dependencies: browserslist: 4.28.2 - caniuse-lite: 1.0.30001787 + caniuse-lite: 1.0.30001784 fraction.js: 5.3.4 picocolors: 1.1.1 postcss: 8.5.6 @@ -25930,7 +26168,15 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 - axe-core@4.11.2: {} + axe-core@4.11.1: {} + + axios@1.13.5: + dependencies: + follow-redirects: 1.15.11 + form-data: 4.0.5 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug axios@1.15.0: dependencies: @@ -25989,7 +26235,7 @@ snapshots: dependencies: '@babel/runtime': 7.29.2 cosmiconfig: 7.1.0 - resolve: 1.22.12 + resolve: 1.22.11 babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.0): dependencies: @@ -26029,9 +26275,9 @@ snapshots: dependencies: '@-xun/fs': 2.0.0 '@babel/core': 7.29.0 - core-js: 3.49.0 + core-js: 3.48.0 lodash.mergewith: 4.6.2 - prettier: 3.8.2 + prettier: 3.8.1 pretty-format: 30.3.0 rejoinder: 2.1.0 strip-indent~3: strip-indent@3.0.0 @@ -26076,39 +26322,40 @@ snapshots: bare-events@2.8.2: {} - bare-fs@4.7.0: + bare-fs@4.5.5: dependencies: bare-events: 2.8.2 bare-path: 3.0.0 - bare-stream: 2.13.0(bare-events@2.8.2) - bare-url: 2.4.0 + bare-stream: 2.8.0(bare-events@2.8.2) + bare-url: 2.3.2 fast-fifo: 1.3.2 transitivePeerDependencies: - bare-abort-controller - react-native-b4a - bare-os@3.8.7: {} + bare-os@3.7.1: {} bare-path@3.0.0: dependencies: - bare-os: 3.8.7 + bare-os: 3.7.1 - bare-stream@2.13.0(bare-events@2.8.2): + bare-stream@2.8.0(bare-events@2.8.2): dependencies: - streamx: 2.25.0 + streamx: 2.23.0 teex: 1.0.1 optionalDependencies: bare-events: 2.8.2 transitivePeerDependencies: + - bare-abort-controller - react-native-b4a - bare-url@2.4.0: + bare-url@2.3.2: dependencies: bare-path: 3.0.0 - baseline-browser-mapping@2.10.18: {} + baseline-browser-mapping@2.10.13: {} - basic-ftp@5.2.2: {} + basic-ftp@5.2.1: {} batch@0.6.1: {} @@ -26148,12 +26395,12 @@ snapshots: dependencies: get-document: 1.0.0 - brace-expansion@1.1.14: + brace-expansion@1.1.13: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.1.0: + brace-expansion@2.0.3: dependencies: balanced-match: 1.0.2 @@ -26165,17 +26412,29 @@ snapshots: dependencies: fill-range: 7.1.1 + browserslist-to-esbuild@2.1.1(browserslist@4.25.2): + dependencies: + browserslist: 4.25.2 + meow: 13.2.0 + browserslist-to-esbuild@2.1.1(browserslist@4.28.2): dependencies: browserslist: 4.28.2 meow: 13.2.0 + browserslist@4.25.2: + dependencies: + caniuse-lite: 1.0.30001784 + electron-to-chromium: 1.5.331 + node-releases: 2.0.36 + update-browserslist-db: 1.2.3(browserslist@4.25.2) + browserslist@4.28.2: dependencies: - baseline-browser-mapping: 2.10.18 - caniuse-lite: 1.0.30001787 - electron-to-chromium: 1.5.335 - node-releases: 2.0.37 + baseline-browser-mapping: 2.10.13 + caniuse-lite: 1.0.30001784 + electron-to-chromium: 1.5.331 + node-releases: 2.0.36 update-browserslist-db: 1.2.3(browserslist@4.28.2) bser@2.1.1: @@ -26208,10 +26467,10 @@ snapshots: cacheable@2.3.4: dependencies: '@cacheable/memory': 2.0.8 - '@cacheable/utils': 2.4.1 + '@cacheable/utils': 2.4.0 hookified: 1.15.1 keyv: 5.6.0 - qified: 0.9.1 + qified: 0.9.0 caching-transform@4.0.0: dependencies: @@ -26225,7 +26484,7 @@ snapshots: es-errors: 1.3.0 function-bind: 1.1.2 - call-bind@1.0.9: + call-bind@1.0.8: dependencies: call-bind-apply-helpers: 1.0.2 es-define-property: 1.0.1 @@ -26255,11 +26514,11 @@ snapshots: caniuse-api@3.0.0: dependencies: browserslist: 4.28.2 - caniuse-lite: 1.0.30001787 + caniuse-lite: 1.0.30001784 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001787: {} + caniuse-lite@1.0.30001784: {} canvas-confetti@1.9.4: {} @@ -26367,7 +26626,7 @@ snapshots: chrome-launcher@1.2.1: dependencies: - '@types/node': 24.12.2 + '@types/node': 24.12.0 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 2.0.2 @@ -26627,7 +26886,7 @@ snapshots: convert-source-map@2.0.0: {} - cookie-es@2.0.1: {} + cookie-es@2.0.0: {} cookie-signature@1.0.7: {} @@ -26641,18 +26900,18 @@ snapshots: normalize-path: 3.0.0 schema-utils: 4.3.3 serialize-javascript: 7.0.5 - tinyglobby: 0.2.16 + tinyglobby: 0.2.15 webpack: 5.105.2(webpack-cli@6.0.1) core-js-compat@3.49.0: dependencies: browserslist: 4.28.2 - core-js-pure@3.49.0: {} + core-js-pure@3.48.0: {} core-js@3.38.1: {} - core-js@3.49.0: {} + core-js@3.48.0: {} core-util-is@1.0.3: {} @@ -26705,7 +26964,7 @@ snapshots: csp_evaluator@1.1.5: {} - css-declaration-sorter@7.4.0(postcss@8.5.6): + css-declaration-sorter@7.3.1(postcss@8.5.6): dependencies: postcss: 8.5.6 @@ -26727,7 +26986,7 @@ snapshots: css-minimizer-webpack-plugin@8.0.0(webpack@5.105.2): dependencies: '@jridgewell/trace-mapping': 0.3.31 - cssnano: 7.1.4(postcss@8.5.6) + cssnano: 7.1.3(postcss@8.5.6) jest-worker: 30.3.0 postcss: 8.5.6 schema-utils: 4.3.3 @@ -26773,14 +27032,14 @@ snapshots: cssesc@3.0.0: {} - cssnano-preset-default@7.0.12(postcss@8.5.6): + cssnano-preset-default@7.0.11(postcss@8.5.6): dependencies: browserslist: 4.28.2 - css-declaration-sorter: 7.4.0(postcss@8.5.6) + css-declaration-sorter: 7.3.1(postcss@8.5.6) cssnano-utils: 5.0.1(postcss@8.5.6) postcss: 8.5.6 postcss-calc: 10.1.1(postcss@8.5.6) - postcss-colormin: 7.0.7(postcss@8.5.6) + postcss-colormin: 7.0.6(postcss@8.5.6) postcss-convert-values: 7.0.9(postcss@8.5.6) postcss-discard-comments: 7.0.6(postcss@8.5.6) postcss-discard-duplicates: 7.0.2(postcss@8.5.6) @@ -26789,7 +27048,7 @@ snapshots: postcss-merge-longhand: 7.0.5(postcss@8.5.6) postcss-merge-rules: 7.0.8(postcss@8.5.6) postcss-minify-font-values: 7.0.1(postcss@8.5.6) - postcss-minify-gradients: 7.0.2(postcss@8.5.6) + postcss-minify-gradients: 7.0.1(postcss@8.5.6) postcss-minify-params: 7.0.6(postcss@8.5.6) postcss-minify-selectors: 7.0.6(postcss@8.5.6) postcss-normalize-charset: 7.0.1(postcss@8.5.6) @@ -26811,9 +27070,9 @@ snapshots: dependencies: postcss: 8.5.6 - cssnano@7.1.4(postcss@8.5.6): + cssnano@7.1.3(postcss@8.5.6): dependencies: - cssnano-preset-default: 7.0.12(postcss@8.5.6) + cssnano-preset-default: 7.0.11(postcss@8.5.6) lilconfig: 3.1.3 postcss: 8.5.6 @@ -26824,9 +27083,9 @@ snapshots: cssstyle@5.3.7: dependencies: '@asamuzakjp/css-color': 4.1.2 - '@csstools/css-syntax-patches-for-csstree': 1.1.2(css-tree@3.2.1) + '@csstools/css-syntax-patches-for-csstree': 1.1.1(css-tree@3.2.1) css-tree: 3.2.1 - lru-cache: 11.3.3 + lru-cache: 11.2.6 csstype@3.2.3: {} @@ -26842,7 +27101,7 @@ snapshots: d3-delaunay@6.0.2: dependencies: - delaunator: 5.1.0 + delaunator: 5.0.1 d3-format@3.1.0: {} @@ -26967,7 +27226,7 @@ snapshots: deep-equal@2.2.3: dependencies: array-buffer-byte-length: 1.0.2 - call-bind: 1.0.9 + call-bind: 1.0.8 es-get-iterator: 1.1.3 get-intrinsic: 1.3.0 is-arguments: 1.2.0 @@ -27022,9 +27281,9 @@ snapshots: escodegen: 2.1.0 esprima: 4.0.1 - delaunator@5.1.0: + delaunator@5.0.1: dependencies: - robust-predicates: 3.0.3 + robust-predicates: 3.0.2 delayed-stream@1.0.0: {} @@ -27050,7 +27309,7 @@ snapshots: detect-node@2.1.0: {} - devalue@5.7.1: {} + devalue@5.6.4: {} devlop@1.1.0: dependencies: @@ -27062,7 +27321,7 @@ snapshots: diff@4.0.4: {} - diff@8.0.4: {} + diff@8.0.3: {} dns-packet@5.6.1: dependencies: @@ -27107,7 +27366,7 @@ snapshots: dependencies: domelementtype: 2.3.0 - domino@2.1.7: {} + domino@2.1.6: {} dompurify@3.3.3: optionalDependencies: @@ -27146,7 +27405,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.335: {} + electron-to-chromium@1.5.331: {} elegant-spinner@1.0.1: {} @@ -27176,10 +27435,10 @@ snapshots: dependencies: once: 1.4.0 - enhanced-resolve@5.20.1: + enhanced-resolve@5.20.0: dependencies: graceful-fs: 4.2.11 - tapable: 2.3.2 + tapable: 2.3.0 enquirer@2.4.1: dependencies: @@ -27210,12 +27469,12 @@ snapshots: error@10.4.0: {} - es-abstract@1.24.2: + es-abstract@1.24.1: dependencies: array-buffer-byte-length: 1.0.2 arraybuffer.prototype.slice: 1.0.4 available-typed-arrays: 1.0.7 - call-bind: 1.0.9 + call-bind: 1.0.8 call-bound: 1.0.4 data-view-buffer: 1.0.2 data-view-byte-length: 1.0.2 @@ -27273,7 +27532,7 @@ snapshots: es-get-iterator@1.1.3: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 get-intrinsic: 1.3.0 has-symbols: 1.1.0 is-arguments: 1.2.0 @@ -27283,12 +27542,12 @@ snapshots: isarray: 2.0.5 stop-iteration-iterator: 1.1.0 - es-iterator-helpers@1.3.2: + es-iterator-helpers@1.2.2: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.24.2 + es-abstract: 1.24.1 es-errors: 1.3.0 es-set-tostringtag: 2.1.0 function-bind: 1.1.2 @@ -27300,7 +27559,7 @@ snapshots: has-symbols: 1.1.0 internal-slot: 1.1.0 iterator.prototype: 1.1.5 - math-intrinsics: 1.1.0 + safe-array-concat: 1.1.3 es-module-lexer@1.7.0: {} @@ -27336,7 +27595,7 @@ snapshots: esbuild-sass-plugin@3.3.1(esbuild@0.27.4)(sass-embedded@1.97.3): dependencies: esbuild: 0.27.4 - resolve: 1.22.12 + resolve: 1.22.11 safe-identifier: 0.4.2 sass-embedded: 1.97.3 @@ -27404,16 +27663,16 @@ snapshots: eslint-import-context@0.1.9(unrs-resolver@1.11.1): dependencies: - get-tsconfig: 4.13.7 + get-tsconfig: 4.13.6 stable-hash-x: 0.2.0 optionalDependencies: unrs-resolver: 1.11.1 - eslint-import-resolver-node@0.3.10: + eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7 is-core-module: 2.16.1 - resolve: 2.0.0-next.6 + resolve: 1.22.11 transitivePeerDependencies: - supports-color @@ -27422,10 +27681,10 @@ snapshots: debug: 4.4.3 eslint: 9.39.4 eslint-import-context: 0.1.9(unrs-resolver@1.11.1) - get-tsconfig: 4.13.7 + get-tsconfig: 4.13.6 is-bun-module: 2.0.0 stable-hash-x: 0.2.0 - tinyglobby: 0.2.16 + tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: eslint-plugin-import: 2.32.0(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.4) @@ -27440,12 +27699,12 @@ snapshots: optionalDependencies: '@eslint/json': 1.1.0 - eslint-module-utils@2.12.1(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.4): + eslint-module-utils@2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.4): dependencies: debug: 3.2.7 optionalDependencies: eslint: 9.39.4 - eslint-import-resolver-node: 0.3.10 + eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import@2.32.0)(eslint@9.39.4) transitivePeerDependencies: - supports-color @@ -27474,8 +27733,8 @@ snapshots: debug: 3.2.7 doctrine: 2.1.0 eslint: 9.39.4 - eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.12.1(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.4) + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.4) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -27499,7 +27758,7 @@ snapshots: eslint-plugin-jest@29.15.0(eslint@9.39.4)(jest@30.3.0)(typescript@5.9.3): dependencies: - '@typescript-eslint/utils': 8.58.1(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.1(eslint@9.39.4)(typescript@5.9.3) eslint: 9.39.4 optionalDependencies: jest: 30.3.0 @@ -27533,7 +27792,7 @@ snapshots: array-includes: 3.1.9 array.prototype.flatmap: 1.3.3 ast-types-flow: 0.0.8 - axe-core: 4.11.2 + axe-core: 4.11.1 axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 @@ -27554,10 +27813,10 @@ snapshots: eslint-plugin-n@17.24.0(eslint@9.39.4)(typescript@5.9.3): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) - enhanced-resolve: 5.20.1 + enhanced-resolve: 5.20.0 eslint: 9.39.4 eslint-plugin-es-x: 7.8.0(eslint@9.39.4) - get-tsconfig: 4.13.7 + get-tsconfig: 4.13.6 globals: 15.15.0 globrex: 0.1.2 ignore: 5.3.2 @@ -27568,14 +27827,14 @@ snapshots: eslint-plugin-package-json@0.91.0(eslint@9.39.4)(jsonc-eslint-parser@3.1.0): dependencies: - '@altano/repository-tools': 2.0.3 + '@altano/repository-tools': 2.0.1 change-case: 5.4.4 detect-indent: 7.0.2 detect-newline: 4.0.1 eslint: 9.39.4 eslint-fix-utils: 0.4.2(eslint@9.39.4) jsonc-eslint-parser: 3.1.0 - package-json-validator: 1.4.0 + package-json-validator: 1.3.1 semver: 7.7.3 sort-object-keys: 2.1.0 sort-package-json: 3.6.1 @@ -27586,7 +27845,7 @@ snapshots: eslint-plugin-playwright@2.10.0(eslint@9.39.4): dependencies: eslint: 9.39.4 - globals: 17.5.0 + globals: 17.4.0 eslint-plugin-prettier@5.5.5(eslint-config-prettier@10.1.8(eslint@9.39.4))(eslint@9.39.4)(wp-prettier@3.0.3): dependencies: @@ -27600,7 +27859,7 @@ snapshots: eslint-plugin-react-hooks@7.0.1(eslint@9.39.4): dependencies: '@babel/core': 7.29.0 - '@babel/parser': 7.29.2 + '@babel/parser': 7.29.0 eslint: 9.39.4 hermes-parser: 0.25.1 zod: 3.25.76 @@ -27615,7 +27874,7 @@ snapshots: array.prototype.flatmap: 1.3.3 array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 - es-iterator-helpers: 1.3.2 + es-iterator-helpers: 1.2.2 eslint: 9.39.4 estraverse: 5.3.0 hasown: 2.0.2 @@ -27650,8 +27909,8 @@ snapshots: eslint-plugin-testing-library@7.16.0(eslint@9.39.4)(typescript@5.9.3): dependencies: - '@typescript-eslint/scope-manager': 8.58.1 - '@typescript-eslint/utils': 8.58.1(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.57.1 + '@typescript-eslint/utils': 8.57.1(eslint@9.39.4)(typescript@5.9.3) eslint: 9.39.4 transitivePeerDependencies: - supports-color @@ -27743,7 +28002,7 @@ snapshots: dependencies: estraverse: 5.3.0 - esrap@2.2.5: + esrap@2.2.3: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -27756,8 +28015,8 @@ snapshots: '@sitespeed.io/tracium': 0.3.3 commander: 12.1.0 find-chrome-bin: 2.0.4 - nanoid: 5.1.7 - puppeteer-core: 24.40.0 + nanoid: 5.1.6 + puppeteer-core: 24.38.0 transitivePeerDependencies: - bare-abort-controller - bare-buffer @@ -27784,7 +28043,7 @@ snapshots: eval@0.1.8: dependencies: - '@types/node': 24.12.2 + '@types/node': 24.12.0 require-like: 0.1.2 eventemitter3@4.0.7: {} @@ -27888,7 +28147,7 @@ snapshots: transitivePeerDependencies: - supports-color - fast-average-color@9.5.2: {} + fast-average-color@9.5.0: {} fast-content-type-parse@3.0.0: {} @@ -27947,7 +28206,7 @@ snapshots: file-entry-cache@11.1.2: dependencies: - flat-cache: 6.1.22 + flat-cache: 6.1.21 file-entry-cache@8.0.0: dependencies: @@ -28012,15 +28271,15 @@ snapshots: fix-dts-default-cjs-exports@1.0.1: dependencies: magic-string: 0.30.21 - mlly: 1.8.2 - rollup: 4.60.1 + mlly: 1.8.1 + rollup: 4.59.0 flat-cache@4.0.1: dependencies: flatted: 3.4.2 keyv: 4.5.4 - flat-cache@6.1.22: + flat-cache@6.1.21: dependencies: cacheable: 2.3.4 flatted: 3.4.2 @@ -28071,7 +28330,7 @@ snapshots: node-abort-controller: 3.1.1 schema-utils: 3.3.0 semver: 7.7.3 - tapable: 2.3.2 + tapable: 2.3.0 typescript: 5.9.3 webpack: 5.105.2(webpack-cli@6.0.1) @@ -28131,7 +28390,7 @@ snapshots: function.prototype.name@1.1.8: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 functions-have-names: 1.2.3 @@ -28192,13 +28451,13 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 - get-tsconfig@4.13.7: + get-tsconfig@4.13.6: dependencies: resolve-pkg-maps: 1.0.0 get-uri@6.0.5: dependencies: - basic-ftp: 5.2.2 + basic-ftp: 5.2.1 data-uri-to-buffer: 6.0.2 debug: 4.4.3 transitivePeerDependencies: @@ -28253,7 +28512,7 @@ snapshots: globals@16.5.0: {} - globals@17.5.0: {} + globals@17.4.0: {} globalthis@1.0.4: dependencies: @@ -28365,13 +28624,13 @@ snapshots: hookified@1.15.1: {} - hookified@2.1.1: {} + hookified@2.1.0: {} hopscotch@0.3.1: {} hosted-git-info@9.0.2: dependencies: - lru-cache: 11.3.3 + lru-cache: 11.2.6 hpack.js@2.1.6: dependencies: @@ -28633,7 +28892,7 @@ snapshots: is-array-buffer@3.0.5: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 call-bound: 1.0.4 get-intrinsic: 1.3.0 @@ -28831,7 +29090,7 @@ snapshots: isarray@2.0.5: {} - isbot@5.1.37: {} + isbot@5.1.35: {} isexe@2.0.0: {} @@ -28848,7 +29107,7 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: '@babel/core': 7.29.0 - '@babel/parser': 7.29.2 + '@babel/parser': 7.29.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.7.3 @@ -28912,7 +29171,7 @@ snapshots: '@jest/expect': 30.3.0 '@jest/test-result': 30.3.0 '@jest/types': 30.3.0 - '@types/node': 24.12.2 + '@types/node': 24.12.0 chalk: 4.1.2 co: 4.6.0 dedent: 1.7.2 @@ -28951,7 +29210,7 @@ snapshots: - supports-color - ts-node - jest-cli@30.3.0(@types/node@24.12.2): + jest-cli@30.3.0(@types/node@24.12.0): dependencies: '@jest/core': 30.3.0 '@jest/test-result': 30.3.0 @@ -28959,7 +29218,7 @@ snapshots: chalk: 4.1.2 exit-x: 0.2.2 import-local: 3.2.0 - jest-config: 30.3.0(@types/node@24.12.2) + jest-config: 30.3.0(@types/node@24.12.0) jest-util: 30.3.0 jest-validate: 30.3.0 yargs: 17.7.2 @@ -28999,7 +29258,7 @@ snapshots: - babel-plugin-macros - supports-color - jest-config@30.3.0(@types/node@24.12.2): + jest-config@30.3.0(@types/node@24.12.0): dependencies: '@babel/core': 7.29.0 '@jest/get-type': 30.1.0 @@ -29025,7 +29284,7 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 24.12.2 + '@types/node': 24.12.0 transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -29054,7 +29313,7 @@ snapshots: '@jest/environment': 30.3.0 '@jest/fake-timers': 30.3.0 '@jest/types': 30.3.0 - '@types/node': 24.12.2 + '@types/node': 24.12.0 jest-mock: 30.3.0 jest-util: 30.3.0 jest-validate: 30.3.0 @@ -29069,7 +29328,7 @@ snapshots: jest-haste-map@30.3.0: dependencies: '@jest/types': 30.3.0 - '@types/node': 24.12.2 + '@types/node': 24.12.0 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -29108,7 +29367,7 @@ snapshots: jest-mock@30.3.0: dependencies: '@jest/types': 30.3.0 - '@types/node': 24.12.2 + '@types/node': 24.12.0 jest-util: 30.3.0 jest-pnp-resolver@1.2.3(jest-resolve@30.3.0): @@ -29142,7 +29401,7 @@ snapshots: '@jest/test-result': 30.3.0 '@jest/transform': 30.3.0 '@jest/types': 30.3.0 - '@types/node': 24.12.2 + '@types/node': 24.12.0 chalk: 4.1.2 emittery: 0.13.1 exit-x: 0.2.2 @@ -29171,7 +29430,7 @@ snapshots: '@jest/test-result': 30.3.0 '@jest/transform': 30.3.0 '@jest/types': 30.3.0 - '@types/node': 24.12.2 + '@types/node': 24.12.0 chalk: 4.1.2 cjs-module-lexer: 2.2.0 collect-v8-coverage: 1.0.3 @@ -29218,7 +29477,7 @@ snapshots: jest-util@30.3.0: dependencies: '@jest/types': 30.3.0 - '@types/node': 24.12.2 + '@types/node': 24.12.0 chalk: 4.1.2 ci-info: 4.4.0 graceful-fs: 4.2.11 @@ -29237,7 +29496,7 @@ snapshots: dependencies: '@jest/test-result': 30.3.0 '@jest/types': 30.3.0 - '@types/node': 24.12.2 + '@types/node': 24.12.0 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -29246,13 +29505,13 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 24.12.2 + '@types/node': 24.12.0 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@30.3.0: dependencies: - '@types/node': 24.12.2 + '@types/node': 24.12.0 '@ungap/structured-clone': 1.3.0 jest-util: 30.3.0 merge-stream: 2.0.0 @@ -29271,12 +29530,12 @@ snapshots: - supports-color - ts-node - jest@30.3.0(@types/node@24.12.2): + jest@30.3.0(@types/node@24.12.0): dependencies: '@jest/core': 30.3.0 '@jest/types': 30.3.0 import-local: 3.2.0 - jest-cli: 30.3.0(@types/node@24.12.2) + jest-cli: 30.3.0(@types/node@24.12.0) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -29336,7 +29595,7 @@ snapshots: parse5: 8.0.0 saxes: 6.0.0 symbol-tree: 3.2.4 - tough-cookie: 6.0.1 + tough-cookie: 6.0.0 w3c-xmlserializer: 5.0.0 webidl-conversions: 8.0.1 whatwg-mimetype: 4.0.0 @@ -29363,7 +29622,7 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} - json-with-bigint@3.5.8: {} + json-with-bigint@3.5.7: {} json2php@0.0.7: {} @@ -29416,7 +29675,7 @@ snapshots: dependencies: language-subtag-registry: 0.3.23 - launch-editor@2.13.2: + launch-editor@2.13.1: dependencies: picocolors: 1.1.1 shell-quote: 1.8.3 @@ -29455,7 +29714,7 @@ snapshots: dependencies: '@paulirish/trace_engine': 0.0.59 '@sentry/node': 9.47.1 - axe-core: 4.11.2 + axe-core: 4.11.1 chrome-launcher: 1.2.1 configstore: 7.0.0 csp_evaluator: 1.1.5 @@ -29472,11 +29731,11 @@ snapshots: metaviewport-parser: 0.3.0 open: 8.4.2 parse-cache-control: 1.0.1 - puppeteer-core: 24.40.0 + puppeteer-core: 24.38.0 robots-parser: 3.0.1 speedline-core: 1.4.3 third-party-web: 0.27.0 - tldts-icann: 7.0.28 + tldts-icann: 7.0.25 ws: 7.5.10 yargs: 17.7.2 yargs-parser: 21.1.1 @@ -29733,7 +29992,7 @@ snapshots: dependencies: tslib: 2.8.1 - lru-cache@11.3.3: {} + lru-cache@11.2.6: {} lru-cache@5.1.1: dependencies: @@ -29937,20 +30196,20 @@ snapshots: dependencies: fs-monkey: 1.1.0 - memfs@4.57.1: + memfs@4.56.11: dependencies: - '@jsonjoy.com/fs-core': 4.57.1(tslib@2.8.1) - '@jsonjoy.com/fs-fsa': 4.57.1(tslib@2.8.1) - '@jsonjoy.com/fs-node': 4.57.1(tslib@2.8.1) - '@jsonjoy.com/fs-node-builtins': 4.57.1(tslib@2.8.1) - '@jsonjoy.com/fs-node-to-fsa': 4.57.1(tslib@2.8.1) - '@jsonjoy.com/fs-node-utils': 4.57.1(tslib@2.8.1) - '@jsonjoy.com/fs-print': 4.57.1(tslib@2.8.1) - '@jsonjoy.com/fs-snapshot': 4.57.1(tslib@2.8.1) + '@jsonjoy.com/fs-core': 4.56.11(tslib@2.8.1) + '@jsonjoy.com/fs-fsa': 4.56.11(tslib@2.8.1) + '@jsonjoy.com/fs-node': 4.56.11(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.56.11(tslib@2.8.1) + '@jsonjoy.com/fs-node-to-fsa': 4.56.11(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.56.11(tslib@2.8.1) + '@jsonjoy.com/fs-print': 4.56.11(tslib@2.8.1) + '@jsonjoy.com/fs-snapshot': 4.56.11(tslib@2.8.1) '@jsonjoy.com/json-pack': 1.21.0(tslib@2.8.1) '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) glob-to-regex.js: 1.2.0(tslib@2.8.1) - thingies: 2.6.0(tslib@2.8.1) + thingies: 2.5.0(tslib@2.8.1) tree-dump: 1.1.0(tslib@2.8.1) tslib: 2.8.1 @@ -30143,7 +30402,7 @@ snapshots: micromark@4.0.2: dependencies: - '@types/debug': 4.1.13 + '@types/debug': 4.1.12 debug: 4.4.3 decode-named-character-reference: 1.3.0 devlop: 1.1.0 @@ -30195,7 +30454,7 @@ snapshots: mini-css-extract-plugin@2.9.4(webpack@5.105.2): dependencies: schema-utils: 4.3.3 - tapable: 2.3.2 + tapable: 2.3.0 webpack: 5.105.2(webpack-cli@6.0.1) minimalistic-assert@1.0.1: {} @@ -30206,11 +30465,11 @@ snapshots: minimatch@3.1.5: dependencies: - brace-expansion: 1.1.14 + brace-expansion: 1.1.13 minimatch@9.0.9: dependencies: - brace-expansion: 2.1.0 + brace-expansion: 2.0.3 minimist@1.2.8: {} @@ -30220,7 +30479,7 @@ snapshots: mitt@3.0.1: {} - mlly@1.8.2: + mlly@1.8.1: dependencies: acorn: 8.16.0 pathe: 2.0.3 @@ -30264,7 +30523,7 @@ snapshots: nanoid@3.3.11: {} - nanoid@5.1.7: {} + nanoid@5.1.6: {} nanospinner@1.2.2: dependencies: @@ -30280,7 +30539,7 @@ snapshots: neo-async@2.6.2: {} - netmask@2.1.1: {} + netmask@2.0.2: {} no-case@3.0.4: dependencies: @@ -30302,7 +30561,7 @@ snapshots: dependencies: process-on-spawn: 1.1.0 - node-releases@2.0.37: {} + node-releases@2.0.36: {} normalize-package-data@8.0.0: dependencies: @@ -30374,14 +30633,14 @@ snapshots: object-is@1.1.6: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 define-properties: 1.2.1 object-keys@1.1.1: {} object.assign@4.1.7: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 es-object-atoms: 1.1.1 @@ -30390,27 +30649,27 @@ snapshots: object.entries@1.1.9: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 es-object-atoms: 1.1.1 object.fromentries@2.0.8: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.2 + es-abstract: 1.24.1 es-object-atoms: 1.1.1 object.groupby@1.0.3: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.2 + es-abstract: 1.24.1 object.values@1.2.1: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 es-object-atoms: 1.1.1 @@ -30581,7 +30840,7 @@ snapshots: pac-resolver@7.0.1: dependencies: degenerator: 5.0.1 - netmask: 2.1.1 + netmask: 2.0.2 package-directory@8.2.0: dependencies: @@ -30596,7 +30855,7 @@ snapshots: package-json-from-dist@1.0.1: {} - package-json-validator@1.4.0: + package-json-validator@1.3.1: dependencies: semver: 7.7.3 validate-npm-package-license: 3.0.4 @@ -30678,7 +30937,7 @@ snapshots: path-scurry@2.0.2: dependencies: - lru-cache: 11.3.3 + lru-cache: 11.2.6 minipass: 7.1.3 path-to-regexp@0.1.13: {} @@ -30743,10 +31002,10 @@ snapshots: pkg-types@1.3.1: dependencies: confbox: 0.1.8 - mlly: 1.8.2 + mlly: 1.8.1 pathe: 2.0.3 - pkijs@3.4.0: + pkijs@3.3.3: dependencies: '@noble/hashes': 1.4.0 asn1js: 3.0.7 @@ -30757,8 +31016,6 @@ snapshots: playwright-core@1.58.2: {} - playwright-core@1.59.1: {} - playwright-ctrf-json-reporter@0.0.26: {} playwright@1.58.2: @@ -30779,11 +31036,11 @@ snapshots: postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 - postcss-colormin@7.0.7(postcss@8.5.6): + postcss-colormin@7.0.6(postcss@8.5.6): dependencies: - '@colordx/core': 5.0.3 browserslist: 4.28.2 caniuse-api: 3.0.0 + colord: 2.9.3 postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -30875,9 +31132,9 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-minify-gradients@7.0.2(postcss@8.5.6): + postcss-minify-gradients@7.0.1(postcss@8.5.6): dependencies: - '@colordx/core': 5.0.3 + colord: 2.9.3 cssnano-utils: 5.0.1(postcss@8.5.6) postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -31012,9 +31269,9 @@ snapshots: dependencies: postcss: 8.5.6 - postcss-safe-parser@7.0.1(postcss@8.5.9): + postcss-safe-parser@7.0.1(postcss@8.5.8): dependencies: - postcss: 8.5.9 + postcss: 8.5.8 postcss-scss@4.0.9(postcss@8.5.6): dependencies: @@ -31049,7 +31306,7 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - postcss@8.5.9: + postcss@8.5.8: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 @@ -31082,7 +31339,7 @@ snapshots: prettier: wp-prettier@3.0.3 svelte: 5.53.12 - prettier@3.8.2: {} + prettier@3.8.1: {} pretty-format@27.5.1: dependencies: @@ -31127,7 +31384,7 @@ snapshots: properties@1.2.1: {} - protocol-buffers-schema@3.6.1: {} + protocol-buffers-schema@3.6.0: {} proxy-addr@2.0.7: dependencies: @@ -31160,7 +31417,7 @@ snapshots: punycode@2.3.1: {} - puppeteer-core@24.40.0: + puppeteer-core@24.38.0: dependencies: '@puppeteer/browsers': 2.13.0 chromium-bidi: 14.0.0(devtools-protocol@0.0.1581282) @@ -31189,9 +31446,9 @@ snapshots: q-flat@1.0.7: {} - qified@0.9.1: + qified@0.9.0: dependencies: - hookified: 2.1.1 + hookified: 2.1.0 qrcode.react@4.2.0(react@18.3.1): dependencies: @@ -31201,7 +31458,7 @@ snapshots: dependencies: side-channel: 1.1.0 - qs@6.15.1: + qs@6.15.0: dependencies: side-channel: 1.1.0 @@ -31252,7 +31509,7 @@ snapshots: dependencies: typescript: 5.9.3 - react-docgen@8.0.3: + react-docgen@8.0.2: dependencies: '@babel/core': 7.29.0 '@babel/traverse': 7.29.0 @@ -31262,7 +31519,7 @@ snapshots: '@types/doctrine': 0.0.9 '@types/resolve': 1.20.6 doctrine: 3.0.0 - resolve: 1.22.12 + resolve: 1.22.11 strip-indent: 4.1.1 transitivePeerDependencies: - supports-color @@ -31273,7 +31530,7 @@ snapshots: react: 18.3.1 scheduler: 0.23.2 - react-easy-crop@5.5.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-easy-crop@5.5.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: normalize-wheel: 1.0.1 react: 18.3.1 @@ -31472,7 +31729,7 @@ snapshots: rechoir@0.8.0: dependencies: - resolve: 1.22.12 + resolve: 1.22.11 redent@3.0.0: dependencies: @@ -31507,9 +31764,9 @@ snapshots: reflect.getprototypeof@1.0.10: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.2 + es-abstract: 1.24.1 es-errors: 1.3.0 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 @@ -31528,7 +31785,7 @@ snapshots: regexp.prototype.flags@1.5.4: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 define-properties: 1.2.1 es-errors: 1.3.0 get-proto: 1.0.1 @@ -31554,7 +31811,7 @@ snapshots: dependencies: '@-xun/debug': 2.0.2 chalk: 5.6.2 - core-js: 3.49.0 + core-js: 3.48.0 exit-hook: 4.0.0 release-zalgo@1.0.0: @@ -31601,7 +31858,7 @@ snapshots: dependencies: debug: 4.4.3 module-details-from-path: 1.0.4 - resolve: 1.22.12 + resolve: 1.22.11 transitivePeerDependencies: - supports-color @@ -31631,13 +31888,12 @@ snapshots: resolve-protobuf-schema@2.1.0: dependencies: - protocol-buffers-schema: 3.6.1 + protocol-buffers-schema: 3.6.0 resolve.exports@2.0.3: {} - resolve@1.22.12: + resolve@1.22.11: dependencies: - es-errors: 1.3.0 is-core-module: 2.16.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -31669,7 +31925,7 @@ snapshots: robots-parser@3.0.1: {} - robust-predicates@3.0.3: {} + robust-predicates@3.0.2: {} rolldown@1.0.0-rc.12: dependencies: @@ -31702,7 +31958,7 @@ snapshots: dependencies: chalk: 4.1.2 concat-with-sourcemaps: 1.1.0 - cssnano: 7.1.4(postcss@8.5.6) + cssnano: 7.1.3(postcss@8.5.6) import-cwd: 3.0.0 p-queue: 6.6.2 pify: 5.0.0 @@ -31710,7 +31966,7 @@ snapshots: postcss-load-config: 3.1.4(postcss@8.5.6) postcss-modules: 4.3.1(postcss@8.5.6) promise.series: 0.2.0 - resolve: 1.22.12 + resolve: 1.22.11 rollup-pluginutils: 2.8.2 safe-identifier: 0.4.2 style-inject: 0.3.0 @@ -31732,35 +31988,35 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - rollup@4.60.1: + rollup@4.59.0: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.60.1 - '@rollup/rollup-android-arm64': 4.60.1 - '@rollup/rollup-darwin-arm64': 4.60.1 - '@rollup/rollup-darwin-x64': 4.60.1 - '@rollup/rollup-freebsd-arm64': 4.60.1 - '@rollup/rollup-freebsd-x64': 4.60.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.60.1 - '@rollup/rollup-linux-arm-musleabihf': 4.60.1 - '@rollup/rollup-linux-arm64-gnu': 4.60.1 - '@rollup/rollup-linux-arm64-musl': 4.60.1 - '@rollup/rollup-linux-loong64-gnu': 4.60.1 - '@rollup/rollup-linux-loong64-musl': 4.60.1 - '@rollup/rollup-linux-ppc64-gnu': 4.60.1 - '@rollup/rollup-linux-ppc64-musl': 4.60.1 - '@rollup/rollup-linux-riscv64-gnu': 4.60.1 - '@rollup/rollup-linux-riscv64-musl': 4.60.1 - '@rollup/rollup-linux-s390x-gnu': 4.60.1 - '@rollup/rollup-linux-x64-gnu': 4.60.1 - '@rollup/rollup-linux-x64-musl': 4.60.1 - '@rollup/rollup-openbsd-x64': 4.60.1 - '@rollup/rollup-openharmony-arm64': 4.60.1 - '@rollup/rollup-win32-arm64-msvc': 4.60.1 - '@rollup/rollup-win32-ia32-msvc': 4.60.1 - '@rollup/rollup-win32-x64-gnu': 4.60.1 - '@rollup/rollup-win32-x64-msvc': 4.60.1 + '@rollup/rollup-android-arm-eabi': 4.59.0 + '@rollup/rollup-android-arm64': 4.59.0 + '@rollup/rollup-darwin-arm64': 4.59.0 + '@rollup/rollup-darwin-x64': 4.59.0 + '@rollup/rollup-freebsd-arm64': 4.59.0 + '@rollup/rollup-freebsd-x64': 4.59.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.59.0 + '@rollup/rollup-linux-arm-musleabihf': 4.59.0 + '@rollup/rollup-linux-arm64-gnu': 4.59.0 + '@rollup/rollup-linux-arm64-musl': 4.59.0 + '@rollup/rollup-linux-loong64-gnu': 4.59.0 + '@rollup/rollup-linux-loong64-musl': 4.59.0 + '@rollup/rollup-linux-ppc64-gnu': 4.59.0 + '@rollup/rollup-linux-ppc64-musl': 4.59.0 + '@rollup/rollup-linux-riscv64-gnu': 4.59.0 + '@rollup/rollup-linux-riscv64-musl': 4.59.0 + '@rollup/rollup-linux-s390x-gnu': 4.59.0 + '@rollup/rollup-linux-x64-gnu': 4.59.0 + '@rollup/rollup-linux-x64-musl': 4.59.0 + '@rollup/rollup-openbsd-x64': 4.59.0 + '@rollup/rollup-openharmony-arm64': 4.59.0 + '@rollup/rollup-win32-arm64-msvc': 4.59.0 + '@rollup/rollup-win32-ia32-msvc': 4.59.0 + '@rollup/rollup-win32-x64-gnu': 4.59.0 + '@rollup/rollup-win32-x64-msvc': 4.59.0 fsevents: 2.3.3 route-recognizer@0.3.4: {} @@ -31799,7 +32055,7 @@ snapshots: safe-array-concat@1.1.3: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 call-bound: 1.0.4 get-intrinsic: 1.3.0 has-symbols: 1.1.0 @@ -31908,7 +32164,7 @@ snapshots: sass-embedded: 1.97.3 webpack: 5.105.2(webpack-cli@6.0.1) - sax@1.6.0: {} + sax@1.5.0: {} saxes@6.0.0: dependencies: @@ -31940,7 +32196,7 @@ snapshots: selfsigned@5.5.0: dependencies: '@peculiar/x509': 1.14.3 - pkijs: 3.4.0 + pkijs: 3.3.3 semantic-ui-css@2.5.0: dependencies: @@ -31978,11 +32234,11 @@ snapshots: serialize-javascript@7.0.5: {} - seroval-plugins@1.5.2(seroval@1.5.2): + seroval-plugins@1.5.0(seroval@1.5.0): dependencies: - seroval: 1.5.2 + seroval: 1.5.0 - seroval@1.5.2: {} + seroval@1.5.0: {} serve-index@1.9.2: dependencies: @@ -32079,7 +32335,7 @@ snapshots: dependencies: yargs: 14.2.3 - side-channel-list@1.0.1: + side-channel-list@1.0.0: dependencies: es-errors: 1.3.0 object-inspect: 1.13.4 @@ -32103,7 +32359,7 @@ snapshots: dependencies: es-errors: 1.3.0 object-inspect: 1.13.4 - side-channel-list: 1.0.1 + side-channel-list: 1.0.0 side-channel-map: 1.0.1 side-channel-weakmap: 1.0.2 @@ -32131,7 +32387,7 @@ snapshots: lilconfig: 3.1.3 nanospinner: 1.2.2 picocolors: 1.1.1 - tinyglobby: 0.2.16 + tinyglobby: 0.2.15 optionalDependencies: '@size-limit/preset-app': 12.0.0(size-limit@12.0.0) @@ -32156,7 +32412,7 @@ snapshots: dot-case: 3.0.4 tslib: 2.8.1 - social-logos@3.3.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + social-logos@3.3.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: prop-types: 15.8.1 react: 18.3.1 @@ -32191,7 +32447,7 @@ snapshots: is-plain-obj: 4.1.0 semver: 7.7.3 sort-object-keys: 2.1.0 - tinyglobby: 0.2.16 + tinyglobby: 0.2.15 source-map-js@1.2.0: {} @@ -32267,7 +32523,7 @@ snapshots: speedline-core@1.4.3: dependencies: - '@types/node': 24.12.2 + '@types/node': 24.12.0 image-ssim: 0.2.0 jpeg-js: 0.4.4 @@ -32321,7 +32577,7 @@ snapshots: - react-dom - utf-8-validate - streamx@2.25.0: + streamx@2.23.0: dependencies: events-universal: 1.0.1 fast-fifo: 1.3.2 @@ -32373,16 +32629,16 @@ snapshots: string.prototype.includes@2.0.1: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.2 + es-abstract: 1.24.1 string.prototype.matchall@4.0.12: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.24.2 + es-abstract: 1.24.1 es-errors: 1.3.0 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 @@ -32396,28 +32652,28 @@ snapshots: string.prototype.repeat@1.0.0: dependencies: define-properties: 1.2.1 - es-abstract: 1.24.2 + es-abstract: 1.24.1 string.prototype.trim@1.2.10: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 call-bound: 1.0.4 define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.24.2 + es-abstract: 1.24.1 es-object-atoms: 1.1.1 has-property-descriptors: 1.0.2 string.prototype.trimend@1.0.9: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 es-object-atoms: 1.1.1 string.prototype.trimstart@1.0.8: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 define-properties: 1.2.1 es-object-atoms: 1.1.1 @@ -32534,7 +32790,7 @@ snapshots: dependencies: '@csstools/css-calc': 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) - '@csstools/css-syntax-patches-for-csstree': 1.1.2(css-tree@3.2.1) + '@csstools/css-syntax-patches-for-csstree': 1.1.3(css-tree@3.2.1) '@csstools/css-tokenizer': 4.0.0 '@csstools/media-query-list-parser': 5.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) '@csstools/selector-resolve-nested': 4.0.0(postcss-selector-parser@7.1.1) @@ -32559,8 +32815,8 @@ snapshots: micromatch: 4.0.8 normalize-path: 3.0.0 picocolors: 1.1.1 - postcss: 8.5.9 - postcss-safe-parser: 7.0.1(postcss@8.5.9) + postcss: 8.5.8 + postcss-safe-parser: 7.0.1(postcss@8.5.8) postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 string-width: 8.2.0 @@ -32576,7 +32832,7 @@ snapshots: dependencies: '@csstools/css-calc': 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) - '@csstools/css-syntax-patches-for-csstree': 1.1.2(css-tree@3.2.1) + '@csstools/css-syntax-patches-for-csstree': 1.1.3(css-tree@3.2.1) '@csstools/css-tokenizer': 4.0.0 '@csstools/media-query-list-parser': 5.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) '@csstools/selector-resolve-nested': 4.0.0(postcss-selector-parser@7.1.1) @@ -32601,8 +32857,8 @@ snapshots: micromatch: 4.0.8 normalize-path: 3.0.0 picocolors: 1.1.1 - postcss: 8.5.9 - postcss-safe-parser: 7.0.1(postcss@8.5.9) + postcss: 8.5.8 + postcss-safe-parser: 7.0.1(postcss@8.5.8) postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 string-width: 8.2.0 @@ -32623,7 +32879,7 @@ snapshots: lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.7 - tinyglobby: 0.2.16 + tinyglobby: 0.2.15 ts-interface-checker: 0.1.13 supercluster@7.1.5: @@ -32684,15 +32940,13 @@ snapshots: aria-query: 5.3.1 axobject-query: 4.1.0 clsx: 2.1.1 - devalue: 5.7.1 + devalue: 5.6.4 esm-env: 1.2.2 - esrap: 2.2.5 + esrap: 2.2.3 is-reference: 3.0.3 locate-character: 3.0.0 magic-string: 0.30.21 zimmerframe: 1.1.4 - transitivePeerDependencies: - - '@typescript-eslint/types' svg-pathdata@7.2.0: {} @@ -32713,7 +32967,7 @@ snapshots: commander: 12.1.0 debug: 4.4.3 glob: 13.0.6 - sax: 1.6.0 + sax: 1.5.0 svg-pathdata: 7.2.0 transformation-matrix: 3.1.0 yerror: 8.0.0 @@ -32728,7 +32982,7 @@ snapshots: css-what: 6.2.2 csso: 5.0.5 picocolors: 1.1.1 - sax: 1.6.0 + sax: 1.5.0 svgpath@2.6.0: {} @@ -32772,14 +33026,14 @@ snapshots: dependencies: '@tannin/plural-forms': 1.1.0 - tapable@2.3.2: {} + tapable@2.3.0: {} tar-fs@3.1.2: dependencies: pump: 3.0.4 tar-stream: 3.1.8 optionalDependencies: - bare-fs: 4.7.0 + bare-fs: 4.5.5 bare-path: 3.0.0 transitivePeerDependencies: - bare-abort-controller @@ -32789,9 +33043,9 @@ snapshots: tar-stream@3.1.8: dependencies: b4a: 1.8.0 - bare-fs: 4.7.0 + bare-fs: 4.5.5 fast-fifo: 1.3.2 - streamx: 2.25.0 + streamx: 2.23.0 transitivePeerDependencies: - bare-abort-controller - bare-buffer @@ -32799,7 +33053,7 @@ snapshots: teex@1.0.1: dependencies: - streamx: 2.25.0 + streamx: 2.23.0 transitivePeerDependencies: - bare-abort-controller - react-native-b4a @@ -32811,10 +33065,10 @@ snapshots: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 - terser: 5.46.1 + terser: 5.46.0 webpack: 5.105.2(webpack-cli@6.0.1) - terser@5.46.1: + terser@5.46.0: dependencies: '@jridgewell/source-map': 0.3.11 acorn: 8.16.0 @@ -32849,7 +33103,7 @@ snapshots: dependencies: any-promise: 1.3.0 - thingies@2.6.0(tslib@2.8.1): + thingies@2.5.0(tslib@2.8.1): dependencies: tslib: 2.8.1 @@ -32877,9 +33131,9 @@ snapshots: tinyexec@0.3.2: {} - tinyexec@1.1.1: {} + tinyexec@1.0.4: {} - tinyglobby@0.2.16: + tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 @@ -32892,15 +33146,15 @@ snapshots: tinyspy@4.0.4: {} - tldts-core@7.0.28: {} + tldts-core@7.0.25: {} - tldts-icann@7.0.28: + tldts-icann@7.0.25: dependencies: - tldts-core: 7.0.28 + tldts-core: 7.0.25 - tldts@7.0.28: + tldts@7.0.25: dependencies: - tldts-core: 7.0.28 + tldts-core: 7.0.25 tmp@0.2.5: {} @@ -32919,9 +33173,9 @@ snapshots: totalist@3.0.1: {} - tough-cookie@6.0.1: + tough-cookie@6.0.0: dependencies: - tldts: 7.0.28 + tldts: 7.0.25 tr46@6.0.0: dependencies: @@ -32939,7 +33193,7 @@ snapshots: trough@2.2.0: {} - ts-api-utils@2.5.0(typescript@5.9.3): + ts-api-utils@2.4.0(typescript@5.9.3): dependencies: typescript: 5.9.3 @@ -32982,11 +33236,11 @@ snapshots: picocolors: 1.1.1 postcss-load-config: 6.0.1(postcss@8.5.6) resolve-from: 5.0.0 - rollup: 4.60.1 + rollup: 4.59.0 source-map: 0.7.6 sucrase: 3.35.1 tinyexec: 0.3.2 - tinyglobby: 0.2.16 + tinyglobby: 0.2.15 tree-kill: 1.2.2 optionalDependencies: postcss: 8.5.6 @@ -33010,11 +33264,11 @@ snapshots: picocolors: 1.1.1 postcss-load-config: 6.0.1 resolve-from: 5.0.0 - rollup: 4.60.1 + rollup: 4.59.0 source-map: 0.7.6 sucrase: 3.35.1 tinyexec: 0.3.2 - tinyglobby: 0.2.16 + tinyglobby: 0.2.15 tree-kill: 1.2.2 optionalDependencies: typescript: 5.9.3 @@ -33032,7 +33286,7 @@ snapshots: turndown@7.1.2: dependencies: - domino: 2.1.7 + domino: 2.1.6 tus-js-client@4.2.3: dependencies: @@ -33079,7 +33333,7 @@ snapshots: typed-array-byte-length@1.0.3: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 for-each: 0.3.5 gopd: 1.2.0 has-proto: 1.2.0 @@ -33088,7 +33342,7 @@ snapshots: typed-array-byte-offset@1.0.4: dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.9 + call-bind: 1.0.8 for-each: 0.3.5 gopd: 1.2.0 has-proto: 1.2.0 @@ -33097,7 +33351,7 @@ snapshots: typed-array-length@1.0.7: dependencies: - call-bind: 1.0.9 + call-bind: 1.0.8 for-each: 0.3.5 gopd: 1.2.0 is-typed-array: 1.1.15 @@ -33146,7 +33400,7 @@ snapshots: undici-types@7.16.0: {} - undici@6.24.1: {} + undici@6.24.0: {} undici@7.24.0: {} @@ -33231,6 +33485,12 @@ snapshots: '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 + update-browserslist-db@1.2.3(browserslist@4.25.2): + dependencies: + browserslist: 4.25.2 + escalade: 3.2.0 + picocolors: 1.1.1 + update-browserslist-db@1.2.3(browserslist@4.28.2): dependencies: browserslist: 4.28.2 @@ -33348,9 +33608,9 @@ snapshots: dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 - postcss: 8.5.9 + postcss: 8.5.8 rolldown: 1.0.0-rc.12 - tinyglobby: 0.2.16 + tinyglobby: 0.2.15 optionalDependencies: fsevents: 2.3.3 sass-embedded: 1.97.3 @@ -33372,8 +33632,8 @@ snapshots: picomatch: 4.0.4 std-env: 4.0.0 tinybench: 2.9.0 - tinyexec: 1.1.1 - tinyglobby: 0.2.16 + tinyexec: 1.0.4 + tinyglobby: 0.2.15 tinyrainbow: 3.1.0 vite: 8.0.5(sass-embedded@1.97.3) why-is-node-running: 2.3.0 @@ -33464,7 +33724,7 @@ snapshots: webpack-dev-middleware@7.4.5(webpack@5.105.2): dependencies: colorette: 2.0.20 - memfs: 4.57.1 + memfs: 4.56.11 mime-types: 3.0.2 on-finished: 2.4.1 range-parser: 1.2.1 @@ -33492,7 +33752,7 @@ snapshots: graceful-fs: 4.2.11 http-proxy-middleware: 2.0.9(@types/express@4.17.25)(debug@4.4.3) ipaddr.js: 2.3.0 - launch-editor: 2.13.2 + launch-editor: 2.13.1 open: 10.2.0 p-retry: 6.2.1 schema-utils: 4.3.3 @@ -33531,7 +33791,7 @@ snapshots: graceful-fs: 4.2.11 http-proxy-middleware: 2.0.9(@types/express@4.17.25) ipaddr.js: 2.3.0 - launch-editor: 2.13.2 + launch-editor: 2.13.1 open: 10.2.0 p-retry: 6.2.1 schema-utils: 4.3.3 @@ -33572,7 +33832,7 @@ snapshots: acorn-import-phases: 1.0.4(acorn@8.16.0) browserslist: 4.28.2 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.20.1 + enhanced-resolve: 5.20.0 es-module-lexer: 2.0.0 eslint-scope: 5.1.1 events: 3.3.0 @@ -33583,7 +33843,7 @@ snapshots: mime-types: 2.1.35 neo-async: 2.6.2 schema-utils: 4.3.3 - tapable: 2.3.2 + tapable: 2.3.0 terser-webpack-plugin: 5.3.17(webpack@5.105.2) watchpack: 2.5.1 webpack-sources: 3.3.4 @@ -33649,7 +33909,7 @@ snapshots: which-typed-array@1.1.20: dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.9 + call-bind: 1.0.8 call-bound: 1.0.4 for-each: 0.3.5 get-proto: 1.0.1 @@ -33769,7 +34029,7 @@ snapshots: xml2js@0.6.2: dependencies: - sax: 1.6.0 + sax: 1.5.0 xmlbuilder: 11.0.1 xmlbuilder@11.0.1: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 473b6616f833..fb4b7dd631c8 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -73,6 +73,10 @@ ignoredOptionalDependencies: # Dependencies needing patching. patchedDependencies: + # Add wpPlugin.packageSources for cross-directory package discovery. + # Upstream PR: https://github.com/WordPress/gutenberg/pull/77226 + '@wordpress/build@0.11.0': patches/@wordpress__build@0.11.0.patch + # Vite/esbuild doesn't like the `__esModule` + `exports["default"]` pattern, it winds up double-wrapping the default. # See also https://github.com/WordPress/gutenberg/issues/39619 react-autosize-textarea: .pnpm-patches/react-autosize-textarea.patch diff --git a/projects/js-packages/number-formatters/package.json b/projects/js-packages/number-formatters/package.json index bec9b6e956c2..9c3715e8e5d2 100644 --- a/projects/js-packages/number-formatters/package.json +++ b/projects/js-packages/number-formatters/package.json @@ -24,6 +24,7 @@ "main": "./dist/cjs/index.cjs", "module": "./dist/esm/index.js", "types": "./dist/types/index.d.ts", + "wpScriptModuleExports": ".", "scripts": { "build": "pnpm run clean && pnpm run build:ts", "build:ts": "duel --dirs", From 3c5141d23716b013f83a702ac84959a9e3be07e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dami=C3=A1n=20Su=C3=A1rez?= Date: Tue, 14 Apr 2026 13:07:47 +0100 Subject: [PATCH 15/27] add patches README documenting wp-build patch methodology --- patches/README.md | 79 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 patches/README.md diff --git a/patches/README.md b/patches/README.md new file mode 100644 index 000000000000..5edfaaee3600 --- /dev/null +++ b/patches/README.md @@ -0,0 +1,79 @@ +# Patches + +pnpm patches applied at install time. Registered in `pnpm-workspace.yaml` +under `patchedDependencies` — fully automatic, no manual steps. + +## @wordpress/build@0.11.0 + +**Upstream PR:** https://github.com/WordPress/gutenberg/pull/77226 +**Upstream issue:** https://github.com/WordPress/gutenberg/issues/77225 +**Gutenberg branch:** `add/wp-build-sources-config` in `~/lab/gutenberg` + +### What it does + +Adds `wpPlugin.packageSources` to `@wordpress/build` — lets consumers +discover and compile packages outside the default `./packages/` directory. +Supports both directory paths and npm package names. + +```json +{ + "wpPlugin": { + "packageSources": [ "@automattic/number-formatters" ] + } +} +``` + +### Why a patch + +`@wordpress/build` doesn't support cross-directory package discovery. +Shared packages in Jetpack's `js-packages/` get inlined into each +consumer's bundle, duplicating code and breaking module deduplication. + +The upstream PR proposes this as a core feature. The patch mirrors it 1:1 +so we can use it now while the PR goes through Gutenberg review. + +### How it works + +The patch is a **1:1 copy** of the upstream PR diff. No Jetpack-specific +logic. The workflow: + +1. Develop in `~/lab/gutenberg` on branch `add/wp-build-sources-config` +2. Regenerate the patch: + ```bash + pnpm patch @wordpress/build@0.11.0 --edit-dir /tmp/wp-build-patch + cp ~/lab/gutenberg/packages/wp-build/lib/build.mjs /tmp/wp-build-patch/lib/ + cp ~/lab/gutenberg/packages/wp-build/lib/package-utils.mjs /tmp/wp-build-patch/lib/ + cp ~/lab/gutenberg/packages/wp-build/lib/wordpress-externals-plugin.mjs /tmp/wp-build-patch/lib/ + pnpm patch-commit /tmp/wp-build-patch + ``` +3. pnpm updates the patch file and `pnpm-lock.yaml` automatically + +### Consumer requirements + +Packages listed in `packageSources` must declare `wpScriptModuleExports` +in their `package.json` so the build system can register them as script +modules and track dependencies correctly: + +```json +{ + "wpScriptModuleExports": "." +} +``` + +### Removal + +When Gutenberg merges PR #77226 and Jetpack upgrades `@wordpress/build` +to a version that includes it: + +1. Delete `patches/@wordpress__build@0.11.0.patch` +2. Remove the entry from `pnpm-workspace.yaml` `patchedDependencies` +3. Run `pnpm install` + +### Current consumers + +- `projects/packages/premium-analytics` — first consumer (validation) + +### Potential consumers + +- `projects/packages/forms` — currently inlines shared packages, would + benefit from `packageSources` to deduplicate bundles From 54d36690717ef2329012817d4186606f43d6493e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dami=C3=A1n=20Su=C3=A1rez?= Date: Tue, 14 Apr 2026 15:08:57 +0100 Subject: [PATCH 16/27] add packageSources and number-formatters to premium-analytics Configures @automattic/number-formatters as a named source in wpPlugin.packageSources. Adds @wordpress/element and @types/react as dependencies for route components. --- pnpm-lock.yaml | 80 +++++++++++++++++-- .../packages/premium-analytics/package.json | 6 ++ .../routes/dashboard/package.json | 3 + 3 files changed, 82 insertions(+), 7 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 748adb9e53d8..6114dcec7b54 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3499,12 +3499,18 @@ importers: projects/packages/premium-analytics: dependencies: + '@automattic/number-formatters': + specifier: workspace:* + version: link:../../js-packages/number-formatters '@wordpress/boot': specifier: 0.10.0 - version: 0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + version: 0.10.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) '@wordpress/data': specifier: 10.43.0 version: 10.43.0(react@18.3.1) + '@wordpress/element': + specifier: ^6.22.0 + version: 6.43.0 '@wordpress/i18n': specifier: ^6.9.0 version: 6.16.0 @@ -3524,9 +3530,12 @@ importers: '@babel/core': specifier: 7.29.0 version: 7.29.0 + '@types/react': + specifier: 18.3.28 + version: 18.3.28 '@wordpress/build': specifier: 0.11.0 - version: 0.11.0(patch_hash=357b8fc7ce7985a4d7aa9062f5b8826762fbacf279e4d7e55a822f9842658123)(@babel/core@7.29.0)(@wordpress/boot@0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0))(@wordpress/route@0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(browserslist@4.28.2) + version: 0.11.0(patch_hash=357b8fc7ce7985a4d7aa9062f5b8826762fbacf279e4d7e55a822f9842658123)(@babel/core@7.29.0)(@wordpress/boot@0.10.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0))(@wordpress/route@0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(browserslist@4.28.2) browserslist: specifier: 4.28.2 version: 4.28.2 @@ -23678,6 +23687,40 @@ snapshots: - stylelint - supports-color + '@wordpress/boot@0.10.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0)': + dependencies: + '@wordpress/a11y': 4.43.0 + '@wordpress/admin-ui': 1.11.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + '@wordpress/base-styles': 6.19.0 + '@wordpress/commands': 1.43.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@wordpress/components': 32.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@wordpress/compose': 7.43.0(react@18.3.1) + '@wordpress/core-data': 7.43.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + '@wordpress/data': 10.43.0(react@18.3.1) + '@wordpress/editor': 14.43.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + '@wordpress/element': 6.43.0 + '@wordpress/html-entities': 4.43.0 + '@wordpress/i18n': 6.16.0 + '@wordpress/icons': 12.1.0(react@18.3.1) + '@wordpress/keyboard-shortcuts': 5.43.0(react@18.3.1) + '@wordpress/keycodes': 4.43.0 + '@wordpress/lazy-editor': 1.9.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + '@wordpress/notices': 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@wordpress/primitives': 4.43.0(react@18.3.1) + '@wordpress/private-apis': 1.43.0 + '@wordpress/route': 0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@wordpress/theme': 0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + '@wordpress/url': 4.43.0 + clsx: 2.1.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - '@emotion/is-prop-valid' + - '@types/react' + - '@types/react-dom' + - stylelint + - supports-color + '@wordpress/boot@0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0)': dependencies: '@wordpress/a11y': 4.43.0 @@ -23740,11 +23783,11 @@ snapshots: - browserslist - supports-color - '@wordpress/build@0.11.0(patch_hash=357b8fc7ce7985a4d7aa9062f5b8826762fbacf279e4d7e55a822f9842658123)(@babel/core@7.29.0)(@wordpress/boot@0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0))(@wordpress/route@0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(browserslist@4.25.2)': + '@wordpress/build@0.11.0(patch_hash=357b8fc7ce7985a4d7aa9062f5b8826762fbacf279e4d7e55a822f9842658123)(@babel/core@7.29.0)(@wordpress/boot@0.10.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0))(@wordpress/route@0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(browserslist@4.28.2)': dependencies: '@emotion/babel-plugin': 11.13.5 autoprefixer: 10.4.27(postcss@8.5.6) - browserslist-to-esbuild: 2.1.1(browserslist@4.25.2) + browserslist-to-esbuild: 2.1.1(browserslist@4.28.2) change-case: 4.1.2 chokidar: 4.0.3 cssnano: 7.1.3(postcss@8.5.6) @@ -23758,18 +23801,18 @@ snapshots: rtlcss: 4.3.0 sass-embedded: 1.97.3 optionalDependencies: - '@wordpress/boot': 0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + '@wordpress/boot': 0.10.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) '@wordpress/route': 0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - '@babel/core' - browserslist - supports-color - '@wordpress/build@0.11.0(patch_hash=357b8fc7ce7985a4d7aa9062f5b8826762fbacf279e4d7e55a822f9842658123)(@babel/core@7.29.0)(@wordpress/boot@0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0))(@wordpress/route@0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(browserslist@4.28.2)': + '@wordpress/build@0.11.0(patch_hash=357b8fc7ce7985a4d7aa9062f5b8826762fbacf279e4d7e55a822f9842658123)(@babel/core@7.29.0)(@wordpress/boot@0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0))(@wordpress/route@0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(browserslist@4.25.2)': dependencies: '@emotion/babel-plugin': 11.13.5 autoprefixer: 10.4.27(postcss@8.5.6) - browserslist-to-esbuild: 2.1.1(browserslist@4.28.2) + browserslist-to-esbuild: 2.1.1(browserslist@4.25.2) change-case: 4.1.2 chokidar: 4.0.3 cssnano: 7.1.3(postcss@8.5.6) @@ -25092,6 +25135,29 @@ snapshots: - stylelint - supports-color + '@wordpress/lazy-editor@1.9.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0)': + dependencies: + '@wordpress/asset-loader': 1.9.0 + '@wordpress/base-styles': 6.19.0 + '@wordpress/block-editor': 15.16.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + '@wordpress/blocks': 15.16.0(react@18.3.1) + '@wordpress/components': 32.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@wordpress/core-data': 7.43.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + '@wordpress/data': 10.43.0(react@18.3.1) + '@wordpress/editor': 14.43.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + '@wordpress/element': 6.43.0 + '@wordpress/global-styles-engine': 1.10.0(react@18.3.1) + '@wordpress/i18n': 6.16.0 + '@wordpress/private-apis': 1.43.0 + transitivePeerDependencies: + - '@emotion/is-prop-valid' + - '@types/react' + - '@types/react-dom' + - react + - react-dom + - stylelint + - supports-color + '@wordpress/lazy-editor@1.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0)': dependencies: '@wordpress/asset-loader': 1.9.0 diff --git a/projects/packages/premium-analytics/package.json b/projects/packages/premium-analytics/package.json index 3a5a560641c6..6d8727f7d87b 100644 --- a/projects/packages/premium-analytics/package.json +++ b/projects/packages/premium-analytics/package.json @@ -20,6 +20,9 @@ ] } ], + "packageSources": [ + "@automattic/number-formatters" + ], "externalNamespaces": { "wordpress": { "global": "wp", @@ -28,8 +31,10 @@ } }, "dependencies": { + "@automattic/number-formatters": "workspace:*", "@wordpress/boot": "0.10.0", "@wordpress/data": "10.43.0", + "@wordpress/element": "^6.22.0", "@wordpress/i18n": "^6.9.0", "@wordpress/icons": "^12.0.0", "@wordpress/route": "0.9.0", @@ -38,6 +43,7 @@ }, "devDependencies": { "@babel/core": "7.29.0", + "@types/react": "18.3.28", "@wordpress/build": "0.11.0", "browserslist": "4.28.2" } diff --git a/projects/packages/premium-analytics/routes/dashboard/package.json b/projects/packages/premium-analytics/routes/dashboard/package.json index e71390452278..6fc64ed66e91 100644 --- a/projects/packages/premium-analytics/routes/dashboard/package.json +++ b/projects/packages/premium-analytics/routes/dashboard/package.json @@ -6,6 +6,9 @@ "page": "jetpack-premium-analytics" }, "dependencies": { + "@automattic/number-formatters": "workspace:*", + "@types/react": "18.3.28", + "@wordpress/element": "^6.22.0", "@wordpress/i18n": "^6.9.0" } } From d444f710cbbba79798bda207cc96c39ca7cc8e19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dami=C3=A1n=20Su=C3=A1rez?= Date: Tue, 14 Apr 2026 15:09:19 +0100 Subject: [PATCH 17/27] add static and dynamic import examples for number-formatters Demonstrates both import patterns in the dashboard route: static import for formatNumber, dynamic import() for formatNumberCompact. Validates packageSources externalization and module dependency tracking in .asset.php. --- .../changelog/update-wp-build-package-sources | 5 ++++ .../routes/dashboard/stage.tsx | 28 +++++++++++++++++-- 2 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 projects/js-packages/number-formatters/changelog/update-wp-build-package-sources diff --git a/projects/js-packages/number-formatters/changelog/update-wp-build-package-sources b/projects/js-packages/number-formatters/changelog/update-wp-build-package-sources new file mode 100644 index 000000000000..e402479c01c1 --- /dev/null +++ b/projects/js-packages/number-formatters/changelog/update-wp-build-package-sources @@ -0,0 +1,5 @@ +Significance: patch +Type: changed +Comment: Patch significance. + +Add wpScriptModuleExports field for wp-build script module support diff --git a/projects/packages/premium-analytics/routes/dashboard/stage.tsx b/projects/packages/premium-analytics/routes/dashboard/stage.tsx index 034a332bc4eb..7611e61bd063 100644 --- a/projects/packages/premium-analytics/routes/dashboard/stage.tsx +++ b/projects/packages/premium-analytics/routes/dashboard/stage.tsx @@ -1,10 +1,34 @@ +import { formatNumber } from '@automattic/number-formatters'; +import { useState, useEffect } from '@wordpress/element'; import { __ } from '@wordpress/i18n'; -export const stage = () => { +const samplePageViews = 1234567; +const sampleUniqueVisitors = 98432; + +const Stage = () => { + const [ lazyFormatted, setLazyFormatted ] = useState< string >(); + + useEffect( () => { + import( '@automattic/number-formatters' ).then( ( { formatNumberCompact } ) => { + setLazyFormatted( formatNumberCompact( sampleUniqueVisitors ) ); + } ); + }, [] ); + return (

{ __( 'Analytics', 'jetpack-premium-analytics' ) }

-

{ __( 'Welcome to the Analytics dashboard.', 'jetpack-premium-analytics' ) }

+ +

+ { __( 'Unique visitors (dynamic):', 'jetpack-premium-analytics' ) }{ ' ' } + { lazyFormatted ?? '…' } +

+ +

+ { __( 'Total page views (static):', 'jetpack-premium-analytics' ) }{ ' ' } + { formatNumber( samplePageViews ) } +

); }; + +export { Stage as stage }; From 2787d7e097a415b8fbb2c7dffe4f099d9e881b27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dami=C3=A1n=20Su=C3=A1rez?= Date: Tue, 14 Apr 2026 19:08:28 +0100 Subject: [PATCH 18/27] move wp-build patch to .pnpm-patches and remove patches dir --- .../@wordpress__build@0.11.0.patch | 0 patches/README.md | 79 ------------------- pnpm-lock.yaml | 2 +- pnpm-workspace.yaml | 2 +- 4 files changed, 2 insertions(+), 81 deletions(-) rename {patches => .pnpm-patches}/@wordpress__build@0.11.0.patch (100%) delete mode 100644 patches/README.md diff --git a/patches/@wordpress__build@0.11.0.patch b/.pnpm-patches/@wordpress__build@0.11.0.patch similarity index 100% rename from patches/@wordpress__build@0.11.0.patch rename to .pnpm-patches/@wordpress__build@0.11.0.patch diff --git a/patches/README.md b/patches/README.md deleted file mode 100644 index 5edfaaee3600..000000000000 --- a/patches/README.md +++ /dev/null @@ -1,79 +0,0 @@ -# Patches - -pnpm patches applied at install time. Registered in `pnpm-workspace.yaml` -under `patchedDependencies` — fully automatic, no manual steps. - -## @wordpress/build@0.11.0 - -**Upstream PR:** https://github.com/WordPress/gutenberg/pull/77226 -**Upstream issue:** https://github.com/WordPress/gutenberg/issues/77225 -**Gutenberg branch:** `add/wp-build-sources-config` in `~/lab/gutenberg` - -### What it does - -Adds `wpPlugin.packageSources` to `@wordpress/build` — lets consumers -discover and compile packages outside the default `./packages/` directory. -Supports both directory paths and npm package names. - -```json -{ - "wpPlugin": { - "packageSources": [ "@automattic/number-formatters" ] - } -} -``` - -### Why a patch - -`@wordpress/build` doesn't support cross-directory package discovery. -Shared packages in Jetpack's `js-packages/` get inlined into each -consumer's bundle, duplicating code and breaking module deduplication. - -The upstream PR proposes this as a core feature. The patch mirrors it 1:1 -so we can use it now while the PR goes through Gutenberg review. - -### How it works - -The patch is a **1:1 copy** of the upstream PR diff. No Jetpack-specific -logic. The workflow: - -1. Develop in `~/lab/gutenberg` on branch `add/wp-build-sources-config` -2. Regenerate the patch: - ```bash - pnpm patch @wordpress/build@0.11.0 --edit-dir /tmp/wp-build-patch - cp ~/lab/gutenberg/packages/wp-build/lib/build.mjs /tmp/wp-build-patch/lib/ - cp ~/lab/gutenberg/packages/wp-build/lib/package-utils.mjs /tmp/wp-build-patch/lib/ - cp ~/lab/gutenberg/packages/wp-build/lib/wordpress-externals-plugin.mjs /tmp/wp-build-patch/lib/ - pnpm patch-commit /tmp/wp-build-patch - ``` -3. pnpm updates the patch file and `pnpm-lock.yaml` automatically - -### Consumer requirements - -Packages listed in `packageSources` must declare `wpScriptModuleExports` -in their `package.json` so the build system can register them as script -modules and track dependencies correctly: - -```json -{ - "wpScriptModuleExports": "." -} -``` - -### Removal - -When Gutenberg merges PR #77226 and Jetpack upgrades `@wordpress/build` -to a version that includes it: - -1. Delete `patches/@wordpress__build@0.11.0.patch` -2. Remove the entry from `pnpm-workspace.yaml` `patchedDependencies` -3. Run `pnpm install` - -### Current consumers - -- `projects/packages/premium-analytics` — first consumer (validation) - -### Potential consumers - -- `projects/packages/forms` — currently inlines shared packages, would - benefit from `packageSources` to deduplicate bundles diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6114dcec7b54..e6661827149c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,7 +9,7 @@ pnpmfileChecksum: sha256-Pzf3LTskBBhaUVLGp1XcevWWCvkOS5YwOLAhGz0XPU4= patchedDependencies: '@wordpress/build@0.11.0': hash: 357b8fc7ce7985a4d7aa9062f5b8826762fbacf279e4d7e55a822f9842658123 - path: patches/@wordpress__build@0.11.0.patch + path: .pnpm-patches/@wordpress__build@0.11.0.patch react-autosize-textarea: hash: 5c09e1dee59caaaba3871f9d722f93e56b41169db486b059597e8f8c788aa464 path: .pnpm-patches/react-autosize-textarea.patch diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index fb4b7dd631c8..ff8cb3acda9d 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -75,7 +75,7 @@ patchedDependencies: # Add wpPlugin.packageSources for cross-directory package discovery. # Upstream PR: https://github.com/WordPress/gutenberg/pull/77226 - '@wordpress/build@0.11.0': patches/@wordpress__build@0.11.0.patch + '@wordpress/build@0.11.0': .pnpm-patches/@wordpress__build@0.11.0.patch # Vite/esbuild doesn't like the `__esModule` + `exports["default"]` pattern, it winds up double-wrapping the default. # See also https://github.com/WordPress/gutenberg/issues/39619 From e9b7a96d8f2d1504b715cc73406e918bd465dd30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dami=C3=A1n=20Su=C3=A1rez?= Date: Wed, 15 Apr 2026 17:51:51 +0100 Subject: [PATCH 19/27] fix pnpm-lock.yaml versions after rebase --- pnpm-lock.yaml | 313 +++++++++++-------------------------------------- 1 file changed, 71 insertions(+), 242 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e6661827149c..89b54b02c447 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -220,8 +220,8 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.0.0 - version: 12.0.0(react@18.3.1) + specifier: 12.1.0 + version: 12.1.0(react@18.3.1) '@wordpress/primitives': specifier: 4.43.0 version: 4.43.0(react@18.3.1) @@ -413,8 +413,8 @@ importers: specifier: 0.10.0 version: 0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) '@wordpress/ui': - specifier: 0.9.0 - version: 0.9.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + specifier: 0.10.0 + version: 0.10.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) clsx: specifier: 2.1.1 version: 2.1.1 @@ -561,8 +561,8 @@ importers: specifier: ^7 version: 7.29.2 '@wordpress/admin-ui': - specifier: 1.10.0 - version: 1.10.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + specifier: 1.11.0 + version: 1.11.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) '@wordpress/browserslist-config': specifier: 6.43.0 version: 6.43.0 @@ -585,8 +585,8 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.0.0 - version: 12.0.0(react@18.3.1) + specifier: 12.1.0 + version: 12.1.0(react@18.3.1) '@wordpress/notices': specifier: 5.43.0 version: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -594,8 +594,8 @@ importers: specifier: 0.10.0 version: 0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) '@wordpress/ui': - specifier: 0.9.0 - version: 0.9.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + specifier: 0.10.0 + version: 0.10.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) clsx: specifier: 2.1.1 version: 2.1.1 @@ -730,8 +730,8 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.0.0 - version: 12.0.0(react@18.3.1) + specifier: 12.1.0 + version: 12.1.0(react@18.3.1) '@wordpress/url': specifier: 4.43.0 version: 4.43.0 @@ -1100,8 +1100,8 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.0.0 - version: 12.0.0(react@18.3.1) + specifier: 12.1.0 + version: 12.1.0(react@18.3.1) clsx: specifier: 2.1.1 version: 2.1.1 @@ -1326,8 +1326,8 @@ importers: specifier: 32.5.0 version: 32.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@wordpress/dataviews': - specifier: 13.1.0 - version: 13.1.0(@types/react@18.3.28)(react@18.3.1)(stylelint@17.7.0) + specifier: 14.0.0 + version: 14.0.0(@types/react@18.3.28)(react@18.3.1)(stylelint@17.7.0) '@wordpress/date': specifier: 5.43.0 version: 5.43.0 @@ -1338,8 +1338,8 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.0.0 - version: 12.0.0(react@18.3.1) + specifier: 12.1.0 + version: 12.1.0(react@18.3.1) '@wordpress/theme': specifier: 0.10.0 version: 0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) @@ -1965,8 +1965,8 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.0.0 - version: 12.0.0(react@18.3.1) + specifier: 12.1.0 + version: 12.1.0(react@18.3.1) moment: specifier: 2.30.1 version: 2.30.1 @@ -2071,8 +2071,8 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.0.0 - version: 12.0.0(react@18.3.1) + specifier: 12.1.0 + version: 12.1.0(react@18.3.1) '@wordpress/plugins': specifier: 7.43.0 version: 7.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -2360,8 +2360,8 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.0.0 - version: 12.0.0(react@18.3.1) + specifier: 12.1.0 + version: 12.1.0(react@18.3.1) '@wordpress/keycodes': specifier: 4.43.0 version: 4.43.0 @@ -2445,8 +2445,8 @@ importers: specifier: 0.16.0 version: 0.16.0 '@wordpress/admin-ui': - specifier: 1.10.0 - version: 1.10.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + specifier: 1.11.0 + version: 1.11.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) '@wordpress/base-styles': specifier: 6.19.0 version: 6.19.0 @@ -2472,8 +2472,8 @@ importers: specifier: 10.43.0 version: 10.43.0(react@18.3.1) '@wordpress/dataviews': - specifier: 13.1.0 - version: 13.1.0(@types/react@18.3.28)(react@18.3.1)(stylelint@17.7.0) + specifier: 14.0.0 + version: 14.0.0(@types/react@18.3.28)(react@18.3.1)(stylelint@17.7.0) '@wordpress/dom': specifier: 4.43.0 version: 4.43.0 @@ -2496,8 +2496,8 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.0.0 - version: 12.0.0(react@18.3.1) + specifier: 12.1.0 + version: 12.1.0(react@18.3.1) '@wordpress/interactivity': specifier: 6.43.0 version: 6.43.0 @@ -2520,8 +2520,8 @@ importers: specifier: 0.10.0 version: 0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) '@wordpress/ui': - specifier: 0.9.0 - version: 0.9.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + specifier: 0.10.0 + version: 0.10.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) '@wordpress/url': specifier: 4.43.0 version: 4.43.0 @@ -2823,8 +2823,8 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.0.0 - version: 12.0.0(react@18.3.1) + specifier: 12.1.0 + version: 12.1.0(react@18.3.1) '@wordpress/keycodes': specifier: 4.43.0 version: 4.43.0 @@ -3101,8 +3101,8 @@ importers: specifier: 10.43.0 version: 10.43.0(react@18.3.1) '@wordpress/dataviews': - specifier: 13.1.0 - version: 13.1.0(@types/react@18.3.28)(react@18.3.1)(stylelint@17.7.0) + specifier: 14.0.0 + version: 14.0.0(@types/react@18.3.28)(react@18.3.1)(stylelint@17.7.0) '@wordpress/date': specifier: 5.43.0 version: 5.43.0 @@ -3113,8 +3113,8 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.0.0 - version: 12.0.0(react@18.3.1) + specifier: 12.1.0 + version: 12.1.0(react@18.3.1) '@wordpress/theme': specifier: 0.10.0 version: 0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) @@ -3240,8 +3240,8 @@ importers: specifier: 32.5.0 version: 32.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@wordpress/dataviews': - specifier: 13.1.0 - version: 13.1.0(@types/react@18.3.28)(react@18.3.1)(stylelint@17.7.0) + specifier: 14.0.0 + version: 14.0.0(@types/react@18.3.28)(react@18.3.1)(stylelint@17.7.0) '@wordpress/element': specifier: 6.43.0 version: 6.43.0 @@ -3255,8 +3255,8 @@ importers: specifier: 0.10.0 version: 0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) '@wordpress/ui': - specifier: 0.9.0 - version: 0.9.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + specifier: 0.10.0 + version: 0.10.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) '@wordpress/url': specifier: 4.43.0 version: 4.43.0 @@ -3598,8 +3598,8 @@ importers: specifier: 10.43.0 version: 10.43.0(react@18.3.1) '@wordpress/dataviews': - specifier: 13.1.0 - version: 13.1.0(@types/react@18.3.28)(react@18.3.1)(stylelint@17.7.0) + specifier: 14.0.0 + version: 14.0.0(@types/react@18.3.28)(react@18.3.1)(stylelint@17.7.0) '@wordpress/date': specifier: 5.43.0 version: 5.43.0 @@ -3622,11 +3622,11 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.0.0 - version: 12.0.0(react@18.3.1) + specifier: 12.1.0 + version: 12.1.0(react@18.3.1) '@wordpress/interface': - specifier: 9.27.0 - version: 9.27.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + specifier: 9.28.0 + version: 9.28.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) '@wordpress/media-utils': specifier: 5.43.0 version: 5.43.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) @@ -3643,8 +3643,8 @@ importers: specifier: 0.10.0 version: 0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) '@wordpress/ui': - specifier: 0.9.0 - version: 0.9.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + specifier: 0.10.0 + version: 0.10.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) '@wordpress/url': specifier: 4.43.0 version: 4.43.0 @@ -3885,8 +3885,8 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.0.0 - version: 12.0.0(react@18.3.1) + specifier: 12.1.0 + version: 12.1.0(react@18.3.1) '@wordpress/url': specifier: 4.43.0 version: 4.43.0 @@ -4032,8 +4032,8 @@ importers: specifier: 10.43.0 version: 10.43.0(react@18.3.1) '@wordpress/dataviews': - specifier: 13.1.0 - version: 13.1.0(react@18.3.1)(stylelint@17.7.0) + specifier: 14.0.0 + version: 14.0.0(react@18.3.1)(stylelint@17.7.0) '@wordpress/element': specifier: 6.43.0 version: 6.43.0 @@ -4161,8 +4161,8 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.0.0 - version: 12.0.0(react@18.3.1) + specifier: 12.1.0 + version: 12.1.0(react@18.3.1) '@wordpress/notices': specifier: 5.43.0 version: 5.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -4334,8 +4334,8 @@ importers: specifier: ^0.10.0 version: 0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) '@wordpress/ui': - specifier: ^0.9.0 - version: 0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) + specifier: ^0.10.0 + version: 0.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) webpack: specifier: ^5.104.1 version: 5.105.2(webpack-cli@6.0.1) @@ -4824,8 +4824,8 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.0.0 - version: 12.0.0(react@18.3.1) + specifier: 12.1.0 + version: 12.1.0(react@18.3.1) '@wordpress/theme': specifier: 0.9.0 version: 0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) @@ -5134,8 +5134,8 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.0.0 - version: 12.0.0(react@18.3.1) + specifier: 12.1.0 + version: 12.1.0(react@18.3.1) '@wordpress/plugins': specifier: 7.43.0 version: 7.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -5145,6 +5145,9 @@ importers: '@wordpress/rich-text': specifier: 7.43.0 version: 7.43.0(react@18.3.1) + '@wordpress/ui': + specifier: 0.10.0 + version: 0.10.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) '@wordpress/url': specifier: 4.43.0 version: 4.43.0 @@ -5541,8 +5544,8 @@ importers: specifier: 6.16.0 version: 6.16.0 '@wordpress/icons': - specifier: 12.0.0 - version: 12.0.0(react@18.3.1) + specifier: 12.1.0 + version: 12.1.0(react@18.3.1) '@wordpress/url': specifier: 4.43.0 version: 4.43.0 @@ -10467,12 +10470,6 @@ packages: peerDependencies: react: ^18.0.0 - '@wordpress/dataviews@13.1.0': - resolution: {integrity: sha512-nZQux6jhcgKQhkD+eBwC9YojA2xWerutShUvPWyBu6mLhArGWUSYniuX1An8rhSMkm6nwju7Omgui7BdvqJhhw==} - engines: {node: '>=18.12.0', npm: '>=8.19.2'} - peerDependencies: - react: ^18.0.0 - '@wordpress/dataviews@14.0.0': resolution: {integrity: sha512-DTfJiwNL+Yt60P4BmLvYLjpd/QeOmJJry/DRdMqcPyt6w98rRFwr32hcbn0FwVkADJXmW8l2Y2vczf01StnZJw==} engines: {node: '>=18.12.0', npm: '>=8.19.2'} @@ -10635,13 +10632,6 @@ packages: resolution: {integrity: sha512-v+7isar/S6XECBF3NbRr3+PW8lSGo+c8nt80NHqb+LIPQmG6/0xZ7GourL7OZLkY1cRSSqvSokV6zwQ2kfmRhg==} engines: {node: '>=18.12.0', npm: '>=8.19.2'} - '@wordpress/interface@9.27.0': - resolution: {integrity: sha512-nKjrAi2grZM7of3HP68orGrQJB2nreWrtuxcJ8A1rWzpskQNzInPzRTbH0XcfN0ifmaLeI84h+kZaHrW4z6Bnw==} - engines: {node: '>=18.12.0', npm: '>=8.19.2'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - '@wordpress/interface@9.28.0': resolution: {integrity: sha512-JaxQbL38DeFG7sniv5ENKnJY4emzEw+JxVjU6oVBHUh7vHN6DoMTBIUDQdluUpaYexQ3lLqq3eQODep0vX70oQ==} engines: {node: '>=18.12.0', npm: '>=8.19.2'} @@ -18032,7 +18022,7 @@ snapshots: '@automattic/api-core@1.0.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0)': dependencies: '@automattic/shopping-cart': 2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@wordpress/dataviews': 13.1.0(@types/react@18.3.28)(react@18.3.1)(stylelint@17.7.0) + '@wordpress/dataviews': 14.0.0(@types/react@18.3.28)(react@18.3.1)(stylelint@17.7.0) '@wordpress/i18n': 6.16.0 he: 1.2.0 tslib: 2.8.1 @@ -18230,7 +18220,7 @@ snapshots: '@wordpress/data': 10.43.0(react@18.3.1) '@wordpress/element': 6.43.0 '@wordpress/i18n': 6.16.0 - '@wordpress/icons': 12.0.0(react@18.3.1) + '@wordpress/icons': 12.1.0(react@18.3.1) '@wordpress/url': 4.43.0 clsx: 2.1.1 debug: 4.4.3 @@ -18294,7 +18284,7 @@ snapshots: '@wordpress/compose': 7.43.0(react@18.3.1) '@wordpress/element': 6.43.0 '@wordpress/i18n': 6.16.0 - '@wordpress/icons': 12.0.0(react@18.3.1) + '@wordpress/icons': 12.1.0(react@18.3.1) '@wordpress/primitives': 4.43.0(react@18.3.1) clsx: 2.1.1 date-fns: 4.1.0 @@ -23147,24 +23137,6 @@ snapshots: '@wordpress/dom-ready': 4.43.0 '@wordpress/i18n': 6.16.0 - '@wordpress/admin-ui@1.10.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0)': - dependencies: - '@wordpress/base-styles': 6.19.0 - '@wordpress/components': 32.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@wordpress/element': 6.43.0 - '@wordpress/i18n': 6.16.0 - '@wordpress/private-apis': 1.43.0 - '@wordpress/route': 0.8.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@wordpress/ui': 0.9.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) - clsx: 2.1.1 - react: 18.3.1 - transitivePeerDependencies: - - '@emotion/is-prop-valid' - - '@types/react' - - react-dom - - stylelint - - supports-color - '@wordpress/admin-ui@1.10.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0)': dependencies: '@wordpress/base-styles': 6.19.0 @@ -24092,106 +24064,6 @@ snapshots: rememo: 4.0.2 use-memo-one: 1.1.3(react@18.3.1) - '@wordpress/dataviews@13.1.0(@types/react@18.3.28)(react@18.3.1)(stylelint@17.7.0)': - dependencies: - '@ariakit/react': 0.4.22(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@wordpress/base-styles': 6.19.0 - '@wordpress/components': 32.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@wordpress/compose': 7.43.0(react@18.3.1) - '@wordpress/data': 10.43.0(react@18.3.1) - '@wordpress/deprecated': 4.43.0 - '@wordpress/element': 6.43.0 - '@wordpress/i18n': 6.16.0 - '@wordpress/icons': 12.0.0(react@18.3.1) - '@wordpress/keycodes': 4.43.0 - '@wordpress/primitives': 4.43.0(react@18.3.1) - '@wordpress/private-apis': 1.43.0 - '@wordpress/ui': 0.9.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) - '@wordpress/warning': 3.43.0 - clsx: 2.1.1 - react: 18.3.1 - remove-accents: 0.5.0 - optionalDependencies: - '@base-ui/react': 1.3.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@emotion/cache': 11.14.0 - '@emotion/css': 11.13.5 - '@emotion/react': 11.14.0(@types/react@18.3.28)(react@18.3.1) - '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) - '@emotion/utils': 1.4.2 - '@floating-ui/react-dom': 2.0.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@use-gesture/react': 10.3.1(react@18.3.1) - '@wordpress/date': 5.43.0 - '@wordpress/hooks': 4.43.0 - change-case: 4.1.2 - colord: 2.9.3 - date-fns: 4.1.0 - deepmerge: 4.3.1 - fast-deep-equal: 3.1.3 - framer-motion: 11.18.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - highlight-words-core: 1.2.3 - is-plain-object: 5.0.0 - memize: 2.1.1 - react-colorful: 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-day-picker: 9.14.0(react@18.3.1) - react-dom: 18.3.1(react@18.3.1) - use-memo-one: 1.1.3(react@18.3.1) - uuid: 9.0.1(patch_hash=87a713b75995ed86c0ecd0cadfd1b9f85092ca16fdff7132ff98b62fc3cf2db0) - transitivePeerDependencies: - - '@emotion/is-prop-valid' - - '@types/react' - - stylelint - - supports-color - - '@wordpress/dataviews@13.1.0(react@18.3.1)(stylelint@17.7.0)': - dependencies: - '@ariakit/react': 0.4.22(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@wordpress/base-styles': 6.19.0 - '@wordpress/components': 32.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@wordpress/compose': 7.43.0(react@18.3.1) - '@wordpress/data': 10.43.0(react@18.3.1) - '@wordpress/deprecated': 4.43.0 - '@wordpress/element': 6.43.0 - '@wordpress/i18n': 6.16.0 - '@wordpress/icons': 12.0.0(react@18.3.1) - '@wordpress/keycodes': 4.43.0 - '@wordpress/primitives': 4.43.0(react@18.3.1) - '@wordpress/private-apis': 1.43.0 - '@wordpress/ui': 0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) - '@wordpress/warning': 3.43.0 - clsx: 2.1.1 - react: 18.3.1 - remove-accents: 0.5.0 - optionalDependencies: - '@base-ui/react': 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@emotion/cache': 11.14.0 - '@emotion/css': 11.13.5 - '@emotion/react': 11.14.0(react@18.3.1) - '@emotion/styled': 11.14.1(@emotion/react@11.14.0(react@18.3.1))(react@18.3.1) - '@emotion/utils': 1.4.2 - '@floating-ui/react-dom': 2.0.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@use-gesture/react': 10.3.1(react@18.3.1) - '@wordpress/date': 5.43.0 - '@wordpress/hooks': 4.43.0 - change-case: 4.1.2 - colord: 2.9.3 - date-fns: 4.1.0 - deepmerge: 4.3.1 - fast-deep-equal: 3.1.3 - framer-motion: 11.18.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - highlight-words-core: 1.2.3 - is-plain-object: 5.0.0 - memize: 2.1.1 - react-colorful: 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-day-picker: 9.14.0(react@18.3.1) - react-dom: 18.3.1(react@18.3.1) - use-memo-one: 1.1.3(react@18.3.1) - uuid: 9.0.1(patch_hash=87a713b75995ed86c0ecd0cadfd1b9f85092ca16fdff7132ff98b62fc3cf2db0) - transitivePeerDependencies: - - '@emotion/is-prop-valid' - - '@types/react' - - stylelint - - supports-color - '@wordpress/dataviews@14.0.0(@types/react@18.3.28)(react@18.3.1)(stylelint@17.7.0)': dependencies: '@ariakit/react': 0.4.22(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -25017,30 +24889,6 @@ snapshots: '@preact/signals': 1.3.4(preact@10.28.2) preact: 10.28.2 - '@wordpress/interface@9.27.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0)': - dependencies: - '@wordpress/a11y': 4.43.0 - '@wordpress/admin-ui': 1.10.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) - '@wordpress/base-styles': 6.19.0 - '@wordpress/components': 32.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@wordpress/compose': 7.43.0(react@18.3.1) - '@wordpress/data': 10.43.0(react@18.3.1) - '@wordpress/deprecated': 4.43.0 - '@wordpress/element': 6.43.0 - '@wordpress/i18n': 6.16.0 - '@wordpress/icons': 12.0.0(react@18.3.1) - '@wordpress/plugins': 7.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@wordpress/preferences': 4.43.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@wordpress/viewport': 6.43.0(react@18.3.1) - clsx: 2.1.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - transitivePeerDependencies: - - '@emotion/is-prop-valid' - - '@types/react' - - stylelint - - supports-color - '@wordpress/interface@9.28.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0)': dependencies: '@wordpress/a11y': 4.43.0 @@ -25753,25 +25601,6 @@ snapshots: - '@types/react' - stylelint - '@wordpress/ui@0.9.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0)': - dependencies: - '@base-ui/react': 1.3.0(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@wordpress/a11y': 4.43.0 - '@wordpress/compose': 7.43.0(react@18.3.1) - '@wordpress/element': 6.43.0 - '@wordpress/i18n': 6.16.0 - '@wordpress/icons': 12.0.0(react@18.3.1) - '@wordpress/keycodes': 4.43.0 - '@wordpress/primitives': 4.43.0(react@18.3.1) - '@wordpress/private-apis': 1.43.0 - '@wordpress/theme': 0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0) - clsx: 2.1.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - transitivePeerDependencies: - - '@types/react' - - stylelint - '@wordpress/ui@0.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@17.7.0)': dependencies: '@base-ui/react': 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -25779,7 +25608,7 @@ snapshots: '@wordpress/compose': 7.43.0(react@18.3.1) '@wordpress/element': 6.43.0 '@wordpress/i18n': 6.16.0 - '@wordpress/icons': 12.0.0(react@18.3.1) + '@wordpress/icons': 12.1.0(react@18.3.1) '@wordpress/keycodes': 4.43.0 '@wordpress/primitives': 4.43.0(react@18.3.1) '@wordpress/private-apis': 1.43.0 From bfa35ad5924ee6f8a281141ee1e2a5da072ba944 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dami=C3=A1n=20Su=C3=A1rez?= Date: Tue, 14 Apr 2026 12:32:55 +0100 Subject: [PATCH 20/27] suppress phan warning for wp-build generated function --- projects/packages/analytics/.phan/baseline.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/packages/analytics/.phan/baseline.php b/projects/packages/analytics/.phan/baseline.php index c7aa9a4dd4f3..8f144450d531 100644 --- a/projects/packages/analytics/.phan/baseline.php +++ b/projects/packages/analytics/.phan/baseline.php @@ -6,7 +6,9 @@ */ return [ // Currently, file_suppressions and directory_suppressions are the only supported suppressions - 'file_suppressions' => [], + 'file_suppressions' => [ + 'src/class-analytics.php' => [ 'PhanUndeclaredFunction' ], + ], // 'directory_suppressions' => ['src/directory_name' => ['PhanIssueName1', 'PhanIssueName2']] can be manually added if needed. // (directory_suppressions will currently be ignored by subsequent calls to --save-baseline, but may be preserved in future Phan releases) ]; From a0d42326c4e25731d88b4edcfed20d40b019433d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dami=C3=A1n=20Su=C3=A1rez?= Date: Tue, 14 Apr 2026 12:52:26 +0100 Subject: [PATCH 21/27] update phan baseline to match CI format --- projects/packages/analytics/.phan/baseline.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/projects/packages/analytics/.phan/baseline.php b/projects/packages/analytics/.phan/baseline.php index 8f144450d531..1237c3296746 100644 --- a/projects/packages/analytics/.phan/baseline.php +++ b/projects/packages/analytics/.phan/baseline.php @@ -1,13 +1,19 @@ [ - 'src/class-analytics.php' => [ 'PhanUndeclaredFunction' ], + 'src/class-analytics.php' => ['PhanUndeclaredFunction'], ], // 'directory_suppressions' => ['src/directory_name' => ['PhanIssueName1', 'PhanIssueName2']] can be manually added if needed. // (directory_suppressions will currently be ignored by subsequent calls to --save-baseline, but may be preserved in future Phan releases) From 348dddca5a6938d64f43781e225b5e3b9da9c2a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dami=C3=A1n=20Su=C3=A1rez?= Date: Tue, 14 Apr 2026 20:08:50 +0100 Subject: [PATCH 22/27] add PHPUnit tests for script module collision behavior covers deregister-register last-wins, first-wins default, consumer dependency survival, and enqueue state side-effects --- .../packages/premium-analytics/composer.json | 5 +- .../php/Script_Module_Collision_Test.php | 402 ++++++++++++++++++ .../premium-analytics/tests/php/bootstrap.php | 1 + 3 files changed, 406 insertions(+), 2 deletions(-) create mode 100644 projects/packages/premium-analytics/tests/php/Script_Module_Collision_Test.php diff --git a/projects/packages/premium-analytics/composer.json b/projects/packages/premium-analytics/composer.json index 713fd10439df..b4d2c4c27433 100644 --- a/projects/packages/premium-analytics/composer.json +++ b/projects/packages/premium-analytics/composer.json @@ -7,9 +7,10 @@ "php": ">=7.2" }, "require-dev": { - "yoast/phpunit-polyfills": "^4.0.0", "automattic/jetpack-changelogger": "@dev", - "automattic/phpunit-select-config": "@dev" + "automattic/jetpack-test-environment": "@dev", + "automattic/phpunit-select-config": "@dev", + "yoast/phpunit-polyfills": "^4.0.0" }, "autoload": { "classmap": [ diff --git a/projects/packages/premium-analytics/tests/php/Script_Module_Collision_Test.php b/projects/packages/premium-analytics/tests/php/Script_Module_Collision_Test.php new file mode 100644 index 000000000000..8f8b779c6c3d --- /dev/null +++ b/projects/packages/premium-analytics/tests/php/Script_Module_Collision_Test.php @@ -0,0 +1,402 @@ += the version being registered. + * - For packages outside the monorepo, avoid packageSources and bundle + * the dependency inline instead. + * + * @package automattic/jetpack-premium-analytics + * @see https://linear.app/a8c/issue/WOOA7S-1346 + */ + +namespace Automattic\Jetpack\PremiumAnalytics; + +use PHPUnit\Framework\Attributes\After; +use PHPUnit\Framework\Attributes\Before; +use PHPUnit\Framework\TestCase; + +/** + * Script module collision tests. + * + * Simulates two wp-build plugins registering the same script module ID + * via the deregister-before-register pattern from modules.php. + */ +class Script_Module_Collision_Test extends TestCase { + + /** + * Original wp_script_modules global. + * + * @var mixed + */ + private $original_wp_script_modules; + + /** + * Fresh WP_Script_Modules instance for each test. + * + * @before + */ + #[Before] + public function set_up_modules() { + $this->original_wp_script_modules = $GLOBALS['wp_script_modules'] ?? null; + $GLOBALS['wp_script_modules'] = new \WP_Script_Modules(); + } + + /** + * Restore original WP_Script_Modules after each test. + * + * @after + */ + #[After] + public function tear_down_modules() { + if ( null === $this->original_wp_script_modules ) { + unset( $GLOBALS['wp_script_modules'] ); + } else { + $GLOBALS['wp_script_modules'] = $this->original_wp_script_modules; + } + } + + /** + * Simulate the generated modules.php registration pattern. + * + * Each wp-build plugin's modules.php calls wp_deregister_script_module() + * before wp_register_script_module() to override previously registered + * versions (e.g. Core defaults). + * + * @see projects/packages/premium-analytics/build/modules.php:44-57 + * + * @param string $id Module ID. + * @param string $src Module source URL. + * @param array $deps Module dependencies. + * @param string $version Module version. + */ + private function register_with_override( $id, $src, $deps, $version ) { + wp_deregister_script_module( $id ); + wp_register_script_module( + $id, + $src, + $deps, + $version, + array( + 'fetchpriority' => 'low', + 'in_footer' => true, + ) + ); + } + + /** + * Get the private $registered map from WP_Script_Modules via reflection. + * + * @return array + */ + private function get_registered_modules() { + $instance = wp_script_modules(); + $prop = new \ReflectionProperty( $instance, 'registered' ); + if ( PHP_VERSION_ID < 80100 ) { + $prop->setAccessible( true ); + } + return $prop->getValue( $instance ); + } + + /** + * Get data for a single registered module. + * + * @param string $id Module ID. + * @return array|null + */ + private function get_module_data( $id ) { + $registered = $this->get_registered_modules(); + return $registered[ $id ] ?? null; + } + + /** + * Last plugin wins when both use the deregister-then-register pattern. + * + * Both Plugin A and Plugin B register @automattic/number-formatters. + * Because modules.php always deregisters first, the last to load wins. + */ + public function test_last_plugin_wins_with_deregister_register() { + $this->register_with_override( + '@automattic/number-formatters', + 'https://example.com/plugin-a/number-formatters.min.js', + array(), + '1.0.0' + ); + + $this->register_with_override( + '@automattic/number-formatters', + 'https://example.com/plugin-b/number-formatters.min.js', + array(), + '2.0.0' + ); + + $module = $this->get_module_data( '@automattic/number-formatters' ); + $this->assertNotNull( $module ); + $this->assertSame( '2.0.0', $module['version'] ); + $this->assertStringContainsString( 'plugin-b', $module['src'] ); + } + + /** + * An older version wins if its plugin loads last. + * + * This is the main risk of cross-release version skew: Plugin B ships + * an older version and loads after Plugin A, overwriting the newer code. + */ + public function test_older_version_wins_if_loaded_last() { + $this->register_with_override( + '@automattic/number-formatters', + 'https://example.com/plugin-a/number-formatters.min.js', + array(), + '2.0.0' + ); + + $this->register_with_override( + '@automattic/number-formatters', + 'https://example.com/plugin-b/number-formatters.min.js', + array(), + '1.0.0' + ); + + $module = $this->get_module_data( '@automattic/number-formatters' ); + $this->assertSame( '1.0.0', $module['version'] ); + $this->assertStringContainsString( 'plugin-b', $module['src'] ); + } + + /** + * Without deregister, first plugin wins (WordPress default). + * + * The wp_register_script_module() function only registers when the ID is not + * already present. This contrasts with the deregister-register + * pattern that wp-build's generated modules.php uses. + */ + public function test_first_plugin_wins_with_plain_register() { + wp_register_script_module( + '@automattic/number-formatters', + 'https://example.com/plugin-a/number-formatters.min.js', + array(), + '1.0.0' + ); + + wp_register_script_module( + '@automattic/number-formatters', + 'https://example.com/plugin-b/number-formatters.min.js', + array(), + '2.0.0' + ); + + $module = $this->get_module_data( '@automattic/number-formatters' ); + $this->assertSame( '1.0.0', $module['version'] ); + $this->assertStringContainsString( 'plugin-a', $module['src'] ); + } + + /** + * Consumer module dependencies survive re-registration of a shared module. + * + * A route that depends on @automattic/number-formatters keeps its + * dependency declaration even after another plugin overwrites the + * shared module with a different version. + */ + public function test_consumer_dependencies_survive_reregistration() { + $this->register_with_override( + '@automattic/number-formatters', + 'https://example.com/plugin-a/number-formatters.min.js', + array(), + '1.0.0' + ); + + wp_register_script_module( + '@plugin-a/dashboard', + 'https://example.com/plugin-a/dashboard.min.js', + array( + array( + 'id' => '@automattic/number-formatters', + 'import' => 'static', + ), + ), + '1.0.0' + ); + + // Plugin B overwrites the shared module. + $this->register_with_override( + '@automattic/number-formatters', + 'https://example.com/plugin-b/number-formatters.min.js', + array(), + '2.0.0' + ); + + // Consumer still declares its dependency. + $consumer = $this->get_module_data( '@plugin-a/dashboard' ); + $this->assertNotNull( $consumer ); + + $dep_ids = array_column( $consumer['dependencies'], 'id' ); + $this->assertContains( '@automattic/number-formatters', $dep_ids ); + + // Shared module now resolves to Plugin B's version. + $shared = $this->get_module_data( '@automattic/number-formatters' ); + $this->assertSame( '2.0.0', $shared['version'] ); + } + + /** + * Multiple consumers from different plugins share the winning module. + * + * Both plugin-a/dashboard and plugin-b/analytics depend on + * automattic/number-formatters. After Plugin B overwrites the shared + * module, both consumers resolve to Plugin B's version. + */ + public function test_multiple_consumers_share_overwritten_module() { + // Plugin A registers shared module and its consumer. + $this->register_with_override( + '@automattic/number-formatters', + 'https://example.com/plugin-a/number-formatters.min.js', + array(), + '1.0.0' + ); + wp_register_script_module( + '@plugin-a/dashboard', + 'https://example.com/plugin-a/dashboard.min.js', + array( + array( + 'id' => '@automattic/number-formatters', + 'import' => 'static', + ), + ), + '1.0.0' + ); + + // Plugin B overwrites shared module and registers its own consumer. + $this->register_with_override( + '@automattic/number-formatters', + 'https://example.com/plugin-b/number-formatters.min.js', + array(), + '2.0.0' + ); + wp_register_script_module( + '@plugin-b/analytics', + 'https://example.com/plugin-b/analytics.min.js', + array( + array( + 'id' => '@automattic/number-formatters', + 'import' => 'static', + ), + ), + '1.0.0' + ); + + // Both consumers reference the same shared module ID. + $consumer_a = $this->get_module_data( '@plugin-a/dashboard' ); + $consumer_b = $this->get_module_data( '@plugin-b/analytics' ); + + $deps_a = array_column( $consumer_a['dependencies'], 'id' ); + $deps_b = array_column( $consumer_b['dependencies'], 'id' ); + + $this->assertContains( '@automattic/number-formatters', $deps_a ); + $this->assertContains( '@automattic/number-formatters', $deps_b ); + + // Shared module resolves to Plugin B (last wins). + $shared = $this->get_module_data( '@automattic/number-formatters' ); + $this->assertSame( '2.0.0', $shared['version'] ); + $this->assertStringContainsString( 'plugin-b', $shared['src'] ); + } + + /** + * Deregister also removes enqueue state. + * + * If a consumer enqueues the shared module between two plugins' + * registrations, the deregister call in the second plugin's + * registration removes the enqueue state. The module must be + * re-enqueued explicitly. + */ + public function test_deregister_removes_enqueue_state() { + wp_register_script_module( + '@automattic/number-formatters', + 'https://example.com/plugin-a/number-formatters.min.js', + array(), + '1.0.0' + ); + wp_enqueue_script_module( '@automattic/number-formatters' ); + + $queue = wp_script_modules()->get_queue(); + $this->assertContains( '@automattic/number-formatters', $queue ); + + // Another plugin deregisters and re-registers. + $this->register_with_override( + '@automattic/number-formatters', + 'https://example.com/plugin-b/number-formatters.min.js', + array(), + '2.0.0' + ); + + // Enqueue state is lost after deregister. + $queue = wp_script_modules()->get_queue(); + $this->assertNotContains( '@automattic/number-formatters', $queue ); + } + + /** + * Dynamic import dependencies are preserved after re-registration. + * + * When a consumer declares a dynamic (lazy) import dependency on + * the shared module, the import type is retained even after the + * shared module is overwritten by another plugin. + */ + public function test_dynamic_import_dependencies_preserved() { + $this->register_with_override( + '@automattic/number-formatters', + 'https://example.com/plugin-a/number-formatters.min.js', + array(), + '1.0.0' + ); + + // Consumer declares a dynamic import dependency (lazy-loaded). + wp_register_script_module( + '@plugin-a/dashboard', + 'https://example.com/plugin-a/dashboard.min.js', + array( + array( + 'id' => '@automattic/number-formatters', + 'import' => 'dynamic', + ), + ), + '1.0.0' + ); + + // Plugin B overwrites the shared module. + $this->register_with_override( + '@automattic/number-formatters', + 'https://example.com/plugin-b/number-formatters.min.js', + array(), + '2.0.0' + ); + + $consumer = $this->get_module_data( '@plugin-a/dashboard' ); + $dep = $consumer['dependencies'][0]; + $this->assertSame( '@automattic/number-formatters', $dep['id'] ); + $this->assertSame( 'dynamic', $dep['import'] ); + } +} diff --git a/projects/packages/premium-analytics/tests/php/bootstrap.php b/projects/packages/premium-analytics/tests/php/bootstrap.php index 0712eee01394..d6a98c174f58 100644 --- a/projects/packages/premium-analytics/tests/php/bootstrap.php +++ b/projects/packages/premium-analytics/tests/php/bootstrap.php @@ -9,3 +9,4 @@ * Include the composer autoloader. */ require_once __DIR__ . '/../../vendor/autoload.php'; +\Automattic\Jetpack\Test_Environment::init(); From a0abf7526cf2671b182773210fbb2268f07c2d41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dami=C3=A1n=20Su=C3=A1rez?= Date: Tue, 14 Apr 2026 20:15:39 +0100 Subject: [PATCH 23/27] add changelog for script module collision tests --- .../changelog/update-script-module-collision-tests | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 projects/packages/premium-analytics/changelog/update-script-module-collision-tests diff --git a/projects/packages/premium-analytics/changelog/update-script-module-collision-tests b/projects/packages/premium-analytics/changelog/update-script-module-collision-tests new file mode 100644 index 000000000000..9297dc847294 --- /dev/null +++ b/projects/packages/premium-analytics/changelog/update-script-module-collision-tests @@ -0,0 +1,4 @@ +Significance: patch +Type: added + +Add PHPUnit tests for script module collision behavior when multiple plugins register the same packageSources entry From f8a080cfad18edcea0ff35bad0595188e9c6de29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dami=C3=A1n=20Su=C3=A1rez?= Date: Tue, 14 Apr 2026 20:16:19 +0100 Subject: [PATCH 24/27] update composer.lock for premium-analytics plugin --- projects/plugins/premium-analytics/composer.lock | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/plugins/premium-analytics/composer.lock b/projects/plugins/premium-analytics/composer.lock index 32c6c543e561..a36a5e685446 100644 --- a/projects/plugins/premium-analytics/composer.lock +++ b/projects/plugins/premium-analytics/composer.lock @@ -142,13 +142,14 @@ "dist": { "type": "path", "url": "../../packages/premium-analytics", - "reference": "2c6f6f7059ee108c5d6cb9aa079a757824c2d845" + "reference": "04a99df1641ea3b2a282d8d1144a5ebc5329022c" }, "require": { "php": ">=7.2" }, "require-dev": { "automattic/jetpack-changelogger": "@dev", + "automattic/jetpack-test-environment": "@dev", "automattic/phpunit-select-config": "@dev", "yoast/phpunit-polyfills": "^4.0.0" }, From acb1e486385a21ee75c980d8ecee076a1b2fa3ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dami=C3=A1n=20Su=C3=A1rez?= Date: Tue, 14 Apr 2026 20:21:13 +0100 Subject: [PATCH 25/27] add changelog for premium-analytics plugin --- .../changelog/update-script-module-collision-tests | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 projects/plugins/premium-analytics/changelog/update-script-module-collision-tests diff --git a/projects/plugins/premium-analytics/changelog/update-script-module-collision-tests b/projects/plugins/premium-analytics/changelog/update-script-module-collision-tests new file mode 100644 index 000000000000..302aa8cf46b5 --- /dev/null +++ b/projects/plugins/premium-analytics/changelog/update-script-module-collision-tests @@ -0,0 +1,4 @@ +Significance: patch +Type: changed + +Updated package dependencies From 46a4b2d1b4d8503e0d05527c7fc7b8b032529737 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dami=C3=A1n=20Su=C3=A1rez?= Date: Tue, 14 Apr 2026 20:23:50 +0100 Subject: [PATCH 26/27] fix version mismatch in analytics package.json --- projects/packages/analytics/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/packages/analytics/package.json b/projects/packages/analytics/package.json index e63b6ededfc3..9f9395307554 100644 --- a/projects/packages/analytics/package.json +++ b/projects/packages/analytics/package.json @@ -1,6 +1,6 @@ { "name": "jetpack-analytics-app", - "version": "0.1.0", + "version": "0.1.0-alpha", "private": true, "type": "module", "scripts": { From fe28063ff4a2ec2e4f0957c78e18cf1ab0c89e2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dami=C3=A1n=20Su=C3=A1rez?= Date: Tue, 14 Apr 2026 20:25:55 +0100 Subject: [PATCH 27/27] add changelog for analytics version fix --- projects/packages/analytics/changelog/fix-version-mismatch | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 projects/packages/analytics/changelog/fix-version-mismatch diff --git a/projects/packages/analytics/changelog/fix-version-mismatch b/projects/packages/analytics/changelog/fix-version-mismatch new file mode 100644 index 000000000000..b2ddaa276bdb --- /dev/null +++ b/projects/packages/analytics/changelog/fix-version-mismatch @@ -0,0 +1,4 @@ +Significance: patch +Type: fixed + +Fixed version mismatch in package.json.