From 4430d3e995a7d09d54b837a5a3cbb64852827553 Mon Sep 17 00:00:00 2001 From: Alex Cicovic <23142906+acicovic@users.noreply.github.com> Date: Fri, 13 Dec 2024 16:33:16 +0200 Subject: [PATCH 1/6] Add a simple linter and a pre-commit hook for it --- .husky/pre-commit | 1 + lint.php | 186 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 187 insertions(+) create mode 100644 lint.php diff --git a/.husky/pre-commit b/.husky/pre-commit index 728606848..25a129c69 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,3 +1,4 @@ +php lint.php npm run lint composer cs vendor/bin/phpstan analyse --memory-limit=1G diff --git a/lint.php b/lint.php new file mode 100644 index 000000000..93081e5ee --- /dev/null +++ b/lint.php @@ -0,0 +1,186 @@ +run( in_array( '--fix', $argv ) ); + + if ( '' !== $errors ) { + $exit_code = 1; + echo $errors; + } +} + +exit( $exit_code ?? 0 ); + +/** + * A class representing a linting rule. + * + * @since 3.18.0 + */ +class Lint_Rule { + /** + * @var string Error message to display when this linting rule is violated. + */ + private $error_message; + + /** + * @var string Regex pattern used for rule violation detection. + */ + private $error_pattern; + + /** + * @var string Regex pattern used to specify the files to search in. + */ + private $include_files; + + /** + * @var string|null Optional regex pattern used to auto-fix the violation. + */ + private $fix_pattern; + + /** + * @var array Directories to exclude from search. + */ + private $exclude_dirs; + + /** + * @var array Array of errors found when running the rule. + */ + private $errors = array(); + + /** + * Constructor. + * + * @since 3.18.0 + * + * @param string $error_message The error message to display. + * @param string $error_pattern The regex matching the rule violation. + * @param string $include_files The regex matching the files to search in. + * @param string|null $fix_pattern The regex to fix any violations (optional). + * @param array $exclude_dirs The directories to exclude from search. + */ + public function __construct( + string $error_message, + string $error_pattern, + string $include_files, + string $fix_pattern = null, + array $exclude_dirs = array( 'artifacts', 'build', 'vendor', 'node_modules' ) + ) { + $this->error_message = $error_message; + $this->error_pattern = $error_pattern; + $this->include_files = $include_files; + $this->fix_pattern = $fix_pattern; + $this->exclude_dirs = $exclude_dirs; + } + + /** + * Runs the rule to detect or auto-fix any violations. + * + * @since 3.18.0 + * + * @param bool $auto_fix_mode Whether violations should be auto-fixed. + * @return string The violations found, or an empty string. + */ + public function run( $auto_fix_mode ): string { + $base_dir = __DIR__ . '/'; + $iterator = $this->create_iterator( $this->exclude_dirs ); + + // Iterate over the directories and files. + foreach ( $iterator as $file ) { + // Check if the item is a file that should be checked. + if ( $file->isFile() && preg_match( $this->include_files, $file->getFilename() ) ) { + $file_content = file_get_contents( $file->getPathname() ); + + // Check for rule violations. + if ( preg_match_all( $this->error_pattern, $file_content, $matches, PREG_OFFSET_CAPTURE ) ) { + $relative_path = str_replace( $base_dir, '', $file->getPathname() ); + + // Auto-fix or log the issue. + if ( $auto_fix_mode && null !== $this->fix_pattern ) { + $fixed_content = preg_replace( $this->error_pattern, $this->fix_pattern, $file_content ); + + if ( null === $fixed_content ) { + $this->errors[] = "Error while trying to lint {$relative_path}."; + } + + if ( false === file_put_contents( $file->getPathname(), $fixed_content ) ) { + $this->errors[] = "Failed to save fix for {$relative_path}."; + } + } else { + foreach ( $matches[0] as $match ) { + $line_number = substr_count( substr( $file_content, 0, $match[1] ), "\n" ) + 1; + $this->errors[] = "{$relative_path} \033[90m(line {$line_number})\033[0m"; + } + } + } + } + } + + if ( empty( $this->errors ) ) { + return ''; + } + + $output = "\033[31mERROR: {$this->error_message}.\033[0m\n"; + if ( null !== $this->fix_pattern ) { + $output .= "\033[33mAuto-fixable with the --fix parameter.\033[0m\n"; + } + $output .= "\033[36mYou can use the {$this->error_pattern} regex to find the offending code.\033[0m\n\n"; + + foreach ( $this->errors as $error ) { + $output .= " - {$error}\n"; + } + + return $output . "\n\n"; + } + + /** + * Creates an iterator that iterates across the project's folder structure, + * skipping excluded directories. + * + * @since 3.18.0 + * + * @return RecursiveIteratorIterator + */ + private function create_iterator(): RecursiveIteratorIterator { + return new RecursiveIteratorIterator( + new RecursiveCallbackFilterIterator( + new RecursiveDirectoryIterator( __DIR__, RecursiveDirectoryIterator::SKIP_DOTS ), + function ( $current, $key, $iterator ) { + if ( $iterator->hasChildren() && in_array( $current->getFilename(), $this->exclude_dirs ) ) { + return false; // Skip excluded directories. + } + + return true; + } + ), + RecursiveIteratorIterator::SELF_FIRST + ); + } +} + +// phpcs:ignoreFile From 9ff845c1d2eee1f193e05482068d4d5445228037 Mon Sep 17 00:00:00 2001 From: Alex Cicovic <23142906+acicovic@users.noreply.github.com> Date: Fri, 13 Dec 2024 16:35:28 +0200 Subject: [PATCH 2/6] Fix linting violations using `php lint --fix` --- CHANGELOG.md | 1 - src/@types/assets/window.d.ts | 1 - src/Telemetry/Tracks/class-tracks-pixel.php | 1 - src/content-helper/common/class-content-helper-feature.php | 1 - src/content-helper/common/components/input-range/style.scss | 2 -- .../editor-sidebar/performance-stats/performance-stats.scss | 1 - .../editor-sidebar/related-posts/related-posts.scss | 1 - src/rest-api/content-helper/class-endpoint-smart-linking.php | 2 -- src/rest-api/settings/class-base-settings-endpoint.php | 1 - src/services/class-base-api-service.php | 1 - .../content-api/endpoints/class-endpoint-analytics-posts.php | 1 - .../ContentHelper/ContentHelperPostListStatsTest.php | 4 ---- tests/Integration/RestAPI/BaseAPIControllerTest.php | 1 - .../RestAPI/ContentHelper/ContentHelperFeatureTestTrait.php | 1 - tests/Integration/UI/SettingsPageTest.php | 1 - wp-parsely.php | 1 - 16 files changed, 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 042696433..d66966c98 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -281,7 +281,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Initialize Parse.ly option before registering the setting ([#2001](https://github.com/Parsely/wp-parsely/pull/2001)) - ## [3.11.0](https://github.com/Parsely/wp-parsely/compare/3.10.0...3.11.0) - 2023-11-13 ### Added diff --git a/src/@types/assets/window.d.ts b/src/@types/assets/window.d.ts index 8b852763e..e0975f5bd 100644 --- a/src/@types/assets/window.d.ts +++ b/src/@types/assets/window.d.ts @@ -53,5 +53,4 @@ declare global { }; }; } - } diff --git a/src/Telemetry/Tracks/class-tracks-pixel.php b/src/Telemetry/Tracks/class-tracks-pixel.php index 619d420a8..1a82842a9 100644 --- a/src/Telemetry/Tracks/class-tracks-pixel.php +++ b/src/Telemetry/Tracks/class-tracks-pixel.php @@ -13,7 +13,6 @@ use Parsely\Utils\Utils; use WP_Error; - /** * Handles all operations related to the Tracks pixel. * diff --git a/src/content-helper/common/class-content-helper-feature.php b/src/content-helper/common/class-content-helper-feature.php index 83c6f04b7..dae656c78 100644 --- a/src/content-helper/common/class-content-helper-feature.php +++ b/src/content-helper/common/class-content-helper-feature.php @@ -73,7 +73,6 @@ abstract public static function get_style_id(): string; */ abstract public function run(): void; - /** * Examines filters and conditions to determine whether the feature can be * enabled. diff --git a/src/content-helper/common/components/input-range/style.scss b/src/content-helper/common/components/input-range/style.scss index 025a427ef..7fa799a3b 100644 --- a/src/content-helper/common/components/input-range/style.scss +++ b/src/content-helper/common/components/input-range/style.scss @@ -53,6 +53,4 @@ } } } - - } diff --git a/src/content-helper/editor-sidebar/performance-stats/performance-stats.scss b/src/content-helper/editor-sidebar/performance-stats/performance-stats.scss index 5d48d96aa..6dca2ab7f 100644 --- a/src/content-helper/editor-sidebar/performance-stats/performance-stats.scss +++ b/src/content-helper/editor-sidebar/performance-stats/performance-stats.scss @@ -143,7 +143,6 @@ } } - // Multi-percentage bar. div.multi-percentage-bar { position: relative; diff --git a/src/content-helper/editor-sidebar/related-posts/related-posts.scss b/src/content-helper/editor-sidebar/related-posts/related-posts.scss index b49d45604..a829d0f51 100644 --- a/src/content-helper/editor-sidebar/related-posts/related-posts.scss +++ b/src/content-helper/editor-sidebar/related-posts/related-posts.scss @@ -125,7 +125,6 @@ } } - .related-posts-list { display: flex; padding: to_rem(6px) 0 var(--grid-unit-20) 0; diff --git a/src/rest-api/content-helper/class-endpoint-smart-linking.php b/src/rest-api/content-helper/class-endpoint-smart-linking.php index b2d45735f..5199408ea 100644 --- a/src/rest-api/content-helper/class-endpoint-smart-linking.php +++ b/src/rest-api/content-helper/class-endpoint-smart-linking.php @@ -276,7 +276,6 @@ public function get_smart_links( WP_REST_Request $request ): WP_REST_Response { return new WP_REST_Response( array( 'data' => $response ), 200 ); } - /** * API Endpoint: POST /smart-linking/{post_id}/add. * @@ -475,7 +474,6 @@ public function set_smart_links( WP_REST_Request $request ): WP_REST_Response { return new WP_REST_Response( array( 'data' => $response ), 200 ); } - /** * API Endpoint: POST /smart-linking/url-to-post-type. * diff --git a/src/rest-api/settings/class-base-settings-endpoint.php b/src/rest-api/settings/class-base-settings-endpoint.php index e4c47bf4b..1d225ab4e 100644 --- a/src/rest-api/settings/class-base-settings-endpoint.php +++ b/src/rest-api/settings/class-base-settings-endpoint.php @@ -388,7 +388,6 @@ protected function get_default( array $keys ) { return $current; // Return default value for valid key path. } - /** * Gets the specifications for nested settings based on a composite key. * diff --git a/src/services/class-base-api-service.php b/src/services/class-base-api-service.php index 4a1697e68..1af1e5c71 100644 --- a/src/services/class-base-api-service.php +++ b/src/services/class-base-api-service.php @@ -39,7 +39,6 @@ abstract class Base_API_Service { */ private $parsely; - /** * Initializes the class. * diff --git a/src/services/content-api/endpoints/class-endpoint-analytics-posts.php b/src/services/content-api/endpoints/class-endpoint-analytics-posts.php index b8ebc6168..903613574 100644 --- a/src/services/content-api/endpoints/class-endpoint-analytics-posts.php +++ b/src/services/content-api/endpoints/class-endpoint-analytics-posts.php @@ -153,7 +153,6 @@ public function call( array $args = array() ) { return $this->request( 'GET', $query_args ); } - /** * Appends multiple parameters to the URL. * diff --git a/tests/Integration/ContentHelper/ContentHelperPostListStatsTest.php b/tests/Integration/ContentHelper/ContentHelperPostListStatsTest.php index 276d27c37..a544827ed 100644 --- a/tests/Integration/ContentHelper/ContentHelperPostListStatsTest.php +++ b/tests/Integration/ContentHelper/ContentHelperPostListStatsTest.php @@ -285,7 +285,6 @@ public function test_parsely_stats_column_visibility_on_empty_plugin_options(): self::assertNotContains( self::$parsely_stats_column_header, $this->get_admin_columns() ); } - /** * Verifies Parse.ly Stats column visibility. * @@ -503,7 +502,6 @@ public function test_content_of_parsely_stats_column_on_valid_posts(): void { ); } - /** * Verifies content of Parse.ly Stats column. * @@ -768,7 +766,6 @@ private function mock_parsely_stats_response( ?array $return_value ): Post_List_ return $obj; } - /** * Verifies Parse.ly API call and enqueued status of Parse.ly Stats script. * @@ -1201,7 +1198,6 @@ public function test_parsely_stats_response_on_valid_post_type_and_having_data_f ); } - /** * Verifies Parse.ly Stats response. * diff --git a/tests/Integration/RestAPI/BaseAPIControllerTest.php b/tests/Integration/RestAPI/BaseAPIControllerTest.php index 4211b10bb..f98c0442a 100644 --- a/tests/Integration/RestAPI/BaseAPIControllerTest.php +++ b/tests/Integration/RestAPI/BaseAPIControllerTest.php @@ -220,7 +220,6 @@ public function test_register_multiple_endpoints(): void { ->method( 'get_endpoint_slug' ) ->willReturn( 'test2' ); - $this->test_controller->testable_register_endpoints( array( $endpoint1, $endpoint2 ) ); // @phpstan-ignore-line $endpoints = $this->test_controller->get_endpoints(); diff --git a/tests/Integration/RestAPI/ContentHelper/ContentHelperFeatureTestTrait.php b/tests/Integration/RestAPI/ContentHelper/ContentHelperFeatureTestTrait.php index 1493ee0ca..d91f66778 100644 --- a/tests/Integration/RestAPI/ContentHelper/ContentHelperFeatureTestTrait.php +++ b/tests/Integration/RestAPI/ContentHelper/ContentHelperFeatureTestTrait.php @@ -178,7 +178,6 @@ public function test_is_available_to_current_user_returns_error_if_no_permission self::assertInstanceOf( WP_Error::class, $this->get_endpoint()->is_available_to_current_user( new WP_REST_Request() ) ); } - /** * Tests that the endpoint is not available to the current user, since the user is not logged in. * diff --git a/tests/Integration/UI/SettingsPageTest.php b/tests/Integration/UI/SettingsPageTest.php index b838eeeac..10392af73 100644 --- a/tests/Integration/UI/SettingsPageTest.php +++ b/tests/Integration/UI/SettingsPageTest.php @@ -660,7 +660,6 @@ function () use ( $badge_options ) { self::expectOutputContains( $expected_html ); } - /** * Mocks a success response from the API credentials validation endpoint. * diff --git a/wp-parsely.php b/wp-parsely.php index 08beefe75..c04e76b64 100644 --- a/wp-parsely.php +++ b/wp-parsely.php @@ -60,7 +60,6 @@ // Load Telemetry classes. require_once __DIR__ . '/src/Telemetry/telemetry-init.php'; - add_action( 'plugins_loaded', __NAMESPACE__ . '\\parsely_initialize_plugin' ); /** * Registers the basic classes to initialize the plugin. From 3747a1068dd43f4c4c1c861c1ba78e6a1f2d2aee Mon Sep 17 00:00:00 2001 From: Alex Cicovic <23142906+acicovic@users.noreply.github.com> Date: Fri, 13 Dec 2024 17:56:25 +0200 Subject: [PATCH 3/6] Dedupe package-lock.json --- package-lock.json | 323 ++++++++++++++++++++++++---------------------- 1 file changed, 167 insertions(+), 156 deletions(-) diff --git a/package-lock.json b/package-lock.json index f5ea4da93..84476429a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3641,10 +3641,14 @@ } }, "node_modules/@paulirish/trace_engine": { - "version": "0.0.32", - "resolved": "https://registry.npmjs.org/@paulirish/trace_engine/-/trace_engine-0.0.32.tgz", - "integrity": "sha512-KxWFdRNbv13U8bhYaQvH6gLG9CVEt2jKeosyOOYILVntWEVWhovbgDrbOiZ12pJO3vjZs0Zgbd3/Zgde98woEA==", - "dev": true + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@paulirish/trace_engine/-/trace_engine-0.0.39.tgz", + "integrity": "sha512-2Y/ejHX5DDi5bjfWY/0c/BLVSfQ61Jw1Hy60Hnh0hfEO632D3FVctkzT4Q/lVAdvIPR0bUaok9JDTr1pu/OziA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "third-party-web": "latest" + } }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", @@ -4274,48 +4278,52 @@ "license": "MIT" }, "node_modules/@sentry-internal/tracing": { - "version": "7.120.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.120.1.tgz", - "integrity": "sha512-MwZlhQY27oM4V05m2Q46WB2F7jqFu8fewg14yRcjCuK3tdxvQoLsXOEPMZxLxpoXPTqPCm3Ig7mA4GwdlCL41w==", + "version": "7.120.2", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.120.2.tgz", + "integrity": "sha512-eo2F8cP6X+vr54Mp6vu+NoQEDz0M5O24Tz8jPY0T1CpiWdwCmHb7Sln+oLXeQ3/LlWdVQihBfKDBZfBdUfsBTg==", "dev": true, + "license": "MIT", "dependencies": { - "@sentry/core": "7.120.1", - "@sentry/types": "7.120.1", - "@sentry/utils": "7.120.1" + "@sentry/core": "7.120.2", + "@sentry/types": "7.120.2", + "@sentry/utils": "7.120.2" }, "engines": { "node": ">=8" } }, "node_modules/@sentry-internal/tracing/node_modules/@sentry/core": { - "version": "7.120.1", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.120.1.tgz", - "integrity": "sha512-tXpJlf/8ngsSCpcRD+4DDvh4TqUbY0MlvE9Mpc/jO5GgYl/goAH2H1COw6W/UNfkr/l80P2jejS0HLPk0moi0A==", + "version": "7.120.2", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.120.2.tgz", + "integrity": "sha512-eurLBFQJC7WWWYoEna25Z9I/GJjqAmH339tv52XP8sqXV7B5hRcHDcfrsT/UGHpU316M24p3lWhj0eimtCZ0SQ==", "dev": true, + "license": "MIT", "dependencies": { - "@sentry/types": "7.120.1", - "@sentry/utils": "7.120.1" + "@sentry/types": "7.120.2", + "@sentry/utils": "7.120.2" }, "engines": { "node": ">=8" } }, "node_modules/@sentry-internal/tracing/node_modules/@sentry/types": { - "version": "7.120.1", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.120.1.tgz", - "integrity": "sha512-f/WT7YUH8SA2Jhez/hYz/dA351AJqr1Eht/URUdYsqMFecXr/blAcNKRVFccSsvQeTqWVV9HVQ9BXUSjPJOvFA==", + "version": "7.120.2", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.120.2.tgz", + "integrity": "sha512-FWVoiblHQJ892GaOqdXx/5/n5XDLF28z81vJ0lCY49PMh8waz8LJ0b9RSmt9tasSDl0OQ7eUlPl1xu1jTrv1NA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@sentry-internal/tracing/node_modules/@sentry/utils": { - "version": "7.120.1", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.120.1.tgz", - "integrity": "sha512-4boeo5Y3zw3gFrWZmPHsYOIlTh//eBaGBgWL25FqLbLObO23gFE86G6O6knP1Gamm1DGX2IWH7w4MChYuBm6tA==", + "version": "7.120.2", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.120.2.tgz", + "integrity": "sha512-jgnQlw11mRfQrQRAXbq4zEd+tbYwHel5eqeS/oU6EImXRjmHNtS79nB8MHvJeQu1FMCpFs1Ymrrs5FICwS6VeQ==", "dev": true, + "license": "MIT", "dependencies": { - "@sentry/types": "7.120.1" + "@sentry/types": "7.120.2" }, "engines": { "node": ">=8" @@ -4368,14 +4376,15 @@ "license": "0BSD" }, "node_modules/@sentry/integrations": { - "version": "7.120.1", - "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.120.1.tgz", - "integrity": "sha512-dshhLZUN+pYpyZiS5QRYKaYSqvWYtmsbwmBlH4SCGOnN9sbY4nZn0h8njr+xKT8UFnPxoTlbZmkcrVY3qPVMfg==", + "version": "7.120.2", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.120.2.tgz", + "integrity": "sha512-bMvL2fD3TGLM5YAUoQ2Qz6bYeVU8f7YRFNSjKNxK4EbvFgAU9j1FD6EKg0V0RNOJYnJjGIZYMmcWTXBbVTJL6w==", "dev": true, + "license": "MIT", "dependencies": { - "@sentry/core": "7.120.1", - "@sentry/types": "7.120.1", - "@sentry/utils": "7.120.1", + "@sentry/core": "7.120.2", + "@sentry/types": "7.120.2", + "@sentry/utils": "7.120.2", "localforage": "^1.8.1" }, "engines": { @@ -4383,34 +4392,37 @@ } }, "node_modules/@sentry/integrations/node_modules/@sentry/core": { - "version": "7.120.1", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.120.1.tgz", - "integrity": "sha512-tXpJlf/8ngsSCpcRD+4DDvh4TqUbY0MlvE9Mpc/jO5GgYl/goAH2H1COw6W/UNfkr/l80P2jejS0HLPk0moi0A==", + "version": "7.120.2", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.120.2.tgz", + "integrity": "sha512-eurLBFQJC7WWWYoEna25Z9I/GJjqAmH339tv52XP8sqXV7B5hRcHDcfrsT/UGHpU316M24p3lWhj0eimtCZ0SQ==", "dev": true, + "license": "MIT", "dependencies": { - "@sentry/types": "7.120.1", - "@sentry/utils": "7.120.1" + "@sentry/types": "7.120.2", + "@sentry/utils": "7.120.2" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/integrations/node_modules/@sentry/types": { - "version": "7.120.1", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.120.1.tgz", - "integrity": "sha512-f/WT7YUH8SA2Jhez/hYz/dA351AJqr1Eht/URUdYsqMFecXr/blAcNKRVFccSsvQeTqWVV9HVQ9BXUSjPJOvFA==", + "version": "7.120.2", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.120.2.tgz", + "integrity": "sha512-FWVoiblHQJ892GaOqdXx/5/n5XDLF28z81vJ0lCY49PMh8waz8LJ0b9RSmt9tasSDl0OQ7eUlPl1xu1jTrv1NA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@sentry/integrations/node_modules/@sentry/utils": { - "version": "7.120.1", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.120.1.tgz", - "integrity": "sha512-4boeo5Y3zw3gFrWZmPHsYOIlTh//eBaGBgWL25FqLbLObO23gFE86G6O6knP1Gamm1DGX2IWH7w4MChYuBm6tA==", + "version": "7.120.2", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.120.2.tgz", + "integrity": "sha512-jgnQlw11mRfQrQRAXbq4zEd+tbYwHel5eqeS/oU6EImXRjmHNtS79nB8MHvJeQu1FMCpFs1Ymrrs5FICwS6VeQ==", "dev": true, + "license": "MIT", "dependencies": { - "@sentry/types": "7.120.1" + "@sentry/types": "7.120.2" }, "engines": { "node": ">=8" @@ -7247,9 +7259,9 @@ } }, "node_modules/@wordpress/a11y": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/a11y/-/a11y-4.13.0.tgz", - "integrity": "sha512-ZCNhj8GDi6cOVm7L0vfwG5y7XPZONfRbb1KEsJjfgiLY9BnjmfpI5TAqYXcoXbm+Xkea84dQWw1J03EfkuSyIg==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/a11y/-/a11y-4.14.0.tgz", + "integrity": "sha512-zt4L6Olg86opjjTKzop2V8mzNIG+0VmGXrSBYmZVD9+vWhd1T/gttRWzCPkZBWqVHGzwUvTjfdB/qfqtsZWXMw==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -7576,9 +7588,9 @@ } }, "node_modules/@wordpress/block-library/node_modules/@wordpress/keycodes": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-4.13.0.tgz", - "integrity": "sha512-8py+qvvpd/RVDuIAMyPl4qLgES4Y8F9og8jpOlvL8s0Lj+41/WcvJEVMZKDS69tqhN3bi2M566kpIIFq/JbLBw==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-4.14.0.tgz", + "integrity": "sha512-vZpK+NbhC+3/JK8S5I/PuJMNYhfn7X8pupTPuEiKIXZgcnXAy3mORgirBeZJNkNUXRl3vfcsq0qFnIovI96fHA==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -7591,9 +7603,9 @@ } }, "node_modules/@wordpress/block-library/node_modules/@wordpress/warning": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.13.0.tgz", - "integrity": "sha512-e35ab+D1aE2zFOLd/f1zmjlHtVjVL31ayOszwRgK+XXv7jnhjW5KUjquAykKQbYnFlVLHC20h6p8IiNuSyzfUQ==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.14.0.tgz", + "integrity": "sha512-Jt9OIE0W9121HUDZXBSgqPXF93OZ9C+5ubUnMlG9ResJGMHa/1ABY2Wnc5vQRm5LE6d7/y2ySq3D/6+NoJHDjw==", "dev": true, "license": "GPL-2.0-or-later", "engines": { @@ -8036,9 +8048,9 @@ } }, "node_modules/@wordpress/dataviews/node_modules/@wordpress/warning": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.13.0.tgz", - "integrity": "sha512-e35ab+D1aE2zFOLd/f1zmjlHtVjVL31ayOszwRgK+XXv7jnhjW5KUjquAykKQbYnFlVLHC20h6p8IiNuSyzfUQ==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.14.0.tgz", + "integrity": "sha512-Jt9OIE0W9121HUDZXBSgqPXF93OZ9C+5ubUnMlG9ResJGMHa/1ABY2Wnc5vQRm5LE6d7/y2ySq3D/6+NoJHDjw==", "dev": true, "license": "GPL-2.0-or-later", "engines": { @@ -8047,9 +8059,9 @@ } }, "node_modules/@wordpress/date": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/date/-/date-5.13.0.tgz", - "integrity": "sha512-g72ZCtPA5g2cFlODUVXHhpRuk6qb+e5WnYFQqdQjgAthjAlw6xpOIjYlSCTCAg4yFSN9WGX/Jh8eoqYD45nZGA==", + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/date/-/date-5.14.0.tgz", + "integrity": "sha512-Ato1GFSphtGjUAdT1UKKcLptfarS+bkFapDUMbtGikrBIyvWSgHAgHSvMJ88iFVlGPK5GhfVVQjkHrjwqRdCrg==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -8080,9 +8092,9 @@ } }, "node_modules/@wordpress/deprecated": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-4.13.0.tgz", - "integrity": "sha512-wSDfGwRHzxcfpcUUlIHGQOIKYdGvTHbmVWIRf7dlPCRr5anpZTXsC/4ElDJFoi+w/gQklm//LrxjWP1Gqj8hmA==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-4.14.0.tgz", + "integrity": "sha512-tAyihbmreEMUtLy2v5lXz0ZS49WhVM/PJHvRvJd89Wbj87sAy/yuW6RwIIqTK7sGAjG8y3PCemn3lSAK2IHwBg==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -8095,9 +8107,9 @@ } }, "node_modules/@wordpress/dom": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-4.13.0.tgz", - "integrity": "sha512-ucaz3Kh9L3EGpLiXXWqflC0T/1zMOe4DR31ynl+B68YSEWpM0VqTnRUFJRUFEc5wiOa70T8yFa3RLSwWpqJTIw==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-4.14.0.tgz", + "integrity": "sha512-PATlqqJqnteq9sErqDCfQMPtWPd1ORzWItk/4kyYOWBDi4FD83RXhHusNizXfDqGhyON5J6edjcTE5Zu1joIqw==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -8143,50 +8155,54 @@ } }, "node_modules/@wordpress/e2e-test-utils-playwright/node_modules/@sentry/core": { - "version": "7.120.1", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.120.1.tgz", - "integrity": "sha512-tXpJlf/8ngsSCpcRD+4DDvh4TqUbY0MlvE9Mpc/jO5GgYl/goAH2H1COw6W/UNfkr/l80P2jejS0HLPk0moi0A==", + "version": "7.120.2", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.120.2.tgz", + "integrity": "sha512-eurLBFQJC7WWWYoEna25Z9I/GJjqAmH339tv52XP8sqXV7B5hRcHDcfrsT/UGHpU316M24p3lWhj0eimtCZ0SQ==", "dev": true, + "license": "MIT", "dependencies": { - "@sentry/types": "7.120.1", - "@sentry/utils": "7.120.1" + "@sentry/types": "7.120.2", + "@sentry/utils": "7.120.2" }, "engines": { "node": ">=8" } }, "node_modules/@wordpress/e2e-test-utils-playwright/node_modules/@sentry/node": { - "version": "7.120.1", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.120.1.tgz", - "integrity": "sha512-YF/TDUCtUOQeUMwL4vcUWGNv/8Qz9624xBnaL8nXW888xNBoSRr2vH/zMrmTup5zfmWAh9lVbp98BZFF6F0WJg==", + "version": "7.120.2", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.120.2.tgz", + "integrity": "sha512-ZnW9gpIGaoU+vYZyVZca9dObfmWYiXEWIMUM/JXaFb8AhP1OXvYweNiU0Pe/gNrz4oGAogU8scJc70ar7Vj0ww==", "dev": true, + "license": "MIT", "dependencies": { - "@sentry-internal/tracing": "7.120.1", - "@sentry/core": "7.120.1", - "@sentry/integrations": "7.120.1", - "@sentry/types": "7.120.1", - "@sentry/utils": "7.120.1" + "@sentry-internal/tracing": "7.120.2", + "@sentry/core": "7.120.2", + "@sentry/integrations": "7.120.2", + "@sentry/types": "7.120.2", + "@sentry/utils": "7.120.2" }, "engines": { "node": ">=8" } }, "node_modules/@wordpress/e2e-test-utils-playwright/node_modules/@sentry/types": { - "version": "7.120.1", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.120.1.tgz", - "integrity": "sha512-f/WT7YUH8SA2Jhez/hYz/dA351AJqr1Eht/URUdYsqMFecXr/blAcNKRVFccSsvQeTqWVV9HVQ9BXUSjPJOvFA==", + "version": "7.120.2", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.120.2.tgz", + "integrity": "sha512-FWVoiblHQJ892GaOqdXx/5/n5XDLF28z81vJ0lCY49PMh8waz8LJ0b9RSmt9tasSDl0OQ7eUlPl1xu1jTrv1NA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@wordpress/e2e-test-utils-playwright/node_modules/@sentry/utils": { - "version": "7.120.1", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.120.1.tgz", - "integrity": "sha512-4boeo5Y3zw3gFrWZmPHsYOIlTh//eBaGBgWL25FqLbLObO23gFE86G6O6knP1Gamm1DGX2IWH7w4MChYuBm6tA==", + "version": "7.120.2", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.120.2.tgz", + "integrity": "sha512-jgnQlw11mRfQrQRAXbq4zEd+tbYwHel5eqeS/oU6EImXRjmHNtS79nB8MHvJeQu1FMCpFs1Ymrrs5FICwS6VeQ==", "dev": true, + "license": "MIT", "dependencies": { - "@sentry/types": "7.120.1" + "@sentry/types": "7.120.2" }, "engines": { "node": ">=8" @@ -8238,12 +8254,13 @@ } }, "node_modules/@wordpress/e2e-test-utils-playwright/node_modules/lighthouse": { - "version": "12.2.2", - "resolved": "https://registry.npmjs.org/lighthouse/-/lighthouse-12.2.2.tgz", - "integrity": "sha512-avoiiFeGN1gkWhp/W1schJoXOsTPxRKWV3+uW/rGHuov2g/HGB+4SN9J/av1GNSh13sEYgkHL3iJOp1+mBVKYQ==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/lighthouse/-/lighthouse-12.3.0.tgz", + "integrity": "sha512-OaLE8DasnwQkn2CBo2lKtD+IQv42mNP3T+Vaw29I++rAh0Zpgc6SM15usdIYyzhRMR5EWFxze5Fyb+HENJSh2A==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@paulirish/trace_engine": "0.0.32", + "@paulirish/trace_engine": "0.0.39", "@sentry/node": "^7.0.0", "axe-core": "^4.10.2", "chrome-launcher": "^1.1.2", @@ -8262,7 +8279,7 @@ "metaviewport-parser": "0.3.0", "open": "^8.4.0", "parse-cache-control": "1.0.1", - "puppeteer-core": "^23.8.0", + "puppeteer-core": "^23.10.4", "robots-parser": "^3.0.1", "semver": "^5.3.0", "speedline-core": "^1.4.3", @@ -8624,9 +8641,9 @@ } }, "node_modules/@wordpress/escape-html": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-3.13.0.tgz", - "integrity": "sha512-wKPFlXD2d3K6ies4+btGcPB+p8lvgiMOVS3L0b1O+1s+cKUkgtq1aD0Q1pxQ2sLHXFIQjYWjVfTUvZrKE+6xPA==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/escape-html/-/escape-html-3.14.0.tgz", + "integrity": "sha512-tLzQk7VQse1TF/StFe6vt4zdPCWV9LFRPhseC46tbBxAlm/+v6gmaJP501voA/vPQOJSZrYyA5iXGQhA8cJsRw==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -8994,9 +9011,9 @@ } }, "node_modules/@wordpress/fields/node_modules/@wordpress/warning": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.13.0.tgz", - "integrity": "sha512-e35ab+D1aE2zFOLd/f1zmjlHtVjVL31ayOszwRgK+XXv7jnhjW5KUjquAykKQbYnFlVLHC20h6p8IiNuSyzfUQ==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.14.0.tgz", + "integrity": "sha512-Jt9OIE0W9121HUDZXBSgqPXF93OZ9C+5ubUnMlG9ResJGMHa/1ABY2Wnc5vQRm5LE6d7/y2ySq3D/6+NoJHDjw==", "dev": true, "license": "GPL-2.0-or-later", "engines": { @@ -9018,9 +9035,9 @@ } }, "node_modules/@wordpress/html-entities": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/html-entities/-/html-entities-4.13.0.tgz", - "integrity": "sha512-8213NNZdsyPHaYawu8v9xOKfIpX8vfThZ7uBHqeZKHg/DqPrK2jlX89EnI8s+V8cwBj1qHc6Xf78mKGW2iqkuQ==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/html-entities/-/html-entities-4.14.0.tgz", + "integrity": "sha512-PUpq6Li0TfmldDDyo9lFGrYqtISnloD+xrQ4NHD7vcCMDFBin3w1XXc3gHugsRYt6xHTI0L2rdiiv7PrJIr0UA==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -9187,9 +9204,9 @@ } }, "node_modules/@wordpress/is-shallow-equal": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-5.13.0.tgz", - "integrity": "sha512-Z32eGYExzGq/dN4iSNCddCMQU8p1u6mYzyNXDCovw4JSEN3Fr3HvmGYQGRIlkuTrlE6okSqArAvXVKR+I8S5Qg==", + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-5.14.0.tgz", + "integrity": "sha512-dMZ6FvxCVN3sSx9enkilhfmWUkSDe8Y3UR6ufeFMRTztn0n0vSdJXesYCJMelb/JHBj2LkVuJmtewZQ9ARXl8g==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -9255,9 +9272,9 @@ } }, "node_modules/@wordpress/keyboard-shortcuts/node_modules/@wordpress/keycodes": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-4.13.0.tgz", - "integrity": "sha512-8py+qvvpd/RVDuIAMyPl4qLgES4Y8F9og8jpOlvL8s0Lj+41/WcvJEVMZKDS69tqhN3bi2M566kpIIFq/JbLBw==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/keycodes/-/keycodes-4.14.0.tgz", + "integrity": "sha512-vZpK+NbhC+3/JK8S5I/PuJMNYhfn7X8pupTPuEiKIXZgcnXAy3mORgirBeZJNkNUXRl3vfcsq0qFnIovI96fHA==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -9500,9 +9517,9 @@ } }, "node_modules/@wordpress/patterns/node_modules/@wordpress/warning": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.13.0.tgz", - "integrity": "sha512-e35ab+D1aE2zFOLd/f1zmjlHtVjVL31ayOszwRgK+XXv7jnhjW5KUjquAykKQbYnFlVLHC20h6p8IiNuSyzfUQ==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.14.0.tgz", + "integrity": "sha512-Jt9OIE0W9121HUDZXBSgqPXF93OZ9C+5ubUnMlG9ResJGMHa/1ABY2Wnc5vQRm5LE6d7/y2ySq3D/6+NoJHDjw==", "dev": true, "license": "GPL-2.0-or-later", "engines": { @@ -9654,9 +9671,9 @@ } }, "node_modules/@wordpress/primitives": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/primitives/-/primitives-4.13.0.tgz", - "integrity": "sha512-iAMBTPUDq28pm+ObSk5C4fbA90V+35xnjJoThlHIKJYSSllwJV8mlqQGzNTDNynj+S1EPsr6wK8Zyb9W77h1iQ==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/primitives/-/primitives-4.14.0.tgz", + "integrity": "sha512-IZibRVbvWoIQ+uynH0N5bmfWz83hD8lJj6jJFhSFuALK+4U5mRGg6tl0ZV0YllR6cjheD9UhTmfrAcOx+gQAjA==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -9687,9 +9704,9 @@ } }, "node_modules/@wordpress/private-apis": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/private-apis/-/private-apis-1.13.0.tgz", - "integrity": "sha512-HGGWMFWIobfkhJdS+WYmmkSJ0m5beQ9x/2DUoQxxd/zISLMD7qQyRn016s/spapoT2fBLjtoQBWyfX2v0q+odA==", + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/private-apis/-/private-apis-1.14.0.tgz", + "integrity": "sha512-ul932/nV1+DV+bg35zKIcWz31tKUufiTl0Ysxcd81uFK+rG1Pf2420eM7V7wlOvJGpwrwbURpK4r4F5WQ0NpKQ==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -9851,9 +9868,9 @@ } }, "node_modules/@wordpress/reusable-blocks/node_modules/@wordpress/warning": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.13.0.tgz", - "integrity": "sha512-e35ab+D1aE2zFOLd/f1zmjlHtVjVL31ayOszwRgK+XXv7jnhjW5KUjquAykKQbYnFlVLHC20h6p8IiNuSyzfUQ==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.14.0.tgz", + "integrity": "sha512-Jt9OIE0W9121HUDZXBSgqPXF93OZ9C+5ubUnMlG9ResJGMHa/1ABY2Wnc5vQRm5LE6d7/y2ySq3D/6+NoJHDjw==", "dev": true, "license": "GPL-2.0-or-later", "engines": { @@ -9862,9 +9879,9 @@ } }, "node_modules/@wordpress/rich-text": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/rich-text/-/rich-text-7.13.0.tgz", - "integrity": "sha512-MZmW48WB9U5mcFGgARuaeDv2Hl53RGpSBL+r0ekB75B/QrbfmT7Kx2jQ0BGYUP+FptELNACMvAQfnW9DPqTfLA==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/rich-text/-/rich-text-7.14.0.tgz", + "integrity": "sha512-Y7LERZVgOza2itTNn848Mv+O7v2SEE/fdCkXqxE/r3cuEA0hirc68ygiCh4ufAe1Itnd8H7VTTUQouuMXFeBKA==", "dev": true, "license": "GPL-2.0-or-later", "dependencies": { @@ -10521,9 +10538,9 @@ } }, "node_modules/@wordpress/server-side-render/node_modules/@wordpress/warning": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.13.0.tgz", - "integrity": "sha512-e35ab+D1aE2zFOLd/f1zmjlHtVjVL31ayOszwRgK+XXv7jnhjW5KUjquAykKQbYnFlVLHC20h6p8IiNuSyzfUQ==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.14.0.tgz", + "integrity": "sha512-Jt9OIE0W9121HUDZXBSgqPXF93OZ9C+5ubUnMlG9ResJGMHa/1ABY2Wnc5vQRm5LE6d7/y2ySq3D/6+NoJHDjw==", "dev": true, "license": "GPL-2.0-or-later", "engines": { @@ -10814,9 +10831,9 @@ } }, "node_modules/@wordpress/widgets/node_modules/@wordpress/warning": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.13.0.tgz", - "integrity": "sha512-e35ab+D1aE2zFOLd/f1zmjlHtVjVL31ayOszwRgK+XXv7jnhjW5KUjquAykKQbYnFlVLHC20h6p8IiNuSyzfUQ==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/warning/-/warning-3.14.0.tgz", + "integrity": "sha512-Jt9OIE0W9121HUDZXBSgqPXF93OZ9C+5ubUnMlG9ResJGMHa/1ABY2Wnc5vQRm5LE6d7/y2ySq3D/6+NoJHDjw==", "dev": true, "license": "GPL-2.0-or-later", "engines": { @@ -13804,9 +13821,9 @@ "license": "MIT" }, "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, "license": "MIT", "dependencies": { @@ -17703,7 +17720,8 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/immutable": { "version": "4.3.7", @@ -21248,6 +21266,7 @@ "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", "dev": true, + "license": "MIT", "dependencies": { "immediate": "~3.0.5" } @@ -21446,6 +21465,7 @@ "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "lie": "3.1.1" } @@ -23288,14 +23308,11 @@ } }, "node_modules/pac-proxy-agent/node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "dev": true, "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, "engines": { "node": ">= 14" } @@ -23315,13 +23332,13 @@ } }, "node_modules/pac-proxy-agent/node_modules/https-proxy-agent": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", - "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "^7.0.2", + "agent-base": "^7.1.2", "debug": "4" }, "engines": { @@ -24526,14 +24543,11 @@ } }, "node_modules/proxy-agent/node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "dev": true, "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, "engines": { "node": ">= 14" } @@ -24553,13 +24567,13 @@ } }, "node_modules/proxy-agent/node_modules/https-proxy-agent": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", - "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "^7.0.2", + "agent-base": "^7.1.2", "debug": "4" }, "engines": { @@ -25767,9 +25781,9 @@ } }, "node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", + "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", "dev": true, "license": "MIT", "dependencies": { @@ -25779,7 +25793,7 @@ "ajv-keywords": "^5.1.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 10.13.0" }, "funding": { "type": "opencollective", @@ -26632,14 +26646,11 @@ } }, "node_modules/socks-proxy-agent/node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "dev": true, "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, "engines": { "node": ">= 14" } From b255d7c4ae1dad9a7cfed59473d05cacbac47ed3 Mon Sep 17 00:00:00 2001 From: Alex Cicovic <23142906+acicovic@users.noreply.github.com> Date: Mon, 16 Dec 2024 14:59:27 +0200 Subject: [PATCH 4/6] Update minimum required node and npm versions --- .nvmrc | 2 +- package-lock.json | 4 ++-- package.json | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.nvmrc b/.nvmrc index 29ef05d4d..1d9b7831b 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -18.12 +22.12.0 diff --git a/package-lock.json b/package-lock.json index f5ea4da93..c8dcdf673 100644 --- a/package-lock.json +++ b/package-lock.json @@ -54,8 +54,8 @@ "typescript": "^5.7.2" }, "engines": { - "node": ">=18.12.0", - "npm": ">=8.19.2" + "node": ">=22.12.0", + "npm": ">=10.9.0" } }, "node_modules/@adobe/css-tools": { diff --git a/package.json b/package.json index fd9b107d5..5fbdcfe05 100644 --- a/package.json +++ b/package.json @@ -20,8 +20,8 @@ "url": "https://github.com/Parsely/wp-parsely/issues" }, "engines": { - "node": ">=18.12.0", - "npm": ">=8.19.2" + "node": ">=22.12.0", + "npm": ">=10.9.0" }, "directories": { "test": "tests" From d1c5ab5c3091dfcc90dfe8f8c11cabd1454266bb Mon Sep 17 00:00:00 2001 From: Alex Cicovic <23142906+acicovic@users.noreply.github.com> Date: Mon, 16 Dec 2024 15:04:28 +0200 Subject: [PATCH 5/6] .nvmrc: Remove trailing ".0" --- .nvmrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.nvmrc b/.nvmrc index 1d9b7831b..35d2d08ea 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -22.12.0 +22.12 From c9aeecc3e76c8ba6f9ae63c0ab6928678cd0ea8e Mon Sep 17 00:00:00 2001 From: Alex Cicovic <23142906+acicovic@users.noreply.github.com> Date: Mon, 13 Jan 2025 18:20:16 +0200 Subject: [PATCH 6/6] Re-dedupe --- package-lock.json | 126 +++++++++++++++++++++++----------------------- 1 file changed, 63 insertions(+), 63 deletions(-) diff --git a/package-lock.json b/package-lock.json index 36e09e6fe..185fc6136 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4588,38 +4588,38 @@ "license": "MIT" }, "node_modules/@sentry-internal/tracing": { - "version": "7.120.2", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.120.2.tgz", - "integrity": "sha512-eo2F8cP6X+vr54Mp6vu+NoQEDz0M5O24Tz8jPY0T1CpiWdwCmHb7Sln+oLXeQ3/LlWdVQihBfKDBZfBdUfsBTg==", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.120.3.tgz", + "integrity": "sha512-Ausx+Jw1pAMbIBHStoQ6ZqDZR60PsCByvHdw/jdH9AqPrNE9xlBSf9EwcycvmrzwyKspSLaB52grlje2cRIUMg==", "dev": true, "license": "MIT", "dependencies": { - "@sentry/core": "7.120.2", - "@sentry/types": "7.120.2", - "@sentry/utils": "7.120.2" + "@sentry/core": "7.120.3", + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3" }, "engines": { "node": ">=8" } }, "node_modules/@sentry-internal/tracing/node_modules/@sentry/core": { - "version": "7.120.2", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.120.2.tgz", - "integrity": "sha512-eurLBFQJC7WWWYoEna25Z9I/GJjqAmH339tv52XP8sqXV7B5hRcHDcfrsT/UGHpU316M24p3lWhj0eimtCZ0SQ==", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.120.3.tgz", + "integrity": "sha512-vyy11fCGpkGK3qI5DSXOjgIboBZTriw0YDx/0KyX5CjIjDDNgp5AGgpgFkfZyiYiaU2Ww3iFuKo4wHmBusz1uA==", "dev": true, "license": "MIT", "dependencies": { - "@sentry/types": "7.120.2", - "@sentry/utils": "7.120.2" + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3" }, "engines": { "node": ">=8" } }, "node_modules/@sentry-internal/tracing/node_modules/@sentry/types": { - "version": "7.120.2", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.120.2.tgz", - "integrity": "sha512-FWVoiblHQJ892GaOqdXx/5/n5XDLF28z81vJ0lCY49PMh8waz8LJ0b9RSmt9tasSDl0OQ7eUlPl1xu1jTrv1NA==", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.120.3.tgz", + "integrity": "sha512-C4z+3kGWNFJ303FC+FxAd4KkHvxpNFYAFN8iMIgBwJdpIl25KZ8Q/VdGn0MLLUEHNLvjob0+wvwlcRBBNLXOow==", "dev": true, "license": "MIT", "engines": { @@ -4627,13 +4627,13 @@ } }, "node_modules/@sentry-internal/tracing/node_modules/@sentry/utils": { - "version": "7.120.2", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.120.2.tgz", - "integrity": "sha512-jgnQlw11mRfQrQRAXbq4zEd+tbYwHel5eqeS/oU6EImXRjmHNtS79nB8MHvJeQu1FMCpFs1Ymrrs5FICwS6VeQ==", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.120.3.tgz", + "integrity": "sha512-UDAOQJtJDxZHQ5Nm1olycBIsz2wdGX8SdzyGVHmD8EOQYAeDZQyIlQYohDe9nazdIOQLZCIc3fU0G9gqVLkaGQ==", "dev": true, "license": "MIT", "dependencies": { - "@sentry/types": "7.120.2" + "@sentry/types": "7.120.3" }, "engines": { "node": ">=8" @@ -4686,15 +4686,15 @@ "license": "0BSD" }, "node_modules/@sentry/integrations": { - "version": "7.120.2", - "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.120.2.tgz", - "integrity": "sha512-bMvL2fD3TGLM5YAUoQ2Qz6bYeVU8f7YRFNSjKNxK4EbvFgAU9j1FD6EKg0V0RNOJYnJjGIZYMmcWTXBbVTJL6w==", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.120.3.tgz", + "integrity": "sha512-6i/lYp0BubHPDTg91/uxHvNui427df9r17SsIEXa2eKDwQ9gW2qRx5IWgvnxs2GV/GfSbwcx4swUB3RfEWrXrQ==", "dev": true, "license": "MIT", "dependencies": { - "@sentry/core": "7.120.2", - "@sentry/types": "7.120.2", - "@sentry/utils": "7.120.2", + "@sentry/core": "7.120.3", + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3", "localforage": "^1.8.1" }, "engines": { @@ -4702,23 +4702,23 @@ } }, "node_modules/@sentry/integrations/node_modules/@sentry/core": { - "version": "7.120.2", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.120.2.tgz", - "integrity": "sha512-eurLBFQJC7WWWYoEna25Z9I/GJjqAmH339tv52XP8sqXV7B5hRcHDcfrsT/UGHpU316M24p3lWhj0eimtCZ0SQ==", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.120.3.tgz", + "integrity": "sha512-vyy11fCGpkGK3qI5DSXOjgIboBZTriw0YDx/0KyX5CjIjDDNgp5AGgpgFkfZyiYiaU2Ww3iFuKo4wHmBusz1uA==", "dev": true, "license": "MIT", "dependencies": { - "@sentry/types": "7.120.2", - "@sentry/utils": "7.120.2" + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/integrations/node_modules/@sentry/types": { - "version": "7.120.2", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.120.2.tgz", - "integrity": "sha512-FWVoiblHQJ892GaOqdXx/5/n5XDLF28z81vJ0lCY49PMh8waz8LJ0b9RSmt9tasSDl0OQ7eUlPl1xu1jTrv1NA==", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.120.3.tgz", + "integrity": "sha512-C4z+3kGWNFJ303FC+FxAd4KkHvxpNFYAFN8iMIgBwJdpIl25KZ8Q/VdGn0MLLUEHNLvjob0+wvwlcRBBNLXOow==", "dev": true, "license": "MIT", "engines": { @@ -4726,13 +4726,13 @@ } }, "node_modules/@sentry/integrations/node_modules/@sentry/utils": { - "version": "7.120.2", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.120.2.tgz", - "integrity": "sha512-jgnQlw11mRfQrQRAXbq4zEd+tbYwHel5eqeS/oU6EImXRjmHNtS79nB8MHvJeQu1FMCpFs1Ymrrs5FICwS6VeQ==", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.120.3.tgz", + "integrity": "sha512-UDAOQJtJDxZHQ5Nm1olycBIsz2wdGX8SdzyGVHmD8EOQYAeDZQyIlQYohDe9nazdIOQLZCIc3fU0G9gqVLkaGQ==", "dev": true, "license": "MIT", "dependencies": { - "@sentry/types": "7.120.2" + "@sentry/types": "7.120.3" }, "engines": { "node": ">=8" @@ -8566,40 +8566,40 @@ } }, "node_modules/@wordpress/e2e-test-utils-playwright/node_modules/@sentry/core": { - "version": "7.120.2", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.120.2.tgz", - "integrity": "sha512-eurLBFQJC7WWWYoEna25Z9I/GJjqAmH339tv52XP8sqXV7B5hRcHDcfrsT/UGHpU316M24p3lWhj0eimtCZ0SQ==", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.120.3.tgz", + "integrity": "sha512-vyy11fCGpkGK3qI5DSXOjgIboBZTriw0YDx/0KyX5CjIjDDNgp5AGgpgFkfZyiYiaU2Ww3iFuKo4wHmBusz1uA==", "dev": true, "license": "MIT", "dependencies": { - "@sentry/types": "7.120.2", - "@sentry/utils": "7.120.2" + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3" }, "engines": { "node": ">=8" } }, "node_modules/@wordpress/e2e-test-utils-playwright/node_modules/@sentry/node": { - "version": "7.120.2", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.120.2.tgz", - "integrity": "sha512-ZnW9gpIGaoU+vYZyVZca9dObfmWYiXEWIMUM/JXaFb8AhP1OXvYweNiU0Pe/gNrz4oGAogU8scJc70ar7Vj0ww==", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.120.3.tgz", + "integrity": "sha512-t+QtekZedEfiZjbkRAk1QWJPnJlFBH/ti96tQhEq7wmlk3VszDXraZvLWZA0P2vXyglKzbWRGkT31aD3/kX+5Q==", "dev": true, "license": "MIT", "dependencies": { - "@sentry-internal/tracing": "7.120.2", - "@sentry/core": "7.120.2", - "@sentry/integrations": "7.120.2", - "@sentry/types": "7.120.2", - "@sentry/utils": "7.120.2" + "@sentry-internal/tracing": "7.120.3", + "@sentry/core": "7.120.3", + "@sentry/integrations": "7.120.3", + "@sentry/types": "7.120.3", + "@sentry/utils": "7.120.3" }, "engines": { "node": ">=8" } }, "node_modules/@wordpress/e2e-test-utils-playwright/node_modules/@sentry/types": { - "version": "7.120.2", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.120.2.tgz", - "integrity": "sha512-FWVoiblHQJ892GaOqdXx/5/n5XDLF28z81vJ0lCY49PMh8waz8LJ0b9RSmt9tasSDl0OQ7eUlPl1xu1jTrv1NA==", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.120.3.tgz", + "integrity": "sha512-C4z+3kGWNFJ303FC+FxAd4KkHvxpNFYAFN8iMIgBwJdpIl25KZ8Q/VdGn0MLLUEHNLvjob0+wvwlcRBBNLXOow==", "dev": true, "license": "MIT", "engines": { @@ -8607,13 +8607,13 @@ } }, "node_modules/@wordpress/e2e-test-utils-playwright/node_modules/@sentry/utils": { - "version": "7.120.2", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.120.2.tgz", - "integrity": "sha512-jgnQlw11mRfQrQRAXbq4zEd+tbYwHel5eqeS/oU6EImXRjmHNtS79nB8MHvJeQu1FMCpFs1Ymrrs5FICwS6VeQ==", + "version": "7.120.3", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.120.3.tgz", + "integrity": "sha512-UDAOQJtJDxZHQ5Nm1olycBIsz2wdGX8SdzyGVHmD8EOQYAeDZQyIlQYohDe9nazdIOQLZCIc3fU0G9gqVLkaGQ==", "dev": true, "license": "MIT", "dependencies": { - "@sentry/types": "7.120.2" + "@sentry/types": "7.120.3" }, "engines": { "node": ">=8" @@ -13691,9 +13691,9 @@ } }, "node_modules/core-js": { - "version": "3.39.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.39.0.tgz", - "integrity": "sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==", + "version": "3.40.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.40.0.tgz", + "integrity": "sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -25418,13 +25418,13 @@ "license": "MIT" }, "node_modules/readdirp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", - "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.1.tgz", + "integrity": "sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==", "dev": true, "license": "MIT", "engines": { - "node": ">= 14.16.0" + "node": ">= 14.18.0" }, "funding": { "type": "individual",