diff options
197 files changed, 4239 insertions, 4665 deletions
diff --git a/.gitlab-ci/pipeline.yml b/.gitlab-ci/pipeline.yml index 06f5c83acbca..c311b1a03a63 100644 --- a/.gitlab-ci/pipeline.yml +++ b/.gitlab-ci/pipeline.yml @@ -104,7 +104,7 @@ variables: script: - sudo -u www-data -E -H composer run-script drupal-phpunit-upgrade-check # Need to pass this along directly. - - sudo -u www-data -E -H php ./core/scripts/run-tests.sh --debug-discovery --color --keep-results --types "$TESTSUITE" --concurrency "$CONCURRENCY" --repeat "1" --sqlite "./sites/default/files/tests.sqlite" --dburl $SIMPLETEST_DB --url $SIMPLETEST_BASE_URL --verbose --non-html --all --ci-parallel-node-index $CI_PARALLEL_NODE_INDEX --ci-parallel-node-total $CI_PARALLEL_NODE_TOTAL + - sudo -u www-data -E -H php ./core/scripts/run-tests.sh --color --keep-results --types "$TESTSUITE" --concurrency "$CONCURRENCY" --repeat "1" --sqlite "./sites/default/files/tests.sqlite" --dburl $SIMPLETEST_DB --url $SIMPLETEST_BASE_URL --verbose --non-html --all --ci-parallel-node-index $CI_PARALLEL_NODE_INDEX --ci-parallel-node-total $CI_PARALLEL_NODE_TOTAL .run-repeat-class-test: &run-repeat-class-test script: @@ -234,7 +234,7 @@ variables: script: - sudo -u www-data -E -H composer run-script drupal-phpunit-upgrade-check # Run a small subset of tests to prove non W3C testing still works. - - sudo -u www-data -E -H php ./core/scripts/run-tests.sh --debug-discovery --color --keep-results --types "$TESTSUITE" --concurrency "$CONCURRENCY" --repeat "1" --sqlite "./sites/default/files/tests.sqlite" --dburl $SIMPLETEST_DB --url $SIMPLETEST_BASE_URL --verbose --non-html javascript + - sudo -u www-data -E -H php ./core/scripts/run-tests.sh --color --keep-results --types "$TESTSUITE" --concurrency "$CONCURRENCY" --repeat "1" --sqlite "./sites/default/files/tests.sqlite" --dburl $SIMPLETEST_DB --url $SIMPLETEST_BASE_URL --verbose --non-html javascript after_script: - sed -i "s#$CI_PROJECT_DIR/##" ./sites/default/files/simpletest/phpunit-*.xml || true diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 000000000000..a2387cc05b8f --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,4 @@ +# Drupal Security Policy + +If you discover a security vulnerability in Drupal core or a contributed project +(module, theme, or distribution) keep it confidential and [report it to the Drupal security team](https://www.drupal.org/docs/develop/issues/issue-procedures-and-etiquette/reporting-a-security-issue). diff --git a/composer.lock b/composer.lock index 88d80ff6611c..1fca73ad3e11 100644 --- a/composer.lock +++ b/composer.lock @@ -497,14 +497,14 @@ "dist": { "type": "path", "url": "core", - "reference": "9a3b93d8f495d3f101bcc2d39ce91695b57aece6" + "reference": "7d2d6a32cdb382310276445d271aeb3348c5d103" }, "require": { "asm89/stack-cors": "^2.3", "composer-runtime-api": "^2.1", "composer/semver": "^3.3", "doctrine/annotations": "^2.0", - "doctrine/lexer": "^2.0", + "doctrine/lexer": "^2 || ^3", "egulias/email-validator": "^3.2.1|^4.0", "ext-date": "*", "ext-dom": "*", diff --git a/core/.phpstan-baseline.php b/core/.phpstan-baseline.php index b7f87b4ee01b..4d2a906d93aa 100644 --- a/core/.phpstan-baseline.php +++ b/core/.phpstan-baseline.php @@ -11114,12 +11114,6 @@ $ignoreErrors[] = [ 'path' => __DIR__ . '/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/UniqueFieldValueValidator.php', ]; $ignoreErrors[] = [ - 'message' => '#^Method Drupal\\\\automated_cron\\\\EventSubscriber\\\\AutomatedCron\\:\\:onTerminate\\(\\) has no return type specified\\.$#', - 'identifier' => 'missingType.return', - 'count' => 1, - 'path' => __DIR__ . '/modules/automated_cron/src/EventSubscriber/AutomatedCron.php', -]; -$ignoreErrors[] = [ 'message' => '#^Method Drupal\\\\ban\\\\BanIpManager\\:\\:banIp\\(\\) has no return type specified\\.$#', 'identifier' => 'missingType.return', 'count' => 1, @@ -11732,18 +11726,6 @@ $ignoreErrors[] = [ 'path' => __DIR__ . '/modules/block/tests/src/Unit/Plugin/migrate/process/BlockSettingsTest.php', ]; $ignoreErrors[] = [ - 'message' => '#^Method Drupal\\\\block_content\\\\Access\\\\AccessGroupAnd\\:\\:addDependency\\(\\) has no return type specified\\.$#', - 'identifier' => 'missingType.return', - 'count' => 1, - 'path' => __DIR__ . '/modules/block_content/src/Access/AccessGroupAnd.php', -]; -$ignoreErrors[] = [ - 'message' => '#^Method Drupal\\\\block_content\\\\Access\\\\AccessGroupAnd\\:\\:getDependencies\\(\\) has no return type specified\\.$#', - 'identifier' => 'missingType.return', - 'count' => 1, - 'path' => __DIR__ . '/modules/block_content/src/Access/AccessGroupAnd.php', -]; -$ignoreErrors[] = [ 'message' => '#^Variable \\$dependency in empty\\(\\) always exists and is not falsy\\.$#', 'identifier' => 'empty.variable', 'count' => 1, @@ -12092,12 +12074,6 @@ $ignoreErrors[] = [ 'path' => __DIR__ . '/modules/block_content/tests/src/Kernel/Migrate/MigrateBlockContentStubTest.php', ]; $ignoreErrors[] = [ - 'message' => '#^Method Drupal\\\\Tests\\\\block_content\\\\Unit\\\\Access\\\\DependentAccessTest\\:\\:providerTestSetFirst\\(\\) has no return type specified\\.$#', - 'identifier' => 'missingType.return', - 'count' => 1, - 'path' => __DIR__ . '/modules/block_content/tests/src/Unit/Access/DependentAccessTest.php', -]; -$ignoreErrors[] = [ 'message' => '#^Method Drupal\\\\Tests\\\\block_content\\\\Unit\\\\Menu\\\\BlockContentLocalTasksTest\\:\\:getBlockContentListingRoutes\\(\\) has no return type specified\\.$#', 'identifier' => 'missingType.return', 'count' => 1, @@ -27014,6 +26990,30 @@ $ignoreErrors[] = [ 'path' => __DIR__ . '/modules/node/src/Form/NodeDeleteForm.php', ]; $ignoreErrors[] = [ + 'message' => '#^Method Drupal\\\\node\\\\Form\\\\NodeForm\\:\\:create\\(\\) has no return type specified\\.$#', + 'identifier' => 'missingType.return', + 'count' => 1, + 'path' => __DIR__ . '/modules/node/src/Form/NodeForm.php', +]; +$ignoreErrors[] = [ + 'message' => '#^Method Drupal\\\\node\\\\Form\\\\NodeForm\\:\\:form\\(\\) has no return type specified\\.$#', + 'identifier' => 'missingType.return', + 'count' => 1, + 'path' => __DIR__ . '/modules/node/src/Form/NodeForm.php', +]; +$ignoreErrors[] = [ + 'message' => '#^Method Drupal\\\\node\\\\Form\\\\NodeForm\\:\\:preview\\(\\) has no return type specified\\.$#', + 'identifier' => 'missingType.return', + 'count' => 1, + 'path' => __DIR__ . '/modules/node/src/Form/NodeForm.php', +]; +$ignoreErrors[] = [ + 'message' => '#^Method Drupal\\\\node\\\\Form\\\\NodeForm\\:\\:save\\(\\) should return int but return statement is missing\\.$#', + 'identifier' => 'return.missing', + 'count' => 2, + 'path' => __DIR__ . '/modules/node/src/Form/NodeForm.php', +]; +$ignoreErrors[] = [ 'message' => '#^Method Drupal\\\\node\\\\Form\\\\NodePreviewForm\\:\\:create\\(\\) has no return type specified\\.$#', 'identifier' => 'missingType.return', 'count' => 1, @@ -27056,58 +27056,58 @@ $ignoreErrors[] = [ 'path' => __DIR__ . '/modules/node/src/Form/NodeRevisionRevertTranslationForm.php', ]; $ignoreErrors[] = [ - 'message' => '#^Method Drupal\\\\node\\\\Form\\\\RebuildPermissionsForm\\:\\:submitForm\\(\\) has no return type specified\\.$#', + 'message' => '#^Method Drupal\\\\node\\\\Form\\\\NodeTypeForm\\:\\:create\\(\\) has no return type specified\\.$#', 'identifier' => 'missingType.return', 'count' => 1, - 'path' => __DIR__ . '/modules/node/src/Form/RebuildPermissionsForm.php', + 'path' => __DIR__ . '/modules/node/src/Form/NodeTypeForm.php', ]; $ignoreErrors[] = [ - 'message' => '#^Method Drupal\\\\node\\\\NodeAccessControlHandler\\:\\:deleteGrants\\(\\) has no return type specified\\.$#', + 'message' => '#^Method Drupal\\\\node\\\\Form\\\\NodeTypeForm\\:\\:form\\(\\) has no return type specified\\.$#', 'identifier' => 'missingType.return', 'count' => 1, - 'path' => __DIR__ . '/modules/node/src/NodeAccessControlHandler.php', + 'path' => __DIR__ . '/modules/node/src/Form/NodeTypeForm.php', ]; $ignoreErrors[] = [ - 'message' => '#^Method Drupal\\\\node\\\\NodeAccessControlHandler\\:\\:writeDefaultGrant\\(\\) has no return type specified\\.$#', - 'identifier' => 'missingType.return', + 'message' => '#^Method Drupal\\\\node\\\\Form\\\\NodeTypeForm\\:\\:save\\(\\) should return int but return statement is missing\\.$#', + 'identifier' => 'return.missing', 'count' => 1, - 'path' => __DIR__ . '/modules/node/src/NodeAccessControlHandler.php', + 'path' => __DIR__ . '/modules/node/src/Form/NodeTypeForm.php', ]; $ignoreErrors[] = [ - 'message' => '#^Method Drupal\\\\node\\\\NodeAccessControlHandlerInterface\\:\\:deleteGrants\\(\\) has no return type specified\\.$#', + 'message' => '#^Method Drupal\\\\node\\\\Form\\\\NodeTypeForm\\:\\:validateForm\\(\\) has no return type specified\\.$#', 'identifier' => 'missingType.return', 'count' => 1, - 'path' => __DIR__ . '/modules/node/src/NodeAccessControlHandlerInterface.php', + 'path' => __DIR__ . '/modules/node/src/Form/NodeTypeForm.php', ]; $ignoreErrors[] = [ - 'message' => '#^Method Drupal\\\\node\\\\NodeAccessControlHandlerInterface\\:\\:writeDefaultGrant\\(\\) has no return type specified\\.$#', + 'message' => '#^Method Drupal\\\\node\\\\Form\\\\RebuildPermissionsForm\\:\\:submitForm\\(\\) has no return type specified\\.$#', 'identifier' => 'missingType.return', 'count' => 1, - 'path' => __DIR__ . '/modules/node/src/NodeAccessControlHandlerInterface.php', + 'path' => __DIR__ . '/modules/node/src/Form/RebuildPermissionsForm.php', ]; $ignoreErrors[] = [ - 'message' => '#^Method Drupal\\\\node\\\\Form\\\\NodeForm\\:\\:create\\(\\) has no return type specified\\.$#', + 'message' => '#^Method Drupal\\\\node\\\\NodeAccessControlHandler\\:\\:deleteGrants\\(\\) has no return type specified\\.$#', 'identifier' => 'missingType.return', 'count' => 1, - 'path' => __DIR__ . '/modules/node/src/Form/NodeForm.php', + 'path' => __DIR__ . '/modules/node/src/NodeAccessControlHandler.php', ]; $ignoreErrors[] = [ - 'message' => '#^Method Drupal\\\\node\\\\Form\\\\NodeForm\\:\\:form\\(\\) has no return type specified\\.$#', + 'message' => '#^Method Drupal\\\\node\\\\NodeAccessControlHandler\\:\\:writeDefaultGrant\\(\\) has no return type specified\\.$#', 'identifier' => 'missingType.return', 'count' => 1, - 'path' => __DIR__ . '/modules/node/src/Form/NodeForm.php', + 'path' => __DIR__ . '/modules/node/src/NodeAccessControlHandler.php', ]; $ignoreErrors[] = [ - 'message' => '#^Method Drupal\\\\node\\\\Form\\\\NodeForm\\:\\:preview\\(\\) has no return type specified\\.$#', + 'message' => '#^Method Drupal\\\\node\\\\NodeAccessControlHandlerInterface\\:\\:deleteGrants\\(\\) has no return type specified\\.$#', 'identifier' => 'missingType.return', 'count' => 1, - 'path' => __DIR__ . '/modules/node/src/Form/NodeForm.php', + 'path' => __DIR__ . '/modules/node/src/NodeAccessControlHandlerInterface.php', ]; $ignoreErrors[] = [ - 'message' => '#^Method Drupal\\\\node\\\\Form\\\\NodeForm\\:\\:save\\(\\) should return int but return statement is missing\\.$#', - 'identifier' => 'return.missing', - 'count' => 2, - 'path' => __DIR__ . '/modules/node/src/Form/NodeForm.php', + 'message' => '#^Method Drupal\\\\node\\\\NodeAccessControlHandlerInterface\\:\\:writeDefaultGrant\\(\\) has no return type specified\\.$#', + 'identifier' => 'missingType.return', + 'count' => 1, + 'path' => __DIR__ . '/modules/node/src/NodeAccessControlHandlerInterface.php', ]; $ignoreErrors[] = [ 'message' => '#^Method Drupal\\\\node\\\\NodeGrantDatabaseStorage\\:\\:alterQuery\\(\\) should return int but return statement is missing\\.$#', @@ -27194,30 +27194,6 @@ $ignoreErrors[] = [ 'path' => __DIR__ . '/modules/node/src/NodeTranslationHandler.php', ]; $ignoreErrors[] = [ - 'message' => '#^Method Drupal\\\\node\\\\Form\\\\NodeTypeForm\\:\\:create\\(\\) has no return type specified\\.$#', - 'identifier' => 'missingType.return', - 'count' => 1, - 'path' => __DIR__ . '/modules/node/src/Form/NodeTypeForm.php', -]; -$ignoreErrors[] = [ - 'message' => '#^Method Drupal\\\\node\\\\Form\\\\NodeTypeForm\\:\\:form\\(\\) has no return type specified\\.$#', - 'identifier' => 'missingType.return', - 'count' => 1, - 'path' => __DIR__ . '/modules/node/src/Form/NodeTypeForm.php', -]; -$ignoreErrors[] = [ - 'message' => '#^Method Drupal\\\\node\\\\Form\\\\NodeTypeForm\\:\\:save\\(\\) should return int but return statement is missing\\.$#', - 'identifier' => 'return.missing', - 'count' => 1, - 'path' => __DIR__ . '/modules/node/src/Form/NodeTypeForm.php', -]; -$ignoreErrors[] = [ - 'message' => '#^Method Drupal\\\\node\\\\Form\\\\NodeTypeForm\\:\\:validateForm\\(\\) has no return type specified\\.$#', - 'identifier' => 'missingType.return', - 'count' => 1, - 'path' => __DIR__ . '/modules/node/src/Form/NodeTypeForm.php', -]; -$ignoreErrors[] = [ 'message' => '#^Method Drupal\\\\node\\\\NodeTypeInterface\\:\\:setDisplaySubmitted\\(\\) has no return type specified\\.$#', 'identifier' => 'missingType.return', 'count' => 1, @@ -48507,25 +48483,25 @@ $ignoreErrors[] = [ ]; $ignoreErrors[] = [ 'message' => '#^Method Drupal\\\\Tests\\\\workspaces\\\\Functional\\\\WorkspaceFormValidationTest\\:\\:isLabelInContentOverview\\(\\) has no return type specified\\.$#', - 'identifier' => 'missingType.return', + 'identifier' => 'missingType.return', 'count' => 1, 'path' => __DIR__ . '/modules/workspaces/tests/src/Functional/WorkspaceFormValidationTest.php', ]; $ignoreErrors[] = [ 'message' => '#^Method Drupal\\\\Tests\\\\workspaces\\\\Functional\\\\WorkspaceFormValidationTest\\:\\:setupWorkspaceSwitcherBlock\\(\\) has no return type specified\\.$#', - 'identifier' => 'missingType.return', + 'identifier' => 'missingType.return', 'count' => 1, 'path' => __DIR__ . '/modules/workspaces/tests/src/Functional/WorkspaceFormValidationTest.php', ]; $ignoreErrors[] = [ 'message' => '#^Method Drupal\\\\Tests\\\\workspaces\\\\Functional\\\\WorkspaceFormValidationTest\\:\\:switchToLive\\(\\) has no return type specified\\.$#', - 'identifier' => 'missingType.return', + 'identifier' => 'missingType.return', 'count' => 1, 'path' => __DIR__ . '/modules/workspaces/tests/src/Functional/WorkspaceFormValidationTest.php', ]; $ignoreErrors[] = [ 'message' => '#^Method Drupal\\\\Tests\\\\workspaces\\\\Functional\\\\WorkspaceFormValidationTest\\:\\:switchToWorkspace\\(\\) has no return type specified\\.$#', - 'identifier' => 'missingType.return', + 'identifier' => 'missingType.return', 'count' => 1, 'path' => __DIR__ . '/modules/workspaces/tests/src/Functional/WorkspaceFormValidationTest.php', ]; diff --git a/core/.phpunit-next.xml b/core/.phpunit-next.xml deleted file mode 100644 index 944ec9dfadd4..000000000000 --- a/core/.phpunit-next.xml +++ /dev/null @@ -1,164 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - - -<!-- This is a near-copy of phpunit.xml.dist, used to test with upcoming - PHPUnit versions. - - Current differences: - * for PHPUnit 11: removed duplicate directories from <testsuites>, - required in PHPUnit 10, but that cause duplication warnings in - PHPUnit 11. ---> - - -<!-- For how to customize PHPUnit configuration, see core/tests/README.md. --> -<!-- TODO set checkForUnintentionallyCoveredCode="true" once https://www.drupal.org/node/2626832 is resolved. --> -<!-- PHPUnit expects functional tests to be run with either a privileged user - or your current system user. See core/tests/README.md and - https://www.drupal.org/node/2116263 for details. ---> -<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - bootstrap="tests/bootstrap.php" - colors="true" - beStrictAboutTestsThatDoNotTestAnything="true" - beStrictAboutOutputDuringTests="true" - beStrictAboutChangesToGlobalState="true" - failOnRisky="true" - failOnWarning="true" - displayDetailsOnTestsThatTriggerErrors="true" - displayDetailsOnTestsThatTriggerWarnings="true" - displayDetailsOnTestsThatTriggerDeprecations="true" - cacheResult="false" - xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.5/phpunit.xsd" - cacheDirectory=".phpunit.cache"> - <php> - <!-- Set error reporting to E_ALL. --> - <ini name="error_reporting" value="32767"/> - <!-- Do not limit the amount of memory tests take to run. --> - <ini name="memory_limit" value="-1"/> - <!-- Example SIMPLETEST_BASE_URL value: http://localhost --> - <env name="SIMPLETEST_BASE_URL" value=""/> - <!-- Example SIMPLETEST_DB value: mysql://username:password@localhost/database_name#table_prefix --> - <env name="SIMPLETEST_DB" value=""/> - <!-- By default, browser tests will output links that use the base URL set - in SIMPLETEST_BASE_URL. However, if your SIMPLETEST_BASE_URL is an internal - path (such as may be the case in a virtual or Docker-based environment), - you can set the base URL used in the browser test output links to something - reachable from your host machine here. This will allow you to follow them - directly and view the output. --> - <env name="BROWSERTEST_OUTPUT_BASE_URL" value=""/> - <!-- The environment variable SYMFONY_DEPRECATIONS_HELPER is used to configure - the behavior of the deprecation tests. - Drupal core's testing framework is setting this variable to its defaults. - Projects with their own requirements need to manage this variable - explicitly. - --> - <!-- To disable deprecation testing completely uncomment the next line. --> - <!-- <env name="SYMFONY_DEPRECATIONS_HELPER" value="disabled"/> --> - <!-- Deprecation errors can be selectively ignored by specifying a file of - regular expression patterns for exclusion. - Uncomment the line below to specify a custom deprecations ignore file. - NOTE: it may be required to specify the full path to the file to run tests - correctly. - --> - <!-- <env name="SYMFONY_DEPRECATIONS_HELPER" value="ignoreFile=.deprecation-ignore.txt"/> --> - <!-- Example for changing the driver class for mink tests MINK_DRIVER_CLASS value: 'Drupal\FunctionalJavascriptTests\DrupalSelenium2Driver' --> - <env name="MINK_DRIVER_CLASS" value=""/> - <!-- Example for changing the driver args to mink tests MINK_DRIVER_ARGS value: '["http://127.0.0.1:8510"]' --> - <env name="MINK_DRIVER_ARGS" value=""/> - <!-- Example for changing the driver args to webdriver tests MINK_DRIVER_ARGS_WEBDRIVER value: '["chrome", { "goog:chromeOptions": { "w3c": false } }, "http://localhost:4444/wd/hub"]' For using the Firefox browser, replace "chrome" with "firefox" --> - <env name="MINK_DRIVER_ARGS_WEBDRIVER" value=""/> - </php> - <extensions> - <!-- Functional tests HTML output logging. --> - <bootstrap class="Drupal\TestTools\Extension\HtmlLogging\HtmlOutputLogger"> - <!-- The directory where the browser output will be stored. If a relative - path is specified, it will be relative to the current working directory - of the process running the PHPUnit CLI. In CI environments, this can be - overridden by the value set for the "BROWSERTEST_OUTPUT_DIRECTORY" - environment variable. - --> - <parameter name="outputDirectory" value="sites/simpletest/browser_output"/> - <!-- By default browser tests print the individual links in the test run - report. To avoid overcrowding the output in CI environments, you can - set the "verbose" parameter or the "BROWSERTEST_OUTPUT_VERBOSE" - environment variable to "false". In GitLabCI, the output is saved - anyway as an artifact that can be browsed or downloaded from Gitlab. - --> - <parameter name="verbose" value="true"/> - </bootstrap> - <!-- Debug dump() printer. --> - <bootstrap class="Drupal\TestTools\Extension\Dump\DebugDump"> - <parameter name="colors" value="true"/> - <parameter name="printCaller" value="true"/> - </bootstrap> - </extensions> - <testsuites> - <testsuite name="unit-component"> - <directory>tests/Drupal/Tests/Component</directory> - </testsuite> - <testsuite name="unit"> - <directory>tests/Drupal/Tests</directory> - <exclude>tests/Drupal/Tests/Component</exclude> - <directory>modules/**/tests/src/Unit</directory> - <directory>profiles/**/tests/src/Unit</directory> - <directory>themes/**/tests/src/Unit</directory> - <directory>../modules/**/tests/src/Unit</directory> - <directory>../profiles/**/tests/src/Unit</directory> - <directory>../themes/**/tests/src/Unit</directory> - </testsuite> - <testsuite name="kernel"> - <directory>tests/Drupal/KernelTests</directory> - <directory>modules/**/tests/src/Kernel</directory> - <directory>recipes/*/tests/src/Kernel</directory> - <directory>profiles/**/tests/src/Kernel</directory> - <directory>themes/**/tests/src/Kernel</directory> - <directory>../modules/**/tests/src/Kernel</directory> - <directory>../profiles/**/tests/src/Kernel</directory> - <directory>../themes/**/tests/src/Kernel</directory> - </testsuite> - <testsuite name="functional"> - <directory>tests/Drupal/FunctionalTests</directory> - <directory>modules/**/tests/src/Functional</directory> - <directory>profiles/**/tests/src/Functional</directory> - <directory>recipes/*/tests/src/Functional</directory> - <directory>themes/**/tests/src/Functional</directory> - <directory>../modules/**/tests/src/Functional</directory> - <directory>../profiles/**/tests/src/Functional</directory> - <directory>../themes/**/tests/src/Functional</directory> - </testsuite> - <testsuite name="functional-javascript"> - <directory>tests/Drupal/FunctionalJavascriptTests</directory> - <directory>modules/**/tests/src/FunctionalJavascript</directory> - <directory>recipes/*/tests/src/FunctionalJavascript</directory> - <directory>profiles/**/tests/src/FunctionalJavascript</directory> - <directory>themes/**/tests/src/FunctionalJavascript</directory> - <directory>../modules/**/tests/src/FunctionalJavascript</directory> - <directory>../profiles/**/tests/src/FunctionalJavascript</directory> - <directory>../themes/**/tests/src/FunctionalJavascript</directory> - </testsuite> - <testsuite name="build"> - <directory>tests/Drupal/BuildTests</directory> - <directory>modules/**/tests/src/Build</directory> - </testsuite> - </testsuites> - <!-- Settings for coverage reports. --> - <source ignoreSuppressionOfDeprecations="true"> - <include> - <directory>./includes</directory> - <directory>./lib</directory> - <directory>./modules</directory> - <directory>../modules</directory> - <directory>../sites</directory> - </include> - <exclude> - <directory>./lib/Drupal/Component</directory> - <directory>./modules/*/src/Tests</directory> - <directory>./modules/*/tests</directory> - <directory>../modules/*/src/Tests</directory> - <directory>../modules/*/tests</directory> - <directory>../modules/*/*/src/Tests</directory> - <directory>../modules/*/*/tests</directory> - </exclude> - </source> -</phpunit> diff --git a/core/assets/schemas/v1/metadata-full.schema.json b/core/assets/schemas/v1/metadata-full.schema.json index ac275eb1bdfb..53121eb4d2b3 100644 --- a/core/assets/schemas/v1/metadata-full.schema.json +++ b/core/assets/schemas/v1/metadata-full.schema.json @@ -2,6 +2,24 @@ "$id": "https://git.drupalcode.org/project/drupal/-/raw/HEAD/core/assets/schemas/v1/metadata-full.schema.json", "$schema": "http://json-schema.org/draft-04/schema#", "$defs": { + "propDefinition": { + "$ref": "http://json-schema.org/draft-04/schema#", + "meta:enum": { + "type": "object", + "minItems": 1, + "uniqueItems": true, + "patternProperties": { + "additionalProperties": false, + "^[a-zA-Z0-9_-]*$": { + "type": "string" + } + } + }, + "x-translation-context": { + "type": "string", + "title": "Translation Context" + } + }, "slotDefinition": { "type": "object", "additionalProperties": false, @@ -160,7 +178,7 @@ ] }, "props": { - "$ref": "http://json-schema.org/draft-04/schema#" + "$ref": "#/$defs/propDefinition" }, "slots": { "$ref": "metadata.schema.json#/$defs/slotDefinition" diff --git a/core/assets/schemas/v1/metadata.schema.json b/core/assets/schemas/v1/metadata.schema.json index 5e5c753360fd..b5f52676f3c3 100644 --- a/core/assets/schemas/v1/metadata.schema.json +++ b/core/assets/schemas/v1/metadata.schema.json @@ -2,6 +2,24 @@ "$id": "https://git.drupalcode.org/project/drupal/-/raw/HEAD/core/assets/schemas/v1/metadata.schema.json", "$schema": "http://json-schema.org/draft-04/schema#", "$defs": { + "propDefinition": { + "$ref": "http://json-schema.org/draft-04/schema#", + "meta:enum": { + "type": "object", + "minItems": 1, + "uniqueItems": true, + "patternProperties": { + "additionalProperties": false, + "^[a-zA-Z0-9_-]*$": { + "type": "string" + } + } + }, + "x-translation-context": { + "type": "string", + "title": "Translation Context" + } + }, "slotDefinition": { "type": "object", "additionalProperties": false, @@ -208,7 +226,7 @@ ] }, "props": { - "$ref": "http://json-schema.org/draft-04/schema#" + "$ref": "#/$defs/propDefinition" }, "slots": { "$ref": "#/$defs/slotDefinition" diff --git a/core/composer.json b/core/composer.json index 9b0e3d5305ec..e871fa3acb55 100644 --- a/core/composer.json +++ b/core/composer.json @@ -38,7 +38,7 @@ "revolt/event-loop": "^1.0", "twig/twig": "^3.21.0", "doctrine/annotations": "^2.0", - "doctrine/lexer": "^2.0", + "doctrine/lexer": "^2 || ^3", "guzzlehttp/guzzle": "^7.5", "guzzlehttp/psr7": "^2.4.5", "egulias/email-validator": "^3.2.1|^4.0", diff --git a/core/core.services.yml b/core/core.services.yml index 789eee02214b..534266780de9 100644 --- a/core/core.services.yml +++ b/core/core.services.yml @@ -461,7 +461,6 @@ services: cron: class: Drupal\Core\Cron arguments: ['@module_handler', '@lock', '@queue', '@state', '@account_switcher', '@logger.channel.cron', '@plugin.manager.queue_worker', '@datetime.time', '%queue.config%'] - lazy: true Drupal\Core\CronInterface: '@cron' diff.formatter: class: Drupal\Core\Diff\DiffFormatter diff --git a/core/lib/Drupal/Component/Annotation/Doctrine/DocParser.php b/core/lib/Drupal/Component/Annotation/Doctrine/DocParser.php index 052542ecfca7..5fb3e2e3a75e 100644 --- a/core/lib/Drupal/Component/Annotation/Doctrine/DocParser.php +++ b/core/lib/Drupal/Component/Annotation/Doctrine/DocParser.php @@ -417,7 +417,7 @@ final class DocParser $message = sprintf('Expected %s, got ', $expected); $message .= ($this->lexer->lookahead === null) ? 'end of string' - : sprintf("'%s' at position %s", $token['value'], $token['position']); + : sprintf("'%s' at position %s", $token->value, $token->position); if (strlen($this->context)) { $message .= ' in ' . $this->context; @@ -616,13 +616,13 @@ final class DocParser $annotations = array(); while (null !== $this->lexer->lookahead) { - if (DocLexer::T_AT !== $this->lexer->lookahead['type']) { + if (DocLexer::T_AT !== $this->lexer->lookahead->type) { $this->lexer->moveNext(); continue; } // make sure the @ is preceded by non-catchable pattern - if (null !== $this->lexer->token && $this->lexer->lookahead['position'] === $this->lexer->token['position'] + strlen($this->lexer->token['value'])) { + if (null !== $this->lexer->token && $this->lexer->lookahead->position === $this->lexer->token->position + strlen($this->lexer->token->value)) { $this->lexer->moveNext(); continue; } @@ -630,8 +630,8 @@ final class DocParser // make sure the @ is followed by either a namespace separator, or // an identifier token if ((null === $peek = $this->lexer->glimpse()) - || (DocLexer::T_NAMESPACE_SEPARATOR !== $peek['type'] && !in_array($peek['type'], self::$classIdentifiers, true)) - || $peek['position'] !== $this->lexer->lookahead['position'] + 1) { + || (DocLexer::T_NAMESPACE_SEPARATOR !== $peek->type && !in_array($peek->type, self::$classIdentifiers, true)) + || $peek->position !== $this->lexer->lookahead->position + 1) { $this->lexer->moveNext(); continue; } @@ -988,17 +988,17 @@ final class DocParser $this->lexer->moveNext(); - $className = $this->lexer->token['value']; + $className = $this->lexer->token->value; while ( null !== $this->lexer->lookahead && - $this->lexer->lookahead['position'] === ($this->lexer->token['position'] + strlen($this->lexer->token['value'])) && + $this->lexer->lookahead->position === ($this->lexer->token->position + strlen($this->lexer->token->value)) && $this->lexer->isNextToken(DocLexer::T_NAMESPACE_SEPARATOR) ) { $this->match(DocLexer::T_NAMESPACE_SEPARATOR); $this->matchAny(self::$classIdentifiers); - $className .= '\\' . $this->lexer->token['value']; + $className .= '\\' . $this->lexer->token->value; } return $className; @@ -1013,7 +1013,7 @@ final class DocParser { $peek = $this->lexer->glimpse(); - if (DocLexer::T_EQUALS === $peek['type']) { + if (DocLexer::T_EQUALS === $peek->type) { return $this->FieldAssignment(); } @@ -1039,18 +1039,18 @@ final class DocParser return $this->Constant(); } - switch ($this->lexer->lookahead['type']) { + switch ($this->lexer->lookahead->type) { case DocLexer::T_STRING: $this->match(DocLexer::T_STRING); - return $this->lexer->token['value']; + return $this->lexer->token->value; case DocLexer::T_INTEGER: $this->match(DocLexer::T_INTEGER); - return (int)$this->lexer->token['value']; + return (int)$this->lexer->token->value; case DocLexer::T_FLOAT: $this->match(DocLexer::T_FLOAT); - return (float)$this->lexer->token['value']; + return (float)$this->lexer->token->value; case DocLexer::T_TRUE: $this->match(DocLexer::T_TRUE); @@ -1078,7 +1078,7 @@ final class DocParser private function FieldAssignment() { $this->match(DocLexer::T_IDENTIFIER); - $fieldName = $this->lexer->token['value']; + $fieldName = $this->lexer->token->value; $this->match(DocLexer::T_EQUALS); @@ -1146,14 +1146,14 @@ final class DocParser { $peek = $this->lexer->glimpse(); - if (DocLexer::T_EQUALS === $peek['type'] - || DocLexer::T_COLON === $peek['type']) { + if (DocLexer::T_EQUALS === $peek->type + || DocLexer::T_COLON === $peek->type) { if ($this->lexer->isNextToken(DocLexer::T_IDENTIFIER)) { $key = $this->Constant(); } else { $this->matchAny(array(DocLexer::T_INTEGER, DocLexer::T_STRING)); - $key = $this->lexer->token['value']; + $key = $this->lexer->token->value; } $this->matchAny(array(DocLexer::T_EQUALS, DocLexer::T_COLON)); diff --git a/core/lib/Drupal/Component/Annotation/composer.json b/core/lib/Drupal/Component/Annotation/composer.json index 3575798a7c15..24977f8da9f7 100644 --- a/core/lib/Drupal/Component/Annotation/composer.json +++ b/core/lib/Drupal/Component/Annotation/composer.json @@ -9,7 +9,7 @@ "require": { "php": ">=8.3.0", "doctrine/annotations": "^2.0", - "doctrine/lexer": "^2.0", + "doctrine/lexer": "^2 || ^3", "drupal/core-class-finder": "11.x-dev", "drupal/core-file-cache": "11.x-dev", "drupal/core-plugin": "11.x-dev", diff --git a/core/modules/block_content/src/Access/AccessGroupAnd.php b/core/lib/Drupal/Core/Access/AccessGroupAnd.php index be86d9e97000..d4535ccac523 100644 --- a/core/modules/block_content/src/Access/AccessGroupAnd.php +++ b/core/lib/Drupal/Core/Access/AccessGroupAnd.php @@ -1,9 +1,7 @@ <?php -namespace Drupal\block_content\Access; +namespace Drupal\Core\Access; -use Drupal\Core\Access\AccessibleInterface; -use Drupal\Core\Access\AccessResult; use Drupal\Core\Session\AccountInterface; /** @@ -21,7 +19,12 @@ class AccessGroupAnd implements AccessibleInterface { protected $dependencies = []; /** - * {@inheritdoc} + * Adds an access dependency. + * + * @param \Drupal\Core\Access\AccessibleInterface $dependency + * The access dependency to be added. + * + * @return $this */ public function addDependency(AccessibleInterface $dependency) { $this->dependencies[] = $dependency; @@ -40,7 +43,10 @@ class AccessGroupAnd implements AccessibleInterface { } /** - * {@inheritdoc} + * Gets all the access dependencies. + * + * @return list<\Drupal\Core\Access\AccessibleInterface> + * The list of access dependencies. */ public function getDependencies() { return $this->dependencies; diff --git a/core/modules/block_content/src/Access/DependentAccessInterface.php b/core/lib/Drupal/Core/Access/DependentAccessInterface.php index bc6a6dcec694..eee44102c953 100644 --- a/core/modules/block_content/src/Access/DependentAccessInterface.php +++ b/core/lib/Drupal/Core/Access/DependentAccessInterface.php @@ -1,6 +1,6 @@ <?php -namespace Drupal\block_content\Access; +namespace Drupal\Core\Access; /** * Interface for AccessibleInterface objects that have an access dependency. diff --git a/core/modules/block_content/src/Access/RefinableDependentAccessInterface.php b/core/lib/Drupal/Core/Access/RefinableDependentAccessInterface.php index 5d9eaf430b43..a6e5e671aaae 100644 --- a/core/modules/block_content/src/Access/RefinableDependentAccessInterface.php +++ b/core/lib/Drupal/Core/Access/RefinableDependentAccessInterface.php @@ -1,8 +1,6 @@ <?php -namespace Drupal\block_content\Access; - -use Drupal\Core\Access\AccessibleInterface; +namespace Drupal\Core\Access; /** * An interface to allow adding an access dependency. diff --git a/core/modules/block_content/src/Access/RefinableDependentAccessTrait.php b/core/lib/Drupal/Core/Access/RefinableDependentAccessTrait.php index 98b2a547ccfb..96b966e8d873 100644 --- a/core/modules/block_content/src/Access/RefinableDependentAccessTrait.php +++ b/core/lib/Drupal/Core/Access/RefinableDependentAccessTrait.php @@ -1,11 +1,9 @@ <?php -namespace Drupal\block_content\Access; - -use Drupal\Core\Access\AccessibleInterface; +namespace Drupal\Core\Access; /** - * Trait for \Drupal\block_content\Access\RefinableDependentAccessInterface. + * Trait for \Drupal\Core\Access\RefinableDependentAccessInterface. * * @internal */ diff --git a/core/lib/Drupal/Core/Config/Plugin/Validation/Constraint/ConfigExistsConstraintValidator.php b/core/lib/Drupal/Core/Config/Plugin/Validation/Constraint/ConfigExistsConstraintValidator.php index fbc7542a7de9..9f6d1188dc88 100644 --- a/core/lib/Drupal/Core/Config/Plugin/Validation/Constraint/ConfigExistsConstraintValidator.php +++ b/core/lib/Drupal/Core/Config/Plugin/Validation/Constraint/ConfigExistsConstraintValidator.php @@ -5,6 +5,7 @@ declare(strict_types = 1); namespace Drupal\Core\Config\Plugin\Validation\Constraint; use Drupal\Core\Config\ConfigFactoryInterface; +use Drupal\Core\Config\Schema\TypeResolver; use Drupal\Core\DependencyInjection\ContainerInjectionInterface; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\Validator\Constraint; @@ -50,6 +51,8 @@ class ConfigExistsConstraintValidator extends ConstraintValidator implements Con return; } + $constraint->prefix = TypeResolver::resolveDynamicTypeName($constraint->prefix, $this->context->getObject()); + if (!in_array($constraint->prefix . $name, $this->configFactory->listAll($constraint->prefix), TRUE)) { $this->context->addViolation($constraint->message, ['@name' => $constraint->prefix . $name]); } diff --git a/core/lib/Drupal/Core/DependencyInjection/Compiler/BackendCompilerPass.php b/core/lib/Drupal/Core/DependencyInjection/Compiler/BackendCompilerPass.php index 1cdeb7263cee..127318c1cd0c 100644 --- a/core/lib/Drupal/Core/DependencyInjection/Compiler/BackendCompilerPass.php +++ b/core/lib/Drupal/Core/DependencyInjection/Compiler/BackendCompilerPass.php @@ -37,7 +37,6 @@ class BackendCompilerPass implements CompilerPassInterface { * {@inheritdoc} */ public function process(ContainerBuilder $container): void { - $driver_backend = NULL; if ($container->hasParameter('default_backend')) { $default_backend = $container->getParameter('default_backend'); // Opt out from the default backend. @@ -64,10 +63,10 @@ class BackendCompilerPass implements CompilerPassInterface { if ($container->hasAlias($id)) { continue; } - if ($container->hasDefinition("$driver_backend.$id") || $container->hasAlias("$driver_backend.$id")) { + if (isset($driver_backend) && ($container->hasDefinition("$driver_backend.$id") || $container->hasAlias("$driver_backend.$id"))) { $container->setAlias($id, new Alias("$driver_backend.$id")); } - elseif ($container->hasDefinition("$default_backend.$id") || $container->hasAlias("$default_backend.$id")) { + elseif (!empty($default_backend) && ($container->hasDefinition("$default_backend.$id") || $container->hasAlias("$default_backend.$id"))) { $container->setAlias($id, new Alias("$default_backend.$id")); } } diff --git a/core/lib/Drupal/Core/Extension/ModuleHandler.php b/core/lib/Drupal/Core/Extension/ModuleHandler.php index 53cf3c95aa5f..ad361d3fe669 100644 --- a/core/lib/Drupal/Core/Extension/ModuleHandler.php +++ b/core/lib/Drupal/Core/Extension/ModuleHandler.php @@ -333,6 +333,9 @@ class ModuleHandler implements ModuleHandlerInterface { */ public function resetImplementations() { $this->alterEventListeners = []; + $this->invokeMap = []; + $this->listenersByHook = []; + $this->modulesByHook = []; } /** @@ -730,6 +733,7 @@ class ModuleHandler implements ModuleHandlerInterface { */ protected function getFlatHookListeners(string $hook): array { if (!isset($this->listenersByHook[$hook])) { + $this->listenersByHook[$hook] = []; foreach ($this->eventDispatcher->getListeners("drupal_hook.$hook") as $listener) { if (is_array($listener) && is_object($listener[0])) { $module = $this->hookImplementationsMap[$hook][get_class($listener[0])][$listener[1]]; @@ -755,7 +759,7 @@ class ModuleHandler implements ModuleHandlerInterface { } } - return $this->listenersByHook[$hook] ?? []; + return $this->listenersByHook[$hook]; } } diff --git a/core/lib/Drupal/Core/ProxyClass/Cron.php b/core/lib/Drupal/Core/ProxyClass/Cron.php deleted file mode 100644 index 640b9d030c53..000000000000 --- a/core/lib/Drupal/Core/ProxyClass/Cron.php +++ /dev/null @@ -1,80 +0,0 @@ -<?php -// phpcs:ignoreFile - -/** - * This file was generated via php core/scripts/generate-proxy-class.php 'Drupal\Core\Cron' "core/lib/Drupal/Core". - */ - -namespace Drupal\Core\ProxyClass { - - /** - * Provides a proxy class for \Drupal\Core\Cron. - * - * @see \Drupal\Component\ProxyBuilder - */ - class Cron implements \Drupal\Core\CronInterface - { - - use \Drupal\Core\DependencyInjection\DependencySerializationTrait; - - /** - * The id of the original proxied service. - * - * @var string - */ - protected $drupalProxyOriginalServiceId; - - /** - * The real proxied service, after it was lazy loaded. - * - * @var \Drupal\Core\Cron - */ - protected $service; - - /** - * The service container. - * - * @var \Symfony\Component\DependencyInjection\ContainerInterface - */ - protected $container; - - /** - * Constructs a ProxyClass Drupal proxy object. - * - * @param \Symfony\Component\DependencyInjection\ContainerInterface $container - * The container. - * @param string $drupal_proxy_original_service_id - * The service ID of the original service. - */ - public function __construct(\Symfony\Component\DependencyInjection\ContainerInterface $container, $drupal_proxy_original_service_id) - { - $this->container = $container; - $this->drupalProxyOriginalServiceId = $drupal_proxy_original_service_id; - } - - /** - * Lazy loads the real service from the container. - * - * @return object - * Returns the constructed real service. - */ - protected function lazyLoadItself() - { - if (!isset($this->service)) { - $this->service = $this->container->get($this->drupalProxyOriginalServiceId); - } - - return $this->service; - } - - /** - * {@inheritdoc} - */ - public function run() - { - return $this->lazyLoadItself()->run(); - } - - } - -} diff --git a/core/lib/Drupal/Core/Test/PhpUnitTestDiscovery.php b/core/lib/Drupal/Core/Test/PhpUnitTestDiscovery.php deleted file mode 100644 index d9737028821c..000000000000 --- a/core/lib/Drupal/Core/Test/PhpUnitTestDiscovery.php +++ /dev/null @@ -1,346 +0,0 @@ -<?php - -declare(strict_types=1); - -namespace Drupal\Core\Test; - -use Drupal\Core\Test\Exception\MissingGroupException; -use Drupal\TestTools\PhpUnitCompatibility\RunnerVersion; -use PHPUnit\Framework\DataProviderTestSuite; -use PHPUnit\Framework\Test; -use PHPUnit\Framework\TestCase; -use PHPUnit\Framework\TestSuite; -use PHPUnit\TextUI\Configuration\Builder; -use PHPUnit\TextUI\Configuration\TestSuiteBuilder; - -/** - * Discovers available tests using the PHPUnit API. - * - * @internal - */ -class PhpUnitTestDiscovery { - - /** - * The map of legacy test suite identifiers to phpunit.xml ones. - * - * @var array<string,string> - */ - private array $map = [ - 'PHPUnit-FunctionalJavascript' => 'functional-javascript', - 'PHPUnit-Functional' => 'functional', - 'PHPUnit-Kernel' => 'kernel', - 'PHPUnit-Unit' => 'unit', - 'PHPUnit-Unit-Component' => 'unit-component', - 'PHPUnit-Build' => 'build', - ]; - - /** - * The reverse map of legacy test suite identifiers to phpunit.xml ones. - * - * @var array<string,string> - */ - private array $reverseMap; - - /** - * The warnings generated during the discovery. - * - * @var list<string> - */ - private array $warnings = []; - - public function __construct( - private string $configurationFilePath, - ) { - $this->reverseMap = array_flip($this->map); - } - - /** - * Discovers available tests. - * - * @param string|null $extension - * (optional) The name of an extension to limit discovery to; e.g., 'node'. - * @param list<string> $testSuites - * (optional) An array of PHPUnit test suites to filter the discovery for. - * @param string|null $directory - * (optional) Limit discovered tests to a specific directory. - * - * @return array<string<array<class-string, array{name: class-string, description: string, group: string|int, groups: list<string|int>, type: string, file: string, tests_count: positive-int}>>> - * An array of test groups keyed by the group name. Each test group is an - * array of test class information arrays as returned by - * ::getTestClassInfo(), keyed by test class. If a test class belongs to - * multiple groups, it will appear under all group keys it belongs to. - */ - public function getTestClasses(?string $extension = NULL, array $testSuites = [], ?string $directory = NULL): array { - $this->warnings = []; - - $args = ['--configuration', $this->configurationFilePath]; - - if (!empty($testSuites)) { - // Convert $testSuites from Drupal's legacy syntax to the syntax used in - // phpunit.xml, that is necessary to PHPUnit to be able to apply the - // test suite filter. For example, 'PHPUnit-Unit' to 'unit'. - $tmp = []; - foreach ($testSuites as $i) { - if (!is_string($i)) { - throw new \InvalidArgumentException("Test suite must be a string"); - } - if (str_contains($i, ' ')) { - throw new \InvalidArgumentException("Test suite name '{$i}' is invalid"); - } - $tmp[] = $this->map[$i] ?? $i; - } - $args[] = '--testsuite=' . implode(',', $tmp); - } - - if ($directory !== NULL) { - $args[] = $directory; - } - - $phpUnitConfiguration = (new Builder())->build($args); - - // TestSuiteBuilder calls the test data providers during the discovery. - // Data providers may be changing the Drupal service container, which leads - // to potential issues. We save the current container before running the - // discovery, and in case a change is detected, reset it and raise - // warnings so that developers can tune their data provider code. - if (\Drupal::hasContainer()) { - $container = \Drupal::getContainer(); - $containerObjectId = spl_object_id($container); - } - $phpUnitTestSuite = (new TestSuiteBuilder())->build($phpUnitConfiguration); - if (isset($containerObjectId) && $containerObjectId !== spl_object_id(\Drupal::getContainer())) { - $this->warnings[] = '*** The service container was changed during the test discovery ***'; - $this->warnings[] = 'Probably a test data provider method called \\Drupal::setContainer.'; - $this->warnings[] = 'Ensure that all the data providers restore the original container before returning data.'; - assert(isset($container)); - \Drupal::setContainer($container); - } - - $list = $directory === NULL ? - $this->getTestList($phpUnitTestSuite, $extension) : - $this->getTestListLimitedToDirectory($phpUnitTestSuite, $extension, $testSuites); - - // Sort the groups and tests within the groups by name. - uksort($list, 'strnatcasecmp'); - foreach ($list as &$tests) { - uksort($tests, 'strnatcasecmp'); - } - - return $list; - } - - /** - * Discovers all class files in all available extensions. - * - * @param string|null $extension - * (optional) The name of an extension to limit discovery to; e.g., 'node'. - * @param string|null $directory - * (optional) Limit discovered tests to a specific directory. - * - * @return array - * A classmap containing all discovered class files; i.e., a map of - * fully-qualified classnames to path names. - */ - public function findAllClassFiles(?string $extension = NULL, ?string $directory = NULL): array { - $testClasses = $this->getTestClasses($extension, [], $directory); - $classMap = []; - foreach ($testClasses as $group) { - foreach ($group as $className => $info) { - $classMap[$className] = $info['file']; - } - } - return $classMap; - } - - /** - * Returns the warnings generated during the discovery. - * - * @return list<string> - * The warnings. - */ - public function getWarnings(): array { - return $this->warnings; - } - - /** - * Returns a list of tests from a TestSuite object. - * - * @param \PHPUnit\Framework\TestSuite $phpUnitTestSuite - * The TestSuite object returned by PHPUnit test discovery. - * @param string|null $extension - * The name of an extension to limit discovery to; e.g., 'node'. - * - * @return array<string<array<class-string, array{name: class-string, description: string, group: string|int, groups: list<string|int>, type: string, file: string, tests_count: positive-int}>>> - * An array of test groups keyed by the group name. Each test group is an - * array of test class information arrays as returned by - * ::getTestClassInfo(), keyed by test class. If a test class belongs to - * multiple groups, it will appear under all group keys it belongs to. - */ - private function getTestList(TestSuite $phpUnitTestSuite, ?string $extension): array { - $list = []; - foreach ($phpUnitTestSuite->tests() as $testSuite) { - foreach ($testSuite->tests() as $testClass) { - if ($extension !== NULL && !str_starts_with($testClass->name(), "Drupal\\Tests\\{$extension}\\")) { - continue; - } - - $item = $this->getTestClassInfo( - $testClass, - $this->reverseMap[$testSuite->name()] ?? $testSuite->name(), - ); - - foreach ($item['groups'] as $group) { - $list[$group][$item['name']] = $item; - } - } - } - return $list; - } - - /** - * Returns a list of tests from a TestSuite object limited to a directory. - * - * @param \PHPUnit\Framework\TestSuite $phpUnitTestSuite - * The TestSuite object returned by PHPUnit test discovery. - * @param string|null $extension - * The name of an extension to limit discovery to; e.g., 'node'. - * @param list<string> $testSuites - * An array of PHPUnit test suites to filter the discovery for. - * - * @return array<string<array<class-string, array{name: class-string, description: string, group: string|int, groups: list<string|int>, type: string, file: string, tests_count: positive-int}>>> - * An array of test groups keyed by the group name. Each test group is an - * array of test class information arrays as returned by - * ::getTestClassInfo(), keyed by test class. If a test class belongs to - * multiple groups, it will appear under all group keys it belongs to. - */ - private function getTestListLimitedToDirectory(TestSuite $phpUnitTestSuite, ?string $extension, array $testSuites): array { - $list = []; - - // In this case, PHPUnit found a single test class to run tests for. - if ($phpUnitTestSuite->isForTestClass()) { - if ($extension !== NULL && !str_starts_with($phpUnitTestSuite->name(), "Drupal\\Tests\\{$extension}\\")) { - return []; - } - - // Take the test suite name from the class namespace. - $testSuite = 'PHPUnit-' . TestDiscovery::getPhpunitTestSuite($phpUnitTestSuite->name()); - if (!empty($testSuites) && !in_array($testSuite, $testSuites, TRUE)) { - return []; - } - - $item = $this->getTestClassInfo($phpUnitTestSuite, $testSuite); - - foreach ($item['groups'] as $group) { - $list[$group][$item['name']] = $item; - } - return $list; - } - - // Multiple test classes were found. - $list = []; - foreach ($phpUnitTestSuite->tests() as $testClass) { - if ($extension !== NULL && !str_starts_with($testClass->name(), "Drupal\\Tests\\{$extension}\\")) { - continue; - } - - // Take the test suite name from the class namespace. - $testSuite = 'PHPUnit-' . TestDiscovery::getPhpunitTestSuite($testClass->name()); - if (!empty($testSuites) && !in_array($testSuite, $testSuites, TRUE)) { - continue; - } - - $item = $this->getTestClassInfo($testClass, $testSuite); - - foreach ($item['groups'] as $group) { - $list[$group][$item['name']] = $item; - } - } - return $list; - - } - - /** - * Returns the test class information. - * - * @param \PHPUnit\Framework\Test $testClass - * The test class. - * @param string $testSuite - * The test suite of this test class. - * - * @return array{name: class-string, description: string, group: string|int, groups: list<string|int>, type: string, file: string, tests_count: positive-int} - * The test class information. - */ - private function getTestClassInfo(Test $testClass, string $testSuite): array { - $reflection = new \ReflectionClass($testClass->name()); - - // Let PHPUnit API return the groups, as it will deal transparently with - // annotations or attributes, but skip groups generated by PHPUnit - // internally and starting with a double underscore prefix. - if (RunnerVersion::getMajor() < 11) { - $groups = array_filter($testClass->groups(), function (string $value): bool { - return !str_starts_with($value, '__phpunit'); - }); - } - else { - // In PHPUnit 11+, we need to coalesce the groups from individual tests - // as they may not be available from the test class level (when tests are - // backed by data providers). - $tmp = []; - foreach ($testClass as $test) { - if ($test instanceof DataProviderTestSuite) { - foreach ($test as $testWithData) { - $tmp = array_merge($tmp, $testWithData->groups()); - } - } - else { - $tmp = array_merge($tmp, $test->groups()); - } - } - $groups = array_filter(array_unique($tmp), function (string $value): bool { - return !str_starts_with($value, '__phpunit'); - }); - } - if (empty($groups)) { - throw new MissingGroupException(sprintf('Missing group metadata in test class %s', $testClass->name())); - } - - // Let PHPUnit API return the class coverage information. - $test = $testClass; - while (!$test instanceof TestCase) { - $test = $test->tests()[0]; - } - if (($metadata = $test->valueObjectForEvents()->metadata()->isCoversClass()) && $metadata->isNotEmpty()) { - $description = sprintf('Tests %s.', $metadata->asArray()[0]->className()); - } - elseif (($metadata = $test->valueObjectForEvents()->metadata()->isCoversDefaultClass()) && $metadata->isNotEmpty()) { - $description = sprintf('Tests %s.', $metadata->asArray()[0]->className()); - } - else { - $description = TestDiscovery::parseTestClassSummary($reflection->getDocComment()); - } - - // Find the test cases count. - $count = 0; - foreach ($testClass->tests() as $testCase) { - if ($testCase instanceof TestCase) { - // If it's a straight test method, counts 1. - $count++; - } - else { - // It's a data provider test suite, count 1 per data set provided. - $count += count($testCase->tests()); - } - } - - return [ - 'name' => $testClass->name(), - 'group' => $groups[0], - 'groups' => $groups, - 'type' => $testSuite, - 'description' => $description, - 'file' => $reflection->getFileName(), - 'tests_count' => $count, - ]; - } - -} diff --git a/core/lib/Drupal/Core/Test/RunTests/TestFileParser.php b/core/lib/Drupal/Core/Test/RunTests/TestFileParser.php index 8ab5260aa660..12aa757e57ee 100644 --- a/core/lib/Drupal/Core/Test/RunTests/TestFileParser.php +++ b/core/lib/Drupal/Core/Test/RunTests/TestFileParser.php @@ -4,16 +4,9 @@ namespace Drupal\Core\Test\RunTests; use PHPUnit\Framework\TestCase; -@trigger_error('Drupal\Core\Test\RunTests\TestFileParser is deprecated in drupal:11.2.0 and is removed from drupal:12.0.0. There is no replacement. See https://www.drupal.org/node/3447698', E_USER_DEPRECATED); - /** * Parses class names from PHP files without loading them. * - * @deprecated in drupal:11.2.0 and is removed from drupal:12.0.0. There is no - * replacement. - * - * @see https://www.drupal.org/node/3447698 - * * @internal */ class TestFileParser { diff --git a/core/lib/Drupal/Core/Test/TestDiscovery.php b/core/lib/Drupal/Core/Test/TestDiscovery.php index 468256779b31..1347d0c583f4 100644 --- a/core/lib/Drupal/Core/Test/TestDiscovery.php +++ b/core/lib/Drupal/Core/Test/TestDiscovery.php @@ -7,7 +7,6 @@ use Drupal\Component\Annotation\Reflection\MockFileFinder; use Drupal\Component\Utility\NestedArray; use Drupal\Core\Extension\ExtensionDiscovery; use Drupal\Core\Test\Exception\MissingGroupException; -use PHPUnit\Framework\Attributes\Group; /** * Discovers available tests. @@ -27,11 +26,6 @@ class TestDiscovery { * Statically cached list of test classes. * * @var array - * - * @deprecated in drupal:11.2.0 and is removed from drupal:12.0.0. There is - * no replacement. - * - * @see https://www.drupal.org/node/3447698 */ protected $testClasses; @@ -155,14 +149,8 @@ class TestDiscovery { * * @todo Remove singular grouping; retain list of groups in 'group' key. * @see https://www.drupal.org/node/2296615 - * - * @deprecated in drupal:11.2.0 and is removed from drupal:12.0.0. Use - * PhpUnitTestDiscovery::getTestClasses() instead. - * - * @see https://www.drupal.org/node/3447698 */ public function getTestClasses($extension = NULL, array $types = [], ?string $directory = NULL) { - @trigger_error(__METHOD__ . '() is deprecated in drupal:11.2.0 and is removed from drupal:12.0.0. Use PhpUnitTestDiscovery::getTestClasses() instead. See https://www.drupal.org/node/3447698', E_USER_DEPRECATED); if (!isset($extension) && empty($types)) { if (!empty($this->testClasses)) { return $this->testClasses; @@ -187,15 +175,6 @@ class TestDiscovery { catch (MissingGroupException $e) { // If the class name ends in Test and is not a migrate table dump. if (str_ends_with($classname, 'Test') && !str_contains($classname, 'migrate_drupal\Tests\Table')) { - $reflection = new \ReflectionClass($classname); - $groupAttributes = $reflection->getAttributes(Group::class, \ReflectionAttribute::IS_INSTANCEOF); - if (!empty($groupAttributes)) { - $group = '##no-group-annotations'; - $info['group'] = $group; - $info['groups'] = [$group]; - $list[$group][$classname] = $info; - continue; - } throw $e; } // If the class is @group annotation just skip it. Most likely it is an @@ -237,14 +216,8 @@ class TestDiscovery { * @return array * A classmap containing all discovered class files; i.e., a map of * fully-qualified classnames to path names. - * - * @deprecated in drupal:11.2.0 and is removed from drupal:12.0.0. Use - * PhpUnitTestDiscovery::findAllClassFiles() instead. - * - * @see https://www.drupal.org/node/3447698 */ public function findAllClassFiles($extension = NULL, ?string $directory = NULL) { - @trigger_error(__METHOD__ . '() is deprecated in drupal:11.2.0 and is removed from drupal:12.0.0. Use PhpUnitTestDiscovery::findAllClassFiles() instead. See https://www.drupal.org/node/3447698', E_USER_DEPRECATED); $classmap = []; $namespaces = $this->registerTestNamespaces(); if (isset($extension)) { @@ -283,14 +256,8 @@ class TestDiscovery { * * @todo Limit to '*Test.php' files (~10% less files to reflect/introspect). * @see https://www.drupal.org/node/2296635 - * - * @deprecated in drupal:11.2.0 and is removed from drupal:12.0.0. There is - * no replacement. - * - * @see https://www.drupal.org/node/3447698 */ public static function scanDirectory($namespace_prefix, $path) { - @trigger_error(__METHOD__ . '() is deprecated in drupal:11.2.0 and is removed from drupal:12.0.0. There is no replacement. See https://www.drupal.org/node/3447698', E_USER_DEPRECATED); if (!str_ends_with($namespace_prefix, '\\')) { throw new \InvalidArgumentException("Namespace prefix for $path must contain a trailing namespace separator."); } @@ -345,14 +312,8 @@ class TestDiscovery { * * @throws \Drupal\Core\Test\Exception\MissingGroupException * If the class does not have a @group annotation. - * - * @deprecated in drupal:11.2.0 and is removed from drupal:12.0.0. There is - * no replacement. - * - * @see https://www.drupal.org/node/3447698 */ public static function getTestInfo($classname, $doc_comment = NULL) { - @trigger_error(__METHOD__ . '() is deprecated in drupal:11.2.0 and is removed from drupal:12.0.0. There is no replacement. See https://www.drupal.org/node/3447698', E_USER_DEPRECATED); if ($doc_comment === NULL) { $reflection = new \ReflectionClass($classname); $doc_comment = $reflection->getDocComment(); @@ -389,7 +350,7 @@ class TestDiscovery { $info['type'] = 'PHPUnit-' . static::getPhpunitTestSuite($classname); if (!empty($annotations['coversDefaultClass'])) { - $info['description'] = 'Tests ' . ltrim($annotations['coversDefaultClass']) . '.'; + $info['description'] = 'Tests ' . $annotations['coversDefaultClass'] . '.'; } else { $info['description'] = static::parseTestClassSummary($doc_comment); diff --git a/core/lib/Drupal/Core/Theme/Component/ComponentMetadata.php b/core/lib/Drupal/Core/Theme/Component/ComponentMetadata.php index e19e759f173c..8cdb368e2e95 100644 --- a/core/lib/Drupal/Core/Theme/Component/ComponentMetadata.php +++ b/core/lib/Drupal/Core/Theme/Component/ComponentMetadata.php @@ -14,6 +14,11 @@ class ComponentMetadata { use StringTranslationTrait; /** + * The ID of the component, in the form of provider:machine_name. + */ + public readonly string $id; + + /** * The absolute path to the component directory. * * @var string @@ -115,6 +120,7 @@ class ComponentMetadata { if (str_starts_with($path, $app_root)) { $path = substr($path, strlen($app_root)); } + $this->id = $metadata_info['id']; $this->mandatorySchemas = $enforce_schemas; $this->path = $path; @@ -149,7 +155,7 @@ class ComponentMetadata { private function parseSchemaInfo(array $metadata_info): ?array { if (empty($metadata_info['props'])) { if ($this->mandatorySchemas) { - throw new InvalidComponentException(sprintf('The component "%s" does not provide schema information. Schema definitions are mandatory for components declared in modules. For components declared in themes, schema definitions are only mandatory if the "enforce_prop_schemas" key is set to "true" in the theme info file.', $metadata_info['id'])); + throw new InvalidComponentException(sprintf('The component "%s" does not provide schema information. Schema definitions are mandatory for components declared in modules. For components declared in themes, schema definitions are only mandatory if the "enforce_prop_schemas" key is set to "true" in the theme info file.', $this->id)); } $schema = NULL; } @@ -167,6 +173,12 @@ class ComponentMetadata { $schema_props = $metadata_info['props']; foreach ($schema_props['properties'] ?? [] as $name => $prop_schema) { $type = $prop_schema['type'] ?? ''; + if (isset($prop_schema['enum'], $prop_schema['meta:enum'])) { + $enum_keys_diff = array_diff($prop_schema['enum'], array_keys($prop_schema['meta:enum'])); + if (!empty($enum_keys_diff)) { + throw new InvalidComponentException(sprintf('The values for the %s prop enum in component %s must be defined in meta:enum.', $name, $this->id)); + } + } $schema['properties'][$name]['type'] = array_unique([ ...(array) $type, 'object', @@ -197,6 +209,14 @@ class ComponentMetadata { * The normalized value object. */ public function normalize(): array { + $meta = []; + if (!empty($this->schema['properties'])) { + foreach ($this->schema['properties'] as $prop_name => $prop_definition) { + if (!empty($prop_definition['meta:enum'])) { + $meta['properties'][$prop_name] = $this->getEnumOptions($prop_name); + } + } + } return [ 'path' => $this->path, 'machineName' => $this->machineName, @@ -204,7 +224,42 @@ class ComponentMetadata { 'name' => $this->name, 'group' => $this->group, 'variants' => $this->variants, + 'meta' => $meta, ]; } + /** + * Get translated options labels from enumeration. + * + * @param string $propertyName + * The enum property name. + * + * @return array<string, \Drupal\Core\StringTranslation\TranslatableMarkup> + * An array with enum options as keys and the (non-rendered) + * translated labels as values. + */ + public function getEnumOptions(string $propertyName): array { + $options = []; + if (isset($this->schema['properties'][$propertyName])) { + $prop_definition = $this->schema['properties'][$propertyName]; + if (!empty($prop_definition['enum'])) { + $translation_context = $prop_definition['x-translation-context'] ?? ''; + // We convert ['a', 'b'], into ['a' => t('a'), 'b' => t('b')]. + $options = array_combine( + $prop_definition['enum'], + // @phpcs:ignore Drupal.Semantics.FunctionT.NotLiteralString + array_map(fn($value) => $this->t($value, [], ['context' => $translation_context]), $prop_definition['enum']), + ); + if (!empty($prop_definition['meta:enum'])) { + foreach ($prop_definition['meta:enum'] as $enum_value => $enum_label) { + $options[$enum_value] = + // @phpcs:ignore Drupal.Semantics.FunctionT.NotLiteralString + $this->t($enum_label, [], ['context' => $translation_context]); + } + } + } + } + return $options; + } + } diff --git a/core/misc/dialog/off-canvas/css/button.pcss.css b/core/misc/dialog/off-canvas/css/button.pcss.css index 50288fc1e01e..42a9eba3d168 100644 --- a/core/misc/dialog/off-canvas/css/button.pcss.css +++ b/core/misc/dialog/off-canvas/css/button.pcss.css @@ -104,7 +104,7 @@ } } - @nest .no-touchevents & .button--small { + .no-touchevents & .button--small { padding: 2px 1em; font-size: 13px; } diff --git a/core/misc/dialog/off-canvas/css/tabledrag.pcss.css b/core/misc/dialog/off-canvas/css/tabledrag.pcss.css index 9bce191ba33f..3fadc12cddfb 100644 --- a/core/misc/dialog/off-canvas/css/tabledrag.pcss.css +++ b/core/misc/dialog/off-canvas/css/tabledrag.pcss.css @@ -86,16 +86,16 @@ width: 5px; } - @nest .touchevents & .draggable td { + .touchevents & .draggable td { padding: 0 10px; } - @nest .touchevents & .draggable .menu-item__link { + .touchevents & .draggable .menu-item__link { display: inline-block; padding: 10px 0; } - @nest .touchevents & a.tabledrag-handle { + .touchevents & a.tabledrag-handle { width: 40px; height: 44px; } diff --git a/core/misc/dialog/off-canvas/css/wrapper.css b/core/misc/dialog/off-canvas/css/wrapper.css index 706d5a0e9d48..c5dbc71f1300 100644 --- a/core/misc/dialog/off-canvas/css/wrapper.css +++ b/core/misc/dialog/off-canvas/css/wrapper.css @@ -11,7 +11,7 @@ * @internal */ #drupal-off-canvas-wrapper { - --off-canvas-wrapper-box-shadow: 0 0 0.25rem 2px rgba(0, 0, 0, 0.3); + --off-canvas-wrapper-box-shadow: 0 0 0.25rem 2px rgb(0, 0, 0, 0.3); --off-canvas-wrapper-border-color: #2d2d2d; --off-canvas-wrapper-border-width: 1px; diff --git a/core/misc/dialog/off-canvas/css/wrapper.pcss.css b/core/misc/dialog/off-canvas/css/wrapper.pcss.css index c16a7e652df1..c16b30a7d0bb 100644 --- a/core/misc/dialog/off-canvas/css/wrapper.pcss.css +++ b/core/misc/dialog/off-canvas/css/wrapper.pcss.css @@ -5,7 +5,7 @@ * @internal */ #drupal-off-canvas-wrapper { - --off-canvas-wrapper-box-shadow: 0 0 4px 2px rgba(0, 0, 0, 0.3); + --off-canvas-wrapper-box-shadow: 0 0 4px 2px rgb(0, 0, 0, 0.3); --off-canvas-wrapper-border-color: #2d2d2d; --off-canvas-wrapper-border-width: 1px; diff --git a/core/misc/tabledrag.js b/core/misc/tabledrag.js index b9f32bd54138..5786ebd9431a 100644 --- a/core/misc/tabledrag.js +++ b/core/misc/tabledrag.js @@ -1064,8 +1064,7 @@ const nextRow = $nextRow.get(0); sourceRow = changedRow; if ( - previousRow && - previousRow.matches('.draggable') && + previousRow?.matches('.draggable') && $previousRow.find(`.${group}`).length ) { if (this.indentEnabled) { @@ -1079,8 +1078,7 @@ sourceRow = previousRow; } } else if ( - nextRow && - nextRow.matches('.draggable') && + nextRow?.matches('.draggable') && $nextRow.find(`.${group}`).length ) { if (this.indentEnabled) { diff --git a/core/modules/automated_cron/automated_cron.services.yml b/core/modules/automated_cron/automated_cron.services.yml index 0cc66d22384e..69c364b1f250 100644 --- a/core/modules/automated_cron/automated_cron.services.yml +++ b/core/modules/automated_cron/automated_cron.services.yml @@ -4,6 +4,6 @@ parameters: services: _defaults: autoconfigure: true + autowire: true automated_cron.subscriber: class: Drupal\automated_cron\EventSubscriber\AutomatedCron - arguments: ['@cron', '@config.factory', '@state'] diff --git a/core/modules/automated_cron/src/EventSubscriber/AutomatedCron.php b/core/modules/automated_cron/src/EventSubscriber/AutomatedCron.php index c237f07ea34d..80258bad508e 100644 --- a/core/modules/automated_cron/src/EventSubscriber/AutomatedCron.php +++ b/core/modules/automated_cron/src/EventSubscriber/AutomatedCron.php @@ -1,10 +1,12 @@ <?php +declare(strict_types=1); + namespace Drupal\automated_cron\EventSubscriber; use Drupal\Core\Config\ConfigFactoryInterface; -use Drupal\Core\CronInterface; use Drupal\Core\State\StateInterface; +use Symfony\Component\DependencyInjection\Attribute\AutowireServiceClosure; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpKernel\Event\TerminateEvent; use Symfony\Component\HttpKernel\KernelEvents; @@ -14,42 +16,12 @@ use Symfony\Component\HttpKernel\KernelEvents; */ class AutomatedCron implements EventSubscriberInterface { - /** - * The cron service. - * - * @var \Drupal\Core\CronInterface - */ - protected $cron; - - /** - * The cron configuration. - * - * @var \Drupal\Core\Config\Config - */ - protected $config; - - /** - * The state key value store. - * - * @var \Drupal\Core\State\StateInterface - */ - protected $state; - - /** - * Constructs a new automated cron runner. - * - * @param \Drupal\Core\CronInterface $cron - * The cron service. - * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory - * The config factory. - * @param \Drupal\Core\State\StateInterface $state - * The state key-value store service. - */ - public function __construct(CronInterface $cron, ConfigFactoryInterface $config_factory, StateInterface $state) { - $this->cron = $cron; - $this->config = $config_factory->get('automated_cron.settings'); - $this->state = $state; - } + public function __construct( + #[AutowireServiceClosure('cron')] + protected readonly \Closure $cron, + protected readonly ConfigFactoryInterface $configFactory, + protected StateInterface $state, + ) {} /** * Run the automated cron if enabled. @@ -57,12 +29,12 @@ class AutomatedCron implements EventSubscriberInterface { * @param \Symfony\Component\HttpKernel\Event\TerminateEvent $event * The Event to process. */ - public function onTerminate(TerminateEvent $event) { - $interval = $this->config->get('interval'); + public function onTerminate(TerminateEvent $event): void { + $interval = $this->configFactory->get('automated_cron.settings')->get('interval'); if ($interval > 0) { $cron_next = $this->state->get('system.cron_last', 0) + $interval; if ((int) $event->getRequest()->server->get('REQUEST_TIME') > $cron_next) { - $this->cron->run(); + ($this->cron)()->run(); } } } diff --git a/core/modules/automated_cron/tests/src/Kernel/AutomatedCronTest.php b/core/modules/automated_cron/tests/src/Kernel/AutomatedCronTest.php new file mode 100644 index 000000000000..40f71d091c26 --- /dev/null +++ b/core/modules/automated_cron/tests/src/Kernel/AutomatedCronTest.php @@ -0,0 +1,46 @@ +<?php + +declare(strict_types=1); + +namespace Drupal\Tests\automated_cron\Kernel; + +use Drupal\KernelTests\KernelTestBase; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; + +/** + * Tests for automated_cron. + * + * @group automated_cron + */ +class AutomatedCronTest extends KernelTestBase { + + /** + * {@inheritdoc} + */ + protected static $modules = ['automated_cron']; + + /** + * Tests that automated cron runs cron on an HTTP request. + * + * @covers \Drupal\automated_cron\EventSubscriber\AutomatedCron::onTerminate + */ + public function testRunsCronOnHttpRequest(): void { + // Set automated_cron interval and times. + // Any interval > 0 should work. + $this->config('automated_cron.settings')->set('interval', 10800)->save(); + $request = new Request(); + + // Cron uses `$_SERVER['REQUEST_TIME']` to set `system.cron_last` + // because there is no request stack, so we set the request time + // to the same. + $expected = $_SERVER['REQUEST_TIME']; + $request->server->set('REQUEST_TIME', $expected); + + // Invoke `AutomatedCron::onTerminate` and check result. + $this->assertNull($this->container->get('state')->get('system.cron_last')); + $this->container->get('kernel')->terminate($request, new Response()); + $this->assertEquals($expected, $this->container->get('state')->get('system.cron_last')); + } + +} diff --git a/core/modules/big_pipe/js/big_pipe.js b/core/modules/big_pipe/js/big_pipe.js index 3c3e106e7037..cc8c7a244961 100644 --- a/core/modules/big_pipe/js/big_pipe.js +++ b/core/modules/big_pipe/js/big_pipe.js @@ -91,8 +91,7 @@ return Boolean( node.nodeType === Node.ELEMENT_NODE && node.nodeName === 'SCRIPT' && - node.dataset && - node.dataset.bigPipeReplacementForPlaceholderWithId && + node.dataset?.bigPipeReplacementForPlaceholderWithId && typeof drupalSettings.bigPipePlaceholderIds[ node.dataset.bigPipeReplacementForPlaceholderWithId ] !== 'undefined', diff --git a/core/modules/block_content/block_content.services.yml b/core/modules/block_content/block_content.services.yml index 2661eda513b5..5d43a1d37f8e 100644 --- a/core/modules/block_content/block_content.services.yml +++ b/core/modules/block_content/block_content.services.yml @@ -1,6 +1,28 @@ parameters: block_content.skip_procedural_hook_scan: false + block_content.moved_classes: + Drupal\block_content\Access\AccessGroupAnd: + class: Drupal\Core\Access\AccessGroupAnd + deprecation_version: drupal:11.2.0 + removed_version: drupal:12.0.0 + change_record: https://www.drupal.org/node/3527501 + Drupal\block_content\Access\DependentAccessInterface: + class: Drupal\Core\Access\DependentAccessInterface + deprecation_version: drupal:11.2.0 + removed_version: drupal:12.0.0 + change_record: https://www.drupal.org/node/3527501 + Drupal\block_content\Access\RefinableDependentAccessInterface: + class: Drupal\Core\Access\RefinableDependentAccessInterface + deprecation_version: drupal:11.2.0 + removed_version: drupal:12.0.0 + change_record: https://www.drupal.org/node/3527501 + Drupal\block_content\Access\RefinableDependentAccessTrait: + class: Drupal\Core\Access\RefinableDependentAccessTrait + deprecation_version: drupal:11.2.0 + removed_version: drupal:12.0.0 + change_record: https://www.drupal.org/node/3527501 + services: _defaults: autoconfigure: true diff --git a/core/modules/block_content/src/BlockContentAccessControlHandler.php b/core/modules/block_content/src/BlockContentAccessControlHandler.php index 34d5dd6e5ed0..0d2765e8018a 100644 --- a/core/modules/block_content/src/BlockContentAccessControlHandler.php +++ b/core/modules/block_content/src/BlockContentAccessControlHandler.php @@ -2,10 +2,10 @@ namespace Drupal\block_content; -use Drupal\block_content\Access\DependentAccessInterface; use Drupal\block_content\Event\BlockContentGetDependencyEvent; use Drupal\Core\Access\AccessResult; use Drupal\Core\Access\AccessResultInterface; +use Drupal\Core\Access\DependentAccessInterface; use Drupal\Core\Entity\EntityAccessControlHandler; use Drupal\Core\Entity\EntityHandlerInterface; use Drupal\Core\Entity\EntityInterface; diff --git a/core/modules/block_content/src/BlockContentInterface.php b/core/modules/block_content/src/BlockContentInterface.php index f6763f451c57..e4f80d202541 100644 --- a/core/modules/block_content/src/BlockContentInterface.php +++ b/core/modules/block_content/src/BlockContentInterface.php @@ -2,7 +2,7 @@ namespace Drupal\block_content; -use Drupal\block_content\Access\RefinableDependentAccessInterface; +use Drupal\Core\Access\RefinableDependentAccessInterface; use Drupal\Core\Entity\ContentEntityInterface; use Drupal\Core\Entity\EntityChangedInterface; use Drupal\Core\Entity\EntityPublishedInterface; diff --git a/core/modules/block_content/src/Entity/BlockContent.php b/core/modules/block_content/src/Entity/BlockContent.php index 0d92bde49300..ed69e44f6f6a 100644 --- a/core/modules/block_content/src/Entity/BlockContent.php +++ b/core/modules/block_content/src/Entity/BlockContent.php @@ -10,13 +10,13 @@ use Drupal\block_content\BlockContentTranslationHandler; use Drupal\block_content\BlockContentViewBuilder; use Drupal\block_content\BlockContentViewsData; use Drupal\block_content\Form\BlockContentDeleteForm; +use Drupal\Core\Access\RefinableDependentAccessTrait; use Drupal\Core\Entity\Attribute\ContentEntityType; use Drupal\Core\Entity\Routing\RevisionHtmlRouteProvider; use Drupal\Core\Entity\Form\RevisionRevertForm; use Drupal\Core\Entity\Form\RevisionDeleteForm; use Drupal\Core\Entity\Sql\SqlContentEntityStorage; use Drupal\Core\StringTranslation\TranslatableMarkup; -use Drupal\block_content\Access\RefinableDependentAccessTrait; use Drupal\Core\Entity\EditorialContentEntityBase; use Drupal\Core\Entity\EntityStorageInterface; use Drupal\Core\Entity\EntityTypeInterface; diff --git a/core/modules/ckeditor5/css/drupalmedia.css b/core/modules/ckeditor5/css/drupalmedia.css index 07ce32c8fedc..4dd9a4e3afa0 100644 --- a/core/modules/ckeditor5/css/drupalmedia.css +++ b/core/modules/ckeditor5/css/drupalmedia.css @@ -28,7 +28,7 @@ display: table-caption; padding: 0.6em; caption-side: bottom; - word-break: break-word; + overflow-wrap: break-word; color: hsl(0, 0%, 20%); outline-offset: -1px; background-color: hsl(0, 0%, 97%); diff --git a/core/modules/ckeditor5/js/build/drupalMedia.js b/core/modules/ckeditor5/js/build/drupalMedia.js index 38c848e43941..9e3b2765bd5c 100644 --- a/core/modules/ckeditor5/js/build/drupalMedia.js +++ b/core/modules/ckeditor5/js/build/drupalMedia.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.CKEditor5=t():(e.CKEditor5=e.CKEditor5||{},e.CKEditor5.drupalMedia=t())}(globalThis,(()=>(()=>{var e={"ckeditor5/src/core.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/core.js")},"ckeditor5/src/engine.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/engine.js")},"ckeditor5/src/ui.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/ui.js")},"ckeditor5/src/utils.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/utils.js")},"ckeditor5/src/widget.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/widget.js")},"dll-reference CKEditor5.dll":e=>{"use strict";e.exports=CKEditor5.dll}},t={};function i(n){var a=t[n];if(void 0!==a)return a.exports;var r=t[n]={exports:{}};return e[n](r,r.exports,i),r.exports}i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var n={};return(()=>{"use strict";i.d(n,{default:()=>ne});var e=i("ckeditor5/src/core.js"),t=i("ckeditor5/src/widget.js");function a(e){return!!e&&e.is("element","drupalMedia")}function r(e){return(0,t.isWidget)(e)&&!!e.getCustomProperty("drupalMedia")}function o(e){const t=e.getSelectedElement();return a(t)?t:e.getFirstPosition().findAncestor("drupalMedia")}function s(e){const t=e.getSelectedElement();if(t&&r(t))return t;if(null===e.getFirstPosition())return null;let i=e.getFirstPosition().parent;for(;i;){if(i.is("element")&&r(i))return i;i=i.parent}return null}function l(e){const t=typeof e;return null!=e&&("object"===t||"function"===t)}function d(e){for(const t of e){if(t.hasAttribute("data-drupal-media-preview"))return t;if(t.childCount){const e=d(t.getChildren());if(e)return e}}return null}function u(e){return`drupalElementStyle${e[0].toUpperCase()+e.substring(1)}`}class c extends e.Command{execute(e){const t=this.editor.plugins.get("DrupalMediaEditing"),i=Object.entries(t.attrs).reduce(((e,[t,i])=>(e[i]=t,e)),{}),n=Object.keys(e).reduce(((t,n)=>(i[n]&&(t[i[n]]=e[n]),t)),{});if(this.editor.plugins.has("DrupalElementStyleEditing")){const t=this.editor.plugins.get("DrupalElementStyleEditing"),{normalizedStyles:i}=t;for(const a of Object.keys(i))for(const i of t.normalizedStyles[a])if(e[i.attributeName]&&i.attributeValue===e[i.attributeName]){const e=u(a);n[e]=i.name}}this.editor.model.change((e=>{this.editor.model.insertObject(function(e,t){return e.createElement("drupalMedia",t)}(e,n))}))}refresh(){const e=this.editor.model,t=e.document.selection,i=e.schema.findAllowedParent(t.getFirstPosition(),"drupalMedia");this.isEnabled=null!==i}}const m="METADATA_ERROR";class p extends e.Plugin{static get requires(){return[t.Widget]}constructor(e){super(e),this.attrs={drupalMediaAlt:"alt",drupalMediaEntityType:"data-entity-type",drupalMediaEntityUuid:"data-entity-uuid"},this.converterAttributes=["drupalMediaEntityUuid","drupalElementStyleViewMode","drupalMediaEntityType","drupalMediaAlt"]}init(){const e=this.editor.config.get("drupalMedia");if(!e)return;const{previewURL:t,themeError:i}=e;this.previewUrl=t,this.labelError=Drupal.t("Preview failed"),this.themeError=i||`\n <p>${Drupal.t("An error occurred while trying to preview the media. Save your work and reload this page.")}<p>\n `,this._defineSchema(),this._defineConverters(),this._defineListeners(),this.editor.commands.add("insertDrupalMedia",new c(this.editor))}upcastDrupalMediaIsImage(e){const{model:t,plugins:i}=this.editor;i.get("DrupalMediaMetadataRepository").getMetadata(e).then((i=>{e&&t.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("drupalMediaIsImage",!!i.imageSourceMetadata,e)}))})).catch((i=>{e&&(console.warn(i.toString()),t.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("drupalMediaIsImage",m,e)})))}))}upcastDrupalMediaType(e){this.editor.plugins.get("DrupalMediaMetadataRepository").getMetadata(e).then((t=>{e&&this.editor.model.enqueueChange({isUndoable:!1},(i=>{i.setAttribute("drupalMediaType",t.type,e)}))})).catch((t=>{e&&(console.warn(t.toString()),this.editor.model.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("drupalMediaType",m,e)})))}))}async _fetchPreview(e){const t={text:this._renderElement(e),uuid:e.getAttribute("drupalMediaEntityUuid")},i=await fetch(`${this.previewUrl}?${new URLSearchParams(t)}`,{headers:{"X-Drupal-MediaPreview-CSRF-Token":this.editor.config.get("drupalMedia").previewCsrfToken}});if(i.ok){return{label:i.headers.get("drupal-media-label"),preview:await i.text()}}return{label:this.labelError,preview:this.themeError}}_defineSchema(){this.editor.model.schema.register("drupalMedia",{inheritAllFrom:"$blockObject",allowAttributes:Object.keys(this.attrs)}),this.editor.editing.view.domConverter.blockElements.push("drupal-media")}_defineConverters(){const e=this.editor.conversion,i=this.editor.plugins.get("DrupalMediaMetadataRepository");e.for("upcast").elementToElement({view:{name:"drupal-media"},model:"drupalMedia"}).add((e=>{e.on("element:drupal-media",((e,t)=>{const[n]=t.modelRange.getItems();i.getMetadata(n).then((e=>{n&&(this.upcastDrupalMediaIsImage(n),this.editor.model.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("drupalMediaType",e.type,n)})))})).catch((e=>{console.warn(e.toString())}))}),{priority:"lowest"})})),e.for("dataDowncast").elementToElement({model:"drupalMedia",view:{name:"drupal-media"}}),e.for("editingDowncast").elementToElement({model:"drupalMedia",view:(e,{writer:i})=>{const n=i.createContainerElement("figure",{class:"drupal-media"});if(!this.previewUrl){const e=i.createRawElement("div",{"data-drupal-media-preview":"unavailable"});i.insert(i.createPositionAt(n,0),e)}return i.setCustomProperty("drupalMedia",!0,n),(0,t.toWidget)(n,i,{label:Drupal.t("Media widget")})}}).add((e=>{const t=(e,t,i)=>{const n=i.writer,a=t.item,r=i.mapper.toViewElement(t.item);let o=d(r.getChildren());if(o){if("ready"!==o.getAttribute("data-drupal-media-preview"))return;n.setAttribute("data-drupal-media-preview","loading",o)}else o=n.createRawElement("div",{"data-drupal-media-preview":"loading"}),n.insert(n.createPositionAt(r,0),o);this._fetchPreview(a).then((({label:e,preview:t})=>{o&&this.editor.editing.view.change((i=>{const n=i.createRawElement("div",{"data-drupal-media-preview":"ready","aria-label":e},(e=>{e.innerHTML=t}));i.insert(i.createPositionBefore(o),n),i.remove(o)}))}))};return this.converterAttributes.forEach((i=>{e.on(`attribute:${i}:drupalMedia`,t)})),e})),e.for("editingDowncast").add((e=>{e.on("attribute:drupalElementStyleAlign:drupalMedia",((e,t,i)=>{const n={left:"drupal-media-style-align-left",right:"drupal-media-style-align-right",center:"drupal-media-style-align-center"},a=i.mapper.toViewElement(t.item),r=i.writer;n[t.attributeOldValue]&&r.removeClass(n[t.attributeOldValue],a),n[t.attributeNewValue]&&i.consumable.consume(t.item,e.name)&&r.addClass(n[t.attributeNewValue],a)}))})),Object.keys(this.attrs).forEach((t=>{const i={model:{key:t,name:"drupalMedia"},view:{name:"drupal-media",key:this.attrs[t]}};e.for("dataDowncast").attributeToAttribute(i),e.for("upcast").attributeToAttribute(i)}))}_defineListeners(){this.editor.model.on("insertContent",((e,[t])=>{a(t)&&(this.upcastDrupalMediaIsImage(t),this.upcastDrupalMediaType(t))}))}_renderElement(e){const t=this.editor.model.change((t=>{const i=t.createDocumentFragment(),n=t.cloneElement(e,!1);return["linkHref"].forEach((e=>{t.removeAttribute(e,n)})),t.append(n,i),i}));return this.editor.data.stringify(t)}static get pluginName(){return"DrupalMediaEditing"}}var g=i("ckeditor5/src/ui.js");class h extends e.Plugin{init(){const e=this.editor,t=this.editor.config.get("drupalMedia");if(!t)return;const{libraryURL:i,openDialog:n,dialogSettings:a={}}=t;i&&"function"==typeof n&&e.ui.componentFactory.add("drupalMedia",(t=>{const r=e.commands.get("insertDrupalMedia"),o=new g.ButtonView(t);return o.set({label:Drupal.t("Insert Media"),icon:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.1873 4.86414L10.2509 6.86414V7.02335H10.2499V15.5091C9.70972 15.1961 9.01793 15.1048 8.34069 15.3136C7.12086 15.6896 6.41013 16.8967 6.75322 18.0096C7.09631 19.1226 8.3633 19.72 9.58313 19.344C10.6666 19.01 11.3484 18.0203 11.2469 17.0234H11.2499V9.80173L18.1803 8.25067V14.3868C17.6401 14.0739 16.9483 13.9825 16.2711 14.1913C15.0513 14.5674 14.3406 15.7744 14.6836 16.8875C15.0267 18.0004 16.2937 18.5978 17.5136 18.2218C18.597 17.8877 19.2788 16.8982 19.1773 15.9011H19.1803V8.02687L19.1873 8.0253V4.86414Z"/><path fill-rule="evenodd" clip-rule="evenodd" d="M13.5039 0.743652H0.386932V12.1603H13.5039V0.743652ZM12.3379 1.75842H1.55289V11.1454H1.65715L4.00622 8.86353L6.06254 10.861L9.24985 5.91309L11.3812 9.22179L11.7761 8.6676L12.3379 9.45621V1.75842ZM6.22048 4.50869C6.22048 5.58193 5.35045 6.45196 4.27722 6.45196C3.20398 6.45196 2.33395 5.58193 2.33395 4.50869C2.33395 3.43546 3.20398 2.56543 4.27722 2.56543C5.35045 2.56543 6.22048 3.43546 6.22048 4.50869Z"/></svg>\n',tooltip:!0}),o.bind("isOn","isEnabled").to(r,"value","isEnabled"),this.listenTo(o,"execute",(()=>{n(i,(({attributes:t})=>{e.execute("insertDrupalMedia",t)}),a)})),o}))}}class f extends e.Plugin{static get requires(){return[t.WidgetToolbarRepository]}static get pluginName(){return"DrupalMediaToolbar"}afterInit(){const{editor:e}=this;var i;e.plugins.get(t.WidgetToolbarRepository).register("drupalMedia",{ariaLabel:Drupal.t("Drupal Media toolbar"),items:(i=e.config.get("drupalMedia.toolbar"),i.map((e=>l(e)?e.name:e))||[]),getRelatedElement:e=>s(e)})}}class b extends e.Command{refresh(){const e=o(this.editor.model.document.selection);this.isEnabled=!!e&&e.getAttribute("drupalMediaIsImage")&&e.getAttribute("drupalMediaIsImage")!==m,this.isEnabled?this.value=e.getAttribute("drupalMediaAlt"):this.value=!1}execute(e){const{model:t}=this.editor,i=o(t.document.selection);e.newValue=e.newValue.trim(),t.change((t=>{e.newValue.length>0?t.setAttribute("drupalMediaAlt",e.newValue,i):t.removeAttribute("drupalMediaAlt",i)}))}}class w extends e.Plugin{init(){this._data=new WeakMap}getMetadata(e){if(this._data.get(e))return new Promise((t=>{t(this._data.get(e))}));const t=this.editor.config.get("drupalMedia");if(!t)return new Promise(((e,t)=>{t(new Error("drupalMedia configuration is required for parsing metadata."))}));if(!e.hasAttribute("drupalMediaEntityUuid"))return new Promise(((e,t)=>{t(new Error("drupalMedia element must have drupalMediaEntityUuid attribute to retrieve metadata."))}));const{metadataUrl:i}=t;return(async e=>{const t=await fetch(e);if(t.ok)return JSON.parse(await t.text());throw new Error("Fetching media embed metadata from the server failed.")})(`${i}&${new URLSearchParams({uuid:e.getAttribute("drupalMediaEntityUuid")})}`).then((t=>(this._data.set(e,t),t)))}static get pluginName(){return"DrupalMediaMetadataRepository"}}class y extends e.Plugin{static get requires(){return[w]}static get pluginName(){return"MediaImageTextAlternativeEditing"}init(){const{editor:e,editor:{model:t,conversion:i}}=this;t.schema.extend("drupalMedia",{allowAttributes:["drupalMediaIsImage"]}),i.for("editingDowncast").add((e=>{e.on("attribute:drupalMediaIsImage",((e,t,i)=>{const{writer:n,mapper:a}=i,r=a.toViewElement(t.item);if(t.attributeNewValue!==m){const e=Array.from(r.getChildren()).find((e=>e.getCustomProperty("drupalMediaMetadataError")));return void(e&&(n.setCustomProperty("widgetLabel",e.getCustomProperty("drupalMediaOriginalWidgetLabel"),e),n.removeElement(e)))}const o=Drupal.t("Not all functionality may be available because some information could not be retrieved."),s=new g.Template({tag:"span",children:[{tag:"span",attributes:{class:"drupal-media__metadata-error-icon","data-cke-tooltip-text":o}}]}).render(),l=n.createRawElement("div",{class:"drupal-media__metadata-error"},((e,t)=>{t.setContentOf(e,s.outerHTML)}));n.setCustomProperty("drupalMediaMetadataError",!0,l);const d=r.getCustomProperty("widgetLabel");n.setCustomProperty("drupalMediaOriginalWidgetLabel",d,l),n.setCustomProperty("widgetLabel",`${d} (${o})`,r),n.insert(n.createPositionAt(r,0),l)}),{priority:"low"})})),e.commands.add("mediaImageTextAlternative",new b(this.editor))}}function v(e){const t=e.editing.view,i=g.BalloonPanelView.defaultPositions;return{target:t.domConverter.viewToDom(t.document.selection.getSelectedElement()),positions:[i.northArrowSouth,i.northArrowSouthWest,i.northArrowSouthEast,i.southArrowNorth,i.southArrowNorthWest,i.southArrowNorthEast]}}var E=i("ckeditor5/src/utils.js");class M extends g.View{constructor(t){super(t),this.focusTracker=new E.FocusTracker,this.keystrokes=new E.KeystrokeHandler,this.decorativeToggle=this._decorativeToggleView(),this.labeledInput=this._createLabeledInputView(),this.saveButtonView=this._createButton(Drupal.t("Save"),e.icons.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(Drupal.t("Cancel"),e.icons.cancel,"ck-button-cancel","cancel"),this._focusables=new g.ViewCollection,this._focusCycler=new g.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-media-alternative-text-form","ck-vertical-form"],tabindex:"-1"},children:[{tag:"div",children:[this.decorativeToggle]},this.labeledInput,this.saveButtonView,this.cancelButtonView]}),(0,g.injectCssTransitionDisabler)(this)}render(){super.render(),this.keystrokes.listenTo(this.element),(0,g.submitHandler)({view:this}),[this.decorativeToggle,this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)}))}_createButton(e,t,i,n){const a=new g.ButtonView(this.locale);return a.set({label:e,icon:t,tooltip:!0}),a.extendTemplate({attributes:{class:i}}),n&&a.delegate("execute").to(this,n),a}_createLabeledInputView(){const e=new g.LabeledFieldView(this.locale,g.createLabeledInputText);return e.bind("class").to(this.decorativeToggle,"isOn",(e=>e?"ck-hidden":"")),e.label=Drupal.t("Alternative text override"),e}_decorativeToggleView(){const e=new g.SwitchButtonView(this.locale);return e.set({withText:!0,label:Drupal.t("Decorative image")}),e.on("execute",(()=>{e.isOn&&(this.labeledInput.fieldView.element.value=""),e.set("isOn",!e.isOn)})),e}}class k extends e.Plugin{static get requires(){return[g.ContextualBalloon]}static get pluginName(){return"MediaImageTextAlternativeUi"}init(){this._createButton(),this._createForm()}destroy(){super.destroy(),this._form.destroy()}_createButton(){const t=this.editor;t.ui.componentFactory.add("mediaImageTextAlternative",(i=>{const n=t.commands.get("mediaImageTextAlternative"),a=new g.ButtonView(i);return a.set({label:Drupal.t("Override media image alternative text"),icon:e.icons.lowVision,tooltip:!0}),a.bind("isVisible").to(n,"isEnabled"),this.listenTo(a,"execute",(()=>{this._showForm()})),a}))}_createForm(){const e=this.editor,t=e.editing.view.document;this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new M(e.locale),this._form.render(),this.listenTo(this._form,"submit",(()=>{e.execute("mediaImageTextAlternative",{newValue:this._form.decorativeToggle.isOn?'""':this._form.labeledInput.fieldView.element.value}),this._hideForm(!0)})),this.listenTo(this._form,"cancel",(()=>{this._hideForm(!0)})),this._form.keystrokes.set("Esc",((e,t)=>{this._hideForm(!0),t()})),this.listenTo(e.ui,"update",(()=>{s(t.selection)?this._isVisible&&function(e){const t=e.plugins.get("ContextualBalloon");if(s(e.editing.view.document.selection)){const i=v(e);t.updatePosition(i)}}(e):this._hideForm(!0)})),(0,g.clickOutsideHandler)({emitter:this._form,activator:()=>this._isVisible,contextElements:[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;const e=this.editor,t=e.commands.get("mediaImageTextAlternative"),i=this._form.decorativeToggle,n=e.plugins.get("DrupalMediaMetadataRepository"),r=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:v(e)}),i.isOn='""'===t.value,r.fieldView.element.value=t.value||"",r.fieldView.value=r.fieldView.element.value,this._form.defaultAltText="";const o=e.model.document.selection.getSelectedElement();a(o)&&n.getMetadata(o).then((e=>{this._form.defaultAltText=e.imageSourceMetadata?e.imageSourceMetadata.alt:"",r.infoText=Drupal.t(`Leave blank to use the default alternative text: "${this._form.defaultAltText}".`)})).catch((e=>{console.warn(e.toString())})),this._form.enableCssTransitions()}_hideForm(e){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),e&&this.editor.editing.view.focus())}get _isVisible(){return this._balloon.visibleView===this._form}get _isInBalloon(){return this._balloon.hasView(this._form)}}class D extends e.Plugin{static get requires(){return[y,k]}static get pluginName(){return"MediaImageTextAlternative"}}function C(e,t,i){if(t.attributes)for(const[n,a]of Object.entries(t.attributes))e.setAttribute(n,a,i);t.styles&&e.setStyle(t.styles,i),t.classes&&e.addClass(t.classes,i)}function A(e,t,i){if(!i.consumable.consume(t.item,e.name))return;const n=i.mapper.toViewElement(t.item);C(i.writer,t.attributeNewValue,n)}class _ extends e.Plugin{constructor(e){if(super(e),!e.plugins.has("GeneralHtmlSupport"))return;e.plugins.has("DataFilter")&&e.plugins.has("DataSchema")||console.error("DataFilter and DataSchema plugins are required for Drupal Media to integrate with General HTML Support plugin.");const{schema:t}=e.model,{conversion:i}=e,n=this.editor.plugins.get("DataFilter");this.editor.plugins.get("DataSchema").registerBlockElement({model:"drupalMedia",view:"drupal-media"}),n.on("register:drupal-media",((e,a)=>{"drupalMedia"===a.model&&(t.extend("drupalMedia",{allowAttributes:["htmlLinkAttributes","htmlAttributes"]}),i.for("upcast").add(function(e){return t=>{t.on("element:drupal-media",((t,i,n)=>{function a(t,a){const r=e.processViewAttributes(t,n);r&&n.writer.setAttribute(a,r,i.modelRange)}const r=i.viewItem,o=r.parent;a(r,"htmlAttributes"),o.is("element","a")&&a(o,"htmlLinkAttributes")}),{priority:"low"})}}(n)),i.for("editingDowncast").add((e=>{e.on("attribute:linkHref:drupalMedia",((e,t,i)=>{if(!i.consumable.consume(t.item,"attribute:htmlLinkAttributes:drupalMedia"))return;const n=i.mapper.toViewElement(t.item),a=function(e,t,i){const n=e.createRangeOn(t);for(const{item:e}of n.getWalker())if(e.is("element",i))return e}(i.writer,n,"a");C(i.writer,t.item.getAttribute("htmlLinkAttributes"),a)}),{priority:"low"})})),i.for("dataDowncast").add((e=>{e.on("attribute:linkHref:drupalMedia",((e,t,i)=>{if(!i.consumable.consume(t.item,"attribute:htmlLinkAttributes:drupalMedia"))return;const n=i.mapper.toViewElement(t.item).parent;C(i.writer,t.item.getAttribute("htmlLinkAttributes"),n)}),{priority:"low"}),e.on("attribute:htmlAttributes:drupalMedia",A,{priority:"low"})})),e.stop())}))}static get pluginName(){return"DrupalMediaGeneralHtmlSupport"}}class x extends e.Plugin{static get requires(){return[p,_,h,f,D]}static get pluginName(){return"DrupalMedia"}}var V=i("ckeditor5/src/engine.js");function S(e){return Array.from(e.getChildren()).find((e=>"drupal-media"===e.name))}function T(e){return t=>{t.on(`attribute:${e.id}:drupalMedia`,((t,i,n)=>{const a=n.mapper.toViewElement(i.item);let r=Array.from(a.getChildren()).find((e=>"a"===e.name));if(r=!r&&a.is("element","a")?a:Array.from(a.getAncestors()).find((e=>"a"===e.name)),r){for(const[t,i]of(0,E.toMap)(e.attributes))n.writer.setAttribute(t,i,r);e.classes&&n.writer.addClass(e.classes,r);for(const t in e.styles)Object.prototype.hasOwnProperty.call(e.styles,t)&&n.writer.setStyle(t,e.styles[t],r)}}))}}function I(e,t){return e=>{e.on("element:a",((e,i,n)=>{const a=i.viewItem;if(!S(a))return;const r=new V.Matcher(t._createPattern()).match(a);if(!r)return;if(!n.consumable.consume(a,r.match))return;const o=i.modelCursor.nodeBefore;n.writer.setAttribute(t.id,!0,o)}),{priority:"high"})}}class L extends e.Plugin{static get requires(){return["LinkEditing","DrupalMediaEditing"]}static get pluginName(){return"DrupalLinkMediaEditing"}init(){const{editor:e}=this;e.model.schema.extend("drupalMedia",{allowAttributes:["linkHref"]}),e.conversion.for("upcast").add((e=>{e.on("element:a",((e,t,i)=>{const n=t.viewItem,a=S(n);if(!a)return;if(!i.consumable.consume(n,{attributes:["href"],name:!0}))return;const r=n.getAttribute("href");if(null===r)return;const o=i.convertItem(a,t.modelCursor);t.modelRange=o.modelRange,t.modelCursor=o.modelCursor;const s=t.modelCursor.nodeBefore;s&&s.is("element","drupalMedia")&&i.writer.setAttribute("linkHref",r,s)}),{priority:"high"})})),e.conversion.for("editingDowncast").add((e=>{e.on("attribute:linkHref:drupalMedia",((e,t,i)=>{const{writer:n}=i;if(!i.consumable.consume(t.item,e.name))return;const a=i.mapper.toViewElement(t.item),r=Array.from(a.getChildren()).find((e=>"a"===e.name));if(r)t.attributeNewValue?n.setAttribute("href",t.attributeNewValue,r):(n.move(n.createRangeIn(r),n.createPositionAt(a,0)),n.remove(r));else{const e=Array.from(a.getChildren()).find((e=>e.getAttribute("data-drupal-media-preview"))),i=n.createContainerElement("a",{href:t.attributeNewValue});n.insert(n.createPositionAt(a,0),i),n.move(n.createRangeOn(e),n.createPositionAt(i,0))}}),{priority:"high"})})),e.conversion.for("dataDowncast").add((e=>{e.on("attribute:linkHref:drupalMedia",((e,t,i)=>{const{writer:n}=i;if(!i.consumable.consume(t.item,e.name))return;const a=i.mapper.toViewElement(t.item),r=n.createContainerElement("a",{href:t.attributeNewValue});n.insert(n.createPositionBefore(a),r),n.move(n.createRangeOn(a),n.createPositionAt(r,0))}),{priority:"high"})})),this._enableManualDecorators();if(e.commands.get("link").automaticDecorators.length>0)throw new Error("The Drupal Media plugin is not compatible with automatic link decorators. To use Drupal Media, disable any plugins providing automatic link decorators.")}_enableManualDecorators(){const e=this.editor,t=e.commands.get("link");for(const i of t.manualDecorators)e.model.schema.extend("drupalMedia",{allowAttributes:i.id}),e.conversion.for("downcast").add(T(i)),e.conversion.for("upcast").add(I(0,i))}}class O extends e.Plugin{static get requires(){return["LinkEditing","LinkUI","DrupalMediaEditing"]}static get pluginName(){return"DrupalLinkMediaUi"}init(){const{editor:e}=this,t=e.editing.view.document;this.listenTo(t,"click",((t,i)=>{this._isSelectedLinkedMedia(e.model.document.selection)&&(i.preventDefault(),t.stop())}),{priority:"high"}),this._createToolbarLinkMediaButton()}_createToolbarLinkMediaButton(){const{editor:e}=this;e.ui.componentFactory.add("drupalLinkMedia",(t=>{const i=new g.ButtonView(t),n=e.plugins.get("LinkUI"),a=e.commands.get("link");return i.set({isEnabled:!0,label:Drupal.t("Link media"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.077 15 .991-1.416a.75.75 0 1 1 1.229.86l-1.148 1.64a.748.748 0 0 1-.217.206 5.251 5.251 0 0 1-8.503-5.955.741.741 0 0 1 .12-.274l1.147-1.639a.75.75 0 1 1 1.228.86L4.933 10.7l.006.003a3.75 3.75 0 0 0 6.132 4.294l.006.004zm5.494-5.335a.748.748 0 0 1-.12.274l-1.147 1.639a.75.75 0 1 1-1.228-.86l.86-1.23a3.75 3.75 0 0 0-6.144-4.301l-.86 1.229a.75.75 0 0 1-1.229-.86l1.148-1.64a.748.748 0 0 1 .217-.206 5.251 5.251 0 0 1 8.503 5.955zm-4.563-2.532a.75.75 0 0 1 .184 1.045l-3.155 4.505a.75.75 0 1 1-1.229-.86l3.155-4.506a.75.75 0 0 1 1.045-.184z"/></svg>\n',keystroke:"Ctrl+K",tooltip:!0,isToggleable:!0}),i.bind("isEnabled").to(a,"isEnabled"),i.bind("isOn").to(a,"value",(e=>!!e)),this.listenTo(i,"execute",(()=>{this._isSelectedLinkedMedia(e.model.document.selection)?n._addActionsView():n._showUI(!0)})),i}))}_isSelectedLinkedMedia(e){const t=e.getSelectedElement();return!!t&&t.is("element","drupalMedia")&&t.hasAttribute("linkHref")}}class P extends e.Plugin{static get requires(){return[L,O]}static get pluginName(){return"DrupalLinkMedia"}}const B={get inline(){return{name:"inline",title:"In line",icon:e.icons.objectInline,modelElements:["imageInline"],isDefault:!0}},get alignLeft(){return{name:"alignLeft",title:"Left aligned image",icon:e.icons.objectLeft,modelElements:["imageBlock","imageInline"],className:"image-style-align-left"}},get alignBlockLeft(){return{name:"alignBlockLeft",title:"Left aligned image",icon:e.icons.objectBlockLeft,modelElements:["imageBlock"],className:"image-style-block-align-left"}},get alignCenter(){return{name:"alignCenter",title:"Centered image",icon:e.icons.objectCenter,modelElements:["imageBlock"],className:"image-style-align-center"}},get alignRight(){return{name:"alignRight",title:"Right aligned image",icon:e.icons.objectRight,modelElements:["imageBlock","imageInline"],className:"image-style-align-right"}},get alignBlockRight(){return{name:"alignBlockRight",title:"Right aligned image",icon:e.icons.objectBlockRight,modelElements:["imageBlock"],className:"image-style-block-align-right"}},get block(){return{name:"block",title:"Centered image",icon:e.icons.objectCenter,modelElements:["imageBlock"],isDefault:!0}},get side(){return{name:"side",title:"Side image",icon:e.icons.objectRight,modelElements:["imageBlock"],className:"image-style-side"}}},N=(()=>({full:e.icons.objectFullWidth,left:e.icons.objectBlockLeft,right:e.icons.objectBlockRight,center:e.icons.objectCenter,inlineLeft:e.icons.objectLeft,inlineRight:e.icons.objectRight,inline:e.icons.objectInline}))(),j=[{name:"imageStyle:wrapText",title:"Wrap text",defaultItem:"imageStyle:alignLeft",items:["imageStyle:alignLeft","imageStyle:alignRight"]},{name:"imageStyle:breakText",title:"Break text",defaultItem:"imageStyle:block",items:["imageStyle:alignBlockLeft","imageStyle:block","imageStyle:alignBlockRight"]}];function R(e){(0,E.logWarning)("image-style-configuration-definition-invalid",e)}const F={normalizeStyles:function(e){return(e.configuredStyles.options||[]).map((e=>function(e){e="string"==typeof e?B[e]?{...B[e]}:{name:e}:function(e,t){const i={...t};for(const n in e)Object.prototype.hasOwnProperty.call(t,n)||(i[n]=e[n]);return i}(B[e.name],e);"string"==typeof e.icon&&(e.icon=N[e.icon]||e.icon);return e}(e))).filter((t=>function(e,{isBlockPluginLoaded:t,isInlinePluginLoaded:i}){const{modelElements:n,name:a}=e;if(!(n&&n.length&&a))return R({style:e}),!1;{const a=[t?"imageBlock":null,i?"imageInline":null];if(!n.some((e=>a.includes(e))))return(0,E.logWarning)("image-style-missing-dependency",{style:e,missingPlugins:n.map((e=>"imageBlock"===e?"ImageBlockEditing":"ImageInlineEditing"))}),!1}return!0}(t,e)))},getDefaultStylesConfiguration:function(e,t){return e&&t?{options:["inline","alignLeft","alignRight","alignCenter","alignBlockLeft","alignBlockRight","block","side"]}:e?{options:["block","side"]}:t?{options:["inline","alignLeft","alignRight"]}:{}},getDefaultDropdownDefinitions:function(e){return e.has("ImageBlockEditing")&&e.has("ImageInlineEditing")?[...j]:[]},warnInvalidStyle:R,DEFAULT_OPTIONS:B,DEFAULT_ICONS:N,DEFAULT_DROPDOWN_DEFINITIONS:j};function U(e,t,i){for(const n of t)if(i.checkAttribute(e,n))return!0;return!1}function H(e,t,i){const n=e.getSelectedElement();if(n&&U(n,i,t))return n;let{parent:a}=e.getFirstPosition();for(;a;){if(a.is("element")&&U(a,i,t))return a;a=a.parent}return null}class $ extends e.Command{constructor(e,t){super(e),this.styles={},Object.keys(t).forEach((e=>{this.styles[e]=new Map(t[e].map((e=>[e.name,e])))})),this.modelAttributes=[];for(const e of Object.keys(t)){const t=u(e);this.modelAttributes.push(t)}}refresh(){const{editor:e}=this,t=H(e.model.document.selection,e.model.schema,this.modelAttributes);this.isEnabled=!!t,this.isEnabled?this.value=this.getValue(t):this.value=!1}getValue(e){const t={};return Object.keys(this.styles).forEach((i=>{const n=u(i);if(e.hasAttribute(n))t[i]=e.getAttribute(n);else for(const[,e]of this.styles[i])e.isDefault&&(t[i]=e.name)})),t}execute(e={}){const{editor:{model:t}}=this,{value:i,group:n}=e,a=u(n);t.change((e=>{const r=H(t.document.selection,t.schema,this.modelAttributes);!i||this.styles[n].get(i).isDefault?e.removeAttribute(a,r):e.setAttribute(a,i,r)}))}}function q(e,t){for(const i of t)if(i.name===e)return i}class W extends e.Plugin{init(){const{editor:t}=this,i=t.config.get("drupalElementStyles");this.normalizedStyles={},Object.keys(i).forEach((t=>{this.normalizedStyles[t]=i[t].map((t=>("string"==typeof t.icon&&e.icons[t.icon]&&(t.icon=e.icons[t.icon]),t.name&&(t.name=`${t.name}`),t))).filter((e=>e.isDefault||e.attributeName&&e.attributeValue?e.modelElements&&Array.isArray(e.modelElements)?!!e.name||(console.warn("drupalElementStyles options must include a name."),!1):(console.warn("drupalElementStyles options must include an array of supported modelElements."),!1):(console.warn(`${e.attributeValue} drupalElementStyles options must include attributeName and attributeValue.`),!1)))})),this._setupConversion(),t.commands.add("drupalElementStyle",new $(t,this.normalizedStyles))}_setupConversion(){const{editor:e}=this,{schema:t}=e.model;Object.keys(this.normalizedStyles).forEach((i=>{const n=u(i),a=(r=this.normalizedStyles[i],(e,t,i)=>{if(!i.consumable.consume(t.item,e.name))return;const n=q(t.attributeNewValue,r),a=q(t.attributeOldValue,r),o=i.mapper.toViewElement(t.item),s=i.writer;a&&("class"===a.attributeName?s.removeClass(a.attributeValue,o):s.removeAttribute(a.attributeName,o)),n&&("class"===n.attributeName?s.addClass(n.attributeValue,o):n.isDefault||s.setAttribute(n.attributeName,n.attributeValue,o))});var r;const o=function(e,t){const i=e.filter((e=>!e.isDefault));return(e,n,a)=>{if(!n.modelRange)return;const r=n.viewItem,o=(0,E.first)(n.modelRange.getItems());if(o&&a.schema.checkAttribute(o,t))for(const e of i)if("class"===e.attributeName)a.consumable.consume(r,{classes:e.attributeValue})&&a.writer.setAttribute(t,e.name,o);else if(a.consumable.consume(r,{attributes:[e.attributeName]}))for(const e of i)e.attributeValue===r.getAttribute(e.attributeName)&&a.writer.setAttribute(t,e.name,o)}}(this.normalizedStyles[i],n);e.editing.downcastDispatcher.on(`attribute:${n}`,a),e.data.downcastDispatcher.on(`attribute:${n}`,a);[...new Set(this.normalizedStyles[i].map((e=>e.modelElements)).flat())].forEach((e=>{t.extend(e,{allowAttributes:n})})),e.data.upcastDispatcher.on("element",o,{priority:"low"})}))}static get pluginName(){return"DrupalElementStyleEditing"}}const K=e=>e,z=(e,t)=>(e?`${e}: `:"")+t;function Z(e,t){return`drupalElementStyle:${t}:${e}`}class G extends e.Plugin{static get requires(){return[W]}init(){const{plugins:e}=this.editor,t=this.editor.config.get("drupalMedia.toolbar")||[],i=e.get("DrupalElementStyleEditing").normalizedStyles;Object.keys(i).forEach((e=>{i[e].forEach((t=>{this._createButton(t,e,i[e])}))}));t.filter(l).filter((e=>{const t=[];if(!e.display)return console.warn("dropdown configuration must include a display key specifying either listDropdown or splitButton."),!1;e.items.includes(e.defaultItem)||console.warn("defaultItem must be part of items in the dropdown configuration.");for(const i of e.items){const e=i.split(":")[1];t.push(e)}return!!t.every((e=>e===t[0]))||(console.warn("dropdown configuration should only contain buttons from one group."),!1)})).forEach((e=>{if(e.items.length>=2){const t=e.name.split(":")[1];switch(e.display){case"splitButton":this._createDropdown(e,i[t]);break;case"listDropdown":this._createListDropdown(e,i[t])}}}))}updateOptionVisibility(e,t,i,n){const{selection:a}=this.editor.model.document,r={};r[n]=e;const o=a?a.getSelectedElement():H(a,this.editor.model.schema,r),s=e.filter((function(e){for(const[t,i]of(0,E.toMap)(e.modelAttributes))if(o&&o.hasAttribute(t))return i.includes(o.getAttribute(t));return!0}));i.hasOwnProperty("model")?s.includes(t)?i.model.set({class:""}):i.model.set({class:"ck-hidden"}):s.includes(t)?i.set({class:""}):i.set({class:"ck-hidden"})}_createDropdown(e,t){const i=this.editor.ui.componentFactory;i.add(e.name,(n=>{let a;const{defaultItem:r,items:o,title:s}=e,l=o.filter((e=>{const i=e.split(":")[1];return t.find((({name:t})=>Z(t,i)===e))})).map((e=>{const t=i.create(e);return e===r&&(a=t),t}));o.length!==l.length&&F.warnInvalidStyle({dropdown:e});const d=(0,g.createDropdown)(n,g.SplitButtonView),u=d.buttonView;return(0,g.addToolbarToDropdown)(d,l),u.set({label:z(s,a.label),class:null,tooltip:!0}),u.bind("icon").toMany(l,"isOn",((...e)=>{const t=e.findIndex(K);return t<0?a.icon:l[t].icon})),u.bind("label").toMany(l,"isOn",((...e)=>{const t=e.findIndex(K);return z(s,t<0?a.label:l[t].label)})),u.bind("isOn").toMany(l,"isOn",((...e)=>e.some(K))),u.bind("class").toMany(l,"isOn",((...e)=>e.some(K)?"ck-splitbutton_flatten":null)),u.on("execute",(()=>{l.some((({isOn:e})=>e))?d.isOpen=!d.isOpen:a.fire("execute")})),d.bind("isEnabled").toMany(l,"isEnabled",((...e)=>e.some(K))),d}))}_createButton(e,t,i){const n=e.name;this.editor.ui.componentFactory.add(Z(n,t),(a=>{const r=this.editor.commands.get("drupalElementStyle"),o=new g.ButtonView(a);return o.set({label:e.title,icon:e.icon,tooltip:!0,isToggleable:!0}),o.bind("isEnabled").to(r,"isEnabled"),o.bind("isOn").to(r,"value",(e=>e&&e[t]===n)),o.on("execute",this._executeCommand.bind(this,n,t)),this.listenTo(this.editor.ui,"update",(()=>{this.updateOptionVisibility(i,e,o,t)})),o}))}getDropdownListItemDefinitions(e,t,i){const n=new E.Collection;return e.forEach((t=>{const a={type:"button",model:new g.ViewModel({group:i,commandValue:t.name,label:t.title,withText:!0,class:""})};n.add(a),this.listenTo(this.editor.ui,"update",(()=>{this.updateOptionVisibility(e,t,a,i)}))})),n}_createListDropdown(e,t){const i=this.editor.ui.componentFactory;i.add(e.name,(n=>{let a;const{defaultItem:r,items:o,title:s,defaultText:l}=e,d=e.name.split(":")[1],u=o.filter((e=>t.find((({name:t})=>Z(t,d)===e)))).map((e=>{const t=i.create(e);return e===r&&(a=t),t}));o.length!==u.length&&F.warnInvalidStyle({dropdown:e});const c=(0,g.createDropdown)(n,g.DropdownButtonView),m=c.buttonView;m.set({label:z(s,a.label),class:null,tooltip:l,withText:!0});const p=this.editor.commands.get("drupalElementStyle");return m.bind("label").to(p,"value",(e=>{if(e?.[d])for(const i of t)if(i.name===e[d])return i.title;return l})),c.bind("isOn").to(p),c.bind("isEnabled").to(this),(0,g.addListToDropdown)(c,this.getDropdownListItemDefinitions(t,p,d)),this.listenTo(c,"execute",(e=>{this._executeCommand(e.source.commandValue,e.source.group)})),c}))}_executeCommand(e,t){this.editor.execute("drupalElementStyle",{value:e,group:t}),this.editor.editing.view.focus()}static get pluginName(){return"DrupalElementStyleUi"}}class J extends e.Plugin{static get requires(){return[W,G]}static get pluginName(){return"DrupalElementStyle"}}function X(e){const t=e.getFirstPosition().findAncestor("caption");return t&&a(t.parent)?t:null}function Q(e){for(const t of e.getChildren())if(t&&t.is("element","caption"))return t;return null}class Y extends e.Command{refresh(){const e=this.editor.model.document.selection,t=e.getSelectedElement();if(!t)return this.isEnabled=!!o(e),void(this.value=!!X(e));this.isEnabled=a(t),this.isEnabled?this.value=!!Q(t):this.value=!1}execute(e={}){const{focusCaptionOnShow:t}=e;this.editor.model.change((e=>{this.value?this._hideDrupalMediaCaption(e):this._showDrupalMediaCaption(e,t)}))}_showDrupalMediaCaption(e,t){const i=this.editor.model.document.selection,n=this.editor.plugins.get("DrupalMediaCaptionEditing"),a=o(i),r=n._getSavedCaption(a)||e.createElement("caption");e.append(r,a),t&&e.setSelection(r,"in")}_hideDrupalMediaCaption(e){const t=this.editor,i=t.model.document.selection,n=t.plugins.get("DrupalMediaCaptionEditing");let a,r=i.getSelectedElement();r?a=Q(r):(a=X(i),r=o(i)),n._saveCaption(r,a),e.setSelection(r,"on"),e.remove(a)}}class ee extends e.Plugin{static get requires(){return[]}static get pluginName(){return"DrupalMediaCaptionEditing"}constructor(e){super(e),this._savedCaptionsMap=new WeakMap}init(){const e=this.editor,t=e.model.schema;t.isRegistered("caption")?t.extend("caption",{allowIn:"drupalMedia"}):t.register("caption",{allowIn:"drupalMedia",allowContentOf:"$block",isLimit:!0}),e.commands.add("toggleMediaCaption",new Y(e)),this._setupConversion()}_setupConversion(){const e=this.editor,i=e.editing.view;var n;e.conversion.for("upcast").add(function(e){const t=(t,i,n)=>{const{viewItem:a}=i,{writer:r,consumable:o}=n;if(!i.modelRange||!o.consume(a,{attributes:["data-caption"]}))return;const s=r.createElement("caption"),l=i.modelRange.start.nodeAfter,d=e.data.processor.toView(a.getAttribute("data-caption"));n.consumable.constructor.createFrom(d,n.consumable),n.convertChildren(d,s),r.append(s,l)};return e=>{e.on("element:drupal-media",t,{priority:"low"})}}(e)),e.conversion.for("editingDowncast").elementToElement({model:"caption",view:(e,{writer:n})=>{if(!a(e.parent))return null;const r=n.createEditableElement("figcaption");return r.placeholder=Drupal.t("Enter media caption"),(0,V.enablePlaceholder)({view:i,element:r,keepOnFocus:!0}),(0,t.toWidgetEditable)(r,n)}}),e.editing.mapper.on("modelToViewPosition",(n=i,(e,t)=>{const i=t.modelPosition,r=i.parent;if(!a(r))return;const o=t.mapper.toViewElement(r);t.viewPosition=n.createPositionAt(o,i.offset+1)})),e.conversion.for("dataDowncast").add(function(e){return t=>{t.on("insert:caption",((t,i,n)=>{const{consumable:r,writer:o,mapper:s}=n;if(!a(i.item.parent)||!r.consume(i.item,"insert"))return;const l=e.model.createRangeIn(i.item),d=o.createDocumentFragment();s.bindElements(i.item,d);for(const{item:t}of Array.from(l)){const i={item:t,range:e.model.createRangeOn(t)},a=`insert:${t.name||"$text"}`;e.data.downcastDispatcher.fire(a,i,n);for(const a of t.getAttributeKeys())Object.assign(i,{attributeKey:a,attributeOldValue:null,attributeNewValue:i.item.getAttribute(a)}),e.data.downcastDispatcher.fire(`attribute:${a}`,i,n)}for(const e of o.createRangeIn(d).getItems())s.unbindViewElement(e);s.unbindViewElement(d);const u=e.data.processor.toData(d);if(u){const e=s.toViewElement(i.item.parent);o.setAttribute("data-caption",u,e)}}))}}(e))}_getSavedCaption(e){const t=this._savedCaptionsMap.get(e);return t?V.Element.fromJSON(t):null}_saveCaption(e,t){this._savedCaptionsMap.set(e,t.toJSON())}}class te extends e.Plugin{static get requires(){return[]}static get pluginName(){return"DrupalMediaCaptionUI"}init(){const{editor:t}=this,i=t.editing.view;t.ui.componentFactory.add("toggleDrupalMediaCaption",(n=>{const a=new g.ButtonView(n),r=t.commands.get("toggleMediaCaption");return a.set({label:Drupal.t("Caption media"),icon:e.icons.caption,tooltip:!0,isToggleable:!0}),a.bind("isOn","isEnabled").to(r,"value","isEnabled"),a.bind("label").to(r,"value",(e=>e?Drupal.t("Toggle caption off"):Drupal.t("Toggle caption on"))),this.listenTo(a,"execute",(()=>{t.execute("toggleMediaCaption",{focusCaptionOnShow:!0});const e=X(t.model.document.selection);if(e){const n=t.editing.mapper.toViewElement(e);i.scrollToTheSelection(),i.change((e=>{e.addClass("drupal-media__caption_highlighted",n)}))}t.editing.view.focus()})),a}))}}class ie extends e.Plugin{static get requires(){return[ee,te]}static get pluginName(){return"DrupalMediaCaption"}}const ne={DrupalMedia:x,MediaImageTextAlternative:D,MediaImageTextAlternativeEditing:y,MediaImageTextAlternativeUi:k,DrupalLinkMedia:P,DrupalMediaCaption:ie,DrupalElementStyle:J}})(),n=n.default})()));
\ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.CKEditor5=t():(e.CKEditor5=e.CKEditor5||{},e.CKEditor5.drupalMedia=t())}(globalThis,(()=>(()=>{var e={"ckeditor5/src/core.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/core.js")},"ckeditor5/src/engine.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/engine.js")},"ckeditor5/src/ui.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/ui.js")},"ckeditor5/src/utils.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/utils.js")},"ckeditor5/src/widget.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/widget.js")},"dll-reference CKEditor5.dll":e=>{"use strict";e.exports=CKEditor5.dll}},t={};function i(n){var a=t[n];if(void 0!==a)return a.exports;var r=t[n]={exports:{}};return e[n](r,r.exports,i),r.exports}i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var n={};return(()=>{"use strict";i.d(n,{default:()=>ne});var e=i("ckeditor5/src/core.js"),t=i("ckeditor5/src/widget.js");function a(e){return!!e&&e.is("element","drupalMedia")}function r(e){return(0,t.isWidget)(e)&&!!e.getCustomProperty("drupalMedia")}function o(e){const t=e.getSelectedElement();return a(t)?t:e.getFirstPosition().findAncestor("drupalMedia")}function s(e){const t=e.getSelectedElement();if(t&&r(t))return t;if(null===e.getFirstPosition())return null;let i=e.getFirstPosition().parent;for(;i;){if(i.is("element")&&r(i))return i;i=i.parent}return null}function l(e){const t=typeof e;return null!=e&&("object"===t||"function"===t)}function d(e){for(const t of e){if(t.hasAttribute("data-drupal-media-preview"))return t;if(t.childCount){const e=d(t.getChildren());if(e)return e}}return null}function u(e){return`drupalElementStyle${e[0].toUpperCase()+e.substring(1)}`}class c extends e.Command{execute(e){const t=this.editor.plugins.get("DrupalMediaEditing"),i=Object.entries(t.attrs).reduce(((e,[t,i])=>(e[i]=t,e)),{}),n=Object.keys(e).reduce(((t,n)=>(i[n]&&(t[i[n]]=e[n]),t)),{});if(this.editor.plugins.has("DrupalElementStyleEditing")){const t=this.editor.plugins.get("DrupalElementStyleEditing"),{normalizedStyles:i}=t;for(const a of Object.keys(i))for(const i of t.normalizedStyles[a])if(e[i.attributeName]&&i.attributeValue===e[i.attributeName]){const e=u(a);n[e]=i.name}}this.editor.model.change((e=>{this.editor.model.insertObject(function(e,t){return e.createElement("drupalMedia",t)}(e,n))}))}refresh(){const e=this.editor.model,t=e.document.selection,i=e.schema.findAllowedParent(t.getFirstPosition(),"drupalMedia");this.isEnabled=null!==i}}const m="METADATA_ERROR";class p extends e.Plugin{static get requires(){return[t.Widget]}constructor(e){super(e),this.attrs={drupalMediaAlt:"alt",drupalMediaEntityType:"data-entity-type",drupalMediaEntityUuid:"data-entity-uuid"},this.converterAttributes=["drupalMediaEntityUuid","drupalElementStyleViewMode","drupalMediaEntityType","drupalMediaAlt"]}init(){const e=this.editor.config.get("drupalMedia");if(!e)return;const{previewURL:t,themeError:i}=e;this.previewUrl=t,this.labelError=Drupal.t("Preview failed"),this.themeError=i||`\n <p>${Drupal.t("An error occurred while trying to preview the media. Save your work and reload this page.")}<p>\n `,this._defineSchema(),this._defineConverters(),this._defineListeners(),this.editor.commands.add("insertDrupalMedia",new c(this.editor))}upcastDrupalMediaIsImage(e){const{model:t,plugins:i}=this.editor;i.get("DrupalMediaMetadataRepository").getMetadata(e).then((i=>{e&&t.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("drupalMediaIsImage",!!i.imageSourceMetadata,e)}))})).catch((i=>{e&&(console.warn(i.toString()),t.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("drupalMediaIsImage",m,e)})))}))}upcastDrupalMediaType(e){this.editor.plugins.get("DrupalMediaMetadataRepository").getMetadata(e).then((t=>{e&&this.editor.model.enqueueChange({isUndoable:!1},(i=>{i.setAttribute("drupalMediaType",t.type,e)}))})).catch((t=>{e&&(console.warn(t.toString()),this.editor.model.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("drupalMediaType",m,e)})))}))}async _fetchPreview(e){const t={text:this._renderElement(e),uuid:e.getAttribute("drupalMediaEntityUuid")},i=await fetch(`${this.previewUrl}?${new URLSearchParams(t)}`,{headers:{"X-Drupal-MediaPreview-CSRF-Token":this.editor.config.get("drupalMedia").previewCsrfToken}});if(i.ok){return{label:i.headers.get("drupal-media-label"),preview:await i.text()}}return{label:this.labelError,preview:this.themeError}}_defineSchema(){this.editor.model.schema.register("drupalMedia",{inheritAllFrom:"$blockObject",allowAttributes:Object.keys(this.attrs)}),this.editor.editing.view.domConverter.blockElements.push("drupal-media")}_defineConverters(){const e=this.editor.conversion,i=this.editor.plugins.get("DrupalMediaMetadataRepository");e.for("upcast").elementToElement({view:{name:"drupal-media"},model:"drupalMedia"}).add((e=>{e.on("element:drupal-media",((e,t)=>{const[n]=t.modelRange.getItems();i.getMetadata(n).then((e=>{n&&(this.upcastDrupalMediaIsImage(n),this.editor.model.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("drupalMediaType",e.type,n)})))})).catch((e=>{console.warn(e.toString())}))}),{priority:"lowest"})})),e.for("dataDowncast").elementToElement({model:"drupalMedia",view:{name:"drupal-media"}}),e.for("editingDowncast").elementToElement({model:"drupalMedia",view:(e,{writer:i})=>{const n=i.createContainerElement("figure",{class:"drupal-media"});if(!this.previewUrl){const e=i.createRawElement("div",{"data-drupal-media-preview":"unavailable"});i.insert(i.createPositionAt(n,0),e)}return i.setCustomProperty("drupalMedia",!0,n),(0,t.toWidget)(n,i,{label:Drupal.t("Media widget")})}}).add((e=>{const t=(e,t,i)=>{const n=i.writer,a=t.item,r=i.mapper.toViewElement(t.item);let o=d(r.getChildren());if(o){if("ready"!==o.getAttribute("data-drupal-media-preview"))return;n.setAttribute("data-drupal-media-preview","loading",o)}else o=n.createRawElement("div",{"data-drupal-media-preview":"loading"}),n.insert(n.createPositionAt(r,0),o);this._fetchPreview(a).then((({label:e,preview:t})=>{o&&this.editor.editing.view.change((i=>{const n=i.createRawElement("div",{"data-drupal-media-preview":"ready","aria-label":e},(e=>{e.innerHTML=t}));i.insert(i.createPositionBefore(o),n),i.remove(o)}))}))};return this.converterAttributes.forEach((i=>{e.on(`attribute:${i}:drupalMedia`,t)})),e})),e.for("editingDowncast").add((e=>{e.on("attribute:drupalElementStyleAlign:drupalMedia",((e,t,i)=>{const n={left:"drupal-media-style-align-left",right:"drupal-media-style-align-right",center:"drupal-media-style-align-center"},a=i.mapper.toViewElement(t.item),r=i.writer;n[t.attributeOldValue]&&r.removeClass(n[t.attributeOldValue],a),n[t.attributeNewValue]&&i.consumable.consume(t.item,e.name)&&r.addClass(n[t.attributeNewValue],a)}))})),Object.keys(this.attrs).forEach((t=>{const i={model:{key:t,name:"drupalMedia"},view:{name:"drupal-media",key:this.attrs[t]}};e.for("dataDowncast").attributeToAttribute(i),e.for("upcast").attributeToAttribute(i)}))}_defineListeners(){this.editor.model.on("insertContent",((e,[t])=>{a(t)&&(this.upcastDrupalMediaIsImage(t),this.upcastDrupalMediaType(t))}))}_renderElement(e){const t=this.editor.model.change((t=>{const i=t.createDocumentFragment(),n=t.cloneElement(e,!1);return["linkHref"].forEach((e=>{t.removeAttribute(e,n)})),t.append(n,i),i}));return this.editor.data.stringify(t)}static get pluginName(){return"DrupalMediaEditing"}}var g=i("ckeditor5/src/ui.js");class h extends e.Plugin{init(){const e=this.editor,t=this.editor.config.get("drupalMedia");if(!t)return;const{libraryURL:i,openDialog:n,dialogSettings:a={}}=t;i&&"function"==typeof n&&e.ui.componentFactory.add("drupalMedia",(t=>{const r=e.commands.get("insertDrupalMedia"),o=new g.ButtonView(t);return o.set({label:Drupal.t("Insert Media"),icon:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.1873 4.86414L10.2509 6.86414V7.02335H10.2499V15.5091C9.70972 15.1961 9.01793 15.1048 8.34069 15.3136C7.12086 15.6896 6.41013 16.8967 6.75322 18.0096C7.09631 19.1226 8.3633 19.72 9.58313 19.344C10.6666 19.01 11.3484 18.0203 11.2469 17.0234H11.2499V9.80173L18.1803 8.25067V14.3868C17.6401 14.0739 16.9483 13.9825 16.2711 14.1913C15.0513 14.5674 14.3406 15.7744 14.6836 16.8875C15.0267 18.0004 16.2937 18.5978 17.5136 18.2218C18.597 17.8877 19.2788 16.8982 19.1773 15.9011H19.1803V8.02687L19.1873 8.0253V4.86414Z"/><path fill-rule="evenodd" clip-rule="evenodd" d="M13.5039 0.743652H0.386932V12.1603H13.5039V0.743652ZM12.3379 1.75842H1.55289V11.1454H1.65715L4.00622 8.86353L6.06254 10.861L9.24985 5.91309L11.3812 9.22179L11.7761 8.6676L12.3379 9.45621V1.75842ZM6.22048 4.50869C6.22048 5.58193 5.35045 6.45196 4.27722 6.45196C3.20398 6.45196 2.33395 5.58193 2.33395 4.50869C2.33395 3.43546 3.20398 2.56543 4.27722 2.56543C5.35045 2.56543 6.22048 3.43546 6.22048 4.50869Z"/></svg>\n',tooltip:!0}),o.bind("isOn","isEnabled").to(r,"value","isEnabled"),this.listenTo(o,"execute",(()=>{n(i,(({attributes:t})=>{e.execute("insertDrupalMedia",t)}),a)})),o}))}}class f extends e.Plugin{static get requires(){return[t.WidgetToolbarRepository]}static get pluginName(){return"DrupalMediaToolbar"}afterInit(){const{editor:e}=this;var i;e.plugins.get(t.WidgetToolbarRepository).register("drupalMedia",{ariaLabel:Drupal.t("Drupal Media toolbar"),items:(i=e.config.get("drupalMedia.toolbar"),i.map((e=>l(e)?e.name:e))||[]),getRelatedElement:e=>s(e)})}}class b extends e.Command{refresh(){const e=o(this.editor.model.document.selection);this.isEnabled=e?.getAttribute("drupalMediaIsImage")&&e.getAttribute("drupalMediaIsImage")!==m,this.isEnabled?this.value=e.getAttribute("drupalMediaAlt"):this.value=!1}execute(e){const{model:t}=this.editor,i=o(t.document.selection);e.newValue=e.newValue.trim(),t.change((t=>{e.newValue.length>0?t.setAttribute("drupalMediaAlt",e.newValue,i):t.removeAttribute("drupalMediaAlt",i)}))}}class w extends e.Plugin{init(){this._data=new WeakMap}getMetadata(e){if(this._data.get(e))return new Promise((t=>{t(this._data.get(e))}));const t=this.editor.config.get("drupalMedia");if(!t)return new Promise(((e,t)=>{t(new Error("drupalMedia configuration is required for parsing metadata."))}));if(!e.hasAttribute("drupalMediaEntityUuid"))return new Promise(((e,t)=>{t(new Error("drupalMedia element must have drupalMediaEntityUuid attribute to retrieve metadata."))}));const{metadataUrl:i}=t;return(async e=>{const t=await fetch(e);if(t.ok)return JSON.parse(await t.text());throw new Error("Fetching media embed metadata from the server failed.")})(`${i}&${new URLSearchParams({uuid:e.getAttribute("drupalMediaEntityUuid")})}`).then((t=>(this._data.set(e,t),t)))}static get pluginName(){return"DrupalMediaMetadataRepository"}}class y extends e.Plugin{static get requires(){return[w]}static get pluginName(){return"MediaImageTextAlternativeEditing"}init(){const{editor:e,editor:{model:t,conversion:i}}=this;t.schema.extend("drupalMedia",{allowAttributes:["drupalMediaIsImage"]}),i.for("editingDowncast").add((e=>{e.on("attribute:drupalMediaIsImage",((e,t,i)=>{const{writer:n,mapper:a}=i,r=a.toViewElement(t.item);if(t.attributeNewValue!==m){const e=Array.from(r.getChildren()).find((e=>e.getCustomProperty("drupalMediaMetadataError")));return void(e&&(n.setCustomProperty("widgetLabel",e.getCustomProperty("drupalMediaOriginalWidgetLabel"),e),n.removeElement(e)))}const o=Drupal.t("Not all functionality may be available because some information could not be retrieved."),s=new g.Template({tag:"span",children:[{tag:"span",attributes:{class:"drupal-media__metadata-error-icon","data-cke-tooltip-text":o}}]}).render(),l=n.createRawElement("div",{class:"drupal-media__metadata-error"},((e,t)=>{t.setContentOf(e,s.outerHTML)}));n.setCustomProperty("drupalMediaMetadataError",!0,l);const d=r.getCustomProperty("widgetLabel");n.setCustomProperty("drupalMediaOriginalWidgetLabel",d,l),n.setCustomProperty("widgetLabel",`${d} (${o})`,r),n.insert(n.createPositionAt(r,0),l)}),{priority:"low"})})),e.commands.add("mediaImageTextAlternative",new b(this.editor))}}function v(e){const t=e.editing.view,i=g.BalloonPanelView.defaultPositions;return{target:t.domConverter.viewToDom(t.document.selection.getSelectedElement()),positions:[i.northArrowSouth,i.northArrowSouthWest,i.northArrowSouthEast,i.southArrowNorth,i.southArrowNorthWest,i.southArrowNorthEast]}}var E=i("ckeditor5/src/utils.js");class M extends g.View{constructor(t){super(t),this.focusTracker=new E.FocusTracker,this.keystrokes=new E.KeystrokeHandler,this.decorativeToggle=this._decorativeToggleView(),this.labeledInput=this._createLabeledInputView(),this.saveButtonView=this._createButton(Drupal.t("Save"),e.icons.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(Drupal.t("Cancel"),e.icons.cancel,"ck-button-cancel","cancel"),this._focusables=new g.ViewCollection,this._focusCycler=new g.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-media-alternative-text-form","ck-vertical-form"],tabindex:"-1"},children:[{tag:"div",children:[this.decorativeToggle]},this.labeledInput,this.saveButtonView,this.cancelButtonView]}),(0,g.injectCssTransitionDisabler)(this)}render(){super.render(),this.keystrokes.listenTo(this.element),(0,g.submitHandler)({view:this}),[this.decorativeToggle,this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)}))}_createButton(e,t,i,n){const a=new g.ButtonView(this.locale);return a.set({label:e,icon:t,tooltip:!0}),a.extendTemplate({attributes:{class:i}}),n&&a.delegate("execute").to(this,n),a}_createLabeledInputView(){const e=new g.LabeledFieldView(this.locale,g.createLabeledInputText);return e.bind("class").to(this.decorativeToggle,"isOn",(e=>e?"ck-hidden":"")),e.label=Drupal.t("Alternative text override"),e}_decorativeToggleView(){const e=new g.SwitchButtonView(this.locale);return e.set({withText:!0,label:Drupal.t("Decorative image")}),e.on("execute",(()=>{e.isOn&&(this.labeledInput.fieldView.element.value=""),e.set("isOn",!e.isOn)})),e}}class k extends e.Plugin{static get requires(){return[g.ContextualBalloon]}static get pluginName(){return"MediaImageTextAlternativeUi"}init(){this._createButton(),this._createForm()}destroy(){super.destroy(),this._form.destroy()}_createButton(){const t=this.editor;t.ui.componentFactory.add("mediaImageTextAlternative",(i=>{const n=t.commands.get("mediaImageTextAlternative"),a=new g.ButtonView(i);return a.set({label:Drupal.t("Override media image alternative text"),icon:e.icons.lowVision,tooltip:!0}),a.bind("isVisible").to(n,"isEnabled"),this.listenTo(a,"execute",(()=>{this._showForm()})),a}))}_createForm(){const e=this.editor,t=e.editing.view.document;this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new M(e.locale),this._form.render(),this.listenTo(this._form,"submit",(()=>{e.execute("mediaImageTextAlternative",{newValue:this._form.decorativeToggle.isOn?'""':this._form.labeledInput.fieldView.element.value}),this._hideForm(!0)})),this.listenTo(this._form,"cancel",(()=>{this._hideForm(!0)})),this._form.keystrokes.set("Esc",((e,t)=>{this._hideForm(!0),t()})),this.listenTo(e.ui,"update",(()=>{s(t.selection)?this._isVisible&&function(e){const t=e.plugins.get("ContextualBalloon");if(s(e.editing.view.document.selection)){const i=v(e);t.updatePosition(i)}}(e):this._hideForm(!0)})),(0,g.clickOutsideHandler)({emitter:this._form,activator:()=>this._isVisible,contextElements:[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;const e=this.editor,t=e.commands.get("mediaImageTextAlternative"),i=this._form.decorativeToggle,n=e.plugins.get("DrupalMediaMetadataRepository"),r=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:v(e)}),i.isOn='""'===t.value,r.fieldView.element.value=t.value||"",r.fieldView.value=r.fieldView.element.value,this._form.defaultAltText="";const o=e.model.document.selection.getSelectedElement();a(o)&&n.getMetadata(o).then((e=>{this._form.defaultAltText=e.imageSourceMetadata?e.imageSourceMetadata.alt:"",r.infoText=Drupal.t(`Leave blank to use the default alternative text: "${this._form.defaultAltText}".`)})).catch((e=>{console.warn(e.toString())})),this._form.enableCssTransitions()}_hideForm(e){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),e&&this.editor.editing.view.focus())}get _isVisible(){return this._balloon.visibleView===this._form}get _isInBalloon(){return this._balloon.hasView(this._form)}}class D extends e.Plugin{static get requires(){return[y,k]}static get pluginName(){return"MediaImageTextAlternative"}}function C(e,t,i){if(t.attributes)for(const[n,a]of Object.entries(t.attributes))e.setAttribute(n,a,i);t.styles&&e.setStyle(t.styles,i),t.classes&&e.addClass(t.classes,i)}function A(e,t,i){if(!i.consumable.consume(t.item,e.name))return;const n=i.mapper.toViewElement(t.item);C(i.writer,t.attributeNewValue,n)}class _ extends e.Plugin{constructor(e){if(super(e),!e.plugins.has("GeneralHtmlSupport"))return;e.plugins.has("DataFilter")&&e.plugins.has("DataSchema")||console.error("DataFilter and DataSchema plugins are required for Drupal Media to integrate with General HTML Support plugin.");const{schema:t}=e.model,{conversion:i}=e,n=this.editor.plugins.get("DataFilter");this.editor.plugins.get("DataSchema").registerBlockElement({model:"drupalMedia",view:"drupal-media"}),n.on("register:drupal-media",((e,a)=>{"drupalMedia"===a.model&&(t.extend("drupalMedia",{allowAttributes:["htmlLinkAttributes","htmlAttributes"]}),i.for("upcast").add(function(e){return t=>{t.on("element:drupal-media",((t,i,n)=>{function a(t,a){const r=e.processViewAttributes(t,n);r&&n.writer.setAttribute(a,r,i.modelRange)}const r=i.viewItem,o=r.parent;a(r,"htmlAttributes"),o.is("element","a")&&a(o,"htmlLinkAttributes")}),{priority:"low"})}}(n)),i.for("editingDowncast").add((e=>{e.on("attribute:linkHref:drupalMedia",((e,t,i)=>{if(!i.consumable.consume(t.item,"attribute:htmlLinkAttributes:drupalMedia"))return;const n=i.mapper.toViewElement(t.item),a=function(e,t,i){const n=e.createRangeOn(t);for(const{item:e}of n.getWalker())if(e.is("element",i))return e}(i.writer,n,"a");C(i.writer,t.item.getAttribute("htmlLinkAttributes"),a)}),{priority:"low"})})),i.for("dataDowncast").add((e=>{e.on("attribute:linkHref:drupalMedia",((e,t,i)=>{if(!i.consumable.consume(t.item,"attribute:htmlLinkAttributes:drupalMedia"))return;const n=i.mapper.toViewElement(t.item).parent;C(i.writer,t.item.getAttribute("htmlLinkAttributes"),n)}),{priority:"low"}),e.on("attribute:htmlAttributes:drupalMedia",A,{priority:"low"})})),e.stop())}))}static get pluginName(){return"DrupalMediaGeneralHtmlSupport"}}class x extends e.Plugin{static get requires(){return[p,_,h,f,D]}static get pluginName(){return"DrupalMedia"}}var V=i("ckeditor5/src/engine.js");function S(e){return Array.from(e.getChildren()).find((e=>"drupal-media"===e.name))}function T(e){return t=>{t.on(`attribute:${e.id}:drupalMedia`,((t,i,n)=>{const a=n.mapper.toViewElement(i.item);let r=Array.from(a.getChildren()).find((e=>"a"===e.name));if(r=!r&&a.is("element","a")?a:Array.from(a.getAncestors()).find((e=>"a"===e.name)),r){for(const[t,i]of(0,E.toMap)(e.attributes))n.writer.setAttribute(t,i,r);e.classes&&n.writer.addClass(e.classes,r);for(const t in e.styles)Object.prototype.hasOwnProperty.call(e.styles,t)&&n.writer.setStyle(t,e.styles[t],r)}}))}}function I(e,t){return e=>{e.on("element:a",((e,i,n)=>{const a=i.viewItem;if(!S(a))return;const r=new V.Matcher(t._createPattern()).match(a);if(!r)return;if(!n.consumable.consume(a,r.match))return;const o=i.modelCursor.nodeBefore;n.writer.setAttribute(t.id,!0,o)}),{priority:"high"})}}class L extends e.Plugin{static get requires(){return["LinkEditing","DrupalMediaEditing"]}static get pluginName(){return"DrupalLinkMediaEditing"}init(){const{editor:e}=this;e.model.schema.extend("drupalMedia",{allowAttributes:["linkHref"]}),e.conversion.for("upcast").add((e=>{e.on("element:a",((e,t,i)=>{const n=t.viewItem,a=S(n);if(!a)return;if(!i.consumable.consume(n,{attributes:["href"],name:!0}))return;const r=n.getAttribute("href");if(null===r)return;const o=i.convertItem(a,t.modelCursor);t.modelRange=o.modelRange,t.modelCursor=o.modelCursor;const s=t.modelCursor.nodeBefore;s&&s.is("element","drupalMedia")&&i.writer.setAttribute("linkHref",r,s)}),{priority:"high"})})),e.conversion.for("editingDowncast").add((e=>{e.on("attribute:linkHref:drupalMedia",((e,t,i)=>{const{writer:n}=i;if(!i.consumable.consume(t.item,e.name))return;const a=i.mapper.toViewElement(t.item),r=Array.from(a.getChildren()).find((e=>"a"===e.name));if(r)t.attributeNewValue?n.setAttribute("href",t.attributeNewValue,r):(n.move(n.createRangeIn(r),n.createPositionAt(a,0)),n.remove(r));else{const e=Array.from(a.getChildren()).find((e=>e.getAttribute("data-drupal-media-preview"))),i=n.createContainerElement("a",{href:t.attributeNewValue});n.insert(n.createPositionAt(a,0),i),n.move(n.createRangeOn(e),n.createPositionAt(i,0))}}),{priority:"high"})})),e.conversion.for("dataDowncast").add((e=>{e.on("attribute:linkHref:drupalMedia",((e,t,i)=>{const{writer:n}=i;if(!i.consumable.consume(t.item,e.name))return;const a=i.mapper.toViewElement(t.item),r=n.createContainerElement("a",{href:t.attributeNewValue});n.insert(n.createPositionBefore(a),r),n.move(n.createRangeOn(a),n.createPositionAt(r,0))}),{priority:"high"})})),this._enableManualDecorators();if(e.commands.get("link").automaticDecorators.length>0)throw new Error("The Drupal Media plugin is not compatible with automatic link decorators. To use Drupal Media, disable any plugins providing automatic link decorators.")}_enableManualDecorators(){const e=this.editor,t=e.commands.get("link");for(const i of t.manualDecorators)e.model.schema.extend("drupalMedia",{allowAttributes:i.id}),e.conversion.for("downcast").add(T(i)),e.conversion.for("upcast").add(I(0,i))}}class O extends e.Plugin{static get requires(){return["LinkEditing","LinkUI","DrupalMediaEditing"]}static get pluginName(){return"DrupalLinkMediaUi"}init(){const{editor:e}=this,t=e.editing.view.document;this.listenTo(t,"click",((t,i)=>{this._isSelectedLinkedMedia(e.model.document.selection)&&(i.preventDefault(),t.stop())}),{priority:"high"}),this._createToolbarLinkMediaButton()}_createToolbarLinkMediaButton(){const{editor:e}=this;e.ui.componentFactory.add("drupalLinkMedia",(t=>{const i=new g.ButtonView(t),n=e.plugins.get("LinkUI"),a=e.commands.get("link");return i.set({isEnabled:!0,label:Drupal.t("Link media"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.077 15 .991-1.416a.75.75 0 1 1 1.229.86l-1.148 1.64a.748.748 0 0 1-.217.206 5.251 5.251 0 0 1-8.503-5.955.741.741 0 0 1 .12-.274l1.147-1.639a.75.75 0 1 1 1.228.86L4.933 10.7l.006.003a3.75 3.75 0 0 0 6.132 4.294l.006.004zm5.494-5.335a.748.748 0 0 1-.12.274l-1.147 1.639a.75.75 0 1 1-1.228-.86l.86-1.23a3.75 3.75 0 0 0-6.144-4.301l-.86 1.229a.75.75 0 0 1-1.229-.86l1.148-1.64a.748.748 0 0 1 .217-.206 5.251 5.251 0 0 1 8.503 5.955zm-4.563-2.532a.75.75 0 0 1 .184 1.045l-3.155 4.505a.75.75 0 1 1-1.229-.86l3.155-4.506a.75.75 0 0 1 1.045-.184z"/></svg>\n',keystroke:"Ctrl+K",tooltip:!0,isToggleable:!0}),i.bind("isEnabled").to(a,"isEnabled"),i.bind("isOn").to(a,"value",(e=>!!e)),this.listenTo(i,"execute",(()=>{this._isSelectedLinkedMedia(e.model.document.selection)?n._addActionsView():n._showUI(!0)})),i}))}_isSelectedLinkedMedia(e){const t=e.getSelectedElement();return t?.is("element","drupalMedia")&&t.hasAttribute("linkHref")}}class P extends e.Plugin{static get requires(){return[L,O]}static get pluginName(){return"DrupalLinkMedia"}}const B={get inline(){return{name:"inline",title:"In line",icon:e.icons.objectInline,modelElements:["imageInline"],isDefault:!0}},get alignLeft(){return{name:"alignLeft",title:"Left aligned image",icon:e.icons.objectLeft,modelElements:["imageBlock","imageInline"],className:"image-style-align-left"}},get alignBlockLeft(){return{name:"alignBlockLeft",title:"Left aligned image",icon:e.icons.objectBlockLeft,modelElements:["imageBlock"],className:"image-style-block-align-left"}},get alignCenter(){return{name:"alignCenter",title:"Centered image",icon:e.icons.objectCenter,modelElements:["imageBlock"],className:"image-style-align-center"}},get alignRight(){return{name:"alignRight",title:"Right aligned image",icon:e.icons.objectRight,modelElements:["imageBlock","imageInline"],className:"image-style-align-right"}},get alignBlockRight(){return{name:"alignBlockRight",title:"Right aligned image",icon:e.icons.objectBlockRight,modelElements:["imageBlock"],className:"image-style-block-align-right"}},get block(){return{name:"block",title:"Centered image",icon:e.icons.objectCenter,modelElements:["imageBlock"],isDefault:!0}},get side(){return{name:"side",title:"Side image",icon:e.icons.objectRight,modelElements:["imageBlock"],className:"image-style-side"}}},N=(()=>({full:e.icons.objectFullWidth,left:e.icons.objectBlockLeft,right:e.icons.objectBlockRight,center:e.icons.objectCenter,inlineLeft:e.icons.objectLeft,inlineRight:e.icons.objectRight,inline:e.icons.objectInline}))(),j=[{name:"imageStyle:wrapText",title:"Wrap text",defaultItem:"imageStyle:alignLeft",items:["imageStyle:alignLeft","imageStyle:alignRight"]},{name:"imageStyle:breakText",title:"Break text",defaultItem:"imageStyle:block",items:["imageStyle:alignBlockLeft","imageStyle:block","imageStyle:alignBlockRight"]}];function R(e){(0,E.logWarning)("image-style-configuration-definition-invalid",e)}const F={normalizeStyles:function(e){return(e.configuredStyles.options||[]).map((e=>function(e){e="string"==typeof e?B[e]?{...B[e]}:{name:e}:function(e,t){const i={...t};for(const n in e)Object.prototype.hasOwnProperty.call(t,n)||(i[n]=e[n]);return i}(B[e.name],e);"string"==typeof e.icon&&(e.icon=N[e.icon]||e.icon);return e}(e))).filter((t=>function(e,{isBlockPluginLoaded:t,isInlinePluginLoaded:i}){const{modelElements:n,name:a}=e;if(!(n&&n.length&&a))return R({style:e}),!1;{const a=[t?"imageBlock":null,i?"imageInline":null];if(!n.some((e=>a.includes(e))))return(0,E.logWarning)("image-style-missing-dependency",{style:e,missingPlugins:n.map((e=>"imageBlock"===e?"ImageBlockEditing":"ImageInlineEditing"))}),!1}return!0}(t,e)))},getDefaultStylesConfiguration:function(e,t){return e&&t?{options:["inline","alignLeft","alignRight","alignCenter","alignBlockLeft","alignBlockRight","block","side"]}:e?{options:["block","side"]}:t?{options:["inline","alignLeft","alignRight"]}:{}},getDefaultDropdownDefinitions:function(e){return e.has("ImageBlockEditing")&&e.has("ImageInlineEditing")?[...j]:[]},warnInvalidStyle:R,DEFAULT_OPTIONS:B,DEFAULT_ICONS:N,DEFAULT_DROPDOWN_DEFINITIONS:j};function U(e,t,i){for(const n of t)if(i.checkAttribute(e,n))return!0;return!1}function H(e,t,i){const n=e.getSelectedElement();if(n&&U(n,i,t))return n;let{parent:a}=e.getFirstPosition();for(;a;){if(a.is("element")&&U(a,i,t))return a;a=a.parent}return null}class $ extends e.Command{constructor(e,t){super(e),this.styles={},Object.keys(t).forEach((e=>{this.styles[e]=new Map(t[e].map((e=>[e.name,e])))})),this.modelAttributes=[];for(const e of Object.keys(t)){const t=u(e);this.modelAttributes.push(t)}}refresh(){const{editor:e}=this,t=H(e.model.document.selection,e.model.schema,this.modelAttributes);this.isEnabled=!!t,this.isEnabled?this.value=this.getValue(t):this.value=!1}getValue(e){const t={};return Object.keys(this.styles).forEach((i=>{const n=u(i);if(e.hasAttribute(n))t[i]=e.getAttribute(n);else for(const[,e]of this.styles[i])e.isDefault&&(t[i]=e.name)})),t}execute(e={}){const{editor:{model:t}}=this,{value:i,group:n}=e,a=u(n);t.change((e=>{const r=H(t.document.selection,t.schema,this.modelAttributes);!i||this.styles[n].get(i).isDefault?e.removeAttribute(a,r):e.setAttribute(a,i,r)}))}}function q(e,t){for(const i of t)if(i.name===e)return i}class W extends e.Plugin{init(){const{editor:t}=this,i=t.config.get("drupalElementStyles");this.normalizedStyles={},Object.keys(i).forEach((t=>{this.normalizedStyles[t]=i[t].map((t=>("string"==typeof t.icon&&e.icons[t.icon]&&(t.icon=e.icons[t.icon]),t.name&&(t.name=`${t.name}`),t))).filter((e=>e.isDefault||e.attributeName&&e.attributeValue?e.modelElements&&Array.isArray(e.modelElements)?!!e.name||(console.warn("drupalElementStyles options must include a name."),!1):(console.warn("drupalElementStyles options must include an array of supported modelElements."),!1):(console.warn(`${e.attributeValue} drupalElementStyles options must include attributeName and attributeValue.`),!1)))})),this._setupConversion(),t.commands.add("drupalElementStyle",new $(t,this.normalizedStyles))}_setupConversion(){const{editor:e}=this,{schema:t}=e.model;Object.keys(this.normalizedStyles).forEach((i=>{const n=u(i),a=(r=this.normalizedStyles[i],(e,t,i)=>{if(!i.consumable.consume(t.item,e.name))return;const n=q(t.attributeNewValue,r),a=q(t.attributeOldValue,r),o=i.mapper.toViewElement(t.item),s=i.writer;a&&("class"===a.attributeName?s.removeClass(a.attributeValue,o):s.removeAttribute(a.attributeName,o)),n&&("class"===n.attributeName?s.addClass(n.attributeValue,o):n.isDefault||s.setAttribute(n.attributeName,n.attributeValue,o))});var r;const o=function(e,t){const i=e.filter((e=>!e.isDefault));return(e,n,a)=>{if(!n.modelRange)return;const r=n.viewItem,o=(0,E.first)(n.modelRange.getItems());if(o&&a.schema.checkAttribute(o,t))for(const e of i)if("class"===e.attributeName)a.consumable.consume(r,{classes:e.attributeValue})&&a.writer.setAttribute(t,e.name,o);else if(a.consumable.consume(r,{attributes:[e.attributeName]}))for(const e of i)e.attributeValue===r.getAttribute(e.attributeName)&&a.writer.setAttribute(t,e.name,o)}}(this.normalizedStyles[i],n);e.editing.downcastDispatcher.on(`attribute:${n}`,a),e.data.downcastDispatcher.on(`attribute:${n}`,a);[...new Set(this.normalizedStyles[i].map((e=>e.modelElements)).flat())].forEach((e=>{t.extend(e,{allowAttributes:n})})),e.data.upcastDispatcher.on("element",o,{priority:"low"})}))}static get pluginName(){return"DrupalElementStyleEditing"}}const K=e=>e,z=(e,t)=>(e?`${e}: `:"")+t;function Z(e,t){return`drupalElementStyle:${t}:${e}`}class G extends e.Plugin{static get requires(){return[W]}init(){const{plugins:e}=this.editor,t=this.editor.config.get("drupalMedia.toolbar")||[],i=e.get("DrupalElementStyleEditing").normalizedStyles;Object.keys(i).forEach((e=>{i[e].forEach((t=>{this._createButton(t,e,i[e])}))}));t.filter(l).filter((e=>{const t=[];if(!e.display)return console.warn("dropdown configuration must include a display key specifying either listDropdown or splitButton."),!1;e.items.includes(e.defaultItem)||console.warn("defaultItem must be part of items in the dropdown configuration.");for(const i of e.items){const e=i.split(":")[1];t.push(e)}return!!t.every((e=>e===t[0]))||(console.warn("dropdown configuration should only contain buttons from one group."),!1)})).forEach((e=>{if(e.items.length>=2){const t=e.name.split(":")[1];switch(e.display){case"splitButton":this._createDropdown(e,i[t]);break;case"listDropdown":this._createListDropdown(e,i[t])}}}))}updateOptionVisibility(e,t,i,n){const{selection:a}=this.editor.model.document,r={};r[n]=e;const o=a?a.getSelectedElement():H(a,this.editor.model.schema,r),s=e.filter((function(e){for(const[t,i]of(0,E.toMap)(e.modelAttributes))if(o&&o.hasAttribute(t))return i.includes(o.getAttribute(t));return!0}));i.hasOwnProperty("model")?s.includes(t)?i.model.set({class:""}):i.model.set({class:"ck-hidden"}):s.includes(t)?i.set({class:""}):i.set({class:"ck-hidden"})}_createDropdown(e,t){const i=this.editor.ui.componentFactory;i.add(e.name,(n=>{let a;const{defaultItem:r,items:o,title:s}=e,l=o.filter((e=>{const i=e.split(":")[1];return t.find((({name:t})=>Z(t,i)===e))})).map((e=>{const t=i.create(e);return e===r&&(a=t),t}));o.length!==l.length&&F.warnInvalidStyle({dropdown:e});const d=(0,g.createDropdown)(n,g.SplitButtonView),u=d.buttonView;return(0,g.addToolbarToDropdown)(d,l),u.set({label:z(s,a.label),class:null,tooltip:!0}),u.bind("icon").toMany(l,"isOn",((...e)=>{const t=e.findIndex(K);return t<0?a.icon:l[t].icon})),u.bind("label").toMany(l,"isOn",((...e)=>{const t=e.findIndex(K);return z(s,t<0?a.label:l[t].label)})),u.bind("isOn").toMany(l,"isOn",((...e)=>e.some(K))),u.bind("class").toMany(l,"isOn",((...e)=>e.some(K)?"ck-splitbutton_flatten":null)),u.on("execute",(()=>{l.some((({isOn:e})=>e))?d.isOpen=!d.isOpen:a.fire("execute")})),d.bind("isEnabled").toMany(l,"isEnabled",((...e)=>e.some(K))),d}))}_createButton(e,t,i){const n=e.name;this.editor.ui.componentFactory.add(Z(n,t),(a=>{const r=this.editor.commands.get("drupalElementStyle"),o=new g.ButtonView(a);return o.set({label:e.title,icon:e.icon,tooltip:!0,isToggleable:!0}),o.bind("isEnabled").to(r,"isEnabled"),o.bind("isOn").to(r,"value",(e=>e&&e[t]===n)),o.on("execute",this._executeCommand.bind(this,n,t)),this.listenTo(this.editor.ui,"update",(()=>{this.updateOptionVisibility(i,e,o,t)})),o}))}getDropdownListItemDefinitions(e,t,i){const n=new E.Collection;return e.forEach((t=>{const a={type:"button",model:new g.ViewModel({group:i,commandValue:t.name,label:t.title,withText:!0,class:""})};n.add(a),this.listenTo(this.editor.ui,"update",(()=>{this.updateOptionVisibility(e,t,a,i)}))})),n}_createListDropdown(e,t){const i=this.editor.ui.componentFactory;i.add(e.name,(n=>{let a;const{defaultItem:r,items:o,title:s,defaultText:l}=e,d=e.name.split(":")[1],u=o.filter((e=>t.find((({name:t})=>Z(t,d)===e)))).map((e=>{const t=i.create(e);return e===r&&(a=t),t}));o.length!==u.length&&F.warnInvalidStyle({dropdown:e});const c=(0,g.createDropdown)(n,g.DropdownButtonView),m=c.buttonView;m.set({label:z(s,a.label),class:null,tooltip:l,withText:!0});const p=this.editor.commands.get("drupalElementStyle");return m.bind("label").to(p,"value",(e=>{if(e?.[d])for(const i of t)if(i.name===e[d])return i.title;return l})),c.bind("isOn").to(p),c.bind("isEnabled").to(this),(0,g.addListToDropdown)(c,this.getDropdownListItemDefinitions(t,p,d)),this.listenTo(c,"execute",(e=>{this._executeCommand(e.source.commandValue,e.source.group)})),c}))}_executeCommand(e,t){this.editor.execute("drupalElementStyle",{value:e,group:t}),this.editor.editing.view.focus()}static get pluginName(){return"DrupalElementStyleUi"}}class J extends e.Plugin{static get requires(){return[W,G]}static get pluginName(){return"DrupalElementStyle"}}function X(e){const t=e.getFirstPosition().findAncestor("caption");return t&&a(t.parent)?t:null}function Q(e){for(const t of e.getChildren())if(t&&t.is("element","caption"))return t;return null}class Y extends e.Command{refresh(){const e=this.editor.model.document.selection,t=e.getSelectedElement();if(!t)return this.isEnabled=!!o(e),void(this.value=!!X(e));this.isEnabled=a(t),this.isEnabled?this.value=!!Q(t):this.value=!1}execute(e={}){const{focusCaptionOnShow:t}=e;this.editor.model.change((e=>{this.value?this._hideDrupalMediaCaption(e):this._showDrupalMediaCaption(e,t)}))}_showDrupalMediaCaption(e,t){const i=this.editor.model.document.selection,n=this.editor.plugins.get("DrupalMediaCaptionEditing"),a=o(i),r=n._getSavedCaption(a)||e.createElement("caption");e.append(r,a),t&&e.setSelection(r,"in")}_hideDrupalMediaCaption(e){const t=this.editor,i=t.model.document.selection,n=t.plugins.get("DrupalMediaCaptionEditing");let a,r=i.getSelectedElement();r?a=Q(r):(a=X(i),r=o(i)),n._saveCaption(r,a),e.setSelection(r,"on"),e.remove(a)}}class ee extends e.Plugin{static get requires(){return[]}static get pluginName(){return"DrupalMediaCaptionEditing"}constructor(e){super(e),this._savedCaptionsMap=new WeakMap}init(){const e=this.editor,t=e.model.schema;t.isRegistered("caption")?t.extend("caption",{allowIn:"drupalMedia"}):t.register("caption",{allowIn:"drupalMedia",allowContentOf:"$block",isLimit:!0}),e.commands.add("toggleMediaCaption",new Y(e)),this._setupConversion()}_setupConversion(){const e=this.editor,i=e.editing.view;var n;e.conversion.for("upcast").add(function(e){const t=(t,i,n)=>{const{viewItem:a}=i,{writer:r,consumable:o}=n;if(!i.modelRange||!o.consume(a,{attributes:["data-caption"]}))return;const s=r.createElement("caption"),l=i.modelRange.start.nodeAfter,d=e.data.processor.toView(a.getAttribute("data-caption"));n.consumable.constructor.createFrom(d,n.consumable),n.convertChildren(d,s),r.append(s,l)};return e=>{e.on("element:drupal-media",t,{priority:"low"})}}(e)),e.conversion.for("editingDowncast").elementToElement({model:"caption",view:(e,{writer:n})=>{if(!a(e.parent))return null;const r=n.createEditableElement("figcaption");return r.placeholder=Drupal.t("Enter media caption"),(0,V.enablePlaceholder)({view:i,element:r,keepOnFocus:!0}),(0,t.toWidgetEditable)(r,n)}}),e.editing.mapper.on("modelToViewPosition",(n=i,(e,t)=>{const i=t.modelPosition,r=i.parent;if(!a(r))return;const o=t.mapper.toViewElement(r);t.viewPosition=n.createPositionAt(o,i.offset+1)})),e.conversion.for("dataDowncast").add(function(e){return t=>{t.on("insert:caption",((t,i,n)=>{const{consumable:r,writer:o,mapper:s}=n;if(!a(i.item.parent)||!r.consume(i.item,"insert"))return;const l=e.model.createRangeIn(i.item),d=o.createDocumentFragment();s.bindElements(i.item,d);for(const{item:t}of Array.from(l)){const i={item:t,range:e.model.createRangeOn(t)},a=`insert:${t.name||"$text"}`;e.data.downcastDispatcher.fire(a,i,n);for(const a of t.getAttributeKeys())Object.assign(i,{attributeKey:a,attributeOldValue:null,attributeNewValue:i.item.getAttribute(a)}),e.data.downcastDispatcher.fire(`attribute:${a}`,i,n)}for(const e of o.createRangeIn(d).getItems())s.unbindViewElement(e);s.unbindViewElement(d);const u=e.data.processor.toData(d);if(u){const e=s.toViewElement(i.item.parent);o.setAttribute("data-caption",u,e)}}))}}(e))}_getSavedCaption(e){const t=this._savedCaptionsMap.get(e);return t?V.Element.fromJSON(t):null}_saveCaption(e,t){this._savedCaptionsMap.set(e,t.toJSON())}}class te extends e.Plugin{static get requires(){return[]}static get pluginName(){return"DrupalMediaCaptionUI"}init(){const{editor:t}=this,i=t.editing.view;t.ui.componentFactory.add("toggleDrupalMediaCaption",(n=>{const a=new g.ButtonView(n),r=t.commands.get("toggleMediaCaption");return a.set({label:Drupal.t("Caption media"),icon:e.icons.caption,tooltip:!0,isToggleable:!0}),a.bind("isOn","isEnabled").to(r,"value","isEnabled"),a.bind("label").to(r,"value",(e=>e?Drupal.t("Toggle caption off"):Drupal.t("Toggle caption on"))),this.listenTo(a,"execute",(()=>{t.execute("toggleMediaCaption",{focusCaptionOnShow:!0});const e=X(t.model.document.selection);if(e){const n=t.editing.mapper.toViewElement(e);i.scrollToTheSelection(),i.change((e=>{e.addClass("drupal-media__caption_highlighted",n)}))}t.editing.view.focus()})),a}))}}class ie extends e.Plugin{static get requires(){return[ee,te]}static get pluginName(){return"DrupalMediaCaption"}}const ne={DrupalMedia:x,MediaImageTextAlternative:D,MediaImageTextAlternativeEditing:y,MediaImageTextAlternativeUi:k,DrupalLinkMedia:P,DrupalMediaCaption:ie,DrupalElementStyle:J}})(),n=n.default})()));
\ No newline at end of file diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupallinkmedia/drupallinkmediaui.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupallinkmedia/drupallinkmediaui.js index cb4685e49f23..2b96be9e32e5 100644 --- a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupallinkmedia/drupallinkmediaui.js +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupallinkmedia/drupallinkmediaui.js @@ -103,8 +103,7 @@ export default class DrupalLinkMediaUI extends Plugin { _isSelectedLinkedMedia(selection) { const selectedModelElement = selection.getSelectedElement(); return ( - !!selectedModelElement && - selectedModelElement.is('element', 'drupalMedia') && + selectedModelElement?.is('element', 'drupalMedia') && selectedModelElement.hasAttribute('linkHref') ); } diff --git a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/mediaimagetextalternative/mediaimagetextalternativecommand.js b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/mediaimagetextalternative/mediaimagetextalternativecommand.js index b4623eee7728..2ae8ca9d809d 100644 --- a/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/mediaimagetextalternative/mediaimagetextalternativecommand.js +++ b/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/mediaimagetextalternative/mediaimagetextalternativecommand.js @@ -22,8 +22,7 @@ export default class MediaImageTextAlternativeCommand extends Command { this.editor.model.document.selection, ); this.isEnabled = - !!drupalMediaElement && - drupalMediaElement.getAttribute('drupalMediaIsImage') && + drupalMediaElement?.getAttribute('drupalMediaIsImage') && drupalMediaElement.getAttribute('drupalMediaIsImage') !== METADATA_ERROR; if (this.isEnabled) { diff --git a/core/modules/content_moderation/tests/src/Functional/WorkspaceContentModerationIntegrationTest.php b/core/modules/content_moderation/tests/src/Functional/WorkspaceContentModerationIntegrationTest.php index 4b4fbe2c7905..2462173f970b 100644 --- a/core/modules/content_moderation/tests/src/Functional/WorkspaceContentModerationIntegrationTest.php +++ b/core/modules/content_moderation/tests/src/Functional/WorkspaceContentModerationIntegrationTest.php @@ -33,7 +33,7 @@ class WorkspaceContentModerationIntegrationTest extends ModerationStateTestBase protected function getAdministratorPermissions(): array { return array_merge($this->permissions, [ 'bypass node access', - 'view any workspace', + 'administer workspaces', ]); } @@ -50,6 +50,7 @@ class WorkspaceContentModerationIntegrationTest extends ModerationStateTestBase $this->createContentTypeFromUi('Article', 'article', TRUE); $this->setupWorkspaceSwitcherBlock(); + $this->createWorkspaceThroughUi('Stage', 'stage'); } /** diff --git a/core/modules/contextual/contextual.libraries.yml b/core/modules/contextual/contextual.libraries.yml index 6798d02d9070..0e80f3aed427 100644 --- a/core/modules/contextual/contextual.libraries.yml +++ b/core/modules/contextual/contextual.libraries.yml @@ -1,7 +1,6 @@ drupal.contextual-links: version: VERSION js: - js/contextualModelView.js: {} # Ensure to run before contextual/drupal.context-toolbar. js/contextual.js: { weight: -2 } css: diff --git a/core/modules/contextual/js/contextual.js b/core/modules/contextual/js/contextual.js index f1008eabe07b..5a852e28fbac 100644 --- a/core/modules/contextual/js/contextual.js +++ b/core/modules/contextual/js/contextual.js @@ -256,7 +256,259 @@ } }, }), - ContextualModelView: {}, + + /** + * Models the state of a contextual link's trigger, list & region. + */ + ContextualModelView: class { + constructor($contextual, $region, options) { + this.title = options.title || ''; + this.regionIsHovered = false; + this._hasFocus = false; + this._isOpen = false; + this._isLocked = false; + this.strings = options.strings; + this.timer = NaN; + this.modelId = btoa(Math.random()).substring(0, 12); + this.$region = $region; + this.$contextual = $contextual; + + if (!document.body.classList.contains('touchevents')) { + this.$region.on({ + mouseenter: () => { + this.regionIsHovered = true; + }, + mouseleave: () => { + this.close().blur(); + this.regionIsHovered = false; + }, + 'mouseleave mouseenter': () => this.render(), + }); + this.$contextual.on('mouseenter', () => { + this.focus(); + this.render(); + }); + } + + this.$contextual.on( + { + click: () => { + this.toggleOpen(); + }, + touchend: () => { + Drupal.contextual.ContextualModelView.touchEndToClick(); + }, + focus: () => { + this.focus(); + }, + blur: () => { + this.blur(); + }, + 'click blur touchend focus': () => this.render(), + }, + '.trigger', + ); + + this.$contextual.on( + { + click: () => { + this.close().blur(); + }, + touchend: (event) => { + Drupal.contextual.ContextualModelView.touchEndToClick(event); + }, + focus: () => { + this.focus(); + }, + blur: () => { + this.waitCloseThenBlur(); + }, + 'click blur touchend focus': () => this.render(), + }, + '.contextual-links a', + ); + + this.render(); + + // Let other JavaScript react to the adding of a new contextual link. + $(document).trigger('drupalContextualLinkAdded', { + $el: $contextual, + $region, + model: this, + }); + } + + /** + * Updates the rendered representation of the current contextual links. + */ + render() { + const { isOpen } = this; + const isVisible = this.isLocked || this.regionIsHovered || isOpen; + this.$region.toggleClass('focus', this.hasFocus); + this.$contextual + .toggleClass('open', isOpen) + // Update the visibility of the trigger. + .find('.trigger') + .toggleClass('visually-hidden', !isVisible); + + this.$contextual.find('.contextual-links').prop('hidden', !isOpen); + const trigger = this.$contextual.find('.trigger').get(0); + trigger.textContent = Drupal.t('@action @title configuration options', { + '@action': !isOpen ? this.strings.open : this.strings.close, + '@title': this.title, + }); + trigger.setAttribute('aria-pressed', isOpen); + } + + /** + * Prevents delay and simulated mouse events. + * + * @param {jQuery.Event} event the touch end event. + */ + static touchEndToClick(event) { + event.preventDefault(); + event.target.click(); + } + + /** + * Set up a timeout to allow a user to tab between the trigger and the + * contextual links without the menu dismissing. + */ + waitCloseThenBlur() { + this.timer = window.setTimeout(() => { + this.isOpen = false; + this.hasFocus = false; + this.render(); + }, 150); + } + + /** + * Opens or closes the contextual link. + * + * If it is opened, then also give focus. + * + * @return {Drupal.contextual.ContextualModelView} + * The current contextual model view. + */ + toggleOpen() { + const newIsOpen = !this.isOpen; + this.isOpen = newIsOpen; + if (newIsOpen) { + this.focus(); + } + return this; + } + + /** + * Gives focus to this contextual link. + * + * Also closes + removes focus from every other contextual link. + * + * @return {Drupal.contextual.ContextualModelView} + * The current contextual model view. + */ + focus() { + const { modelId } = this; + Drupal.contextual.instances.forEach((model) => { + if (model.modelId !== modelId) { + model.close().blur(); + } + }); + window.clearTimeout(this.timer); + this.hasFocus = true; + return this; + } + + /** + * Removes focus from this contextual link, unless it is open. + * + * @return {Drupal.contextual.ContextualModelView} + * The current contextual model view. + */ + blur() { + if (!this.isOpen) { + this.hasFocus = false; + } + return this; + } + + /** + * Closes this contextual link. + * + * Does not call blur() because we want to allow a contextual link to have + * focus, yet be closed for example when hovering. + * + * @return {Drupal.contextual.ContextualModelView} + * The current contextual model view. + */ + close() { + this.isOpen = false; + return this; + } + + /** + * Gets the current focus state. + * + * @return {boolean} the focus state. + */ + get hasFocus() { + return this._hasFocus; + } + + /** + * Sets the current focus state. + * + * @param {boolean} value - new focus state + */ + set hasFocus(value) { + this._hasFocus = value; + this.$region.toggleClass('focus', this._hasFocus); + } + + /** + * Gets the current open state. + * + * @return {boolean} the open state. + */ + get isOpen() { + return this._isOpen; + } + + /** + * Sets the current open state. + * + * @param {boolean} value - new open state + */ + set isOpen(value) { + this._isOpen = value; + // Nested contextual region handling: hide any nested contextual triggers. + this.$region + .closest('.contextual-region') + .find('.contextual .trigger:not(:first)') + .toggle(!this.isOpen); + } + + /** + * Gets the current locked state. + * + * @return {boolean} the locked state. + */ + get isLocked() { + return this._isLocked; + } + + /** + * Sets the current locked state. + * + * @param {boolean} value - new locked state + */ + set isLocked(value) { + if (value !== this._isLocked) { + this._isLocked = value; + this.render(); + } + } + }, }; /** diff --git a/core/modules/contextual/js/contextualModelView.js b/core/modules/contextual/js/contextualModelView.js deleted file mode 100644 index 4488045e2236..000000000000 --- a/core/modules/contextual/js/contextualModelView.js +++ /dev/null @@ -1,254 +0,0 @@ -(($, Drupal) => { - /** - * Models the state of a contextual link's trigger, list & region. - */ - Drupal.contextual.ContextualModelView = class { - constructor($contextual, $region, options) { - this.title = options.title || ''; - this.regionIsHovered = false; - this._hasFocus = false; - this._isOpen = false; - this._isLocked = false; - this.strings = options.strings; - this.timer = NaN; - this.modelId = btoa(Math.random()).substring(0, 12); - this.$region = $region; - this.$contextual = $contextual; - - if (!document.body.classList.contains('touchevents')) { - this.$region.on({ - mouseenter: () => { - this.regionIsHovered = true; - }, - mouseleave: () => { - this.close().blur(); - this.regionIsHovered = false; - }, - 'mouseleave mouseenter': () => this.render(), - }); - this.$contextual.on('mouseenter', () => { - this.focus(); - this.render(); - }); - } - - this.$contextual.on( - { - click: () => { - this.toggleOpen(); - }, - touchend: () => { - Drupal.contextual.ContextualModelView.touchEndToClick(); - }, - focus: () => { - this.focus(); - }, - blur: () => { - this.blur(); - }, - 'click blur touchend focus': () => this.render(), - }, - '.trigger', - ); - - this.$contextual.on( - { - click: () => { - this.close().blur(); - }, - touchend: (event) => { - Drupal.contextual.ContextualModelView.touchEndToClick(event); - }, - focus: () => { - this.focus(); - }, - blur: () => { - this.waitCloseThenBlur(); - }, - 'click blur touchend focus': () => this.render(), - }, - '.contextual-links a', - ); - - this.render(); - - // Let other JavaScript react to the adding of a new contextual link. - $(document).trigger('drupalContextualLinkAdded', { - $el: $contextual, - $region, - model: this, - }); - } - - /** - * Updates the rendered representation of the current contextual links. - */ - render() { - const { isOpen } = this; - const isVisible = this.isLocked || this.regionIsHovered || isOpen; - this.$region.toggleClass('focus', this.hasFocus); - this.$contextual - .toggleClass('open', isOpen) - // Update the visibility of the trigger. - .find('.trigger') - .toggleClass('visually-hidden', !isVisible); - - this.$contextual.find('.contextual-links').prop('hidden', !isOpen); - const trigger = this.$contextual.find('.trigger').get(0); - trigger.textContent = Drupal.t('@action @title configuration options', { - '@action': !isOpen ? this.strings.open : this.strings.close, - '@title': this.title, - }); - trigger.setAttribute('aria-pressed', isOpen); - } - - /** - * Prevents delay and simulated mouse events. - * - * @param {jQuery.Event} event the touch end event. - */ - static touchEndToClick(event) { - event.preventDefault(); - event.target.click(); - } - - /** - * Set up a timeout to allow a user to tab between the trigger and the - * contextual links without the menu dismissing. - */ - waitCloseThenBlur() { - this.timer = window.setTimeout(() => { - this.isOpen = false; - this.hasFocus = false; - this.render(); - }, 150); - } - - /** - * Opens or closes the contextual link. - * - * If it is opened, then also give focus. - * - * @return {Drupal.contextual.ContextualModelView} - * The current contextual model view. - */ - toggleOpen() { - const newIsOpen = !this.isOpen; - this.isOpen = newIsOpen; - if (newIsOpen) { - this.focus(); - } - return this; - } - - /** - * Gives focus to this contextual link. - * - * Also closes + removes focus from every other contextual link. - * - * @return {Drupal.contextual.ContextualModelView} - * The current contextual model view. - */ - focus() { - const { modelId } = this; - Drupal.contextual.instances.forEach((model) => { - if (model.modelId !== modelId) { - model.close().blur(); - } - }); - window.clearTimeout(this.timer); - this.hasFocus = true; - return this; - } - - /** - * Removes focus from this contextual link, unless it is open. - * - * @return {Drupal.contextual.ContextualModelView} - * The current contextual model view. - */ - blur() { - if (!this.isOpen) { - this.hasFocus = false; - } - return this; - } - - /** - * Closes this contextual link. - * - * Does not call blur() because we want to allow a contextual link to have - * focus, yet be closed for example when hovering. - * - * @return {Drupal.contextual.ContextualModelView} - * The current contextual model view. - */ - close() { - this.isOpen = false; - return this; - } - - /** - * Gets the current focus state. - * - * @return {boolean} the focus state. - */ - get hasFocus() { - return this._hasFocus; - } - - /** - * Sets the current focus state. - * - * @param {boolean} value - new focus state - */ - set hasFocus(value) { - this._hasFocus = value; - this.$region.toggleClass('focus', this._hasFocus); - } - - /** - * Gets the current open state. - * - * @return {boolean} the open state. - */ - get isOpen() { - return this._isOpen; - } - - /** - * Sets the current open state. - * - * @param {boolean} value - new open state - */ - set isOpen(value) { - this._isOpen = value; - // Nested contextual region handling: hide any nested contextual triggers. - this.$region - .closest('.contextual-region') - .find('.contextual .trigger:not(:first)') - .toggle(!this.isOpen); - } - - /** - * Gets the current locked state. - * - * @return {boolean} the locked state. - */ - get isLocked() { - return this._isLocked; - } - - /** - * Sets the current locked state. - * - * @param {boolean} value - new locked state - */ - set isLocked(value) { - if (value !== this._isLocked) { - this._isLocked = value; - this.render(); - } - } - }; -})(jQuery, Drupal); diff --git a/core/modules/field_ui/css/field_ui_add_field.module.css b/core/modules/field_ui/css/field_ui_add_field.module.css index d12e6cc8a302..5b84207b5f0c 100644 --- a/core/modules/field_ui/css/field_ui_add_field.module.css +++ b/core/modules/field_ui/css/field_ui_add_field.module.css @@ -16,7 +16,7 @@ --input-fg-color: var(--color-gray); --color-blue: #003ecc; --color-red: #dc2323; - --details-box-shadow: 0 2px 0.25rem rgba(0, 0, 0, 0.1); + --details-box-shadow: 0 2px 0.25rem rgb(0, 0, 0, 0.1); } .field-ui-new-storage-wrapper { diff --git a/core/modules/field_ui/css/field_ui_add_field.module.pcss.css b/core/modules/field_ui/css/field_ui_add_field.module.pcss.css index b136e0f4b3cc..fc27ca1a253e 100644 --- a/core/modules/field_ui/css/field_ui_add_field.module.pcss.css +++ b/core/modules/field_ui/css/field_ui_add_field.module.pcss.css @@ -9,7 +9,7 @@ --input-fg-color: var(--color-gray); --color-blue: #003ecc; --color-red: #dc2323; - --details-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + --details-box-shadow: 0 2px 4px rgb(0, 0, 0, 0.1); } .field-ui-new-storage-wrapper { diff --git a/core/modules/jsonapi/tests/src/Functional/WorkspaceTest.php b/core/modules/jsonapi/tests/src/Functional/WorkspaceTest.php index 97eec557d22d..48cbc20067a9 100644 --- a/core/modules/jsonapi/tests/src/Functional/WorkspaceTest.php +++ b/core/modules/jsonapi/tests/src/Functional/WorkspaceTest.php @@ -15,6 +15,7 @@ use Drupal\workspaces\Entity\Workspace; * JSON:API integration test for the "Workspace" content entity type. * * @group jsonapi + * @group workspaces */ class WorkspaceTest extends ResourceTestBase { @@ -142,7 +143,7 @@ class WorkspaceTest extends ResourceTestBase { 'changed' => (new \DateTime())->setTimestamp($this->entity->getChangedTime())->setTimezone(new \DateTimeZone('UTC'))->format(\DateTime::RFC3339), 'label' => 'Campaign', 'drupal_internal__id' => 'campaign', - 'drupal_internal__revision_id' => 2, + 'drupal_internal__revision_id' => 1, ], 'relationships' => [ 'parent' => [ diff --git a/core/modules/language/tests/src/Kernel/Migrate/d7/MigrateLanguageNegotiationSettingsTest.php b/core/modules/language/tests/src/Kernel/Migrate/d7/MigrateLanguageNegotiationSettingsTest.php index fe5ff0ca0627..54fdf4b0d21d 100644 --- a/core/modules/language/tests/src/Kernel/Migrate/d7/MigrateLanguageNegotiationSettingsTest.php +++ b/core/modules/language/tests/src/Kernel/Migrate/d7/MigrateLanguageNegotiationSettingsTest.php @@ -10,7 +10,6 @@ use Drupal\Tests\migrate_drupal\Kernel\d7\MigrateDrupal7TestBase; /** * Tests the migration of language negotiation. * - * @group #slow * @group migrate_drupal_7 */ class MigrateLanguageNegotiationSettingsTest extends MigrateDrupal7TestBase { diff --git a/core/modules/layout_builder/css/layout-builder.pcss.css b/core/modules/layout_builder/css/layout-builder.pcss.css index 7ddb9543e007..06b73b42992d 100644 --- a/core/modules/layout_builder/css/layout-builder.pcss.css +++ b/core/modules/layout_builder/css/layout-builder.pcss.css @@ -91,7 +91,7 @@ pointer-events: none; } - @nest .layout-builder--content-preview-disabled & { + .layout-builder--content-preview-disabled & { margin: 0; border-bottom: 2px dashed #979797; } diff --git a/core/modules/layout_builder/css/off-canvas.css b/core/modules/layout_builder/css/off-canvas.css index 1caa028602f5..0b90c63ce615 100644 --- a/core/modules/layout_builder/css/off-canvas.css +++ b/core/modules/layout_builder/css/off-canvas.css @@ -95,7 +95,7 @@ #drupal-off-canvas-wrapper .inline-block-create-button:hover, #drupal-off-canvas-wrapper .inline-block-list__item:hover { - background-color: rgba(255, 255, 255, 0.05); + background-color: rgb(255, 255, 255, 0.05); } #drupal-off-canvas-wrapper .inline-block-create-button:focus, diff --git a/core/modules/layout_builder/css/off-canvas.pcss.css b/core/modules/layout_builder/css/off-canvas.pcss.css index a63de90a0dd6..55083338bded 100644 --- a/core/modules/layout_builder/css/off-canvas.pcss.css +++ b/core/modules/layout_builder/css/off-canvas.pcss.css @@ -80,7 +80,7 @@ color: var(--off-canvas-text-color); &:hover { - background-color: rgba(255, 255, 255, 0.05); + background-color: rgb(255, 255, 255, 0.05); } &:focus { diff --git a/core/modules/layout_builder/src/EventSubscriber/BlockComponentRenderArray.php b/core/modules/layout_builder/src/EventSubscriber/BlockComponentRenderArray.php index 786fa3d786af..162928bb0918 100644 --- a/core/modules/layout_builder/src/EventSubscriber/BlockComponentRenderArray.php +++ b/core/modules/layout_builder/src/EventSubscriber/BlockComponentRenderArray.php @@ -2,8 +2,8 @@ namespace Drupal\layout_builder\EventSubscriber; -use Drupal\block_content\Access\RefinableDependentAccessInterface; use Drupal\Core\Access\AccessResult; +use Drupal\Core\Access\RefinableDependentAccessInterface; use Drupal\Core\Block\BlockPluginInterface; use Drupal\Core\Cache\CacheableMetadata; use Drupal\Core\Render\Element; diff --git a/core/modules/layout_builder/src/Plugin/Block/InlineBlock.php b/core/modules/layout_builder/src/Plugin/Block/InlineBlock.php index 2c66d43b8200..14686b9f532b 100644 --- a/core/modules/layout_builder/src/Plugin/Block/InlineBlock.php +++ b/core/modules/layout_builder/src/Plugin/Block/InlineBlock.php @@ -2,10 +2,10 @@ namespace Drupal\layout_builder\Plugin\Block; -use Drupal\block_content\Access\RefinableDependentAccessInterface; -use Drupal\block_content\Access\RefinableDependentAccessTrait; use Drupal\Component\Utility\NestedArray; use Drupal\Core\Access\AccessResult; +use Drupal\Core\Access\RefinableDependentAccessInterface; +use Drupal\Core\Access\RefinableDependentAccessTrait; use Drupal\Core\Block\Attribute\Block; use Drupal\Core\Block\BlockBase; use Drupal\Core\Entity\Entity\EntityFormDisplay; diff --git a/core/modules/layout_builder/tests/modules/layout_builder_block_content_dependency_test/layout_builder_block_content_dependency_test.info.yml b/core/modules/layout_builder/tests/modules/layout_builder_block_content_dependency_test/layout_builder_block_content_dependency_test.info.yml new file mode 100644 index 000000000000..691e00a80c5a --- /dev/null +++ b/core/modules/layout_builder/tests/modules/layout_builder_block_content_dependency_test/layout_builder_block_content_dependency_test.info.yml @@ -0,0 +1,5 @@ +name: 'Layout Builder BLock Content dependency test' +type: module +description: 'Support module for testing Layout Builder''s implicit dependencies on Block Content' +package: Testing +version: VERSION diff --git a/core/modules/layout_builder/tests/modules/layout_builder_block_content_dependency_test/layout_builder_block_content_dependency_test.module b/core/modules/layout_builder/tests/modules/layout_builder_block_content_dependency_test/layout_builder_block_content_dependency_test.module new file mode 100644 index 000000000000..93bb03de4048 --- /dev/null +++ b/core/modules/layout_builder/tests/modules/layout_builder_block_content_dependency_test/layout_builder_block_content_dependency_test.module @@ -0,0 +1,19 @@ +<?php + +/** + * @file + * Provides hook implementations for testing Layout Builder with Block Content. + */ + +declare(strict_types=1); + +/** + * Implements hook_modules_installed(). + */ +function layout_builder_block_content_dependency_test_modules_installed(array $modules, bool $is_syncing): void { + // @see Drupal\Tests\layout_builder\Kernel\LayoutBuilderBlockContentDependencyTest + if (in_array('layout_builder', $modules)) { + \Drupal::service('plugin.manager.block')->getDefinitions(); + \Drupal::service('module_installer')->install(['block_content']); + } +} diff --git a/core/modules/layout_builder/tests/src/Kernel/LayoutBuilderBlockContentDependencyTest.php b/core/modules/layout_builder/tests/src/Kernel/LayoutBuilderBlockContentDependencyTest.php new file mode 100644 index 000000000000..faa5d26bec92 --- /dev/null +++ b/core/modules/layout_builder/tests/src/Kernel/LayoutBuilderBlockContentDependencyTest.php @@ -0,0 +1,51 @@ +<?php + +declare(strict_types=1); + +namespace Drupal\Tests\layout_builder\Kernel; + +use Drupal\KernelTests\KernelTestBase; + +/** + * Test for installing Layout Builder before Block Content in the same request. + * + * @group layout_builder + */ +class LayoutBuilderBlockContentDependencyTest extends KernelTestBase { + + /** + * Test that block_content can be successfully installed after layout_builder. + * + * The InlineBlock plugin class in layout_builder uses + * RefinableDependentAccessTrait, which used to live in block_content, though + * block_content is not a layout_builder dependency. Since the BlockContent + * entity type class also uses the same trait, if, in order and in the same + * request: + * 1. layout_builder is installed first without block_content + * 2. block plugins are discovered + * 3. block_content is installed, + * a fatal error can occur, because the trait was missing before block_content + * is installed and gets aliased to an empty trait. When the installation of + * the block_content module installs the BlockContent entity type, the empty + * trait is missing the methods that need to be implemented from the + * interface. + * + * @see \Drupal\Component\Plugin\Discovery\AttributeClassDiscovery + * @see \Drupal\Component\Discovery\MissingClassDetectionClassLoader + */ + public function testInstallLayoutBuilderAndBlockContent(): void { + $this->assertFalse(\Drupal::moduleHandler()->moduleExists('block_content')); + // Prevent classes in the block_content modules from being loaded before the + // module is installed. + $this->classLoader->setPsr4("Drupal\\block_content\\", ''); + + // Install test module that will act on layout_builder being installed and + // at that time does block plugin discovery first, then installs + // block_content. + \Drupal::service('module_installer')->install(['layout_builder_block_content_dependency_test']); + + \Drupal::service('module_installer')->install(['layout_builder']); + $this->assertTrue(\Drupal::moduleHandler()->moduleExists('block_content')); + } + +} diff --git a/core/modules/layout_builder/tests/src/Unit/BlockComponentRenderArrayTest.php b/core/modules/layout_builder/tests/src/Unit/BlockComponentRenderArrayTest.php index 530feea461da..baa6a080aa5a 100644 --- a/core/modules/layout_builder/tests/src/Unit/BlockComponentRenderArrayTest.php +++ b/core/modules/layout_builder/tests/src/Unit/BlockComponentRenderArrayTest.php @@ -4,9 +4,9 @@ declare(strict_types=1); namespace Drupal\Tests\layout_builder\Unit; -use Drupal\block_content\Access\RefinableDependentAccessInterface; use Drupal\Component\Plugin\Context\ContextInterface; use Drupal\Core\Access\AccessResult; +use Drupal\Core\Access\RefinableDependentAccessInterface; use Drupal\Core\Block\BlockManagerInterface; use Drupal\Core\Block\BlockPluginInterface; use Drupal\Core\Cache\Cache; diff --git a/core/modules/link/tests/src/Functional/LinkFieldUITest.php b/core/modules/link/tests/src/Functional/LinkFieldUITest.php index 5c78abc23910..694fb6b36774 100644 --- a/core/modules/link/tests/src/Functional/LinkFieldUITest.php +++ b/core/modules/link/tests/src/Functional/LinkFieldUITest.php @@ -15,7 +15,6 @@ use Drupal\Tests\field_ui\Traits\FieldUiTestTrait; * Tests link field UI functionality. * * @group link - * @group #slow */ class LinkFieldUITest extends BrowserTestBase { diff --git a/core/modules/navigation/components/badge/badge.component.yml b/core/modules/navigation/components/badge/badge.component.yml index a7bb04f963eb..a7940d1efa54 100644 --- a/core/modules/navigation/components/badge/badge.component.yml +++ b/core/modules/navigation/components/badge/badge.component.yml @@ -21,6 +21,9 @@ props: enum: - info - success + meta:enum: + info: Information + success: Success slots: label: type: string diff --git a/core/modules/navigation/components/title/title.component.yml b/core/modules/navigation/components/title/title.component.yml index 696960d455f5..1001c42c109f 100644 --- a/core/modules/navigation/components/title/title.component.yml +++ b/core/modules/navigation/components/title/title.component.yml @@ -23,6 +23,9 @@ props: enum: - ellipsis - xs + meta:enum: + ellipsis: Ellipsis + xs: 'Extra-small' extra_classes: type: array title: Extra classes. @@ -43,6 +46,15 @@ props: - h5 - h6 - span + meta:enum: + h1: Heading 1 + h2: Heading 2 + h3: Heading 3 + h4: Heading 4 + h5: Heading 5 + h6: Heading 6 + span: Inline + x-translation-context: HTML tag # Provide a default value default: h2 icon: diff --git a/core/modules/navigation/components/toolbar-button/toolbar-button.component.yml b/core/modules/navigation/components/toolbar-button/toolbar-button.component.yml index 87e29a14bf44..130cca22e1cb 100644 --- a/core/modules/navigation/components/toolbar-button/toolbar-button.component.yml +++ b/core/modules/navigation/components/toolbar-button/toolbar-button.component.yml @@ -37,6 +37,17 @@ props: - primary - small-offset - weight--400 + meta:enum: + collapsible: Collapsible + dark: Dark + expand--down: Expands down + expand--side: Expands to the side + large: Large + non-interactive: Non-Interactive + primary: Primary + small-offset: Small offset + weight--400: Weight 400 + x-translation-context: Toolbar button modifiers extra_classes: type: array title: Extra classes. @@ -53,6 +64,11 @@ props: - a - button - span + meta:enum: + a: Link + button: Button + span: Inline + x-translation-context: HTML tag # Provide a default value default: button icon: diff --git a/core/modules/navigation/components/toolbar-button/toolbar-button.css b/core/modules/navigation/components/toolbar-button/toolbar-button.css index 3af3cbfdd39d..85bfb00883cf 100644 --- a/core/modules/navigation/components/toolbar-button/toolbar-button.css +++ b/core/modules/navigation/components/toolbar-button/toolbar-button.css @@ -36,7 +36,7 @@ text-align: start; -webkit-text-decoration: none; text-decoration: none; - word-break: break-word; + overflow-wrap: break-word; color: var(--toolbar-button-color); border: 0; border-radius: var(--admin-toolbar-space-8); diff --git a/core/modules/navigation/components/toolbar-button/toolbar-button.pcss.css b/core/modules/navigation/components/toolbar-button/toolbar-button.pcss.css index 9b40b8fcb460..0e1d5f3bdd57 100644 --- a/core/modules/navigation/components/toolbar-button/toolbar-button.pcss.css +++ b/core/modules/navigation/components/toolbar-button/toolbar-button.pcss.css @@ -33,7 +33,7 @@ cursor: pointer; text-align: start; text-decoration: none; - word-break: break-word; + overflow-wrap: break-word; color: var(--toolbar-button-color); border: 0; border-radius: var(--admin-toolbar-space-8); diff --git a/core/modules/navigation/css/base/variables.css b/core/modules/navigation/css/base/variables.css index 91063f3f09d9..c56c7322b6f4 100644 --- a/core/modules/navigation/css/base/variables.css +++ b/core/modules/navigation/css/base/variables.css @@ -74,14 +74,14 @@ We need it root to calculate the size of the displace in .dialog-off-canvas-main /* White. */ --admin-toolbar-color-white: var(--drupal-admin-color-white, #fff); /* Expanded background color. */ - --admin-toolbar-color-expanded: rgba(231, 234, 243, 0.5); /* --admin-toolbar-color-gray-050 */ + --admin-toolbar-color-expanded: rgb(231, 234, 243, 0.5); /* --admin-toolbar-color-gray-050 */ /* Fonts. */ --admin-toolbar-font-family: inter, sans-serif; /* Shadows. */ - --admin-toolbar-color-shadow-0: rgba(0, 0, 0, 0); - --admin-toolbar-color-shadow-6: rgba(0, 0, 0, 0.06); - --admin-toolbar-color-shadow-8: rgba(0, 0, 0, 0.08); - --admin-toolbar-color-shadow-15: rgba(0, 0, 0, 0.15); + --admin-toolbar-color-shadow-0: rgb(0, 0, 0, 0); + --admin-toolbar-color-shadow-6: rgb(0, 0, 0, 0.06); + --admin-toolbar-color-shadow-8: rgb(0, 0, 0, 0.08); + --admin-toolbar-color-shadow-15: rgb(0, 0, 0, 0.15); /** * Spaces. diff --git a/core/modules/navigation/css/base/variables.pcss.css b/core/modules/navigation/css/base/variables.pcss.css index ae9655a7ad0e..844e0ba048a7 100644 --- a/core/modules/navigation/css/base/variables.pcss.css +++ b/core/modules/navigation/css/base/variables.pcss.css @@ -71,14 +71,14 @@ We need it root to calculate the size of the displace in .dialog-off-canvas-main /* White. */ --admin-toolbar-color-white: var(--drupal-admin-color-white, #fff); /* Expanded background color. */ - --admin-toolbar-color-expanded: rgba(231, 234, 243, 0.5); /* --admin-toolbar-color-gray-050 */ + --admin-toolbar-color-expanded: rgb(231, 234, 243, 0.5); /* --admin-toolbar-color-gray-050 */ /* Fonts. */ --admin-toolbar-font-family: inter, sans-serif; /* Shadows. */ - --admin-toolbar-color-shadow-0: rgba(0, 0, 0, 0); - --admin-toolbar-color-shadow-6: rgba(0, 0, 0, 0.06); - --admin-toolbar-color-shadow-8: rgba(0, 0, 0, 0.08); - --admin-toolbar-color-shadow-15: rgba(0, 0, 0, 0.15); + --admin-toolbar-color-shadow-0: rgb(0, 0, 0, 0); + --admin-toolbar-color-shadow-6: rgb(0, 0, 0, 0.06); + --admin-toolbar-color-shadow-8: rgb(0, 0, 0, 0.08); + --admin-toolbar-color-shadow-15: rgb(0, 0, 0, 0.15); /** * Spaces. diff --git a/core/modules/navigation/css/components/admin-toolbar.css b/core/modules/navigation/css/components/admin-toolbar.css index 25fd9ca1cc02..8e8636d8a855 100644 --- a/core/modules/navigation/css/components/admin-toolbar.css +++ b/core/modules/navigation/css/components/admin-toolbar.css @@ -94,7 +94,7 @@ body { .admin-toolbar { block-size: calc(100vh - var(--drupal-displace-offset-top, 0px)); transform: none; - inset-block-start: var(--drupal-displace-offset-top, 0); + inset-block-start: 0; } } @media only screen and (max-height: 18.75rem) { @@ -333,7 +333,7 @@ body { display: none; width: 100vw; height: 100vh; - background-color: rgba(0, 0, 0, 0.14); + background-color: rgb(0, 0, 0, 0.14); } :where([data-admin-toolbar="expanded"]) .admin-toolbar-overlay { display: block; diff --git a/core/modules/navigation/css/components/admin-toolbar.pcss.css b/core/modules/navigation/css/components/admin-toolbar.pcss.css index 0b13b08252e1..55ffd803e693 100644 --- a/core/modules/navigation/css/components/admin-toolbar.pcss.css +++ b/core/modules/navigation/css/components/admin-toolbar.pcss.css @@ -95,7 +95,7 @@ body { @media (--admin-toolbar-desktop) { block-size: calc(100vh - var(--drupal-displace-offset-top, 0px)); transform: none; - inset-block-start: var(--drupal-displace-offset-top, 0); + inset-block-start: 0; } @media only screen and (max-height: 300px) { @@ -354,7 +354,7 @@ body { display: none; width: 100vw; height: 100vh; - background-color: rgba(0, 0, 0, 0.14); + background-color: rgb(0, 0, 0, 0.14); :where([data-admin-toolbar="expanded"]) & { display: block; diff --git a/core/modules/navigation/css/components/toolbar-dropdown.css b/core/modules/navigation/css/components/toolbar-dropdown.css index f21bf044137a..eca3b63b27e4 100644 --- a/core/modules/navigation/css/components/toolbar-dropdown.css +++ b/core/modules/navigation/css/components/toolbar-dropdown.css @@ -50,7 +50,7 @@ padding: var(--admin-toolbar-space-8) var(--admin-toolbar-space-16); border-radius: var(--admin-toolbar-space-12); background: white; - box-shadow: 0 14px 30px 0 rgba(0, 0, 0, 0.1); + box-shadow: 0 14px 30px 0 rgb(0, 0, 0, 0.1); } [data-drupal-dropdown][aria-expanded="true"] + .toolbar-dropdown__menu { display: block; diff --git a/core/modules/navigation/css/components/toolbar-dropdown.pcss.css b/core/modules/navigation/css/components/toolbar-dropdown.pcss.css index 6c462a08ba86..91cd88d0a5fc 100644 --- a/core/modules/navigation/css/components/toolbar-dropdown.pcss.css +++ b/core/modules/navigation/css/components/toolbar-dropdown.pcss.css @@ -49,7 +49,7 @@ padding: var(--admin-toolbar-space-8) var(--admin-toolbar-space-16); border-radius: var(--admin-toolbar-space-12); background: white; - box-shadow: 0 14px 30px 0 rgba(0, 0, 0, 0.1); + box-shadow: 0 14px 30px 0 rgb(0, 0, 0, 0.1); } [data-drupal-dropdown][aria-expanded="true"] + .toolbar-dropdown__menu { diff --git a/core/modules/navigation/css/components/toolbar-menu.css b/core/modules/navigation/css/components/toolbar-menu.css index 33e2af3bcb9a..9b411c7cba75 100644 --- a/core/modules/navigation/css/components/toolbar-menu.css +++ b/core/modules/navigation/css/components/toolbar-menu.css @@ -51,7 +51,7 @@ -webkit-text-decoration: none; text-decoration: none; letter-spacing: var(--admin-toolbar-letter-spacing-0-06); - word-break: break-word; + overflow-wrap: break-word; color: var(--admin-toolbar-color-gray-800); border: none; background-color: transparent; @@ -133,5 +133,5 @@ rotate: -90deg; } [dir="rtl"] :is([aria-expanded="true"] .toolbar-menu__chevron) { - rotate: 0; + rotate: none; } diff --git a/core/modules/navigation/css/components/toolbar-menu.pcss.css b/core/modules/navigation/css/components/toolbar-menu.pcss.css index 7f2c98950cc1..60fc599d7122 100644 --- a/core/modules/navigation/css/components/toolbar-menu.pcss.css +++ b/core/modules/navigation/css/components/toolbar-menu.pcss.css @@ -55,7 +55,7 @@ text-align: start; text-decoration: none; letter-spacing: var(--admin-toolbar-letter-spacing-0-06); - word-break: break-word; + overflow-wrap: break-word; color: var(--admin-toolbar-color-gray-800); border: none; background-color: transparent; @@ -150,7 +150,7 @@ rotate: -90deg; [dir="rtl"] & { - rotate: 0; + rotate: none; } } } diff --git a/core/modules/navigation/css/components/toolbar-message.css b/core/modules/navigation/css/components/toolbar-message.css index 11b50e9459be..8a852a0fc703 100644 --- a/core/modules/navigation/css/components/toolbar-message.css +++ b/core/modules/navigation/css/components/toolbar-message.css @@ -15,7 +15,7 @@ text-align: start; -webkit-text-decoration: none; text-decoration: none; - word-break: break-word; + overflow-wrap: break-word; color: var(--admin-toolbar-color-gray-800); border: 0; border-radius: var(--admin-toolbar-space-8); diff --git a/core/modules/navigation/css/components/toolbar-message.pcss.css b/core/modules/navigation/css/components/toolbar-message.pcss.css index 9689014aab43..9e0f401fb4a5 100644 --- a/core/modules/navigation/css/components/toolbar-message.pcss.css +++ b/core/modules/navigation/css/components/toolbar-message.pcss.css @@ -7,7 +7,7 @@ cursor: pointer; text-align: start; text-decoration: none; - word-break: break-word; + overflow-wrap: break-word; color: var(--admin-toolbar-color-gray-800); border: 0; border-radius: var(--admin-toolbar-space-8); diff --git a/core/modules/navigation/css/components/toolbar-popover.css b/core/modules/navigation/css/components/toolbar-popover.css index 76f587a325e6..532e873d96e6 100644 --- a/core/modules/navigation/css/components/toolbar-popover.css +++ b/core/modules/navigation/css/components/toolbar-popover.css @@ -48,9 +48,9 @@ padding-block-start: var(--admin-toolbar-space-16); transform: translateX(0); box-shadow: - 0 0 72px rgba(0, 0, 0, 0.2), - 0 0 8px rgba(0, 0, 0, 0.04), - 0 0 40px rgba(0, 0, 0, 0.06); + 0 0 72px rgb(0, 0, 0, 0.2), + 0 0 8px rgb(0, 0, 0, 0.04), + 0 0 40px rgb(0, 0, 0, 0.06); inline-size: var(--admin-toolbar-popover-width); inset-block-start: var(--drupal-displace-offset-top, 0); inset-inline-start: 1px; diff --git a/core/modules/navigation/css/components/toolbar-popover.pcss.css b/core/modules/navigation/css/components/toolbar-popover.pcss.css index 6a8b2a019c24..a12ebe955edb 100644 --- a/core/modules/navigation/css/components/toolbar-popover.pcss.css +++ b/core/modules/navigation/css/components/toolbar-popover.pcss.css @@ -47,9 +47,9 @@ padding-block-start: var(--admin-toolbar-space-16); transform: translateX(0); box-shadow: - 0 0 72px rgba(0, 0, 0, 0.2), - 0 0 8px rgba(0, 0, 0, 0.04), - 0 0 40px rgba(0, 0, 0, 0.06); + 0 0 72px rgb(0, 0, 0, 0.2), + 0 0 8px rgb(0, 0, 0, 0.04), + 0 0 40px rgb(0, 0, 0, 0.06); inline-size: var(--admin-toolbar-popover-width); inset-block-start: var(--drupal-displace-offset-top, 0); inset-inline-start: 1px; diff --git a/core/modules/navigation/css/components/top-bar.css b/core/modules/navigation/css/components/top-bar.css index 65a489cd78b7..134b0a506c75 100644 --- a/core/modules/navigation/css/components/top-bar.css +++ b/core/modules/navigation/css/components/top-bar.css @@ -22,7 +22,7 @@ .top-bar { block-size: var(--admin-toolbar-top-bar-height); position: fixed; - inset-block-start: var(--drupal-displace-offset-top, 0); + inset-block-start: 0; inset-inline-start: 0; width: 100vw; padding-block: var(--admin-toolbar-space-12); diff --git a/core/modules/navigation/css/components/top-bar.pcss.css b/core/modules/navigation/css/components/top-bar.pcss.css index b55604dfa569..0a34a4b17dae 100644 --- a/core/modules/navigation/css/components/top-bar.pcss.css +++ b/core/modules/navigation/css/components/top-bar.pcss.css @@ -18,7 +18,7 @@ @media (--admin-toolbar-desktop) { block-size: var(--admin-toolbar-top-bar-height); position: fixed; - inset-block-start: var(--drupal-displace-offset-top, 0); + inset-block-start: 0; inset-inline-start: 0; width: 100vw; padding-block: var(--admin-toolbar-space-12); diff --git a/core/modules/navigation/js/admin-toolbar-wrapper.js b/core/modules/navigation/js/admin-toolbar-wrapper.js index c9e2ecb9cae9..6c32da0b6f6c 100644 --- a/core/modules/navigation/js/admin-toolbar-wrapper.js +++ b/core/modules/navigation/js/admin-toolbar-wrapper.js @@ -81,31 +81,35 @@ Drupal.displace(true); }); - - /** - * Initialize Drupal.displace() - * - * We add the displace attribute to a separate full width element because we - * don't want this element to have transitions. Note that this element and the - * navbar share the same exact width. - */ - const initDisplace = () => { - const displaceElement = doc - .querySelector('.admin-toolbar') - ?.querySelector('.admin-toolbar__displace-placeholder'); - const edge = document.documentElement.dir === 'rtl' ? 'right' : 'left'; - displaceElement?.setAttribute(`data-offset-${edge}`, ''); - Drupal.displace(true); - }; - - initDisplace(); } + /** + * Initialize Drupal.displace() + * + * We add the displace attribute to a separate full width element because we + * don't want this element to have transitions. Note that this element and the + * navbar share the same exact width. + * + * @param {HTMLElement} el - The admin toolbar wrapper. + */ + const initDisplace = (el) => { + const displaceElement = el.querySelector( + '.admin-toolbar__displace-placeholder', + ); + const edge = document.documentElement.dir === 'rtl' ? 'right' : 'left'; + displaceElement?.setAttribute(`data-offset-${edge}`, ''); + Drupal.displace(true); + }; + // Any triggers on page. Inside or outside sidebar. // For now button in sidebar + mobile header and background. Drupal.behaviors.navigationProcessToolbarTriggers = { attach: (context) => { + once('navigation-displace', '.admin-toolbar', context).forEach( + initDisplace, + ); + const triggers = once( 'admin-toolbar-trigger', '[aria-controls="admin-toolbar"]', diff --git a/core/modules/navigation/src/Hook/NavigationHooks.php b/core/modules/navigation/src/Hook/NavigationHooks.php index ed4eb8283668..540a2659af53 100644 --- a/core/modules/navigation/src/Hook/NavigationHooks.php +++ b/core/modules/navigation/src/Hook/NavigationHooks.php @@ -62,7 +62,7 @@ class NavigationHooks { $output = ''; $output .= '<h3>' . $this->t('About') . '</h3>'; $output .= '<p>' . $this->t('The Navigation module provides a left-aligned, collapsible, vertical sidebar navigation.') . '</p>'; - $output .= '<p>' . $this->t('For more information, see the <a href=":docs">online documentation for the Navigation module</a>.', [':docs' => 'https://www.drupal.org/project/navigation']) . '</p>'; + $output .= '<p>' . $this->t('For more information, see the <a href=":docs">online documentation for the Navigation module</a>.', [':docs' => 'https://www.drupal.org/docs/develop/core-modules-and-themes/core-modules/navigation-module']) . '</p>'; return $output; } $configuration_route = 'layout_builder.navigation.'; diff --git a/core/modules/navigation/src/WorkspacesLazyBuilder.php b/core/modules/navigation/src/WorkspacesLazyBuilder.php index 3134fa4745ed..146f7d83dc9b 100644 --- a/core/modules/navigation/src/WorkspacesLazyBuilder.php +++ b/core/modules/navigation/src/WorkspacesLazyBuilder.php @@ -59,6 +59,9 @@ final class WorkspacesLazyBuilder { 'title' => $active_workspace ? $active_workspace->label() : $this->t('Live'), 'url' => $url, 'class' => 'workspaces', + 'icon' => [ + 'icon_id' => 'workspaces', + ], ], ], '#attached' => [ diff --git a/core/modules/navigation/templates/top-bar.html.twig b/core/modules/navigation/templates/top-bar.html.twig index 6efdeed523f9..319f97f67478 100644 --- a/core/modules/navigation/templates/top-bar.html.twig +++ b/core/modules/navigation/templates/top-bar.html.twig @@ -13,17 +13,19 @@ */ #} {% set attributes = create_attribute() %} -<aside {{ attributes.addClass('top-bar').setAttribute('data-drupal-admin-styles', '').setAttribute('aria-labelledby', 'top-bar__title') }}> - <h3 id="top-bar__title" class="visually-hidden">{{ 'Administrative top bar'|t }}</h3> - <div class="top-bar__content"> - <div class="top-bar__tools"> - {{- tools -}} +{% if tools or context|render or actions|render %} + <aside {{ attributes.addClass('top-bar').setAttribute('data-drupal-admin-styles', '').setAttribute('aria-labelledby', 'top-bar__title').setAttribute('data-offset-top', true) }}> + <h3 id="top-bar__title" class="visually-hidden">{{ 'Administrative top bar'|t }}</h3> + <div class="top-bar__content"> + <div class="top-bar__tools"> + {{- tools -}} + </div> + <div class="top-bar__context"> + {{- context -}} + </div> + <div class="top-bar__actions"> + {{- actions -}} + </div> </div> - <div class="top-bar__context"> - {{- context -}} - </div> - <div class="top-bar__actions"> - {{- actions -}} - </div> - </div> -</aside> + </aside> +{% endif %} diff --git a/core/modules/navigation/tests/src/Functional/NavigationWorkspacesUiTest.php b/core/modules/navigation/tests/src/Functional/NavigationWorkspacesUiTest.php new file mode 100644 index 000000000000..48de404b65ae --- /dev/null +++ b/core/modules/navigation/tests/src/Functional/NavigationWorkspacesUiTest.php @@ -0,0 +1,49 @@ +<?php + +declare(strict_types=1); + +namespace Drupal\Tests\navigation\Functional; + +use Drupal\Tests\BrowserTestBase; + +/** + * Tests for \Drupal\navigation\WorkspacesLazyBuilder. + * + * @group navigation + */ +class NavigationWorkspacesUiTest extends BrowserTestBase { + + /** + * {@inheritdoc} + */ + protected static $modules = ['navigation', 'workspaces_ui']; + + /** + * {@inheritdoc} + */ + protected $defaultTheme = 'stark'; + + /** + * {@inheritdoc} + */ + protected function setUp(): void { + parent::setUp(); + + $admin_user = $this->drupalCreateUser([ + 'access navigation', + 'administer workspaces', + ]); + $this->drupalLogin($admin_user); + } + + /** + * Tests the Workspaces button in the navigation bar. + */ + public function testWorkspacesNavigationButton(): void { + $this->drupalGet('<front>'); + $this->assertSession()->statusCodeEquals(200); + $this->assertSession()->elementAttributeContains('css', 'a.toolbar-button--icon--workspaces svg', 'width', '20'); + $this->assertSession()->elementAttributeContains('css', 'a.toolbar-button--icon--workspaces svg', 'class', 'toolbar-button__icon'); + } + +} diff --git a/core/modules/navigation/tests/src/Nightwatch/Tests/navigationDisplaceTest.js b/core/modules/navigation/tests/src/Nightwatch/Tests/navigationDisplaceTest.js new file mode 100644 index 000000000000..ce9acfacc514 --- /dev/null +++ b/core/modules/navigation/tests/src/Nightwatch/Tests/navigationDisplaceTest.js @@ -0,0 +1,26 @@ +/** + * Verify that Drupal.displace() attribute is properly added by JavaScript. + */ +module.exports = { + '@tags': ['core', 'navigation'], + browser(browser) { + browser + .drupalInstall() + .drupalInstallModule('navigation', true) + .drupalInstallModule('big_pipe') + .setWindowSize(1220, 800); + }, + after(browser) { + browser.drupalUninstall(); + }, + + 'Verify displace attribute': (browser) => { + browser.drupalLoginAsAdmin(() => { + browser + .drupalRelativeURL('/admin/') + .waitForElementPresent( + '.admin-toolbar__displace-placeholder[data-offset-left]', + ); + }); + }, +}; diff --git a/core/modules/package_manager/package_manager.services.yml b/core/modules/package_manager/package_manager.services.yml index d7bbaf94820c..059be5542701 100644 --- a/core/modules/package_manager/package_manager.services.yml +++ b/core/modules/package_manager/package_manager.services.yml @@ -203,8 +203,15 @@ services: class: PhpTuf\ComposerStager\Internal\Translation\Service\SymfonyTranslatorProxy public: false - Drupal\package_manager\DirectWritePreconditionBypass: + package_manager.direct_write_precondition.directories: + class: Drupal\package_manager\DirectWritePreconditionBypass decorates: 'PhpTuf\ComposerStager\API\Precondition\Service\ActiveAndStagingDirsAreDifferentInterface' arguments: - '@.inner' public: false + package_manager.direct_write_precondition.rsync: + class: Drupal\package_manager\DirectWritePreconditionBypass + decorates: 'PhpTuf\ComposerStager\API\Precondition\Service\RsyncIsAvailableInterface' + arguments: + - '@.inner' + public: false diff --git a/core/modules/package_manager/src/DirectWritePreconditionBypass.php b/core/modules/package_manager/src/DirectWritePreconditionBypass.php index ba456d270d7f..ef346b0ae254 100644 --- a/core/modules/package_manager/src/DirectWritePreconditionBypass.php +++ b/core/modules/package_manager/src/DirectWritePreconditionBypass.php @@ -8,6 +8,7 @@ use Drupal\Core\StringTranslation\StringTranslationTrait; use PhpTuf\ComposerStager\API\Path\Value\PathInterface; use PhpTuf\ComposerStager\API\Path\Value\PathListInterface; use PhpTuf\ComposerStager\API\Precondition\Service\ActiveAndStagingDirsAreDifferentInterface; +use PhpTuf\ComposerStager\API\Precondition\Service\RsyncIsAvailableInterface; use PhpTuf\ComposerStager\API\Process\Service\ProcessInterface; use PhpTuf\ComposerStager\API\Translation\Value\TranslatableInterface; @@ -22,7 +23,7 @@ use PhpTuf\ComposerStager\API\Translation\Value\TranslatableInterface; * at any time without warning. External code should not interact with this * class. */ -final class DirectWritePreconditionBypass implements ActiveAndStagingDirsAreDifferentInterface { +final class DirectWritePreconditionBypass implements ActiveAndStagingDirsAreDifferentInterface, RsyncIsAvailableInterface { use StringTranslationTrait; @@ -34,7 +35,7 @@ final class DirectWritePreconditionBypass implements ActiveAndStagingDirsAreDiff private static bool $isBypassed = FALSE; public function __construct( - private readonly ActiveAndStagingDirsAreDifferentInterface $decorated, + private readonly ActiveAndStagingDirsAreDifferentInterface|RsyncIsAvailableInterface $decorated, ) {} /** diff --git a/core/modules/package_manager/tests/src/Kernel/DirectWriteTest.php b/core/modules/package_manager/tests/src/Kernel/DirectWriteTest.php index 3208fddbbf43..8c34ae002732 100644 --- a/core/modules/package_manager/tests/src/Kernel/DirectWriteTest.php +++ b/core/modules/package_manager/tests/src/Kernel/DirectWriteTest.php @@ -18,12 +18,14 @@ use Drupal\package_manager\StatusCheckTrait; use Drupal\package_manager\ValidationResult; use PhpTuf\ComposerStager\API\Core\BeginnerInterface; use PhpTuf\ComposerStager\API\Core\CommitterInterface; +use PhpTuf\ComposerStager\API\Path\Factory\PathFactoryInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; /** * @covers \Drupal\package_manager\EventSubscriber\DirectWriteSubscriber * @covers \Drupal\package_manager\SandboxManagerBase::isDirectWrite + * @covers \Drupal\package_manager\DirectWritePreconditionBypass * * @group package_manager */ @@ -231,4 +233,40 @@ class DirectWriteTest extends PackageManagerKernelTestBase implements EventSubsc $this->assertFalse($sandbox_manager->isDirectWrite()); } + /** + * Tests that direct-write bypasses certain Composer Stager preconditions. + * + * @param class-string $service_class + * The class name of the precondition service. + * + * @testWith ["PhpTuf\\ComposerStager\\API\\Precondition\\Service\\ActiveAndStagingDirsAreDifferentInterface"] + * ["PhpTuf\\ComposerStager\\API\\Precondition\\Service\\RsyncIsAvailableInterface"] + */ + public function testPreconditionBypass(string $service_class): void { + // Set up conditions where the active and sandbox directories are the same, + // and the path to rsync isn't valid. + $path = $this->container->get(PathFactoryInterface::class) + ->create('/the/absolute/apex'); + $this->config('package_manager.settings') + ->set('executables.rsync', "C:\Not Rsync.exe") + ->save(); + + /** @var \PhpTuf\ComposerStager\API\Precondition\Service\PreconditionInterface $precondition */ + $precondition = $this->container->get($service_class); + // The precondition should be unfulfilled. + $this->assertFalse($precondition->isFulfilled($path, $path)); + + // Initializing a sandbox manager with direct-write support should bypass + // the precondition. + $this->setSetting('package_manager_allow_direct_write', TRUE); + $sandbox_manager = $this->createStage(TestDirectWriteSandboxManager::class); + $sandbox_manager->create(); + $this->assertTrue($sandbox_manager->isDirectWrite()); + + // The precondition should be fulfilled, and clear that it's because we're + // in direct-write mode. + $this->assertTrue($precondition->isFulfilled($path, $path)); + $this->assertSame('This precondition has been skipped because it is not needed in direct-write mode.', (string) $precondition->getStatusMessage($path, $path)); + } + } diff --git a/core/modules/package_manager/tests/src/Kernel/SupportedReleaseValidatorTest.php b/core/modules/package_manager/tests/src/Kernel/SupportedReleaseValidatorTest.php index 2e9a0977fa36..90348cdfdd3c 100644 --- a/core/modules/package_manager/tests/src/Kernel/SupportedReleaseValidatorTest.php +++ b/core/modules/package_manager/tests/src/Kernel/SupportedReleaseValidatorTest.php @@ -13,6 +13,7 @@ use Drupal\Tests\package_manager\Traits\FixtureUtilityTrait; * @coversDefaultClass \Drupal\package_manager\Validator\SupportedReleaseValidator * @group #slow * @group package_manager + * @group #slow * @internal */ class SupportedReleaseValidatorTest extends PackageManagerKernelTestBase { diff --git a/core/modules/path/tests/src/Kernel/Migrate/d6/MigrateUrlAliasTest.php b/core/modules/path/tests/src/Kernel/Migrate/d6/MigrateUrlAliasTest.php index be5d811fe543..d5cc9759ab18 100644 --- a/core/modules/path/tests/src/Kernel/Migrate/d6/MigrateUrlAliasTest.php +++ b/core/modules/path/tests/src/Kernel/Migrate/d6/MigrateUrlAliasTest.php @@ -13,7 +13,6 @@ use Drupal\Tests\Traits\Core\PathAliasTestTrait; /** * URL alias migration. * - * @group #slow * @group migrate_drupal_6 */ class MigrateUrlAliasTest extends MigrateDrupal6TestBase { diff --git a/core/modules/settings_tray/css/settings_tray.theme.css b/core/modules/settings_tray/css/settings_tray.theme.css index 9363baad5ecb..28070a0f7273 100644 --- a/core/modules/settings_tray/css/settings_tray.theme.css +++ b/core/modules/settings_tray/css/settings_tray.theme.css @@ -61,10 +61,10 @@ /* Style the editables while in edit mode. */ .dialog-off-canvas-main-canvas.js-settings-tray-edit-mode .settings-tray-editable { - outline: 1px dashed rgba(0, 0, 0, 0.5); - box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.7); + outline: 1px dashed rgb(0, 0, 0, 0.5); + box-shadow: 0 0 0 1px rgb(255, 255, 255, 0.7); } .dialog-off-canvas-main-canvas.js-settings-tray-edit-mode .settings-tray-editable:hover, .dialog-off-canvas-main-canvas.js-settings-tray-edit-mode .settings-tray-editable.settings-tray-active-editable { - background-color: rgba(0, 0, 0, 0.2); + background-color: rgb(0, 0, 0, 0.2); } diff --git a/core/modules/settings_tray/css/settings_tray.toolbar.css b/core/modules/settings_tray/css/settings_tray.toolbar.css index 61b1fa268282..5655111787ce 100644 --- a/core/modules/settings_tray/css/settings_tray.toolbar.css +++ b/core/modules/settings_tray/css/settings_tray.toolbar.css @@ -23,7 +23,7 @@ color: #eee; background-color: #0066a1; background-image: linear-gradient(to bottom, #0066a1, #005b98); - text-shadow: 0 1px hsla(0, 0%, 0%, 0.5); + text-shadow: 0 1px hsl(0, 0%, 0%, 0.5); font-weight: 700; -webkit-font-smoothing: antialiased; } @@ -31,7 +31,7 @@ color: #fff; background-color: #0a7bc1; background-image: linear-gradient(to bottom, #0a7bc1, #0a6eb4); - text-shadow: 0 1px hsla(0, 0%, 0%, 0.5); + text-shadow: 0 1px hsl(0, 0%, 0%, 0.5); font-weight: 700; -webkit-font-smoothing: antialiased; } diff --git a/core/modules/shortcut/css/shortcut.theme.css b/core/modules/shortcut/css/shortcut.theme.css index d7a5fa146f71..d98e6f1864b3 100644 --- a/core/modules/shortcut/css/shortcut.theme.css +++ b/core/modules/shortcut/css/shortcut.theme.css @@ -43,7 +43,7 @@ color: #fff; border-radius: 5px; background: #000; - background: rgba(0, 0, 0, 0.5); + background: rgb(0, 0, 0, 0.5); -webkit-backface-visibility: hidden; backface-visibility: hidden; } diff --git a/core/modules/system/css/components/system-status-report-counters.css b/core/modules/system/css/components/system-status-report-counters.css index 7040c257a0f2..54ffabe5fc1c 100644 --- a/core/modules/system/css/components/system-status-report-counters.css +++ b/core/modules/system/css/components/system-status-report-counters.css @@ -9,7 +9,7 @@ padding: 0.5em 0; text-align: center; white-space: nowrap; - background-color: rgba(0, 0, 0, 0.063); + background-color: rgb(0, 0, 0, 0.063); } @media screen and (min-width: 60em) { diff --git a/core/modules/system/tests/modules/module_test/module_test.file.inc b/core/modules/system/tests/modules/module_test/module_test.file.inc index c0cee6f1905e..5ba5f5614ca7 100644 --- a/core/modules/system/tests/modules/module_test/module_test.file.inc +++ b/core/modules/system/tests/modules/module_test/module_test.file.inc @@ -16,3 +16,17 @@ declare(strict_types=1); function module_test_test_hook(): array { return ['module_test' => 'success!']; } + +/** + * Implements hook_test_reset_implementations_hook(). + */ +function module_test_test_reset_implementations_hook(): string { + return __FUNCTION__; +} + +/** + * Implements hook_test_reset_implementations_alter(). + */ +function module_test_test_reset_implementations_alter(array &$data): void { + $data[] = __FUNCTION__; +} diff --git a/core/modules/system/tests/modules/sdc_test/components/my-banner/my-banner.component.yml b/core/modules/system/tests/modules/sdc_test/components/my-banner/my-banner.component.yml index 195903e9ee74..0c89a0740a6b 100644 --- a/core/modules/system/tests/modules/sdc_test/components/my-banner/my-banner.component.yml +++ b/core/modules/system/tests/modules/sdc_test/components/my-banner/my-banner.component.yml @@ -29,6 +29,10 @@ props: enum: - '' - _blank + meta:enum: + '': 'Open in same window' + _blank: 'Open in a new window' + x-translation-context: Banner link target image: title: Media Image description: Background image for the banner. diff --git a/core/modules/system/tests/modules/sdc_test/components/my-banner/my-banner.twig b/core/modules/system/tests/modules/sdc_test/components/my-banner/my-banner.twig index c99fead737ad..2bd75f35382b 100644 --- a/core/modules/system/tests/modules/sdc_test/components/my-banner/my-banner.twig +++ b/core/modules/system/tests/modules/sdc_test/components/my-banner/my-banner.twig @@ -7,6 +7,7 @@ <div {{ attributes }}> <div class="component--my-banner--header"> <h3>{{ heading }}</h3> + <p>CTA target selected value: {{ componentMetadata.meta.properties.ctaTarget[ctaTarget] }}</p> {% include 'sdc_test:my-cta' with { text: ctaText, href: ctaHref, target: ctaTarget } only %} </div> <div class="component--my-banner--body"> diff --git a/core/modules/system/tests/modules/sdc_test/components/my-button/my-button.component.yml b/core/modules/system/tests/modules/sdc_test/components/my-button/my-button.component.yml index 65b3c472096b..d0d4f8c73b46 100644 --- a/core/modules/system/tests/modules/sdc_test/components/my-button/my-button.component.yml +++ b/core/modules/system/tests/modules/sdc_test/components/my-button/my-button.component.yml @@ -24,3 +24,7 @@ props: - power - like - external + meta:enum: + power: 'Power' + like: 'Like' + external: 'External' diff --git a/core/modules/system/tests/modules/sdc_test/components/my-cta/my-cta.component.yml b/core/modules/system/tests/modules/sdc_test/components/my-cta/my-cta.component.yml index 889dfe885205..6d16be49cf74 100644 --- a/core/modules/system/tests/modules/sdc_test/components/my-cta/my-cta.component.yml +++ b/core/modules/system/tests/modules/sdc_test/components/my-cta/my-cta.component.yml @@ -17,12 +17,23 @@ props: type: string title: URL format: uri + examples: + - https://drupal.org target: type: string title: Target + description: The target for opening the link. enum: - '' - - _blank + - '_blank' + meta:enum: + '': 'Open in same window' + _blank: 'Open in a new window' + x-translation-context: CTA link target + default: '' + examples: + - '' + - '_blank' attributes: type: Drupal\Core\Template\Attribute name: Attributes diff --git a/core/modules/system/tests/modules/sdc_test/components/my-cta/my-cta.twig b/core/modules/system/tests/modules/sdc_test/components/my-cta/my-cta.twig index e1a326ccf078..afc40f7bd546 100644 --- a/core/modules/system/tests/modules/sdc_test/components/my-cta/my-cta.twig +++ b/core/modules/system/tests/modules/sdc_test/components/my-cta/my-cta.twig @@ -6,5 +6,5 @@ {% endif %} <a {{ attributes }} href="{{ href }}"> - {{ text }} + {{ text }} ({{ componentMetadata.meta.properties.target[target] }}) </a> diff --git a/core/modules/system/tests/modules/sdc_test_replacements/components/my-button/my-button.component.yml b/core/modules/system/tests/modules/sdc_test_replacements/components/my-button/my-button.component.yml index b87f1180111e..053387cf9c4f 100644 --- a/core/modules/system/tests/modules/sdc_test_replacements/components/my-button/my-button.component.yml +++ b/core/modules/system/tests/modules/sdc_test_replacements/components/my-button/my-button.component.yml @@ -24,3 +24,7 @@ props: - power - like - external + meta:enum: + power: 'Power' + like: 'Like' + external: 'External' diff --git a/core/modules/system/tests/src/Kernel/DateFormatAccessControlHandlerTest.php b/core/modules/system/tests/src/Kernel/DateFormatAccessControlHandlerTest.php index 82d866e985e4..6c8c42da59e8 100644 --- a/core/modules/system/tests/src/Kernel/DateFormatAccessControlHandlerTest.php +++ b/core/modules/system/tests/src/Kernel/DateFormatAccessControlHandlerTest.php @@ -77,8 +77,6 @@ class DateFormatAccessControlHandlerTest extends KernelTestBase { * An array of test cases. */ public static function providerTestAccess(): array { - $originalContainer = \Drupal::hasContainer() ? \Drupal::getContainer() : NULL; - $c = new ContainerBuilder(); $cache_contexts_manager = (new Prophet())->prophesize(CacheContextsManager::class); $cache_contexts_manager->assertValidTokens()->willReturn(TRUE); @@ -86,7 +84,7 @@ class DateFormatAccessControlHandlerTest extends KernelTestBase { $c->set('cache_contexts_manager', $cache_contexts_manager); \Drupal::setContainer($c); - $data = [ + return [ 'No permission + unlocked' => [ [], 'unlocked', @@ -124,13 +122,6 @@ class DateFormatAccessControlHandlerTest extends KernelTestBase { AccessResult::allowed()->addCacheContexts(['user.permissions']), ], ]; - - // Restore the original container if needed. - if ($originalContainer) { - \Drupal::setContainer($originalContainer); - } - - return $data; } } diff --git a/core/modules/system/tests/src/Kernel/System/CronQueueTest.php b/core/modules/system/tests/src/Kernel/System/CronQueueTest.php index 96a02f8f1644..069a26c3eb5f 100644 --- a/core/modules/system/tests/src/Kernel/System/CronQueueTest.php +++ b/core/modules/system/tests/src/Kernel/System/CronQueueTest.php @@ -70,7 +70,6 @@ class CronQueueTest extends KernelTestBase { parent::setUp(); $this->connection = Database::getConnection(); - $this->cron = \Drupal::service('cron'); $time = $this->prophesize('Drupal\Component\Datetime\TimeInterface'); $time->getCurrentTime()->willReturn($this->currentTime); @@ -91,6 +90,8 @@ class CronQueueTest extends KernelTestBase { }); $this->container->set('queue', $queue_factory->reveal()); + // Instantiate the `cron` service after the mock queue factory is set. + $this->cron = \Drupal::service('cron'); } /** diff --git a/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateTermNodeTest.php b/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateTermNodeTest.php index 511778daf200..1d9654dd5050 100644 --- a/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateTermNodeTest.php +++ b/core/modules/taxonomy/tests/src/Kernel/Migrate/d6/MigrateTermNodeTest.php @@ -10,7 +10,6 @@ use Drupal\node\Entity\Node; /** * Upgrade taxonomy term node associations. * - * @group #slow * @group migrate_drupal_6 */ class MigrateTermNodeTest extends MigrateDrupal6TestBase { diff --git a/core/modules/toolbar/css/toolbar.theme.css b/core/modules/toolbar/css/toolbar.theme.css index ea108f658098..d6def4739400 100644 --- a/core/modules/toolbar/css/toolbar.theme.css +++ b/core/modules/toolbar/css/toolbar.theme.css @@ -5,10 +5,10 @@ font-family: "Source Sans Pro", "Lucida Grande", Verdana, sans-serif; /* Set base font size to 13px based on root ems. */ font-size: 0.8125rem; - -moz-tap-highlight-color: rgba(0, 0, 0, 0); - -o-tap-highlight-color: rgba(0, 0, 0, 0); - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); - tap-highlight-color: rgba(0, 0, 0, 0); + -moz-tap-highlight-color: rgb(0, 0, 0, 0); + -o-tap-highlight-color: rgb(0, 0, 0, 0); + -webkit-tap-highlight-color: rgb(0, 0, 0, 0); + tap-highlight-color: rgb(0, 0, 0, 0); -moz-touch-callout: none; -o-touch-callout: none; -webkit-touch-callout: none; @@ -31,10 +31,10 @@ .toolbar .toolbar-bar { color: #ddd; background-color: #0f0f0f; - box-shadow: -1px 0 3px 1px rgba(0, 0, 0, 0.3333); /* LTR */ + box-shadow: -1px 0 3px 1px rgb(0, 0, 0, 0.3333); /* LTR */ } [dir="rtl"] .toolbar .toolbar-bar { - box-shadow: 1px 0 3px 1px rgba(0, 0, 0, 0.3333); + box-shadow: 1px 0 3px 1px rgb(0, 0, 0, 0.3333); } .toolbar .toolbar-bar .toolbar-item { color: #fff; @@ -44,7 +44,7 @@ } .toolbar .toolbar-bar .toolbar-tab > .toolbar-item:hover, .toolbar .toolbar-bar .toolbar-tab > .toolbar-item:focus { - background-image: linear-gradient(rgba(255, 255, 255, 0.125) 20%, transparent 200%); + background-image: linear-gradient(rgb(255, 255, 255, 0.125) 20%, transparent 200%); } .toolbar .toolbar-bar .toolbar-tab > .toolbar-item.is-active { color: #000; @@ -68,19 +68,19 @@ .toolbar .toolbar-tray-vertical { border-right: 1px solid #aaa; /* LTR */ background-color: #f5f5f5; - box-shadow: -1px 0 5px 2px rgba(0, 0, 0, 0.3333); /* LTR */ + box-shadow: -1px 0 5px 2px rgb(0, 0, 0, 0.3333); /* LTR */ } [dir="rtl"] .toolbar .toolbar-tray-vertical { border-right: 0 none; border-left: 1px solid #aaa; - box-shadow: 1px 0 5px 2px rgba(0, 0, 0, 0.3333); + box-shadow: 1px 0 5px 2px rgb(0, 0, 0, 0.3333); } .toolbar-horizontal .toolbar-tray { border-bottom: 1px solid #aaa; - box-shadow: -2px 1px 3px 1px rgba(0, 0, 0, 0.3333); /* LTR */ + box-shadow: -2px 1px 3px 1px rgb(0, 0, 0, 0.3333); /* LTR */ } [dir="rtl"] .toolbar-horizontal .toolbar-tray { - box-shadow: 2px 1px 3px 1px rgba(0, 0, 0, 0.3333); + box-shadow: 2px 1px 3px 1px rgb(0, 0, 0, 0.3333); } .toolbar .toolbar-tray-horizontal .toolbar-tray { background-color: #f5f5f5; diff --git a/core/modules/views_ui/css/views_ui.admin.theme.css b/core/modules/views_ui/css/views_ui.admin.theme.css index 529e8fa77c63..554d5044cb79 100644 --- a/core/modules/views_ui/css/views_ui.admin.theme.css +++ b/core/modules/views_ui/css/views_ui.admin.theme.css @@ -39,11 +39,11 @@ background: linear-gradient(-90deg, #fff 0, #e8e8e8 100%) no-repeat, repeat-y; - box-shadow: 0 0 0 rgba(0, 0, 0, 0.3333) inset; + box-shadow: 0 0 0 rgb(0, 0, 0, 0.3333) inset; } .views-admin a.icon:hover { border-color: #d0d0d0; - box-shadow: 0 0 1px rgba(0, 0, 0, 0.3333) inset; + box-shadow: 0 0 1px rgb(0, 0, 0, 0.3333) inset; } .views-admin a.icon:active { border-color: #c0c0c0; diff --git a/core/modules/workflows/tests/src/Kernel/WorkflowAccessControlHandlerTest.php b/core/modules/workflows/tests/src/Kernel/WorkflowAccessControlHandlerTest.php index 180edc868f60..e46fbcf417bf 100644 --- a/core/modules/workflows/tests/src/Kernel/WorkflowAccessControlHandlerTest.php +++ b/core/modules/workflows/tests/src/Kernel/WorkflowAccessControlHandlerTest.php @@ -124,8 +124,6 @@ class WorkflowAccessControlHandlerTest extends KernelTestBase { * An array of test data. */ public static function checkAccessProvider() { - $originalContainer = \Drupal::hasContainer() ? \Drupal::getContainer() : NULL; - $container = new ContainerBuilder(); $cache_contexts_manager = (new Prophet())->prophesize(CacheContextsManager::class); $cache_contexts_manager->assertValidTokens()->willReturn(TRUE); @@ -133,7 +131,7 @@ class WorkflowAccessControlHandlerTest extends KernelTestBase { $container->set('cache_contexts_manager', $cache_contexts_manager); \Drupal::setContainer($container); - $data = [ + return [ 'Admin view' => [ 'adminUser', 'view', @@ -277,13 +275,6 @@ class WorkflowAccessControlHandlerTest extends KernelTestBase { AccessResult::allowed()->addCacheContexts(['user.permissions']), ], ]; - - // Restore the original container if needed. - if ($originalContainer) { - \Drupal::setContainer($originalContainer); - } - - return $data; } } diff --git a/core/modules/workspaces/css/workspaces.toolbar.pcss.css b/core/modules/workspaces/css/workspaces.toolbar.pcss.css index 84b3fa8f986f..a603d53949cd 100644 --- a/core/modules/workspaces/css/workspaces.toolbar.pcss.css +++ b/core/modules/workspaces/css/workspaces.toolbar.pcss.css @@ -52,7 +52,7 @@ text-align: start; color: inherit; - @nest .toolbar-oriented & { + .toolbar-oriented & { width: auto; text-align: initial; } diff --git a/core/modules/workspaces/src/Controller/WorkspacesHtmlEntityFormController.php b/core/modules/workspaces/src/Controller/WorkspacesHtmlEntityFormController.php index 6f9d6d5b6563..aa5aa49f9d20 100644 --- a/core/modules/workspaces/src/Controller/WorkspacesHtmlEntityFormController.php +++ b/core/modules/workspaces/src/Controller/WorkspacesHtmlEntityFormController.php @@ -35,11 +35,16 @@ class WorkspacesHtmlEntityFormController extends FormController { */ public function getContentResult(Request $request, RouteMatchInterface $route_match): array { $form_arg = $this->getFormArgument($route_match); - $form_object = $this->getFormObject($route_match, $form_arg); + // If no operation is provided, use 'default'. + $form_arg .= '.default'; + [$entity_type_id, $operation] = explode('.', $form_arg); - /** @var \Drupal\Core\Entity\EntityInterface $entity */ - $entity = $form_object->getEntity(); - if ($this->workspaceInfo->isEntitySupported($entity)) { + if ($route_match->getRawParameter($entity_type_id) !== NULL) { + /** @var \Drupal\Core\Entity\EntityInterface $entity */ + $entity = $route_match->getParameter($entity_type_id); + } + + if (isset($entity) && $this->workspaceInfo->isEntitySupported($entity)) { $active_workspace = $this->workspaceManager->getActiveWorkspace(); // Prepare a minimal render array in case we need to return it. @@ -48,7 +53,7 @@ class WorkspacesHtmlEntityFormController extends FormController { $build['#cache']['max-age'] = $entity->getCacheMaxAge(); // Prevent entities from being edited if they're tracked in workspace. - if ($form_object->getOperation() !== 'delete') { + if ($operation !== 'delete') { $constraints = array_values(array_filter($entity->getTypedData()->getConstraints(), function ($constraint) { return $constraint instanceof EntityWorkspaceConflictConstraint; })); @@ -68,7 +73,7 @@ class WorkspacesHtmlEntityFormController extends FormController { // Prevent entities from being deleted in a workspace if they have a // published default revision. - if ($form_object->getOperation() === 'delete' && $active_workspace && !$this->workspaceInfo->isEntityDeletable($entity, $active_workspace)) { + if ($operation === 'delete' && $active_workspace && !$this->workspaceInfo->isEntityDeletable($entity, $active_workspace)) { $build['#markup'] = $this->t('This @entity_type_label can only be deleted in the Live workspace.', [ '@entity_type_label' => $entity->getEntityType()->getSingularLabel(), ]); diff --git a/core/modules/workspaces/tests/modules/workspaces_test/src/Hook/WorkspacesTestHooks.php b/core/modules/workspaces/tests/modules/workspaces_test/src/Hook/WorkspacesTestHooks.php index d452d343ca3d..d5d64ca55495 100644 --- a/core/modules/workspaces/tests/modules/workspaces_test/src/Hook/WorkspacesTestHooks.php +++ b/core/modules/workspaces/tests/modules/workspaces_test/src/Hook/WorkspacesTestHooks.php @@ -4,13 +4,21 @@ declare(strict_types=1); namespace Drupal\workspaces_test\Hook; +use Drupal\Core\Entity\EntityInterface; use Drupal\Core\Hook\Attribute\Hook; +use Drupal\Core\KeyValueStore\KeyValueFactoryInterface; +use Symfony\Component\DependencyInjection\Attribute\Autowire; /** * Hook implementations for workspaces_test. */ class WorkspacesTestHooks { + public function __construct( + #[Autowire(service: 'keyvalue')] + protected readonly KeyValueFactoryInterface $keyValueFactory, + ) {} + /** * Implements hook_entity_type_alter(). */ @@ -31,7 +39,53 @@ class WorkspacesTestHooks { public function entityTranslationCreate(): void { /** @var \Drupal\workspaces\WorkspaceManagerInterface $workspace_manager */ $workspace_manager = \Drupal::service('workspaces.manager'); - \Drupal::keyValue('ws_test')->set('workspace_was_active', $workspace_manager->hasActiveWorkspace()); + $this->keyValueFactory->get('ws_test')->set('workspace_was_active', $workspace_manager->hasActiveWorkspace()); + } + + /** + * Implements hook_entity_create(). + */ + #[Hook('entity_create')] + public function entityCreate(EntityInterface $entity): void { + $this->incrementHookCount('hook_entity_create', $entity); + } + + /** + * Implements hook_entity_presave(). + */ + #[Hook('entity_presave')] + public function entityPresave(EntityInterface $entity): void { + $this->incrementHookCount('hook_entity_presave', $entity); + } + + /** + * Implements hook_entity_insert(). + */ + #[Hook('entity_insert')] + public function entityInsert(EntityInterface $entity): void { + $this->incrementHookCount('hook_entity_insert', $entity); + } + + /** + * Implements hook_entity_update(). + */ + #[Hook('entity_update')] + public function entityUpdate(EntityInterface $entity): void { + $this->incrementHookCount('hook_entity_update', $entity); + } + + /** + * Increments the invocation count for a specific entity hook. + * + * @param string $hook_name + * The name of the hook being invoked (e.g., 'hook_entity_create'). + * @param \Drupal\Core\Entity\EntityInterface $entity + * The entity object involved in the hook. + */ + protected function incrementHookCount(string $hook_name, EntityInterface $entity): void { + $key = $entity->getEntityTypeId() . '.' . $hook_name . '.count'; + $count = $this->keyValueFactory->get('ws_test')->get($key, 0); + $this->keyValueFactory->get('ws_test')->set($key, $count + 1); } } diff --git a/core/modules/workspaces/tests/src/Functional/PathWorkspacesTest.php b/core/modules/workspaces/tests/src/Functional/PathWorkspacesTest.php index c3fe0e722a2e..19007def89d9 100644 --- a/core/modules/workspaces/tests/src/Functional/PathWorkspacesTest.php +++ b/core/modules/workspaces/tests/src/Functional/PathWorkspacesTest.php @@ -7,7 +7,6 @@ namespace Drupal\Tests\workspaces\Functional; use Drupal\Tests\BrowserTestBase; use Drupal\Tests\content_translation\Traits\ContentTranslationTestTrait; use Drupal\Tests\WaitTerminateTestTrait; -use Drupal\workspaces\Entity\Workspace; /** * Tests path aliases with workspaces. @@ -91,9 +90,8 @@ class PathWorkspacesTest extends BrowserTestBase { 'status' => TRUE, ]); - // Switch to Stage and create an alias for the node. - $stage = Workspace::load('stage'); - $this->switchToWorkspace($stage); + // Activate a workspace and create an alias for the node. + $stage = $this->createAndActivateWorkspaceThroughUi('Stage', 'stage'); $edit = [ 'path[0][alias]' => '/' . $this->randomMachineName(), @@ -131,9 +129,8 @@ class PathWorkspacesTest extends BrowserTestBase { 'status' => TRUE, ]); - // Switch to Stage and create an alias for the node. - $stage = Workspace::load('stage'); - $this->switchToWorkspace($stage); + // Activate a workspace and create an alias for the node. + $stage = $this->createAndActivateWorkspaceThroughUi('Stage', 'stage'); $edit = [ 'path[0][alias]' => '/' . $this->randomMachineName(), @@ -169,7 +166,7 @@ class PathWorkspacesTest extends BrowserTestBase { * Tests path aliases with workspaces for translatable nodes. */ public function testPathAliasesWithTranslation(): void { - $stage = Workspace::load('stage'); + $stage = $this->createWorkspaceThroughUi('Stage', 'stage'); // Create one node with a random alias. $default_node = $this->drupalCreateNode([ diff --git a/core/modules/workspaces/tests/src/Functional/Rest/WorkspaceResourceTestBase.php b/core/modules/workspaces/tests/src/Functional/Rest/WorkspaceResourceTestBase.php index b998af426b25..3cbddf127d9a 100644 --- a/core/modules/workspaces/tests/src/Functional/Rest/WorkspaceResourceTestBase.php +++ b/core/modules/workspaces/tests/src/Functional/Rest/WorkspaceResourceTestBase.php @@ -123,7 +123,7 @@ abstract class WorkspaceResourceTestBase extends EntityResourceTestBase { ], 'revision_id' => [ [ - 'value' => 2, + 'value' => 1, ], ], 'parent' => [], diff --git a/core/modules/workspaces/tests/src/Functional/WorkspaceCacheContextTest.php b/core/modules/workspaces/tests/src/Functional/WorkspaceCacheContextTest.php index 2109552e7619..9f9dad806f66 100644 --- a/core/modules/workspaces/tests/src/Functional/WorkspaceCacheContextTest.php +++ b/core/modules/workspaces/tests/src/Functional/WorkspaceCacheContextTest.php @@ -66,17 +66,22 @@ class WorkspaceCacheContextTest extends BrowserTestBase { $cache_bin = $variation_cache_factory->get($build['#cache']['bin']); $this->assertInstanceOf(\stdClass::class, $cache_bin->get($build['#cache']['keys'], CacheableMetadata::createFromRenderArray($build))); - // Switch to the 'stage' workspace and check that the correct workspace - // cache context is used. + // Switch to the test workspace and check that the correct workspace cache + // context is used. $test_user = $this->drupalCreateUser(['view any workspace']); $this->drupalLogin($test_user); - $stage = Workspace::load('stage'); + $vultures = Workspace::create([ + 'id' => 'vultures', + 'label' => 'Vultures', + ]); + $vultures->save(); + $workspace_manager = \Drupal::service('workspaces.manager'); - $workspace_manager->setActiveWorkspace($stage); + $workspace_manager->setActiveWorkspace($vultures); $cache_context = new WorkspaceCacheContext($workspace_manager); - $this->assertSame('stage', $cache_context->getContext()); + $this->assertSame('vultures', $cache_context->getContext()); $build = \Drupal::entityTypeManager()->getViewBuilder('node')->view($node, 'full'); @@ -85,7 +90,7 @@ class WorkspaceCacheContextTest extends BrowserTestBase { $this->assertContains('workspace', $build['#cache']['contexts']); $context_tokens = $cache_contexts_manager->convertTokensToKeys($build['#cache']['contexts'])->getKeys(); - $this->assertContains('[workspace]=stage', $context_tokens); + $this->assertContains('[workspace]=vultures', $context_tokens); // Test that a cache entry is created. $cache_bin = $variation_cache_factory->get($build['#cache']['bin']); diff --git a/core/modules/workspaces/tests/src/Functional/WorkspaceEntityDeleteTest.php b/core/modules/workspaces/tests/src/Functional/WorkspaceEntityDeleteTest.php index 165eb6c1d959..25ce72c1af41 100644 --- a/core/modules/workspaces/tests/src/Functional/WorkspaceEntityDeleteTest.php +++ b/core/modules/workspaces/tests/src/Functional/WorkspaceEntityDeleteTest.php @@ -5,7 +5,6 @@ declare(strict_types=1); namespace Drupal\Tests\workspaces\Functional; use Drupal\Tests\BrowserTestBase; -use Drupal\workspaces\Entity\Workspace; /** * Tests entity deletions with workspaces. @@ -56,7 +55,7 @@ class WorkspaceEntityDeleteTest extends BrowserTestBase { $this->drupalLogin($editor); // Create a Dev workspace as a child of Stage. - $stage = Workspace::load('stage'); + $stage = $this->createWorkspaceThroughUi('Stage', 'stage'); $dev = $this->createWorkspaceThroughUi('Dev', 'dev', 'stage'); // Create a published and an unpublished node in Live. @@ -141,8 +140,7 @@ class WorkspaceEntityDeleteTest extends BrowserTestBase { // Create a published node in Live. $published_live = $this->createNodeThroughUi('Test 1 published - live', 'article'); - $stage = Workspace::load('stage'); - $this->switchToWorkspace($stage); + $this->createAndActivateWorkspaceThroughUi('Stage', 'stage'); // A user with the 'bypass node access' permission will be able to see the // 'Delete' operation button, but it shouldn't be able to perform the diff --git a/core/modules/workspaces/tests/src/Functional/WorkspaceFormValidationTest.php b/core/modules/workspaces/tests/src/Functional/WorkspaceFormValidationTest.php index efd3bef34c21..f01c554cea7a 100644 --- a/core/modules/workspaces/tests/src/Functional/WorkspaceFormValidationTest.php +++ b/core/modules/workspaces/tests/src/Functional/WorkspaceFormValidationTest.php @@ -5,7 +5,6 @@ declare(strict_types=1); namespace Drupal\Tests\workspaces\Functional; use Drupal\Tests\BrowserTestBase; -use Drupal\workspaces\Entity\Workspace; /** * Tests Workspaces form validation. @@ -40,8 +39,7 @@ class WorkspaceFormValidationTest extends BrowserTestBase { * Tests partial form validation through #limit_validation_errors. */ public function testValidateLimitErrors(): void { - $stage = Workspace::load('stage'); - $this->switchToWorkspace($stage); + $this->createAndActivateWorkspaceThroughUi(); $edit = [ 'test' => 'test1', diff --git a/core/modules/workspaces/tests/src/Functional/WorkspaceMenuLinkContentIntegrationTest.php b/core/modules/workspaces/tests/src/Functional/WorkspaceMenuLinkContentIntegrationTest.php index 864ac8c1a365..75f6db02b153 100644 --- a/core/modules/workspaces/tests/src/Functional/WorkspaceMenuLinkContentIntegrationTest.php +++ b/core/modules/workspaces/tests/src/Functional/WorkspaceMenuLinkContentIntegrationTest.php @@ -5,7 +5,6 @@ declare(strict_types=1); namespace Drupal\Tests\workspaces\Functional; use Drupal\Tests\BrowserTestBase; -use Drupal\workspaces\Entity\Workspace; /** * Tests workspace integration for custom menu links. @@ -61,7 +60,7 @@ class WorkspaceMenuLinkContentIntegrationTest extends BrowserTestBase { * Tests custom menu links in non-default workspaces. */ public function testWorkspacesWithCustomMenuLinks(): void { - $stage = Workspace::load('stage'); + $stage = $this->createWorkspaceThroughUi('Stage', 'stage'); $this->setupWorkspaceSwitcherBlock(); diff --git a/core/modules/workspaces/tests/src/Functional/WorkspaceSwitcherTest.php b/core/modules/workspaces/tests/src/Functional/WorkspaceSwitcherTest.php index d7ac36a5e889..eef28c5ff65f 100644 --- a/core/modules/workspaces/tests/src/Functional/WorkspaceSwitcherTest.php +++ b/core/modules/workspaces/tests/src/Functional/WorkspaceSwitcherTest.php @@ -7,6 +7,7 @@ namespace Drupal\Tests\workspaces\Functional; use Drupal\dynamic_page_cache\EventSubscriber\DynamicPageCacheSubscriber; use Drupal\Tests\BrowserTestBase; use Drupal\Tests\system\Functional\Cache\AssertPageCacheContextsAndTagsTrait; +use Drupal\workspaces\Entity\Workspace; /** * Tests workspace switching functionality. @@ -52,14 +53,18 @@ class WorkspaceSwitcherTest extends BrowserTestBase { $mayer = $this->drupalCreateUser($permissions); $this->drupalLogin($mayer); + + $this->createWorkspaceThroughUi('Vultures', 'vultures'); + $this->createWorkspaceThroughUi('Gravity', 'gravity'); } /** * Tests switching workspace via the switcher block and admin page. */ public function testSwitchingWorkspaces(): void { - $this->createAndActivateWorkspaceThroughUi('Vultures', 'vultures'); - $gravity = $this->createWorkspaceThroughUi('Gravity', 'gravity'); + $vultures = Workspace::load('vultures'); + $gravity = Workspace::load('gravity'); + $this->switchToWorkspace($vultures); // Confirm the block shows on the front page. $this->drupalGet('<front>'); @@ -89,12 +94,12 @@ class WorkspaceSwitcherTest extends BrowserTestBase { // When adding a query parameter the workspace will be switched. $current_user_url = \Drupal::currentUser()->getAccount()->toUrl(); - $this->drupalGet($current_user_url, ['query' => ['workspace' => 'stage']]); - $web_assert->elementContains('css', '#block-workspace-switcher', 'Stage'); + $this->drupalGet($current_user_url, ['query' => ['workspace' => 'vultures']]); + $web_assert->elementContains('css', '#block-workspace-switcher', 'Vultures'); // The workspace switching via query parameter should persist. $this->drupalGet($current_user_url); - $web_assert->elementContains('css', '#block-workspace-switcher', 'Stage'); + $web_assert->elementContains('css', '#block-workspace-switcher', 'Vultures'); // Check that WorkspaceCacheContext provides the cache context used to // support its functionality. diff --git a/core/modules/workspaces/tests/src/Functional/WorkspaceTest.php b/core/modules/workspaces/tests/src/Functional/WorkspaceTest.php index 0684f46467e0..b632e60efd50 100644 --- a/core/modules/workspaces/tests/src/Functional/WorkspaceTest.php +++ b/core/modules/workspaces/tests/src/Functional/WorkspaceTest.php @@ -33,6 +33,7 @@ class WorkspaceTest extends BrowserTestBase { 'user', 'workspaces', 'workspaces_ui', + 'workspaces_test', ]; /** @@ -157,6 +158,7 @@ class WorkspaceTest extends BrowserTestBase { public function testWorkspaceFormRevisions(): void { $this->drupalLogin($this->editor1); $storage = \Drupal::entityTypeManager()->getStorage('workspace'); + $this->createWorkspaceThroughUi('Stage', 'stage'); // The current 'stage' workspace entity should be revision 1. $stage_workspace = $storage->load('stage'); @@ -334,7 +336,7 @@ class WorkspaceTest extends BrowserTestBase { $user->delete(); $this->drupalGet('/admin/config/workflow/workspaces'); $this->assertSession()->pageTextContains('Summer event'); - $summer_event_workspace_row = $page->find('css', 'table tbody tr:nth-of-type(3)'); + $summer_event_workspace_row = $page->find('css', 'table tbody tr:nth-of-type(2)'); $this->assertEquals('N/A', $summer_event_workspace_row->find('css', 'td:nth-of-type(2)')->getText()); } @@ -364,7 +366,9 @@ class WorkspaceTest extends BrowserTestBase { $this->assertSession()->pageTextContains('There are no changes that can be published from Test workspace to Live.'); // Create a node in the workspace. - $this->createNodeThroughUi('Test node', 'test'); + $this->drupalGet('/node/add/test'); + $this->assertEquals(1, \Drupal::keyValue('ws_test')->get('node.hook_entity_create.count')); + $this->submitForm(['title[0][value]' => 'Test node'], 'Save'); $this->drupalGet('/admin/config/workflow/workspaces/manage/test_workspace/publish'); $this->assertSession()->statusCodeEquals(200); diff --git a/core/modules/workspaces/tests/src/Functional/WorkspaceTestUtilities.php b/core/modules/workspaces/tests/src/Functional/WorkspaceTestUtilities.php index 7f4230b07733..56e91d8a26ba 100644 --- a/core/modules/workspaces/tests/src/Functional/WorkspaceTestUtilities.php +++ b/core/modules/workspaces/tests/src/Functional/WorkspaceTestUtilities.php @@ -56,9 +56,9 @@ trait WorkspaceTestUtilities { /** * Creates and activates a new Workspace through the UI. * - * @param string $label + * @param string|null $label * The label of the workspace to create. - * @param string $id + * @param string|null $id * The ID of the workspace to create. * @param string $parent * (optional) The ID of the parent workspace. Defaults to '_none'. @@ -66,7 +66,10 @@ trait WorkspaceTestUtilities { * @return \Drupal\workspaces\WorkspaceInterface * The workspace that was just created. */ - protected function createAndActivateWorkspaceThroughUi(string $label, string $id, string $parent = '_none'): WorkspaceInterface { + protected function createAndActivateWorkspaceThroughUi(?string $label = NULL, ?string $id = NULL, string $parent = '_none'): WorkspaceInterface { + $id ??= $this->randomMachineName(); + $label ??= $this->randomString(); + $this->drupalGet('/admin/config/workflow/workspaces/add'); $this->submitForm([ 'id' => $id, @@ -76,15 +79,19 @@ trait WorkspaceTestUtilities { $this->getSession()->getPage()->hasContent("$label ($id)"); - return Workspace::load($id); + // Keep the test runner in sync with the system under test. + $workspace = Workspace::load($id); + \Drupal::service('workspaces.manager')->setActiveWorkspace($workspace); + + return $workspace; } /** * Creates a new Workspace through the UI. * - * @param string $label + * @param string|null $label * The label of the workspace to create. - * @param string $id + * @param string|null $id * The ID of the workspace to create. * @param string $parent * (optional) The ID of the parent workspace. Defaults to '_none'. @@ -92,7 +99,10 @@ trait WorkspaceTestUtilities { * @return \Drupal\workspaces\WorkspaceInterface * The workspace that was just created. */ - protected function createWorkspaceThroughUi($label, $id, $parent = '_none') { + protected function createWorkspaceThroughUi(?string $label = NULL, ?string $id = NULL, string $parent = '_none') { + $id ??= $this->randomMachineName(); + $label ??= $this->randomString(); + $this->drupalGet('/admin/config/workflow/workspaces/add'); $this->submitForm([ 'id' => $id, diff --git a/core/modules/workspaces/tests/src/Functional/WorkspaceViewsBulkFormTest.php b/core/modules/workspaces/tests/src/Functional/WorkspaceViewsBulkFormTest.php index de8795b644ab..92b2673341e6 100644 --- a/core/modules/workspaces/tests/src/Functional/WorkspaceViewsBulkFormTest.php +++ b/core/modules/workspaces/tests/src/Functional/WorkspaceViewsBulkFormTest.php @@ -5,7 +5,6 @@ declare(strict_types=1); namespace Drupal\Tests\workspaces\Functional; use Drupal\Tests\views\Functional\BulkFormTest; -use Drupal\workspaces\Entity\Workspace; /** * Tests the views bulk form in a workspace. @@ -40,8 +39,7 @@ class WorkspaceViewsBulkFormTest extends BulkFormTest { // Ensure that all the test methods are executed in the context of a // workspace. $this->setupWorkspaceSwitcherBlock(); - $stage = Workspace::load('stage'); - $this->switchToWorkspace($stage); + $this->createAndActivateWorkspaceThroughUi('Test workspace', 'test'); } /** diff --git a/core/modules/workspaces/tests/src/Functional/WorkspacesUninstallTest.php b/core/modules/workspaces/tests/src/Functional/WorkspacesUninstallTest.php index c14fe48effbc..487e0dc5f55c 100644 --- a/core/modules/workspaces/tests/src/Functional/WorkspacesUninstallTest.php +++ b/core/modules/workspaces/tests/src/Functional/WorkspacesUninstallTest.php @@ -43,18 +43,12 @@ class WorkspacesUninstallTest extends BrowserTestBase { */ public function testUninstallingWorkspace(): void { $this->createContentType(['type' => 'article']); - $this->drupalGet('/admin/modules/uninstall'); - $session = $this->assertSession(); - $session->linkExists('Remove workspaces'); - $this->clickLink('Remove workspaces'); - $session->pageTextContains('Are you sure you want to delete all workspaces?'); - $this->drupalGet('/admin/modules/uninstall/entity/workspace'); - $this->submitForm([], 'Delete all workspaces'); $this->drupalGet('admin/modules/uninstall'); $this->submitForm(['uninstall[workspaces_ui]' => TRUE], 'Uninstall'); $this->submitForm([], 'Uninstall'); $this->submitForm(['uninstall[workspaces]' => TRUE], 'Uninstall'); $this->submitForm([], 'Uninstall'); + $session = $this->assertSession(); $session->pageTextContains('The selected modules have been uninstalled.'); $session->pageTextNotContains('Workspaces'); diff --git a/core/modules/workspaces/tests/src/FunctionalJavascript/WorkspacesLayoutBuilderIntegrationTest.php b/core/modules/workspaces/tests/src/FunctionalJavascript/WorkspacesLayoutBuilderIntegrationTest.php index d058cfcc8382..f59aba78bb5f 100644 --- a/core/modules/workspaces/tests/src/FunctionalJavascript/WorkspacesLayoutBuilderIntegrationTest.php +++ b/core/modules/workspaces/tests/src/FunctionalJavascript/WorkspacesLayoutBuilderIntegrationTest.php @@ -62,6 +62,7 @@ class WorkspacesLayoutBuilderIntegrationTest extends InlineBlockTestBase { ]); $this->drupalLogin($this->defaultUser); $this->setupWorkspaceSwitcherBlock(); + Workspace::create(['id' => 'stage', 'label' => 'Stage'])->save(); // Enable layout builder. $this->drupalGet(static::FIELD_UI_PREFIX . '/display/default'); diff --git a/core/modules/workspaces/tests/src/FunctionalJavascript/WorkspacesMediaLibraryIntegrationTest.php b/core/modules/workspaces/tests/src/FunctionalJavascript/WorkspacesMediaLibraryIntegrationTest.php index 83ecb8e434f9..49cac2860ae7 100644 --- a/core/modules/workspaces/tests/src/FunctionalJavascript/WorkspacesMediaLibraryIntegrationTest.php +++ b/core/modules/workspaces/tests/src/FunctionalJavascript/WorkspacesMediaLibraryIntegrationTest.php @@ -47,8 +47,9 @@ class WorkspacesMediaLibraryIntegrationTest extends EntityReferenceWidgetTest { // Ensure that all the test methods are executed in the context of a // workspace. - $stage = Workspace::load('stage'); - \Drupal::service('workspaces.manager')->setActiveWorkspace($stage); + $workspace = Workspace::create(['id' => 'test', 'label' => 'Test']); + $workspace->save(); + \Drupal::service('workspaces.manager')->setActiveWorkspace($workspace); } /** diff --git a/core/modules/workspaces/workspaces.install b/core/modules/workspaces/workspaces.install index 6c9c99f29a3c..be1f19a3a30f 100644 --- a/core/modules/workspaces/workspaces.install +++ b/core/modules/workspaces/workspaces.install @@ -6,38 +6,6 @@ */ use Drupal\Core\Entity\EntityTypeInterface; -use Drupal\workspaces\Entity\Workspace; - -/** - * Implements hook_install(). - */ -function workspaces_install(): void { - // Set the owner of these default workspaces to be first user which has the - // 'administrator' role. This way we avoid hard coding user ID 1 for sites - // that prefer to not give it any special meaning. - $admin_roles = \Drupal::entityTypeManager()->getStorage('user_role')->getQuery() - ->condition('is_admin', TRUE) - ->execute(); - if (!empty($admin_roles)) { - $query = \Drupal::entityTypeManager()->getStorage('user')->getQuery() - ->accessCheck(FALSE) - ->condition('roles', $admin_roles, 'IN') - ->condition('status', 1) - ->sort('uid', 'ASC') - ->range(0, 1); - $result = $query->execute(); - } - - // Default to user ID 1 if we could not find any other administrator users. - $owner_id = !empty($result) ? reset($result) : 1; - - // Create a 'stage' workspace by default. - Workspace::create([ - 'id' => 'stage', - 'label' => 'Stage', - 'uid' => $owner_id, - ])->save(); -} /** * Implements hook_schema(). diff --git a/core/modules/workspaces_ui/tests/src/FunctionalJavascript/WorkspaceToolbarIntegrationTest.php b/core/modules/workspaces_ui/tests/src/FunctionalJavascript/WorkspaceToolbarIntegrationTest.php index 488a6dd34c3c..b83953de37e4 100644 --- a/core/modules/workspaces_ui/tests/src/FunctionalJavascript/WorkspaceToolbarIntegrationTest.php +++ b/core/modules/workspaces_ui/tests/src/FunctionalJavascript/WorkspaceToolbarIntegrationTest.php @@ -5,10 +5,12 @@ declare(strict_types=1); namespace Drupal\Tests\workspaces_ui\FunctionalJavascript; use Drupal\Tests\system\FunctionalJavascript\OffCanvasTestBase; +use Drupal\workspaces\Entity\Workspace; /** * Tests workspace settings stray integration. * + * @group workspaces * @group workspaces_ui */ class WorkspaceToolbarIntegrationTest extends OffCanvasTestBase { @@ -34,6 +36,7 @@ class WorkspaceToolbarIntegrationTest extends OffCanvasTestBase { 'access administration pages', ]); $this->drupalLogin($admin_user); + Workspace::create(['id' => 'stage', 'label' => 'Stage'])->save(); } /** diff --git a/core/package.json b/core/package.json index 48adc5b12dd0..b04ff92f861a 100644 --- a/core/package.json +++ b/core/package.json @@ -67,13 +67,13 @@ "dotenv-safe": "^9.1.0", "eslint": "^8.57.1", "eslint-config-airbnb-base": "^15.0.0", - "eslint-config-prettier": "^9.1.0", + "eslint-config-prettier": "^10.1.3", "eslint-formatter-gitlab": "^5.1.0", "eslint-plugin-import": "^2.31.0", - "eslint-plugin-no-jquery": "^3.1.0", - "eslint-plugin-prettier": "^5.2.1", - "eslint-plugin-yml": "^1.16.0", - "glob": "11.0.2", + "eslint-plugin-no-jquery": "^3.1.1", + "eslint-plugin-prettier": "^5.4.0", + "eslint-plugin-yml": "^1.18.0", + "glob": "11.0.0", "htmx.org": "2.0.4", "jquery": "^4.0.0-beta.2", "jquery-ui": "^1.14.1", @@ -84,19 +84,19 @@ "mkdirp": "^3.0.1", "nightwatch": "^3.12.1", "normalize.css": "^8.0.1", - "postcss": "^8.4.40", + "postcss": "^8.5.3", "postcss-header": "^3.0.3", "postcss-import": "^16.1.0", - "postcss-preset-env": "^9.6.0", + "postcss-preset-env": "^10.1.6", "postcss-pxtorem": "^6.1.0", "postcss-url": "^10.1.3", - "prettier": "^3.4.2", + "prettier": "^3.5.3", "sortablejs": "^1.15.6", - "stylelint": "^16.11.0", + "stylelint": "^16.19.1", "stylelint-checkstyle-formatter": "^0.1.2", - "stylelint-config-standard": "^36.0.1", - "stylelint-order": "^6.0.4", - "stylelint-prettier": "^5.0.2", + "stylelint-config-standard": "^38.0.0", + "stylelint-order": "^7.0.0", + "stylelint-prettier": "^5.0.3", "tabbable": "^6.2.0", "terser": "^5.39.0", "terser-webpack-plugin": "^5.3.14", diff --git a/core/profiles/demo_umami/themes/umami/components/badge/badge.component.yml b/core/profiles/demo_umami/themes/umami/components/badge/badge.component.yml index 1d68092cc07f..dbe75182edf2 100644 --- a/core/profiles/demo_umami/themes/umami/components/badge/badge.component.yml +++ b/core/profiles/demo_umami/themes/umami/components/badge/badge.component.yml @@ -27,6 +27,12 @@ props: - timer - serves - difficulty + meta:enum: + knife: Knife + timer: Timer + serves: Serves + difficulty: Difficulty + x-translation-context: Umami recipes icon names slots: label: type: string diff --git a/core/profiles/demo_umami/themes/umami/components/banner/banner.css b/core/profiles/demo_umami/themes/umami/components/banner/banner.css index b60dd0b5b9cc..ecfd328a102e 100644 --- a/core/profiles/demo_umami/themes/umami/components/banner/banner.css +++ b/core/profiles/demo_umami/themes/umami/components/banner/banner.css @@ -39,7 +39,7 @@ padding: 1.777em; color: #fff; border: 1px solid #464646; - background: rgba(0, 0, 0, 0.42); + background: rgb(0, 0, 0, 0.42); } .banner__image img { diff --git a/core/profiles/demo_umami/themes/umami/components/card/card.component.yml b/core/profiles/demo_umami/themes/umami/components/card/card.component.yml index 58dbae540082..96183ac24bc0 100644 --- a/core/profiles/demo_umami/themes/umami/components/card/card.component.yml +++ b/core/profiles/demo_umami/themes/umami/components/card/card.component.yml @@ -24,6 +24,10 @@ props: enum: - article - div + meta:enum: + article: Article + div: Container + x-translation-context: HTML tag # Provide a default value default: article diff --git a/core/profiles/demo_umami/themes/umami/components/title/title.component.yml b/core/profiles/demo_umami/themes/umami/components/title/title.component.yml index df26ee3abf88..007a82b7361f 100644 --- a/core/profiles/demo_umami/themes/umami/components/title/title.component.yml +++ b/core/profiles/demo_umami/themes/umami/components/title/title.component.yml @@ -30,6 +30,15 @@ props: - h5 - h6 - span + meta:enum: + h1: Heading 1 + h2: Heading 2 + h3: Heading 3 + h4: Heading 4 + h5: Heading 5 + h6: Heading 6 + span: Inline + x-translation-context: HTML tag # Provide a default value default: h2 diff --git a/core/profiles/demo_umami/themes/umami/css/classy/components/progress.css b/core/profiles/demo_umami/themes/umami/css/classy/components/progress.css index f8561b2eaf60..6ff2e1949884 100644 --- a/core/profiles/demo_umami/themes/umami/css/classy/components/progress.css +++ b/core/profiles/demo_umami/themes/umami/css/classy/components/progress.css @@ -10,7 +10,7 @@ border-radius: 10em; background-color: #f2f1eb; background-image: linear-gradient(#e7e7df, #f0f0f0); - box-shadow: inset 0 1px 3px hsla(0, 0%, 0%, 0.16); + box-shadow: inset 0 1px 3px hsl(0, 0%, 0%, 0.16); } .progress__bar { height: 16px; @@ -23,7 +23,7 @@ border: 1px #07629a solid; border-radius: 10em; background: #057ec9; - background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.15)), linear-gradient(to right bottom, #0094f0 0%, #0094f0 25%, #007ecc 25%, #007ecc 50%, #0094f0 50%, #0094f0 75%, #0094f0 100%); + background-image: linear-gradient(to bottom, rgb(0, 0, 0, 0), rgb(0, 0, 0, 0.15)), linear-gradient(to right bottom, #0094f0 0%, #0094f0 25%, #007ecc 25%, #007ecc 50%, #0094f0 50%, #0094f0 75%, #0094f0 100%); background-size: 40px 40px; } [dir="rtl"] .progress__bar { diff --git a/core/profiles/demo_umami/themes/umami/css/components/navigation/skip-link/skip-link.css b/core/profiles/demo_umami/themes/umami/css/components/navigation/skip-link/skip-link.css index 1dd4758ced04..6f9e5c4e4dfb 100644 --- a/core/profiles/demo_umami/themes/umami/css/components/navigation/skip-link/skip-link.css +++ b/core/profiles/demo_umami/themes/umami/css/components/navigation/skip-link/skip-link.css @@ -12,7 +12,7 @@ border-radius: 0 0 10px 10px; outline: 0; background: #444; - background: rgba(0, 0, 0, 0.6); + background: rgb(0, 0, 0, 0.6); } .skip-link.visually-hidden.focusable:focus { position: absolute !important; diff --git a/core/scripts/css/compile.js b/core/scripts/css/compile.js index 9f5b71cb929d..a3794cd618ec 100644 --- a/core/scripts/css/compile.js +++ b/core/scripts/css/compile.js @@ -34,6 +34,7 @@ module.exports = (filePath, callback) => { 'image-set-function': false, 'prefers-color-scheme-query': false, 'content-alt-text': false, + 'nesting-rules': { edition: '2021' }, } }), postcssPixelsToRem({ diff --git a/core/scripts/run-tests.sh b/core/scripts/run-tests.sh index 96f16eed9c71..4545a00cc3ac 100755 --- a/core/scripts/run-tests.sh +++ b/core/scripts/run-tests.sh @@ -17,13 +17,14 @@ use Drupal\Component\Utility\Timer; use Drupal\Core\Composer\Composer; use Drupal\Core\Database\Database; use Drupal\Core\Test\EnvironmentCleaner; -use Drupal\Core\Test\PhpUnitTestDiscovery; use Drupal\Core\Test\PhpUnitTestRunner; use Drupal\Core\Test\SimpletestTestRunResultsStorage; +use Drupal\Core\Test\RunTests\TestFileParser; use Drupal\Core\Test\TestDatabase; use Drupal\Core\Test\TestRun; use Drupal\Core\Test\TestRunnerKernel; use Drupal\Core\Test\TestRunResultsStorageInterface; +use Drupal\Core\Test\TestDiscovery; use Drupal\BuildTests\Framework\BuildTestBase; use Drupal\FunctionalJavascriptTests\WebDriverTestBase; use Drupal\KernelTests\KernelTestBase; @@ -48,10 +49,6 @@ const SIMPLETEST_SCRIPT_COLOR_EXCEPTION = 33; const SIMPLETEST_SCRIPT_COLOR_YELLOW = 33; // A refreshing cyan. const SIMPLETEST_SCRIPT_COLOR_CYAN = 36; -// A fainting gray. -const SIMPLETEST_SCRIPT_COLOR_GRAY = 90; -// A notable white. -const SIMPLETEST_SCRIPT_COLOR_BRIGHT_WHITE = "1;97"; // Restricting the chunk of queries prevents memory exhaustion. const SIMPLETEST_SCRIPT_SQLITE_VARIABLE_LIMIT = 350; @@ -89,12 +86,12 @@ if ($args['list']) { // Display all available tests organized by one @group annotation. echo "\nAvailable test groups & classes\n"; echo "-------------------------------\n\n"; - $test_discovery = new PhpUnitTestDiscovery(\Drupal::root() . \DIRECTORY_SEPARATOR . 'core'); + $test_discovery = new TestDiscovery( + \Drupal::root(), + \Drupal::service('class_loader') + ); try { $groups = $test_discovery->getTestClasses($args['module']); - foreach ($test_discovery->getWarnings() as $warning) { - simpletest_script_print($warning . "\n", SIMPLETEST_SCRIPT_COLOR_EXCEPTION); - } } catch (Exception $e) { error_log((string) $e); @@ -122,8 +119,11 @@ if ($args['list']) { // @see https://www.drupal.org/node/2569585 if ($args['list-files'] || $args['list-files-json']) { // List all files which could be run as tests. - $test_discovery = new PhpUnitTestDiscovery(\Drupal::root() . \DIRECTORY_SEPARATOR . 'core'); - // PhpUnitTestDiscovery::findAllClassFiles() gives us a classmap similar to a + $test_discovery = new TestDiscovery( + \Drupal::root(), + \Drupal::service('class_loader') + ); + // TestDiscovery::findAllClassFiles() gives us a classmap similar to a // Composer 'classmap' array. $test_classes = $test_discovery->findAllClassFiles(); // JSON output is the easiest. @@ -177,15 +177,6 @@ if (!Composer::upgradePHPUnitCheck(Version::id())) { exit(SIMPLETEST_SCRIPT_EXIT_FAILURE); } -echo "\n"; -echo "Drupal test run\n\n"; -echo sprintf("Drupal Version: %s\n", \Drupal::VERSION); -echo sprintf("PHP Version: %s\n", \PHP_VERSION); -echo sprintf("PHP Binary: %s\n", $php ?? getenv('_')); -echo sprintf("PHPUnit Version: %s\n", Version::id()); -echo "-------------------------------\n"; -echo "\n"; - $test_list = simpletest_script_get_test_list(); // Try to allocate unlimited time to run the tests. @@ -364,11 +355,6 @@ All arguments are long options. The index of the job in the job set. - --debug-discovery - - If provided, dumps detailed information on the tests selected - for execution, before the execution starts. - <test1>[,<test2>[,<test3> ...]] One or more tests to be run. By default, these are interpreted @@ -441,7 +427,6 @@ function simpletest_script_parse_args() { 'non-html' => FALSE, 'ci-parallel-node-index' => 1, 'ci-parallel-node-total' => 1, - 'debug-discovery' => FALSE, ]; // Override with set values. @@ -934,15 +919,17 @@ function simpletest_script_command(TestRun $test_run, string $test_class): array function simpletest_script_get_test_list() { global $args; - $test_discovery = new PhpUnitTestDiscovery(\Drupal::root() . \DIRECTORY_SEPARATOR . 'core'); + $test_discovery = new TestDiscovery( + \Drupal::root(), + \Drupal::service('class_loader') + ); + $types_processed = empty($args['types']); $test_list = []; $slow_tests = []; if ($args['all'] || $args['module'] || $args['directory']) { try { $groups = $test_discovery->getTestClasses($args['module'], $args['types'], $args['directory']); - foreach ($test_discovery->getWarnings() as $warning) { - simpletest_script_print($warning . "\n", SIMPLETEST_SCRIPT_COLOR_EXCEPTION); - } + $types_processed = TRUE; } catch (Exception $e) { echo (string) $e; @@ -951,34 +938,30 @@ function simpletest_script_get_test_list() { // Ensure that tests marked explicitly as @group #slow are run at the // beginning of each job. if (key($groups) === '#slow') { - $slow_tests = array_shift($groups); + $slow_tests = array_keys(array_shift($groups)); } $not_slow_tests = []; foreach ($groups as $group => $tests) { - $not_slow_tests = array_merge($not_slow_tests, $tests); + $not_slow_tests = array_merge($not_slow_tests, array_keys($tests)); } // Filter slow tests out of the not slow tests and ensure a unique list // since tests may appear in more than one group. - $not_slow_tests = array_diff_key($not_slow_tests, $slow_tests); + $not_slow_tests = array_unique(array_diff($not_slow_tests, $slow_tests)); // If the tests are not being run in parallel, then ensure slow tests run // all together first. if ((int) $args['ci-parallel-node-total'] <= 1 ) { sort_tests_by_type_and_methods($slow_tests); sort_tests_by_type_and_methods($not_slow_tests); - $all_tests_list = array_merge($slow_tests, $not_slow_tests); - assign_tests_sequence($all_tests_list); - dump_tests_sequence($all_tests_list, $args); - $test_list = array_keys($all_tests_list); + $test_list = array_merge($slow_tests, $not_slow_tests); } else { - // Sort all tests by the number of test cases on the test class. - // This is used in combination with @group #slow to start the slowest - // tests first and distribute tests between test runners. + // Sort all tests by the number of public methods on the test class. + // This is a proxy for the approximate time taken to run the test, + // which is used in combination with @group #slow to start the slowest tests + // first and distribute tests between test runners. sort_tests_by_public_method_count($slow_tests); sort_tests_by_public_method_count($not_slow_tests); - $all_tests_list = array_merge($slow_tests, $not_slow_tests); - assign_tests_sequence($all_tests_list); // Now set up a bin per test runner. $bin_count = (int) $args['ci-parallel-node-total']; @@ -992,8 +975,6 @@ function simpletest_script_get_test_list() { $binned_other_tests = place_tests_into_bins($not_slow_tests, $bin_count); $other_tests_for_job = $binned_other_tests[$args['ci-parallel-node-index'] - 1]; $test_list = array_merge($slow_tests_for_job, $other_tests_for_job); - dump_bin_tests_sequence($args['ci-parallel-node-index'], $all_tests_list, $test_list, $args); - $test_list = array_keys($test_list); } } else { @@ -1007,9 +988,6 @@ function simpletest_script_get_test_list() { else { try { $groups = $test_discovery->getTestClasses(NULL, $args['types']); - foreach ($test_discovery->getWarnings() as $warning) { - simpletest_script_print($warning . "\n", SIMPLETEST_SCRIPT_COLOR_EXCEPTION); - } } catch (Exception $e) { echo (string) $e; @@ -1027,24 +1005,19 @@ function simpletest_script_get_test_list() { } elseif ($args['file']) { // Extract test case class names from specified files. + $parser = new TestFileParser(); foreach ($args['test_names'] as $file) { - if (!file_exists($file) || is_dir($file)) { + if (!file_exists($file)) { simpletest_script_print_error('File not found: ' . $file); exit(SIMPLETEST_SCRIPT_EXIT_FAILURE); } - $fileTests = current($test_discovery->getTestClasses(NULL, [], $file)); - $test_list = array_merge($test_list, $fileTests); + $test_list = array_merge($test_list, $parser->getTestListFromFile($file)); } - assign_tests_sequence($test_list); - dump_tests_sequence($test_list, $args); - $test_list = array_keys($test_list); } else { try { $groups = $test_discovery->getTestClasses(NULL, $args['types']); - foreach ($test_discovery->getWarnings() as $warning) { - simpletest_script_print($warning . "\n", SIMPLETEST_SCRIPT_COLOR_EXCEPTION); - } + $types_processed = TRUE; } catch (Exception $e) { echo (string) $e; @@ -1061,15 +1034,22 @@ function simpletest_script_get_test_list() { } // Merge the tests from the groups together. foreach ($args['test_names'] as $group_name) { - $test_list = array_merge($test_list, $groups[$group_name]); + $test_list = array_merge($test_list, array_keys($groups[$group_name])); } - assign_tests_sequence($test_list); - dump_tests_sequence($test_list, $args); // Ensure our list of tests contains only one entry for each test. - $test_list = array_keys($test_list); + $test_list = array_unique($test_list); } } + // If the test list creation does not automatically limit by test type then + // we need to do so here. + if (!$types_processed) { + $test_list = array_filter($test_list, function ($test_class) use ($args) { + $test_info = TestDiscovery::getTestInfo($test_class); + return in_array($test_info['type'], $args['types'], TRUE); + }); + } + if (empty($test_list)) { simpletest_script_print_error('No valid tests were specified.'); exit(SIMPLETEST_SCRIPT_EXIT_FAILURE); @@ -1082,11 +1062,11 @@ function simpletest_script_get_test_list() { * Sort tests by test type and number of public methods. */ function sort_tests_by_type_and_methods(array &$tests): void { - uasort($tests, function ($a, $b) { - if (get_test_type_weight($a['name']) === get_test_type_weight($b['name'])) { - return $b['tests_count'] <=> $a['tests_count']; + usort($tests, function ($a, $b) { + if (get_test_type_weight($a) === get_test_type_weight($b)) { + return get_test_class_method_count($b) <=> get_test_class_method_count($a); } - return get_test_type_weight($b['name']) <=> get_test_type_weight($a['name']); + return get_test_type_weight($b) <=> get_test_type_weight($a); }); } @@ -1103,8 +1083,8 @@ function sort_tests_by_type_and_methods(array &$tests): void { * An array of test class names. */ function sort_tests_by_public_method_count(array &$tests): void { - uasort($tests, function ($a, $b) { - return $b['tests_count'] <=> $a['tests_count']; + usort($tests, function ($a, $b) { + return get_test_class_method_count($b) <=> get_test_class_method_count($a); }); } @@ -1125,46 +1105,28 @@ function get_test_type_weight(string $class): int { } /** - * Assigns the test sequence. + * Get an approximate test method count for a test class. * - * @param array $tests - * The array of test class info. - */ -function assign_tests_sequence(array &$tests): void { - $i = 0; - foreach ($tests as &$testInfo) { - $testInfo['sequence'] = ++$i; - } -} - -/** - * Dumps the list of tests in order of execution after sorting. - * - * @param array $tests - * The array of test class info. - * @param array $args - * The command line arguments. + * @param string $class + * The test class name. */ -function dump_tests_sequence(array $tests, array $args): void { - if ($args['debug-discovery'] === FALSE) { - return; - } - echo "Test execution sequence\n"; - echo "-----------------------\n\n"; - echo " Seq Slow? Group Cnt Class\n"; - echo "-----------------------------------------\n"; - $i = 0; - foreach ($tests as $testInfo) { - echo sprintf( - "%4d %5s %15s %4d %s\n", - $testInfo['sequence'], - in_array('#slow', $testInfo['groups']) ? '#slow' : '', - trim_with_ellipsis($testInfo['group'], 15, \STR_PAD_RIGHT), - $testInfo['tests_count'], - trim_with_ellipsis($testInfo['name'], 60, \STR_PAD_LEFT), - ); +function get_test_class_method_count(string $class): int { + $reflection = new \ReflectionClass($class); + $count = 0; + foreach ($reflection->getMethods(\ReflectionMethod::IS_PUBLIC) as $method) { + // If a method uses a dataProvider, increase the count by 20 since data + // providers result in a single method running multiple times. + $comments = $method->getDocComment(); + preg_match_all('#@(.*?)\n#s', $comments, $annotations); + foreach ($annotations[1] as $annotation) { + if (str_starts_with($annotation, 'dataProvider')) { + $count = $count + 20; + continue; + } + } + $count++; } - echo "-----------------------------------------\n\n"; + return $count; } /** @@ -1187,51 +1149,13 @@ function place_tests_into_bins(array $tests, int $bin_count) { // Create a bin corresponding to each parallel test job. $bins = array_fill(0, $bin_count, []); // Go through each test and add them to one bin at a time. - $i = 0; foreach ($tests as $key => $test) { - $bins[($i++ % $bin_count)][$key] = $test; + $bins[($key % $bin_count)][] = $test; } return $bins; } /** - * Dumps the list of tests in order of execution for a bin. - * - * @param int $bin - * The bin. - * @param array $allTests - * The list of all test classes discovered. - * @param array $tests - * The list of test class to run for this bin. - * @param array $args - * The command line arguments. - */ -function dump_bin_tests_sequence(int $bin, array $allTests, array $tests, array $args): void { - if ($args['debug-discovery'] === FALSE) { - return; - } - echo "Test execution sequence. "; - echo "Tests marked *** will be executed in this PARALLEL BIN #{$bin}.\n"; - echo "-------------------------------------------------------------------------------------\n\n"; - echo "Bin Seq Slow? Group Cnt Class\n"; - echo "--------------------------------------------\n"; - foreach ($allTests as $testInfo) { - $inBin = isset($tests[$testInfo['name']]); - $message = sprintf( - "%s %4d %5s %15s %4d %s\n", - $inBin ? "***" : " ", - $testInfo['sequence'], - in_array('#slow', $testInfo['groups']) ? '#slow' : '', - trim_with_ellipsis($testInfo['group'], 15, \STR_PAD_RIGHT), - $testInfo['tests_count'], - trim_with_ellipsis($testInfo['name'], 60, \STR_PAD_LEFT), - ); - simpletest_script_print($message, $inBin ? SIMPLETEST_SCRIPT_COLOR_BRIGHT_WHITE : SIMPLETEST_SCRIPT_COLOR_GRAY); - } - echo "-------------------------------------------------\n\n"; -} - -/** * Initialize the reporter. */ function simpletest_script_reporter_init(): void { @@ -1246,6 +1170,12 @@ function simpletest_script_reporter_init(): void { 'debug' => 'Log', ]; + echo "\n"; + echo "Drupal test run\n"; + echo "Using PHP Binary: $php\n"; + echo "---------------\n"; + echo "\n"; + // Tell the user about what tests are to be run. if ($args['all']) { echo "All tests will run.\n\n"; @@ -1448,7 +1378,7 @@ function simpletest_script_reporter_display_results(TestRunResultsStorageInterfa function simpletest_script_format_result($result): void { global $args, $results_map, $color; - $summary = sprintf("%-9.9s %9.3fs %s\n", $results_map[$result->status], $result->time, trim_with_ellipsis($result->function, 80, STR_PAD_LEFT)); + $summary = sprintf("%-9.9s %9.3fs %-80.80s\n", $results_map[$result->status], $result->time, trim_with_ellipsis($result->function, 80, STR_PAD_LEFT)); simpletest_script_print($summary, simpletest_script_color_code($result->status)); @@ -1610,12 +1540,12 @@ function simpletest_script_load_messages_by_test_id(TestRunResultsStorageInterfa */ function trim_with_ellipsis(string $input, int $length, int $side): string { if (strlen($input) < $length) { - return str_pad($input, $length, ' ', \STR_PAD_RIGHT); + return str_pad($input, $length, ' ', STR_PAD_RIGHT); } elseif (strlen($input) > $length) { return match($side) { - \STR_PAD_RIGHT => substr($input, 0, $length - 1) . '…', - default => '…' . substr($input, -$length + 1), + STR_PAD_RIGHT => substr($input, 0, $length - 3) . '...', + default => '...' . substr($input, -$length + 3), }; } return $input; diff --git a/core/tests/Drupal/KernelTests/Components/ComponentTranslationTest.php b/core/tests/Drupal/KernelTests/Components/ComponentTranslationTest.php new file mode 100644 index 000000000000..4495e8fda6a6 --- /dev/null +++ b/core/tests/Drupal/KernelTests/Components/ComponentTranslationTest.php @@ -0,0 +1,189 @@ +<?php + +declare(strict_types=1); + +// cspell:ignore Abre er bânnêh en una nueba bentana la mîmma + +namespace Drupal\KernelTests\Components; + +use Drupal\language\Entity\ConfigurableLanguage; +use Drupal\locale\StringInterface; +use Drupal\locale\StringStorageInterface; +use Symfony\Component\DomCrawler\Crawler; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\HttpKernel\HttpKernelInterface; +use Symfony\Component\HttpKernel\TerminableInterface; + +/** + * Tests the component can be translated. + * + * @group sdc + */ +class ComponentTranslationTest extends ComponentKernelTestBase { + + /** + * {@inheritdoc} + */ + protected static $modules = [ + 'system', + 'sdc_test', + 'locale', + 'language', + ]; + + /** + * {@inheritdoc} + */ + protected static $themes = ['sdc_theme_test']; + + /** + * The locale storage. + * + * @var \Drupal\locale\StringStorageInterface + */ + protected StringStorageInterface $storage; + + /** + * {@inheritdoc} + */ + protected function setUp(): void { + parent::setUp(); + // Add a default locale storage for all these tests. + $this->storage = $this->container->get('locale.storage'); + ConfigurableLanguage::createFromLangcode('epa')->save(); + $this->container->get('string_translation')->setDefaultLangcode('epa'); + $this->installSchema('locale', [ + 'locales_location', + 'locales_source', + 'locales_target', + ]); + } + + /** + * Test that components render enum props correctly with their translations. + */ + public function testEnumPropsCanBeTranslated(): void { + $bannerString = $this->buildSourceString(['source' => 'Open in a new window', 'context' => 'Banner link target']); + $bannerString->save(); + $ctaString = $this->buildSourceString(['source' => 'Open in a new window', 'context' => 'CTA link target']); + $ctaString->save(); + $ctaEmptyString = $this->buildSourceString(['source' => 'Open in same window', 'context' => 'CTA link target']); + $ctaEmptyString->save(); + $this->createTranslation($bannerString, 'epa', ['translation' => 'Abre er bânnêh en una nueba bentana']); + $this->createTranslation($ctaString, 'epa', ['translation' => 'Abre er CTA en una nueba bentana']); + $this->createTranslation($ctaEmptyString, 'epa', ['translation' => 'Abre er CTA en la mîmma bentana']); + + $build = [ + 'banner' => [ + '#type' => 'component', + '#component' => 'sdc_test:my-banner', + '#props' => [ + 'heading' => 'I am a banner', + 'ctaText' => 'Click me', + 'ctaHref' => 'https://www.example.org', + 'ctaTarget' => '_blank', + ], + ], + 'cta' => [ + '#type' => 'component', + '#component' => 'sdc_test:my-cta', + '#props' => [ + 'text' => 'Click me', + 'href' => 'https://www.example.org', + 'target' => '_blank', + ], + ], + 'cta_with_empty_enum' => [ + '#type' => 'component', + '#component' => 'sdc_test:my-cta', + '#props' => [ + 'text' => 'Click me', + 'href' => 'https://www.example.org', + 'target' => '', + ], + ], + ]; + \Drupal::state()->set('sdc_test_component', $build); + $response = $this->request(Request::create('sdc-test-component')); + $crawler = new Crawler($response->getContent()); + + // Assert that even if the source is the same, the translations depend on + // the enum context. + $this->assertStringContainsString('Abre er bânnêh en una nueba bentana', $crawler->filter('#sdc-wrapper [data-component-id="sdc_test:my-banner"]')->outerHtml()); + $this->assertStringContainsString('Abre er CTA en una nueba bentana', $crawler->filter('#sdc-wrapper a[data-component-id="sdc_test:my-cta"]:nth-of-type(1)')->outerHtml()); + $this->assertStringContainsString('Abre er CTA en la mîmma bentana', $crawler->filter('#sdc-wrapper a[data-component-id="sdc_test:my-cta"]:nth-of-type(2)')->outerHtml()); + } + + /** + * Creates random source string object. + * + * @param array $values + * The values array. + * + * @return \Drupal\locale\StringInterface + * A locale string. + */ + protected function buildSourceString(array $values = []): StringInterface { + return $this->storage->createString($values += [ + 'source' => $this->randomMachineName(100), + 'context' => $this->randomMachineName(20), + ]); + } + + /** + * Creates single translation for source string. + * + * @param \Drupal\locale\StringInterface $source + * The source string. + * @param string $langcode + * The language code. + * @param array $values + * The values array. + * + * @return \Drupal\locale\StringInterface + * The translated string object. + */ + protected function createTranslation(StringInterface $source, $langcode, array $values = []): StringInterface { + return $this->storage->createTranslation($values + [ + 'lid' => $source->lid, + 'language' => $langcode, + 'translation' => $this->randomMachineName(100), + ])->save(); + } + + /** + * Passes a request to the HTTP kernel and returns a response. + * + * @param \Symfony\Component\HttpFoundation\Request $request + * The request. + * + * @return \Symfony\Component\HttpFoundation\Response + * The response. + */ + protected function request(Request $request): Response { + // @todo We should replace this when https://drupal.org/i/3390193 lands. + // Reset the request stack. + // \Drupal\KernelTests\KernelTestBase::bootKernel() pushes a bogus request + // to boot the kernel, but it is also needed for any URL generation in tests + // to work. We also need to reset the request stack every time we make a + // request. + $request_stack = $this->container->get('request_stack'); + while ($request_stack->getCurrentRequest() !== NULL) { + $request_stack->pop(); + } + + $http_kernel = $this->container->get('http_kernel'); + self::assertInstanceOf(HttpKernelInterface::class, $http_kernel); + $response = $http_kernel->handle($request, HttpKernelInterface::MAIN_REQUEST, FALSE); + $content = $response->getContent(); + self::assertNotFalse($content); + $this->setRawContent($content); + + self::assertInstanceOf(TerminableInterface::class, $http_kernel); + $http_kernel->terminate($request, $response); + + return $response; + } + +} diff --git a/core/tests/Drupal/KernelTests/Core/Config/ConfigExistsConstraintValidatorTest.php b/core/tests/Drupal/KernelTests/Core/Config/ConfigExistsConstraintValidatorTest.php index bcdc76cc71d7..3d3ee862cef6 100644 --- a/core/tests/Drupal/KernelTests/Core/Config/ConfigExistsConstraintValidatorTest.php +++ b/core/tests/Drupal/KernelTests/Core/Config/ConfigExistsConstraintValidatorTest.php @@ -28,6 +28,7 @@ class ConfigExistsConstraintValidatorTest extends KernelTestBase { * * @testWith [{}, "system.site", "system.site"] * [{"prefix": "system."}, "site", "system.site"] + * [{"prefix": "system.[%parent.reference]."}, "admin", "system.menu.admin"] */ public function testValidation(array $constraint_options, string $value, string $expected_config_name): void { // Create a data definition that specifies the value must be a string with @@ -37,7 +38,11 @@ class ConfigExistsConstraintValidatorTest extends KernelTestBase { /** @var \Drupal\Core\TypedData\TypedDataManagerInterface $typed_data */ $typed_data = $this->container->get('typed_data_manager'); - $data = $typed_data->create($definition, $value); + + // Create a data definition for the parent data. + $parent_data_definition = $typed_data->createDataDefinition('map'); + $parent_data = $typed_data->create($parent_data_definition, ['reference' => 'menu']); + $data = $typed_data->create($definition, $value, 'data_name', $parent_data); $violations = $data->validate(); $this->assertCount(1, $violations); diff --git a/core/tests/Drupal/KernelTests/Core/Extension/ModuleHandlerTest.php b/core/tests/Drupal/KernelTests/Core/Extension/ModuleHandlerTest.php index 8ee28a968fd5..c90cb5e0aad7 100644 --- a/core/tests/Drupal/KernelTests/Core/Extension/ModuleHandlerTest.php +++ b/core/tests/Drupal/KernelTests/Core/Extension/ModuleHandlerTest.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace Drupal\KernelTests\Core\Extension; use Drupal\Core\Extension\Exception\UnknownExtensionException; +use Drupal\Core\Extension\ModuleHandlerInterface; use Drupal\KernelTests\KernelTestBase; /** @@ -36,4 +37,78 @@ class ModuleHandlerTest extends KernelTestBase { $this->assertNotNull(\Drupal::service('module_handler')->getName('module_test')); } + /** + * Tests that resetImplementations() clears the hook memory cache. + * + * @covers ::resetImplementations + */ + public function testResetImplementationsClearsHooks(): void { + $oldModuleHandler = \Drupal::moduleHandler(); + $this->assertHasResetHookImplementations(FALSE, $oldModuleHandler); + + // Installing a module does not trigger ->resetImplementations(). + /** @var \Drupal\Core\Extension\ModuleInstallerInterface $moduleInstaller */ + $moduleInstaller = \Drupal::service('module_installer'); + $moduleInstaller->install(['module_test']); + $this->assertHasResetHookImplementations(FALSE, $oldModuleHandler); + // Only the new ModuleHandler instance has the updated implementations. + $moduleHandler = \Drupal::moduleHandler(); + $this->assertHasResetHookImplementations(TRUE, $moduleHandler); + $backupModuleList = $moduleHandler->getModuleList(); + $moduleListWithout = array_diff_key($backupModuleList, ['module_test' => TRUE]); + $this->assertArrayHasKey('module_test', $backupModuleList); + + // Silently setting the property does not clear the hooks cache. + $moduleListProperty = (new \ReflectionProperty($moduleHandler, 'moduleList')); + $this->assertSame($backupModuleList, $moduleListProperty->getValue($moduleHandler)); + $moduleListProperty->setValue($moduleHandler, $moduleListWithout); + $this->assertHasResetHookImplementations(TRUE, $moduleHandler); + + // Directly calling ->resetImplementations() clears the hook caches. + $moduleHandler->resetImplementations(); + $this->assertHasResetHookImplementations(FALSE, $moduleHandler); + $moduleListProperty->setValue($moduleHandler, $backupModuleList); + $this->assertHasResetHookImplementations(FALSE, $moduleHandler); + $moduleHandler->resetImplementations(); + $this->assertHasResetHookImplementations(TRUE, $moduleHandler); + + // Calling ->setModuleList() triggers ->resetImplementations(). + $moduleHandler->setModuleList(['system']); + $this->assertHasResetHookImplementations(FALSE, $moduleHandler); + $moduleHandler->setModuleList($backupModuleList); + $this->assertHasResetHookImplementations(TRUE, $moduleHandler); + + // Uninstalling a module triggers ->resetImplementations(). + /** @var \Drupal\Core\Extension\ModuleInstallerInterface $moduleInstaller */ + $moduleInstaller = \Drupal::service('module_installer'); + $moduleInstaller->uninstall(['module_test']); + $this->assertSame($moduleListWithout, $moduleHandler->getModuleList()); + $this->assertHasResetHookImplementations(FALSE, $moduleHandler); + } + + /** + * Asserts whether certain hook implementations exist. + * + * This is used to verify that all internal hook cache properties have been + * reset and updated. + * + * @param bool $exists + * TRUE if the implementations are expected to exist, FALSE if not. + * @param \Drupal\Core\Extension\ModuleHandlerInterface $moduleHandler + * The module handler. + * + * @see \module_test_test_reset_implementations_hook() + * @see \module_test_test_reset_implementations_alter() + */ + protected function assertHasResetHookImplementations(bool $exists, ModuleHandlerInterface $moduleHandler): void { + $this->assertSame($exists, $moduleHandler->hasImplementations('test_reset_implementations_hook')); + $this->assertSame($exists, $moduleHandler->hasImplementations('test_reset_implementations_alter')); + $expected_list = $exists ? ['module_test_test_reset_implementations_hook'] : []; + $this->assertSame($expected_list, $moduleHandler->invokeAll('test_reset_implementations_hook')); + $expected_alter_list = $exists ? ['module_test_test_reset_implementations_alter'] : []; + $alter_list = []; + $moduleHandler->alter('test_reset_implementations', $alter_list); + $this->assertSame($expected_alter_list, $alter_list); + } + } diff --git a/core/tests/Drupal/KernelTests/Core/Test/PhpUnitApiFindAllClassFilesTest.php b/core/tests/Drupal/KernelTests/Core/Test/PhpUnitApiFindAllClassFilesTest.php deleted file mode 100644 index feb6addef2a3..000000000000 --- a/core/tests/Drupal/KernelTests/Core/Test/PhpUnitApiFindAllClassFilesTest.php +++ /dev/null @@ -1,72 +0,0 @@ -<?php - -declare(strict_types=1); - -namespace Drupal\KernelTests\Core\Test; - -use Drupal\Core\Test\PhpUnitTestDiscovery; -use Drupal\Core\Test\TestDiscovery; -use Drupal\KernelTests\KernelTestBase; -use Drupal\TestTools\PhpUnitCompatibility\RunnerVersion; -use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\DataProvider; -use PHPUnit\Framework\Attributes\Group; -use PHPUnit\Framework\Attributes\IgnoreDeprecations; - -/** - * Tests ::findAllClassFiles() between TestDiscovery and PhpUnitTestDiscovery. - * - * PhpUnitTestDiscovery uses PHPUnit API to build the list of test classes, - * while TestDiscovery uses Drupal legacy code. - */ -#[CoversClass(PhpUnitTestDiscovery::class)] -#[Group('TestSuites')] -#[Group('Test')] -#[Group('#slow')] -class PhpUnitApiFindAllClassFilesTest extends KernelTestBase { - - /** - * Checks that Drupal legacy and PHPUnit API based discoveries are equal. - */ - #[DataProvider('argumentsProvider')] - #[IgnoreDeprecations] - public function testEquality(?string $extension = NULL, ?string $directory = NULL): void { - $testDiscovery = new TestDiscovery( - $this->container->getParameter('app.root'), - $this->container->get('class_loader') - ); - $internalList = $testDiscovery->findAllClassFiles($extension, $directory); - - // Location of PHPUnit configuration file. - $configurationFilePath = $this->container->getParameter('app.root') . \DIRECTORY_SEPARATOR . 'core'; - // @todo once PHPUnit 10 is no longer used, remove the condition. - // @see https://www.drupal.org/project/drupal/issues/3497116 - if (RunnerVersion::getMajor() >= 11) { - $configurationFilePath .= \DIRECTORY_SEPARATOR . '.phpunit-next.xml'; - } - - $phpUnitTestDiscovery = new PhpUnitTestDiscovery($configurationFilePath); - - $phpUnitList = $phpUnitTestDiscovery->findAllClassFiles($extension, $directory); - - // Downgrade results to make them comparable, working around bugs and - // additions. - // 1. TestDiscovery discovers non-test classes that PHPUnit does not. - $internalList = array_intersect_key($internalList, $phpUnitList); - - $this->assertEquals($internalList, $phpUnitList); - } - - /** - * Provides test data to ::testEquality. - */ - public static function argumentsProvider(): \Generator { - yield 'All tests' => []; - yield 'Extension: system' => ['extension' => 'system']; - yield 'Extension: system, directory' => [ - 'extension' => 'system', - 'directory' => 'core/modules/system/tests/src', - ]; - } - -} diff --git a/core/tests/Drupal/KernelTests/Core/Test/PhpUnitApiGetTestClassesTest.php b/core/tests/Drupal/KernelTests/Core/Test/PhpUnitApiGetTestClassesTest.php deleted file mode 100644 index 32d21e3e6c39..000000000000 --- a/core/tests/Drupal/KernelTests/Core/Test/PhpUnitApiGetTestClassesTest.php +++ /dev/null @@ -1,109 +0,0 @@ -<?php - -declare(strict_types=1); - -namespace Drupal\KernelTests\Core\Test; - -use Drupal\Core\Test\PhpUnitTestDiscovery; -use Drupal\Core\Test\TestDiscovery; -use Drupal\KernelTests\KernelTestBase; -use Drupal\TestTools\PhpUnitCompatibility\RunnerVersion; -use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\DataProvider; -use PHPUnit\Framework\Attributes\Group; -use PHPUnit\Framework\Attributes\IgnoreDeprecations; - -/** - * Tests ::getTestClasses() between TestDiscovery and PhpPUnitTestDiscovery. - * - * PhpPUnitTestDiscovery uses PHPUnit API to build the list of test classes, - * while TestDiscovery uses Drupal legacy code. - */ -#[CoversClass(PhpUnitTestDiscovery::class)] -#[Group('TestSuites')] -#[Group('Test')] -#[Group('#slow')] -class PhpUnitApiGetTestClassesTest extends KernelTestBase { - - /** - * Checks that Drupal legacy and PHPUnit API based discoveries are equal. - */ - #[DataProvider('argumentsProvider')] - #[IgnoreDeprecations] - public function testEquality(array $suites, ?string $extension = NULL, ?string $directory = NULL): void { - $testDiscovery = new TestDiscovery( - $this->container->getParameter('app.root'), - $this->container->get('class_loader') - ); - $internalList = $testDiscovery->getTestClasses($extension, $suites, $directory); - - // Location of PHPUnit configuration file. - $configurationFilePath = $this->container->getParameter('app.root') . \DIRECTORY_SEPARATOR . 'core'; - // @todo once PHPUnit 10 is no longer used, remove the condition. - // @see https://www.drupal.org/project/drupal/issues/3497116 - if (RunnerVersion::getMajor() >= 11) { - $configurationFilePath .= \DIRECTORY_SEPARATOR . '.phpunit-next.xml'; - } - - $phpUnitTestDiscovery = new PhpUnitTestDiscovery($configurationFilePath); - - $phpUnitList = $phpUnitTestDiscovery->getTestClasses($extension, $suites, $directory); - - // Downgrade results to make them comparable, working around bugs and - // additions. - // 1. Remove TestDiscovery empty groups. - $internalList = array_filter($internalList); - // 2. Remove TestDiscovery '##no-group-annotations' group. - unset($internalList['##no-group-annotations']); - // 3. Remove 'file' and 'tests_count' keys from PHPUnit results. - foreach ($phpUnitList as &$group) { - foreach ($group as &$testClass) { - unset($testClass['file']); - unset($testClass['tests_count']); - } - } - // 4. Remove from PHPUnit results groups not found by TestDiscovery. - $phpUnitList = array_intersect_key($phpUnitList, $internalList); - // 5. Remove from PHPUnit groups classes not found by TestDiscovery. - foreach ($phpUnitList as $groupName => &$group) { - $group = array_intersect_key($group, $internalList[$groupName]); - } - // 6. Remove from PHPUnit test classes groups not found by TestDiscovery. - foreach ($phpUnitList as $groupName => &$group) { - foreach ($group as $testClassName => &$testClass) { - $testClass['groups'] = array_intersect_key($testClass['groups'], $internalList[$groupName][$testClassName]['groups']); - } - } - - $this->assertEquals($internalList, $phpUnitList); - } - - /** - * Provides test data to ::testEquality. - */ - public static function argumentsProvider(): \Generator { - yield 'All tests' => ['suites' => []]; - yield 'Testsuite: functional-javascript' => ['suites' => ['PHPUnit-FunctionalJavascript']]; - yield 'Testsuite: functional' => ['suites' => ['PHPUnit-Functional']]; - yield 'Testsuite: kernel' => ['suites' => ['PHPUnit-Kernel']]; - yield 'Testsuite: unit' => ['suites' => ['PHPUnit-Unit']]; - yield 'Testsuite: unit-component' => ['suites' => ['PHPUnit-Unit-Component']]; - yield 'Testsuite: build' => ['suites' => ['PHPUnit-Build']]; - yield 'Extension: system' => ['suites' => [], 'extension' => 'system']; - yield 'Extension: system, testsuite: unit' => [ - 'suites' => ['PHPUnit-Unit'], - 'extension' => 'system', - ]; - yield 'Extension: system, directory' => [ - 'suites' => [], - 'extension' => 'system', - 'directory' => 'core/modules/system/tests/src', - ]; - yield 'Extension: system, testsuite: unit, directory' => [ - 'suites' => ['PHPUnit-Unit'], - 'extension' => 'system', - 'directory' => 'core/modules/system/tests/src', - ]; - } - -} diff --git a/core/tests/Drupal/KernelTests/Core/Test/PhpUnitTestDiscoveryTest.php b/core/tests/Drupal/KernelTests/Core/Test/PhpUnitTestDiscoveryTest.php index d8534458049c..705981f75079 100644 --- a/core/tests/Drupal/KernelTests/Core/Test/PhpUnitTestDiscoveryTest.php +++ b/core/tests/Drupal/KernelTests/Core/Test/PhpUnitTestDiscoveryTest.php @@ -7,8 +7,6 @@ namespace Drupal\KernelTests\Core\Test; use Drupal\Core\Test\TestDiscovery; use Drupal\KernelTests\KernelTestBase; use Drupal\TestTools\PhpUnitCompatibility\RunnerVersion; -use PHPUnit\Framework\Attributes\Group; -use PHPUnit\Framework\Attributes\IgnoreDeprecations; use PHPUnit\TextUI\Configuration\Builder; use PHPUnit\TextUI\Configuration\TestSuiteBuilder; use Symfony\Component\Process\Process; @@ -24,10 +22,11 @@ use Symfony\Component\Process\Process; * list thus generated, with the list generated by * \Drupal\Core\Test\TestDiscovery, which is used by run-tests.sh, to ensure * both methods will run the same tests, + * + * @group TestSuites + * @group Test + * @group #slow */ -#[Group('TestSuites')] -#[Group('Test')] -#[Group('#slow')] class PhpUnitTestDiscoveryTest extends KernelTestBase { private const TEST_LIST_MISMATCH_MESSAGE = @@ -62,7 +61,6 @@ class PhpUnitTestDiscoveryTest extends KernelTestBase { /** * Tests equality of test discovery between run-tests.sh and PHPUnit CLI. */ - #[IgnoreDeprecations] public function testPhpUnitTestDiscoveryEqualsInternal(): void { // Drupal's test discovery, used by run-tests.sh. $testDiscovery = new TestDiscovery( @@ -78,19 +76,11 @@ class PhpUnitTestDiscoveryTest extends KernelTestBase { $internalList = array_unique($internalList); asort($internalList); - // Location of PHPUnit configuration file. - $configurationFilePath = $this->root . \DIRECTORY_SEPARATOR . 'core'; - // @todo once PHPUnit 10 is no longer used, remove the condition. - // @see https://www.drupal.org/project/drupal/issues/3497116 - if (RunnerVersion::getMajor() >= 11) { - $configurationFilePath .= \DIRECTORY_SEPARATOR . '.phpunit-next.xml'; - } - // PHPUnit's test discovery - via CLI execution. $process = new Process([ 'vendor/bin/phpunit', '--configuration', - $configurationFilePath, + 'core', '--list-tests-xml', $this->xmlOutputFile, ], $this->root); @@ -123,8 +113,14 @@ class PhpUnitTestDiscoveryTest extends KernelTestBase { // Check against Drupal's discovery. $this->assertEquals(implode("\n", $phpUnitClientList), implode("\n", $internalList), self::TEST_LIST_MISMATCH_MESSAGE); + // @todo once PHPUnit 10 is no longer used re-enable the rest of the test. + // @see https://www.drupal.org/project/drupal/issues/3497116 + if (RunnerVersion::getMajor() >= 11) { + $this->markTestIncomplete('On PHPUnit 11+ the test triggers warnings due to phpunit.xml setup. Re-enable in https://www.drupal.org/project/drupal/issues/3497116.'); + } + // PHPUnit's test discovery - via API. - $phpUnitConfiguration = (new Builder())->build(['--configuration', $configurationFilePath]); + $phpUnitConfiguration = (new Builder())->build(['--configuration', 'core']); $phpUnitTestSuite = (new TestSuiteBuilder())->build($phpUnitConfiguration); $phpUnitApiList = []; foreach ($phpUnitTestSuite->tests() as $testSuite) { diff --git a/core/modules/block_content/tests/src/Unit/Access/AccessGroupAndTest.php b/core/tests/Drupal/Tests/Core/Access/AccessGroupAndTest.php index b9fd73b49fa6..c3116c6f4988 100644 --- a/core/modules/block_content/tests/src/Unit/Access/AccessGroupAndTest.php +++ b/core/tests/Drupal/Tests/Core/Access/AccessGroupAndTest.php @@ -2,9 +2,9 @@ declare(strict_types=1); -namespace Drupal\Tests\block_content\Unit\Access; +namespace Drupal\Tests\Core\Access; -use Drupal\block_content\Access\AccessGroupAnd; +use Drupal\Core\Access\AccessGroupAnd; use Drupal\Core\Access\AccessResult; use Drupal\Core\Session\AccountInterface; use Drupal\Tests\UnitTestCase; @@ -12,7 +12,7 @@ use Drupal\Tests\UnitTestCase; /** * Tests accessible groups. * - * @group block_content + * @group Access */ class AccessGroupAndTest extends UnitTestCase { @@ -27,7 +27,7 @@ class AccessGroupAndTest extends UnitTestCase { } /** - * @covers \Drupal\block_content\Access\AccessGroupAnd + * @covers \Drupal\Core\Access\AccessGroupAnd */ public function testGroups(): void { $allowedAccessible = $this->createAccessibleDouble(AccessResult::allowed()); diff --git a/core/modules/block_content/tests/src/Unit/Access/AccessibleTestingTrait.php b/core/tests/Drupal/Tests/Core/Access/AccessibleTestingTrait.php index a407e2388754..cf6d663a91a7 100644 --- a/core/modules/block_content/tests/src/Unit/Access/AccessibleTestingTrait.php +++ b/core/tests/Drupal/Tests/Core/Access/AccessibleTestingTrait.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Drupal\Tests\block_content\Unit\Access; +namespace Drupal\Tests\Core\Access; use Drupal\Core\Access\AccessibleInterface; use Drupal\Core\Access\AccessResultInterface; diff --git a/core/modules/block_content/tests/src/Unit/Access/DependentAccessTest.php b/core/tests/Drupal/Tests/Core/Access/DependentAccessTest.php index 55c9a89a10ca..43e924087ab3 100644 --- a/core/modules/block_content/tests/src/Unit/Access/DependentAccessTest.php +++ b/core/tests/Drupal/Tests/Core/Access/DependentAccessTest.php @@ -2,19 +2,19 @@ declare(strict_types=1); -namespace Drupal\Tests\block_content\Unit\Access; +namespace Drupal\Tests\Core\Access; -use Drupal\block_content\Access\AccessGroupAnd; +use Drupal\Core\Access\AccessGroupAnd; use Drupal\Core\Access\AccessResult; -use Drupal\block_content\Access\RefinableDependentAccessInterface; -use Drupal\block_content\Access\RefinableDependentAccessTrait; +use Drupal\Core\Access\RefinableDependentAccessInterface; +use Drupal\Core\Access\RefinableDependentAccessTrait; use Drupal\Core\Session\AccountInterface; use Drupal\Tests\UnitTestCase; /** - * @coversDefaultClass \Drupal\block_content\Access\RefinableDependentAccessTrait + * @coversDefaultClass \Drupal\Core\Access\RefinableDependentAccessTrait * - * @group block_content + * @group Access */ class DependentAccessTest extends UnitTestCase { use AccessibleTestingTrait; @@ -91,7 +91,7 @@ class DependentAccessTest extends UnitTestCase { $this->assertEquals('Because I said so', $accessResult->getReason()); $testRefinable->addAccessDependency($this->neutral); - /** @var \Drupal\block_content\Access\AccessGroupAnd $dependency */ + /** @var \Drupal\Core\Access\AccessGroupAnd $dependency */ $dependency = $testRefinable->getAccessDependency(); // Ensure the new dependency create a new AND group when merged. $this->assertInstanceOf(AccessGroupAnd::class, $dependency); @@ -121,7 +121,7 @@ class DependentAccessTest extends UnitTestCase { } $testRefinable->addAccessDependency($this->neutral); - /** @var \Drupal\block_content\Access\AccessGroupAnd $dependency */ + /** @var \Drupal\Core\Access\AccessGroupAnd $dependency */ $dependency = $testRefinable->getAccessDependency(); // Ensure the new dependency is merged with the existing group. @@ -142,7 +142,7 @@ class DependentAccessTest extends UnitTestCase { * mergeAccessDependency() first. A call to either should behave the same on a * new RefinableDependentAccessInterface object. */ - public static function providerTestSetFirst() { + public static function providerTestSetFirst(): array { return [ [TRUE], [FALSE], diff --git a/core/tests/Drupal/Tests/Core/DependencyInjection/Compiler/BackendCompilerPassTest.php b/core/tests/Drupal/Tests/Core/DependencyInjection/Compiler/BackendCompilerPassTest.php index c910a3c99c77..7af0c490d074 100644 --- a/core/tests/Drupal/Tests/Core/DependencyInjection/Compiler/BackendCompilerPassTest.php +++ b/core/tests/Drupal/Tests/Core/DependencyInjection/Compiler/BackendCompilerPassTest.php @@ -4,8 +4,10 @@ declare(strict_types=1); namespace Drupal\Tests\Core\DependencyInjection\Compiler; +use Drupal\Core\Database\Connection; use Drupal\Core\DependencyInjection\Compiler\BackendCompilerPass; use Drupal\Tests\UnitTestCase; +use PHPUnit\Framework\MockObject\MockObject; use Symfony\Component\DependencyInjection\Alias; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Definition; @@ -92,6 +94,16 @@ class BackendCompilerPassTest extends UnitTestCase { $container->setDefinition('DriverTestMysql.service', new Definition(__NAMESPACE__ . '\\ServiceClassDriverTestMysql')); $this->backendPass->process($container); $this->assertEquals($prefix . 'DriverTestMysql', get_class($container->get('service'))); + + // Verify that if the container has a default_backend parameter, + // and there is a service named ".my-service", the right alias is created. + $container = $this->getMockDriverContainerWithDefaultBackendParameterArgumentAndDotPrefixedService(); + $this->backendPass->process($container); + + // Verify that if the db service returns no driver, no invalid aliases are + // created. + $container = $this->getMockDriverContainerWithNullDriverBackend(); + $this->backendPass->process($container); } /** @@ -154,6 +166,82 @@ class BackendCompilerPassTest extends UnitTestCase { return $container; } + /** + * Creates a container with a database mock definition in it. + * + * This mock won't declare a driver nor databaseType to ensure no invalid + * aliases are set. + * + * @return \Symfony\Component\DependencyInjection\ContainerBuilder + * The container with a mock database service in it. + */ + protected function getMockDriverContainerWithNullDriverBackend(): ContainerBuilder&MockObject { + $container = $this->getMockBuilder(ContainerBuilder::class)->getMock(); + $mock = $this->getMockBuilder(Connection::class)->disableOriginalConstructor()->getMock(); + $mock->expects($this->once()) + ->method('driver') + ->willReturn(NULL); + $mock->expects($this->once()) + ->method('databaseType') + ->willReturn(NULL); + $container->expects($this->any()) + ->method('get') + ->with('database') + ->willReturn($mock); + $container->expects($this->once()) + ->method('findTaggedServiceIds') + ->willReturn(['fakeService' => ['class' => 'fakeServiceClass']]); + $container->expects($this->never()) + ->method('hasDefinition') + ->with('.fakeService') + ->willReturn(TRUE); + $container->expects($this->never()) + ->method('setAlias'); + return $container; + } + + /** + * Creates a container with a database mock definition in it. + * + * This mock container has a default_backend parameter and a dot-prefixed + * service to verify the right aliases are set. + * + * @return \Symfony\Component\DependencyInjection\ContainerBuilder + * The container with a mock database service in it. + */ + protected function getMockDriverContainerWithDefaultBackendParameterArgumentAndDotPrefixedService(): ContainerBuilder&MockObject { + $container = $this->getMockBuilder(ContainerBuilder::class)->getMock(); + $container->expects($this->once()) + ->method('hasParameter') + ->with('default_backend') + ->willReturn(TRUE); + $container->expects($this->once()) + ->method('getParameter') + ->with('default_backend') + ->willReturn('a_valid_default_backend'); + + $mock = $this->getMockBuilder(Connection::class)->disableOriginalConstructor()->getMock(); + $mock->expects($this->never()) + ->method('driver'); + $mock->expects($this->never()) + ->method('databaseType'); + $container->expects($this->any()) + ->method('get') + ->with('database') + ->willReturn($mock); + $container->expects($this->once()) + ->method('findTaggedServiceIds') + ->willReturn(['fakeService' => ['class' => 'fakeServiceClass']]); + $container->expects($this->once()) + ->method('hasDefinition') + ->with('a_valid_default_backend.fakeService') + ->willReturn(TRUE); + $container->expects($this->once()) + ->method('setAlias') + ->with('fakeService', new Alias('a_valid_default_backend.fakeService')); + return $container; + } + } /** diff --git a/core/tests/Drupal/Tests/Core/Menu/LocalActionManagerTest.php b/core/tests/Drupal/Tests/Core/Menu/LocalActionManagerTest.php index d0759a4bf082..08fa2eceaf54 100644 --- a/core/tests/Drupal/Tests/Core/Menu/LocalActionManagerTest.php +++ b/core/tests/Drupal/Tests/Core/Menu/LocalActionManagerTest.php @@ -203,8 +203,6 @@ class LocalActionManagerTest extends UnitTestCase { } public static function getActionsForRouteProvider() { - $originalContainer = \Drupal::hasContainer() ? \Drupal::getContainer() : NULL; - $cache_contexts_manager = (new Prophet())->prophesize(CacheContextsManager::class); $cache_contexts_manager->assertValidTokens(Argument::any()) ->willReturn(TRUE); @@ -386,11 +384,6 @@ class LocalActionManagerTest extends UnitTestCase { ], ]; - // Restore the original container if needed. - if ($originalContainer) { - \Drupal::setContainer($originalContainer); - } - return $data; } diff --git a/core/tests/Drupal/Tests/Core/Test/RunTests/TestFileParserTest.php b/core/tests/Drupal/Tests/Core/Test/RunTests/TestFileParserTest.php index 9138d54523d6..957b2f61f97b 100644 --- a/core/tests/Drupal/Tests/Core/Test/RunTests/TestFileParserTest.php +++ b/core/tests/Drupal/Tests/Core/Test/RunTests/TestFileParserTest.php @@ -6,18 +6,12 @@ namespace Drupal\Tests\Core\Test\RunTests; use Drupal\Core\Test\RunTests\TestFileParser; use Drupal\Tests\UnitTestCase; -use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\DataProvider; -use PHPUnit\Framework\Attributes\Group; -use PHPUnit\Framework\Attributes\IgnoreDeprecations; /** - * Tests for the deprecated TestFileParser class. + * @coversDefaultClass \Drupal\Core\Test\RunTests\TestFileParser + * @group Test + * @group RunTests */ -#[CoversClass(TestFileParser::class)] -#[Group('Test')] -#[Group('RunTest')] -#[IgnoreDeprecations] class TestFileParserTest extends UnitTestCase { public static function provideTestFileContents() { @@ -72,9 +66,9 @@ COMPOUND } /** - * @legacy-covers ::parseContents + * @covers ::parseContents + * @dataProvider provideTestFileContents */ - #[DataProvider('provideTestFileContents')] public function testParseContents($expected, $contents): void { $parser = new TestFileParser(); @@ -84,7 +78,7 @@ COMPOUND } /** - * @legacy-covers ::getTestListFromFile + * @covers ::getTestListFromFile */ public function testGetTestListFromFile(): void { $parser = new TestFileParser(); diff --git a/core/tests/Drupal/Tests/Core/Test/TestDiscoveryTest.php b/core/tests/Drupal/Tests/Core/Test/TestDiscoveryTest.php index 0fb55e6c7f8a..bfbb4ca2e40d 100644 --- a/core/tests/Drupal/Tests/Core/Test/TestDiscoveryTest.php +++ b/core/tests/Drupal/Tests/Core/Test/TestDiscoveryTest.php @@ -13,23 +13,17 @@ use Drupal\Core\Test\Exception\MissingGroupException; use Drupal\Core\Test\TestDiscovery; use Drupal\Tests\UnitTestCase; use org\bovigo\vfs\vfsStream; -use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\DataProvider; -use PHPUnit\Framework\Attributes\Group; -use PHPUnit\Framework\Attributes\IgnoreDeprecations; /** - * Unit tests for TestDiscovery. + * @coversDefaultClass \Drupal\Core\Test\TestDiscovery + * @group Test */ -#[CoversClass(TestDiscovery::class)] -#[Group('Test')] -#[IgnoreDeprecations] class TestDiscoveryTest extends UnitTestCase { /** - * @legacy-covers ::getTestInfo + * @covers ::getTestInfo + * @dataProvider infoParserProvider */ - #[DataProvider('infoParserProvider')] public function testTestInfoParser($expected, $classname, $doc_comment = NULL): void { $info = TestDiscovery::getTestInfo($classname, $doc_comment); $this->assertEquals($expected, $info); @@ -40,14 +34,14 @@ class TestDiscoveryTest extends UnitTestCase { $tests[] = [ // Expected result. [ - 'name' => TestDatabaseTest::class, + 'name' => static::class, 'group' => 'Test', - 'groups' => ['Test', 'simpletest', 'Template'], - 'description' => 'Tests \Drupal\Core\Test\TestDatabase.', + 'groups' => ['Test'], + 'description' => 'Tests \Drupal\Core\Test\TestDiscovery.', 'type' => 'PHPUnit-Unit', ], // Classname. - TestDatabaseTest::class, + static::class, ]; // A core unit test. @@ -223,7 +217,7 @@ class TestDiscoveryTest extends UnitTestCase { } /** - * @legacy-covers ::getTestInfo + * @covers ::getTestInfo */ public function testTestInfoParserMissingGroup(): void { $classname = 'Drupal\KernelTests\field\BulkDeleteTest'; @@ -238,7 +232,7 @@ EOT; } /** - * @legacy-covers ::getTestInfo + * @covers ::getTestInfo */ public function testTestInfoParserMissingSummary(): void { $classname = 'Drupal\KernelTests\field\BulkDeleteTest'; @@ -317,7 +311,7 @@ EOF; } /** - * @legacy-covers ::getTestClasses + * @covers ::getTestClasses */ public function testGetTestClasses(): void { $this->setupVfsWithTestClasses(); @@ -386,7 +380,7 @@ EOF; } /** - * @legacy-covers ::getTestClasses + * @covers ::getTestClasses */ public function testGetTestClassesWithSelectedTypes(): void { $this->setupVfsWithTestClasses(); @@ -431,7 +425,7 @@ EOF; } /** - * @legacy-covers ::getTestClasses + * @covers ::getTestClasses */ public function testGetTestsInProfiles(): void { $this->setupVfsWithTestClasses(); @@ -460,9 +454,9 @@ EOF; } /** - * @legacy-covers ::getPhpunitTestSuite + * @covers ::getPhpunitTestSuite + * @dataProvider providerTestGetPhpunitTestSuite */ - #[DataProvider('providerTestGetPhpunitTestSuite')] public function testGetPhpunitTestSuite($classname, $expected): void { $this->assertEquals($expected, TestDiscovery::getPhpunitTestSuite($classname)); } @@ -488,7 +482,7 @@ EOF; /** * Ensure that classes are not reflected when the docblock is empty. * - * @legacy-covers ::getTestInfo + * @covers ::getTestInfo */ public function testGetTestInfoEmptyDocblock(): void { // If getTestInfo() performed reflection, it won't be able to find the @@ -503,7 +497,7 @@ EOF; /** * Ensure TestDiscovery::scanDirectory() ignores certain abstract file types. * - * @legacy-covers ::scanDirectory + * @covers ::scanDirectory */ public function testScanDirectoryNoAbstract(): void { $this->setupVfsWithTestClasses(); diff --git a/core/tests/Drupal/Tests/Core/Theme/Component/ComponentMetadataTest.php b/core/tests/Drupal/Tests/Core/Theme/Component/ComponentMetadataTest.php index 4e0555eb2ae8..6d24143339e6 100644 --- a/core/tests/Drupal/Tests/Core/Theme/Component/ComponentMetadataTest.php +++ b/core/tests/Drupal/Tests/Core/Theme/Component/ComponentMetadataTest.php @@ -4,9 +4,11 @@ declare(strict_types=1); namespace Drupal\Tests\Core\Theme\Component; +use Drupal\Core\DependencyInjection\ContainerBuilder; use Drupal\Core\Theme\Component\ComponentMetadata; use Drupal\Core\Render\Component\Exception\InvalidComponentException; use Drupal\Tests\UnitTestCaseTest; +use PHPUnit\Framework\Attributes\DataProvider; /** * Unit tests for the component metadata class. @@ -18,10 +20,13 @@ class ComponentMetadataTest extends UnitTestCaseTest { /** * Tests that the correct data is returned for each property. - * - * @dataProvider dataProviderMetadata */ - public function testMetadata(array $metadata_info, array $expectations): void { + #[DataProvider('dataProviderMetadata')] + public function testMetadata(array $metadata_info, array $expectations, bool $missing_schema, ?\Throwable $expectedException = NULL): void { + if ($expectedException !== NULL) { + $this->expectException($expectedException::class); + $this->expectExceptionMessage($expectedException->getMessage()); + } $metadata = new ComponentMetadata($metadata_info, 'foo/', FALSE); $this->assertSame($expectations['path'], $metadata->path); $this->assertSame($expectations['status'], $metadata->status); @@ -31,18 +36,23 @@ class ComponentMetadataTest extends UnitTestCaseTest { /** * Tests the correct checks when enforcing schemas or not. - * - * @dataProvider dataProviderMetadata */ - public function testMetadataEnforceSchema(array $metadata_info, array $expectations, bool $missing_schema): void { + #[DataProvider('dataProviderMetadata')] + public function testMetadataEnforceSchema(array $metadata_info, array $expectations, bool $missing_schema, ?\Throwable $expected_exception = NULL): void { if ($missing_schema) { $this->expectException(InvalidComponentException::class); $this->expectExceptionMessage('The component "' . $metadata_info['id'] . '" does not provide schema information. Schema definitions are mandatory for components declared in modules. For components declared in themes, schema definitions are only mandatory if the "enforce_prop_schemas" key is set to "true" in the theme info file.'); new ComponentMetadata($metadata_info, 'foo/', TRUE); } else { + if ($expected_exception !== NULL) { + $this->expectException($expected_exception::class); + $this->expectExceptionMessage($expected_exception->getMessage()); + } new ComponentMetadata($metadata_info, 'foo/', TRUE); - $this->expectNotToPerformAssertions(); + if ($expected_exception === NULL) { + $this->expectNotToPerformAssertions(); + } } } @@ -71,7 +81,7 @@ class ComponentMetadataTest extends UnitTestCaseTest { ], TRUE, ], - 'complete example with schema' => [ + 'complete example with schema, but no meta:enum' => [ [ '$schema' => 'https://git.drupalcode.org/project/drupal/-/raw/HEAD/core/assets/schemas/v1/metadata.schema.json', 'id' => 'core:my-button', @@ -136,7 +146,321 @@ class ComponentMetadataTest extends UnitTestCaseTest { ], FALSE, ], + 'complete example with schema, but no matching meta:enum' => [ + [ + '$schema' => 'https://git.drupalcode.org/project/drupal/-/raw/HEAD/core/assets/schemas/v1/metadata.schema.json', + 'id' => 'core:my-button', + 'machineName' => 'my-button', + 'path' => 'foo/my-other/path', + 'name' => 'Button', + 'description' => 'JavaScript enhanced button that tracks the number of times a user clicked it.', + 'libraryOverrides' => ['dependencies' => ['core/drupal']], + 'group' => 'my-group', + 'props' => [ + 'type' => 'object', + 'required' => ['text'], + 'properties' => [ + 'text' => [ + 'type' => 'string', + 'title' => 'Title', + 'description' => 'The title for the button', + 'minLength' => 2, + 'examples' => ['Press', 'Submit now'], + ], + 'iconType' => [ + 'type' => 'string', + 'title' => 'Icon Type', + 'enum' => [ + 'power', + 'like', + 'external', + ], + 'meta:enum' => [ + 'power' => 'Power', + 'fav' => 'Favorite', + 'external' => 'External', + ], + ], + ], + ], + ], + [ + 'path' => 'my-other/path', + 'status' => 'stable', + 'thumbnail' => '', + 'group' => 'my-group', + 'additionalProperties' => FALSE, + 'props' => [ + 'type' => 'object', + 'required' => ['text'], + 'additionalProperties' => FALSE, + 'properties' => [ + 'text' => [ + 'type' => ['string', 'object'], + 'title' => 'Title', + 'description' => 'The title for the button', + 'minLength' => 2, + 'examples' => ['Press', 'Submit now'], + ], + 'iconType' => [ + 'type' => ['string', 'object'], + 'title' => 'Icon Type', + 'enum' => [ + 'power', + 'like', + 'external', + ], + 'meta:enum' => [ + 'power' => 'Power', + 'fav' => 'Favorite', + 'external' => 'External', + ], + ], + ], + ], + ], + FALSE, + new InvalidComponentException('The values for the iconType prop enum in component core:my-button must be defined in meta:enum.'), + ], + 'complete example with schema (including meta:enum)' => [ + [ + '$schema' => 'https://git.drupalcode.org/project/drupal/-/raw/HEAD/core/assets/schemas/v1/metadata.schema.json', + 'id' => 'core:my-button', + 'machineName' => 'my-button', + 'path' => 'foo/my-other/path', + 'name' => 'Button', + 'description' => 'JavaScript enhanced button that tracks the number of times a user clicked it.', + 'libraryOverrides' => ['dependencies' => ['core/drupal']], + 'group' => 'my-group', + 'props' => [ + 'type' => 'object', + 'required' => ['text'], + 'properties' => [ + 'text' => [ + 'type' => 'string', + 'title' => 'Title', + 'description' => 'The title for the button', + 'minLength' => 2, + 'examples' => ['Press', 'Submit now'], + ], + 'iconType' => [ + 'type' => 'string', + 'title' => 'Icon Type', + 'enum' => [ + 'power', + 'like', + 'external', + ], + 'meta:enum' => [ + 'power' => 'Power', + 'like' => 'Like', + 'external' => 'External', + ], + ], + ], + ], + ], + [ + 'path' => 'my-other/path', + 'status' => 'stable', + 'thumbnail' => '', + 'group' => 'my-group', + 'additionalProperties' => FALSE, + 'props' => [ + 'type' => 'object', + 'required' => ['text'], + 'additionalProperties' => FALSE, + 'properties' => [ + 'text' => [ + 'type' => ['string', 'object'], + 'title' => 'Title', + 'description' => 'The title for the button', + 'minLength' => 2, + 'examples' => ['Press', 'Submit now'], + ], + 'iconType' => [ + 'type' => ['string', 'object'], + 'title' => 'Icon Type', + 'enum' => [ + 'power', + 'like', + 'external', + ], + 'meta:enum' => [ + 'power' => 'Power', + 'like' => 'Like', + 'external' => 'External', + ], + ], + ], + ], + ], + FALSE, + ], + 'complete example with schema (including meta:enum and x-translation-context)' => [ + [ + '$schema' => 'https://git.drupalcode.org/project/drupal/-/raw/HEAD/core/assets/schemas/v1/metadata.schema.json', + 'id' => 'core:my-button', + 'machineName' => 'my-button', + 'path' => 'foo/my-other/path', + 'name' => 'Button', + 'description' => 'JavaScript enhanced button that tracks the number of times a user clicked it.', + 'libraryOverrides' => ['dependencies' => ['core/drupal']], + 'group' => 'my-group', + 'props' => [ + 'type' => 'object', + 'required' => ['text'], + 'properties' => [ + 'text' => [ + 'type' => 'string', + 'title' => 'Title', + 'description' => 'The title for the button', + 'minLength' => 2, + 'examples' => ['Press', 'Submit now'], + ], + 'iconType' => [ + 'type' => 'string', + 'title' => 'Icon Type', + 'enum' => [ + 'power', + 'like', + 'external', + ], + 'meta:enum' => [ + 'power' => 'Power', + 'like' => 'Like', + 'external' => 'External', + ], + 'x-translation-context' => 'Icon Type', + ], + ], + ], + ], + [ + 'path' => 'my-other/path', + 'status' => 'stable', + 'thumbnail' => '', + 'group' => 'my-group', + 'additionalProperties' => FALSE, + 'props' => [ + 'type' => 'object', + 'required' => ['text'], + 'additionalProperties' => FALSE, + 'properties' => [ + 'text' => [ + 'type' => ['string', 'object'], + 'title' => 'Title', + 'description' => 'The title for the button', + 'minLength' => 2, + 'examples' => ['Press', 'Submit now'], + ], + 'iconType' => [ + 'type' => ['string', 'object'], + 'title' => 'Icon Type', + 'enum' => [ + 'power', + 'like', + 'external', + ], + 'meta:enum' => [ + 'power' => 'Power', + 'like' => 'Like', + 'external' => 'External', + ], + 'x-translation-context' => 'Icon Type', + ], + ], + ], + ], + FALSE, + ], + ]; + } + + public static function dataProviderEnumOptionsMetadata(): array { + $common_schema = [ + '$schema' => 'https://git.drupalcode.org/project/drupal/-/raw/HEAD/core/assets/schemas/v1/metadata.schema.json', + 'id' => 'core:my-button', + 'machineName' => 'my-button', + 'path' => 'foo/my-other/path', + 'name' => 'Button', + ]; + return [ + 'no meta:enum' => [$common_schema + + [ + 'props' => [ + 'type' => 'object', + 'required' => ['text'], + 'properties' => [ + 'iconType' => [ + 'type' => 'string', + 'title' => 'Icon Type', + 'enum' => [ + 'power', + 'like', + 'external', + ], + ], + ], + ], + ], + 'iconType', + [ + 'power' => 'power', + 'like' => 'like', + 'external' => 'external', + ], + '', + ], + 'meta:enum, with x-translation-context' => [$common_schema + + [ + 'props' => [ + 'type' => 'object', + 'required' => ['text'], + 'properties' => [ + 'target' => [ + 'type' => 'string', + 'title' => 'Icon Type', + 'enum' => [ + '', + '_blank', + ], + 'meta:enum' => [ + '' => 'Opens in same window', + '_blank' => 'Opens in new window', + ], + 'x-translation-context' => 'Link target', + ], + ], + ], + ], + 'target', + [ + '' => 'Opens in same window', + '_blank' => 'Opens in new window', + ], + 'Link target', + ], ]; } + /** + * @covers ::getEnumOptions + */ + #[DataProvider('dataProviderEnumOptionsMetadata')] + public function testGetEnumOptions(array $metadata_info, string $prop_name, array $expected_values, string $expected_context): void { + $translation = $this->getStringTranslationStub(); + $container = new ContainerBuilder(); + $container->set('string_translation', $translation); + \Drupal::setContainer($container); + + $component_metadata = new ComponentMetadata($metadata_info, 'foo/', TRUE); + $options = $component_metadata->getEnumOptions($prop_name); + $rendered_options = array_map(fn($value) => (string) $value, $options); + $this->assertSame($expected_values, $rendered_options); + foreach ($options as $translatable) { + $this->assertSame($expected_context, $translatable->getOption('context')); + } + } + } diff --git a/core/themes/claro/css/base/variables.css b/core/themes/claro/css/base/variables.css index af4f053bd3b9..54cb0e5becd0 100644 --- a/core/themes/claro/css/base/variables.css +++ b/core/themes/claro/css/base/variables.css @@ -12,9 +12,9 @@ --color-white: #fff; --color-text: var(--color-gray); --color-text-light: var(--color-gray-500); - --color-gray-050-o-40: rgba(243, 244, 249, 0.4); + --color-gray-050-o-40: rgb(243, 244, 249, 0.4); /* Secondary. */ - --color-gray-200-o-80: rgba(212, 212, 218, 0.8); + --color-gray-200-o-80: rgb(212, 212, 218, 0.8); --color-maximumred: var(--color-red-500); --color-sunglow: #ffd23f; --color-sunglow-shaded: #977405; @@ -80,7 +80,7 @@ --color-link: var(--color-absolutezero); --color-link-hover: var(--color-absolutezero-hover); --color-link-active: var(--color-absolutezero-active); - --color-divider: rgba(142, 146, 156, 0.5); + --color-divider: rgb(142, 146, 156, 0.5); /* * Typography. */ @@ -124,7 +124,7 @@ /** * Shadows. */ - --shadow-z3: 0 0.875rem 1.875rem rgba(0, 0, 0, 0.1); + --shadow-z3: 0 0.875rem 1.875rem rgb(0, 0, 0, 0.1); /* * Inputs. */ @@ -137,7 +137,7 @@ --input--focus-border-color: var(--color-absolutezero); --input--error-color: var(--color-maximumred); --input--error-border-color: var(--color-maximumred); - --input--disabled-color: rgba(84, 85, 96, 0.6); /* Davy's gray with 0.6 opacity. */ + --input--disabled-color: rgb(84, 85, 96, 0.6); /* Davy's gray with 0.6 opacity. */ --input--disabled-fg-color: var(--color-gray-800); --input--disabled-bg-color: #f2f2f3; /* Light gray with 0.3 opacity on white bg. */ --input--disabled-border-color: #bababf; /* Old silver with 0.5 opacity on white bg. */ @@ -166,7 +166,7 @@ --details-summary-shadow-color: var(--color-focus); --details-summary-focus-border-size: var(--focus-border-size); --details-desktop-wrapper-padding-start: calc(var(--space-m) + var(--space-s) + var(--space-xs)); - --details-box-shadow: 0 2px 0.25rem rgba(0, 0, 0, 0.1); + --details-box-shadow: 0 2px 0.25rem rgb(0, 0, 0, 0.1); --details-border-size: 1px; --details-border-size-radius: 2px; --details-accordion-border-size-radius: var(--base-border-radius); @@ -205,8 +205,8 @@ --jui-dropdown-bg-color: var(--color-white); --jui-dropdown--active-fg-color: var(--color-white); --jui-dropdown--active-bg-color: var(--color-absolutezero); - --jui-dropdown-border-color: rgba(216, 217, 224, 0.8); /* Light gray with 0.8 opacity. */ - --jui-dropdown-shadow-color: rgba(34, 35, 48, 0.1); /* Text color with 0.1 opacity. */ + --jui-dropdown-border-color: rgb(216, 217, 224, 0.8); /* Light gray with 0.8 opacity. */ + --jui-dropdown-shadow-color: rgb(34, 35, 48, 0.1); /* Text color with 0.1 opacity. */ /** * jQuery.UI dialog. */ diff --git a/core/themes/claro/css/base/variables.pcss.css b/core/themes/claro/css/base/variables.pcss.css index 5376e30b1d81..30b0e12a8f61 100644 --- a/core/themes/claro/css/base/variables.pcss.css +++ b/core/themes/claro/css/base/variables.pcss.css @@ -6,9 +6,9 @@ --color-white: #fff; --color-text: var(--color-gray); --color-text-light: var(--color-gray-500); - --color-gray-050-o-40: rgba(243, 244, 249, 0.4); + --color-gray-050-o-40: rgb(243, 244, 249, 0.4); /* Secondary. */ - --color-gray-200-o-80: rgba(212, 212, 218, 0.8); + --color-gray-200-o-80: rgb(212, 212, 218, 0.8); --color-maximumred: var(--color-red-500); --color-sunglow: #ffd23f; --color-sunglow-shaded: #977405; @@ -74,7 +74,7 @@ --color-link: var(--color-absolutezero); --color-link-hover: var(--color-absolutezero-hover); --color-link-active: var(--color-absolutezero-active); - --color-divider: rgba(142, 146, 156, 0.5); + --color-divider: rgb(142, 146, 156, 0.5); /* * Typography. */ @@ -118,7 +118,7 @@ /** * Shadows. */ - --shadow-z3: 0 14px 30px rgba(0, 0, 0, 0.1); + --shadow-z3: 0 14px 30px rgb(0, 0, 0, 0.1); /* * Inputs. */ @@ -131,7 +131,7 @@ --input--focus-border-color: var(--color-absolutezero); --input--error-color: var(--color-maximumred); --input--error-border-color: var(--color-maximumred); - --input--disabled-color: rgba(84, 85, 96, 0.6); /* Davy's gray with 0.6 opacity. */ + --input--disabled-color: rgb(84, 85, 96, 0.6); /* Davy's gray with 0.6 opacity. */ --input--disabled-fg-color: var(--color-gray-800); --input--disabled-bg-color: #f2f2f3; /* Light gray with 0.3 opacity on white bg. */ --input--disabled-border-color: #bababf; /* Old silver with 0.5 opacity on white bg. */ @@ -160,7 +160,7 @@ --details-summary-shadow-color: var(--color-focus); --details-summary-focus-border-size: var(--focus-border-size); --details-desktop-wrapper-padding-start: calc(var(--space-m) + var(--space-s) + var(--space-xs)); - --details-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + --details-box-shadow: 0 2px 4px rgb(0, 0, 0, 0.1); --details-border-size: 1px; --details-border-size-radius: 2px; --details-accordion-border-size-radius: var(--base-border-radius); @@ -199,8 +199,8 @@ --jui-dropdown-bg-color: var(--color-white); --jui-dropdown--active-fg-color: var(--color-white); --jui-dropdown--active-bg-color: var(--color-absolutezero); - --jui-dropdown-border-color: rgba(216, 217, 224, 0.8); /* Light gray with 0.8 opacity. */ - --jui-dropdown-shadow-color: rgba(34, 35, 48, 0.1); /* Text color with 0.1 opacity. */ + --jui-dropdown-border-color: rgb(216, 217, 224, 0.8); /* Light gray with 0.8 opacity. */ + --jui-dropdown-shadow-color: rgb(34, 35, 48, 0.1); /* Text color with 0.1 opacity. */ /** * jQuery.UI dialog. */ diff --git a/core/themes/claro/css/components/button.css b/core/themes/claro/css/components/button.css index f7b56bb3923a..313472bba3b8 100644 --- a/core/themes/claro/css/components/button.css +++ b/core/themes/claro/css/components/button.css @@ -53,7 +53,7 @@ } .button:not(:focus) { - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 2px rgb(0, 0, 0, 0.25); } .button:hover { diff --git a/core/themes/claro/css/components/button.pcss.css b/core/themes/claro/css/components/button.pcss.css index 4500621d316d..136b9d293c6e 100644 --- a/core/themes/claro/css/components/button.pcss.css +++ b/core/themes/claro/css/components/button.pcss.css @@ -43,7 +43,7 @@ -webkit-font-smoothing: antialiased; /* 2 */ &:not(:focus) { - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 2px rgb(0, 0, 0, 0.25); } &:hover { diff --git a/core/themes/claro/css/components/card.css b/core/themes/claro/css/components/card.css index 9d35e7b6c542..ad5f509d29a9 100644 --- a/core/themes/claro/css/components/card.css +++ b/core/themes/claro/css/components/card.css @@ -16,7 +16,7 @@ --card-border-color: var(--color-gray-200-o-80); --card-border-radius-size: var(--base-border-radius); --card-image-border-radius-size: calc(var(--card-border-radius-size) - var(--card-border-size)); - --card-box-shadow: 0 0.25rem 0.625rem rgba(0, 0, 0, 0.1); + --card-box-shadow: 0 0.25rem 0.625rem rgb(0, 0, 0, 0.1); } .card { diff --git a/core/themes/claro/css/components/card.pcss.css b/core/themes/claro/css/components/card.pcss.css index 2f3db1770f9f..16e09714b87c 100644 --- a/core/themes/claro/css/components/card.pcss.css +++ b/core/themes/claro/css/components/card.pcss.css @@ -9,7 +9,7 @@ --card-border-color: var(--color-gray-200-o-80); --card-border-radius-size: var(--base-border-radius); --card-image-border-radius-size: calc(var(--card-border-radius-size) - var(--card-border-size)); - --card-box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1); + --card-box-shadow: 0 4px 10px rgb(0, 0, 0, 0.1); } .card { diff --git a/core/themes/claro/css/components/dropbutton.css b/core/themes/claro/css/components/dropbutton.css index e2e144c60d45..44a0d3e60d8a 100644 --- a/core/themes/claro/css/components/dropbutton.css +++ b/core/themes/claro/css/components/dropbutton.css @@ -41,7 +41,7 @@ .dropbutton-wrapper { display: inline-flex; border-radius: var(--button-border-radius-size); - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 2px rgb(0, 0, 0, 0.25); } .form-actions .dropbutton-wrapper, @@ -166,7 +166,7 @@ .dropbutton__toggle:hover { color: var(--button-fg-color); background-color: var(--button--hover-bg-color); - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.25); + box-shadow: 0 2px 4px rgb(0, 0, 0, 0.25); } .dropbutton__toggle:focus { @@ -288,7 +288,7 @@ text-decoration: none; color: var(--button-fg-color); background-color: var(--button--hover-bg-color); - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.25); + box-shadow: 0 2px 4px rgb(0, 0, 0, 0.25); } .dropbutton__item:first-of-type > *:focus:hover, @@ -355,7 +355,7 @@ .dropbutton__item:first-of-type ~ .dropbutton__item { border: var(--dropbutton-border-size) solid var(--color-gray-200); border-bottom: 0; - box-shadow: 0 2px 10px rgba(0, 0, 0, 0.15); + box-shadow: 0 2px 10px rgb(0, 0, 0, 0.15); } :is(.dropbutton__item:first-of-type ~ .dropbutton__item) ~ .dropbutton__item { @@ -386,7 +386,7 @@ border: var(--dropbutton-border-size) solid transparent !important; /* 1 */ border-radius: var(--dropbutton-border-radius-size); background: var(--color-white); - box-shadow: 0; + box-shadow: none; font-size: var(--dropbutton-font-size); font-weight: normal; line-height: var(--dropbutton-line-height); diff --git a/core/themes/claro/css/components/dropbutton.pcss.css b/core/themes/claro/css/components/dropbutton.pcss.css index 87cf45cb1aff..b7d8b7f057a0 100644 --- a/core/themes/claro/css/components/dropbutton.pcss.css +++ b/core/themes/claro/css/components/dropbutton.pcss.css @@ -34,7 +34,7 @@ .dropbutton-wrapper { display: inline-flex; border-radius: var(--button-border-radius-size); - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 2px rgb(0, 0, 0, 0.25); } .form-actions .dropbutton-wrapper, @@ -146,7 +146,7 @@ &:hover { color: var(--button-fg-color); background-color: var(--button--hover-bg-color); - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.25); + box-shadow: 0 2px 4px rgb(0, 0, 0, 0.25); } &:focus { z-index: 2; @@ -261,7 +261,7 @@ text-decoration: none; color: var(--button-fg-color); background-color: var(--button--hover-bg-color); - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.25); + box-shadow: 0 2px 4px rgb(0, 0, 0, 0.25); } & > *:focus:hover, @@ -325,7 +325,7 @@ .dropbutton__item:first-of-type ~ .dropbutton__item { border: var(--dropbutton-border-size) solid var(--color-gray-200); border-bottom: 0; - box-shadow: 0 2px 10px rgba(0, 0, 0, 0.15); + box-shadow: 0 2px 10px rgb(0, 0, 0, 0.15); & ~ .dropbutton__item { border-top: 0; } @@ -353,7 +353,7 @@ border: var(--dropbutton-border-size) solid transparent !important; /* 1 */ border-radius: var(--dropbutton-border-radius-size); background: var(--color-white); - box-shadow: 0; + box-shadow: none; font-size: var(--dropbutton-font-size); font-weight: normal; line-height: var(--dropbutton-line-height); diff --git a/core/themes/claro/css/components/form--text.css b/core/themes/claro/css/components/form--text.css index 643c8209221e..80b54bc6bd2b 100644 --- a/core/themes/claro/css/components/form--text.css +++ b/core/themes/claro/css/components/form--text.css @@ -47,6 +47,7 @@ .form-element--type-date, .form-element--type-time { + /* stylelint-disable-next-line declaration-property-value-no-unknown */ vertical-align: -webkit-baseline-middle; /* Prevent iOS input jump while filling. */ } diff --git a/core/themes/claro/css/components/form--text.pcss.css b/core/themes/claro/css/components/form--text.pcss.css index bbea06397a0d..737765a70ff7 100644 --- a/core/themes/claro/css/components/form--text.pcss.css +++ b/core/themes/claro/css/components/form--text.pcss.css @@ -38,6 +38,7 @@ */ .form-element--type-date, .form-element--type-time { + /* stylelint-disable-next-line declaration-property-value-no-unknown */ vertical-align: -webkit-baseline-middle; /* Prevent iOS input jump while filling. */ } .form-element--type-date { diff --git a/core/themes/claro/css/components/system-admin--modules.css b/core/themes/claro/css/components/system-admin--modules.css index ebf5216ad9a7..1c566a73b20e 100644 --- a/core/themes/claro/css/components/system-admin--modules.css +++ b/core/themes/claro/css/components/system-admin--modules.css @@ -20,7 +20,7 @@ padding: 0.25rem var(--space-l); border: 1px solid var(--color-gray-200); border-radius: 2px 2px 0 0; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + box-shadow: 0 2px 4px rgb(0, 0, 0, 0.1); } /* Visually hide the module filter input description. */ diff --git a/core/themes/claro/css/components/system-admin--modules.pcss.css b/core/themes/claro/css/components/system-admin--modules.pcss.css index 0e42fa310d1b..b442cb099543 100644 --- a/core/themes/claro/css/components/system-admin--modules.pcss.css +++ b/core/themes/claro/css/components/system-admin--modules.pcss.css @@ -13,7 +13,7 @@ padding: 0.25rem var(--space-l); border: 1px solid var(--color-gray-200); border-radius: 2px 2px 0 0; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + box-shadow: 0 2px 4px rgb(0, 0, 0, 0.1); } /* Visually hide the module filter input description. */ diff --git a/core/themes/claro/css/components/system-status-counter.css b/core/themes/claro/css/components/system-status-counter.css index 764a9176a6f9..2c2f0764adb3 100644 --- a/core/themes/claro/css/components/system-status-counter.css +++ b/core/themes/claro/css/components/system-status-counter.css @@ -36,8 +36,7 @@ background-size: 2.5rem; } [dir="rtl"] .system-status-counter__status-icon::before { - border-inline-end: 1px solid #e6e4df; - border-inline-start: 0; + background-position: left center; } @media (forced-colors: active) { .system-status-counter__status-icon::before { diff --git a/core/themes/claro/css/components/system-status-counter.pcss.css b/core/themes/claro/css/components/system-status-counter.pcss.css index f61ca3a374ae..7f9e7a4f9d74 100644 --- a/core/themes/claro/css/components/system-status-counter.pcss.css +++ b/core/themes/claro/css/components/system-status-counter.pcss.css @@ -31,8 +31,7 @@ background-size: 40px; [dir="rtl"] & { - border-inline-end: 1px solid #e6e4df; - border-inline-start: 0; + background-position: left center; } @media (forced-colors: active) { diff --git a/core/themes/claro/css/components/tabs.css b/core/themes/claro/css/components/tabs.css index 438e796d775a..8c575e2b2bae 100644 --- a/core/themes/claro/css/components/tabs.css +++ b/core/themes/claro/css/components/tabs.css @@ -20,8 +20,8 @@ --tabs-link-height: 3rem; /* 48px */ --tabs-secondary-link-height: 2.5rem; /* 40px */ --tabs-base-border: 1px solid var(--color-gray-200); - --tabs-base-shadow: 0 2px 0.25rem rgba(0, 0, 0, 0.1); - --tabs-trigger-border: 1px solid rgba(216, 217, 224, 0.8); + --tabs-base-shadow: 0 2px 0.25rem rgb(0, 0, 0, 0.1); + --tabs-trigger-border: 1px solid rgb(216, 217, 224, 0.8); --tabs--hover-bg-color: var(--color-bgblue-active); } diff --git a/core/themes/claro/css/components/tabs.pcss.css b/core/themes/claro/css/components/tabs.pcss.css index 25a46ffec5fa..81dcb7b65d25 100644 --- a/core/themes/claro/css/components/tabs.pcss.css +++ b/core/themes/claro/css/components/tabs.pcss.css @@ -13,8 +13,8 @@ --tabs-link-height: 3rem; /* 48px */ --tabs-secondary-link-height: 2.5rem; /* 40px */ --tabs-base-border: 1px solid var(--color-gray-200); - --tabs-base-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); - --tabs-trigger-border: 1px solid rgba(216, 217, 224, 0.8); + --tabs-base-shadow: 0 2px 4px rgb(0, 0, 0, 0.1); + --tabs-trigger-border: 1px solid rgb(216, 217, 224, 0.8); --tabs--hover-bg-color: var(--color-bgblue-active); } diff --git a/core/themes/claro/css/theme/toolbar.theme.css b/core/themes/claro/css/theme/toolbar.theme.css index 9285456847b9..ebb846490f57 100644 --- a/core/themes/claro/css/theme/toolbar.theme.css +++ b/core/themes/claro/css/theme/toolbar.theme.css @@ -14,10 +14,10 @@ font-family: "Source Sans Pro", "Lucida Grande", Verdana, sans-serif; /* Set base font size to 13px based on root ems. */ font-size: 0.8125rem; - -moz-tap-highlight-color: rgba(0, 0, 0, 0); - -o-tap-highlight-color: rgba(0, 0, 0, 0); - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); - tap-highlight-color: rgba(0, 0, 0, 0); + -moz-tap-highlight-color: rgb(0, 0, 0, 0); + -o-tap-highlight-color: rgb(0, 0, 0, 0); + -webkit-tap-highlight-color: rgb(0, 0, 0, 0); + tap-highlight-color: rgb(0, 0, 0, 0); -moz-touch-callout: none; -o-touch-callout: none; -webkit-touch-callout: none; @@ -41,10 +41,10 @@ .toolbar .toolbar-bar { color: #ddd; background-color: #0f0f0f; - box-shadow: -1px 0 3px 1px rgba(0, 0, 0, 0.3333); /* LTR */ + box-shadow: -1px 0 3px 1px rgb(0, 0, 0, 0.3333); /* LTR */ } [dir="rtl"] .toolbar .toolbar-bar { - box-shadow: 1px 0 3px 1px rgba(0, 0, 0, 0.3333); + box-shadow: 1px 0 3px 1px rgb(0, 0, 0, 0.3333); } .toolbar .toolbar-bar .toolbar-item { color: #fff; @@ -54,7 +54,7 @@ } .toolbar .toolbar-bar .toolbar-tab > .toolbar-item:hover, .toolbar .toolbar-bar .toolbar-tab > .toolbar-item:focus { - background-image: linear-gradient(rgba(255, 255, 255, 0.125) 20%, transparent 200%); + background-image: linear-gradient(rgb(255, 255, 255, 0.125) 20%, transparent 200%); } .toolbar .toolbar-bar .toolbar-tab > .toolbar-item.is-active { color: #000; @@ -77,19 +77,19 @@ .toolbar .toolbar-tray-vertical { border-right: 1px solid #aaa; /* LTR */ background-color: #f5f5f5; - box-shadow: -1px 0 5px 2px rgba(0, 0, 0, 0.3333); /* LTR */ + box-shadow: -1px 0 5px 2px rgb(0, 0, 0, 0.3333); /* LTR */ } [dir="rtl"] .toolbar .toolbar-tray-vertical { border-right: 0 none; border-left: 1px solid #aaa; - box-shadow: 1px 0 5px 2px rgba(0, 0, 0, 0.3333); + box-shadow: 1px 0 5px 2px rgb(0, 0, 0, 0.3333); } .toolbar-horizontal .toolbar-tray { border-bottom: 1px solid #aaa; - box-shadow: -2px 1px 3px 1px rgba(0, 0, 0, 0.3333); /* LTR */ + box-shadow: -2px 1px 3px 1px rgb(0, 0, 0, 0.3333); /* LTR */ } [dir="rtl"] .toolbar-horizontal .toolbar-tray { - box-shadow: 2px 1px 3px 1px rgba(0, 0, 0, 0.3333); + box-shadow: 2px 1px 3px 1px rgb(0, 0, 0, 0.3333); } .toolbar .toolbar-tray-horizontal .toolbar-tray { background-color: #f5f5f5; diff --git a/core/themes/claro/css/theme/toolbar.theme.pcss.css b/core/themes/claro/css/theme/toolbar.theme.pcss.css index c732bdb270c3..898fe544b49a 100644 --- a/core/themes/claro/css/theme/toolbar.theme.pcss.css +++ b/core/themes/claro/css/theme/toolbar.theme.pcss.css @@ -8,10 +8,10 @@ font-family: "Source Sans Pro", "Lucida Grande", Verdana, sans-serif; /* Set base font size to 13px based on root ems. */ font-size: 0.8125rem; - -moz-tap-highlight-color: rgba(0, 0, 0, 0); - -o-tap-highlight-color: rgba(0, 0, 0, 0); - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); - tap-highlight-color: rgba(0, 0, 0, 0); + -moz-tap-highlight-color: rgb(0, 0, 0, 0); + -o-tap-highlight-color: rgb(0, 0, 0, 0); + -webkit-tap-highlight-color: rgb(0, 0, 0, 0); + tap-highlight-color: rgb(0, 0, 0, 0); -moz-touch-callout: none; -o-touch-callout: none; -webkit-touch-callout: none; @@ -34,10 +34,10 @@ .toolbar .toolbar-bar { color: #ddd; background-color: #0f0f0f; - box-shadow: -1px 0 3px 1px rgba(0, 0, 0, 0.3333); /* LTR */ + box-shadow: -1px 0 3px 1px rgb(0, 0, 0, 0.3333); /* LTR */ } [dir="rtl"] .toolbar .toolbar-bar { - box-shadow: 1px 0 3px 1px rgba(0, 0, 0, 0.3333); + box-shadow: 1px 0 3px 1px rgb(0, 0, 0, 0.3333); } .toolbar .toolbar-bar .toolbar-item { color: #fff; @@ -47,7 +47,7 @@ } .toolbar .toolbar-bar .toolbar-tab > .toolbar-item:hover, .toolbar .toolbar-bar .toolbar-tab > .toolbar-item:focus { - background-image: linear-gradient(rgba(255, 255, 255, 0.125) 20%, transparent 200%); + background-image: linear-gradient(rgb(255, 255, 255, 0.125) 20%, transparent 200%); } .toolbar .toolbar-bar .toolbar-tab > .toolbar-item.is-active { color: #000; @@ -71,19 +71,19 @@ .toolbar .toolbar-tray-vertical { border-right: 1px solid #aaa; /* LTR */ background-color: #f5f5f5; - box-shadow: -1px 0 5px 2px rgba(0, 0, 0, 0.3333); /* LTR */ + box-shadow: -1px 0 5px 2px rgb(0, 0, 0, 0.3333); /* LTR */ } [dir="rtl"] .toolbar .toolbar-tray-vertical { border-right: 0 none; border-left: 1px solid #aaa; - box-shadow: 1px 0 5px 2px rgba(0, 0, 0, 0.3333); + box-shadow: 1px 0 5px 2px rgb(0, 0, 0, 0.3333); } .toolbar-horizontal .toolbar-tray { border-bottom: 1px solid #aaa; - box-shadow: -2px 1px 3px 1px rgba(0, 0, 0, 0.3333); /* LTR */ + box-shadow: -2px 1px 3px 1px rgb(0, 0, 0, 0.3333); /* LTR */ } [dir="rtl"] .toolbar-horizontal .toolbar-tray { - box-shadow: 2px 1px 3px 1px rgba(0, 0, 0, 0.3333); + box-shadow: 2px 1px 3px 1px rgb(0, 0, 0, 0.3333); } .toolbar .toolbar-tray-horizontal .toolbar-tray { background-color: #f5f5f5; diff --git a/core/themes/claro/css/theme/views_ui.admin.theme.css b/core/themes/claro/css/theme/views_ui.admin.theme.css index 50cbeabd2c41..f22f51fbcadf 100644 --- a/core/themes/claro/css/theme/views_ui.admin.theme.css +++ b/core/themes/claro/css/theme/views_ui.admin.theme.css @@ -46,12 +46,12 @@ background: linear-gradient(-90deg, #fff 0, #e8e8e8 100%) no-repeat, repeat-y; - box-shadow: 0 0 0 rgba(0, 0, 0, 0.3333) inset; + box-shadow: 0 0 0 rgb(0, 0, 0, 0.3333) inset; } .views-admin a.icon:hover { border-color: #d0d0d0; - box-shadow: 0 0 1px rgba(0, 0, 0, 0.3333) inset; + box-shadow: 0 0 1px rgb(0, 0, 0, 0.3333) inset; } .views-admin a.icon:active { @@ -582,7 +582,7 @@ td.group-title { padding: 0.3rem 0.8rem; border: 1px solid #dedfe4; border-radius: 2px 2px 0 0; - box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); + box-shadow: 0 4px 20px rgb(0, 0, 0, 0.1); } .views-ui-dialog .form-item-selected { @@ -611,7 +611,7 @@ td.group-title { width: 100%; height: 0.1875rem; content: ""; - background: linear-gradient(to bottom, rgba(80, 81, 86, 0.11) 0%, rgba(18, 19, 20, 0.02) 49%, rgba(18, 19, 20, 0) 100%); + background: linear-gradient(to bottom, rgb(80, 81, 86, 0.11) 0%, rgb(18, 19, 20, 0.02) 49%, rgb(18, 19, 20, 0) 100%); } .views-ui-dialog .views-offset-top > * { diff --git a/core/themes/claro/css/theme/views_ui.admin.theme.pcss.css b/core/themes/claro/css/theme/views_ui.admin.theme.pcss.css index 46c8e8b5e839..53271964bae2 100644 --- a/core/themes/claro/css/theme/views_ui.admin.theme.pcss.css +++ b/core/themes/claro/css/theme/views_ui.admin.theme.pcss.css @@ -33,11 +33,11 @@ background: linear-gradient(-90deg, #fff 0, #e8e8e8 100%) no-repeat, repeat-y; - box-shadow: 0 0 0 rgba(0, 0, 0, 0.3333) inset; + box-shadow: 0 0 0 rgb(0, 0, 0, 0.3333) inset; } .views-admin a.icon:hover { border-color: #d0d0d0; - box-shadow: 0 0 1px rgba(0, 0, 0, 0.3333) inset; + box-shadow: 0 0 1px rgb(0, 0, 0, 0.3333) inset; } .views-admin a.icon:active { border-color: #c0c0c0; @@ -474,7 +474,7 @@ td.group-title { padding: 0.3rem 0.8rem; border: 1px solid #dedfe4; border-radius: 2px 2px 0 0; - box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); + box-shadow: 0 4px 20px rgb(0, 0, 0, 0.1); } .views-ui-dialog .form-item-selected { margin: 0; @@ -498,7 +498,7 @@ td.group-title { width: 100%; height: 3px; content: ""; - background: linear-gradient(to bottom, rgba(80, 81, 86, 0.11) 0%, rgba(18, 19, 20, 0.02) 49%, rgba(18, 19, 20, 0) 100%); + background: linear-gradient(to bottom, rgb(80, 81, 86, 0.11) 0%, rgb(18, 19, 20, 0.02) 49%, rgb(18, 19, 20, 0) 100%); } .views-ui-dialog .views-offset-top > * { diff --git a/core/themes/olivero/css/components/ajax-progress.module.css b/core/themes/olivero/css/components/ajax-progress.module.css index b80c2c0edbc5..39ef53e0b858 100644 --- a/core/themes/olivero/css/components/ajax-progress.module.css +++ b/core/themes/olivero/css/components/ajax-progress.module.css @@ -61,7 +61,7 @@ border: 1px solid var(--color--gray-70); border-radius: 3.5rem; background-color: var(--color--white); - box-shadow: 0 0.25rem 0.625rem rgba(34, 35, 48, 0.1); /* LTR */ + box-shadow: 0 0.25rem 0.625rem rgb(34, 35, 48, 0.1); /* LTR */ } .ajax-progress-fullscreen::before { @@ -76,7 +76,7 @@ } [dir="rtl"] .ajax-progress-fullscreen { - box-shadow: 0 -0.25rem 0.625rem rgba(34, 35, 48, 0.1); + box-shadow: 0 -0.25rem 0.625rem rgb(34, 35, 48, 0.1); } /** diff --git a/core/themes/olivero/css/components/ajax-progress.module.pcss.css b/core/themes/olivero/css/components/ajax-progress.module.pcss.css index adbe812b0ccd..6efbc83ec706 100644 --- a/core/themes/olivero/css/components/ajax-progress.module.pcss.css +++ b/core/themes/olivero/css/components/ajax-progress.module.pcss.css @@ -54,7 +54,7 @@ border: 1px solid var(--color--gray-70); border-radius: 3.5rem; background-color: var(--color--white); - box-shadow: 0 0.25rem 0.625rem rgba(34, 35, 48, 0.1); /* LTR */ + box-shadow: 0 0.25rem 0.625rem rgb(34, 35, 48, 0.1); /* LTR */ &::before { position: absolute; @@ -69,7 +69,7 @@ } [dir="rtl"] .ajax-progress-fullscreen { - box-shadow: 0 -0.25rem 0.625rem rgba(34, 35, 48, 0.1); + box-shadow: 0 -0.25rem 0.625rem rgb(34, 35, 48, 0.1); } /** diff --git a/core/themes/olivero/css/components/breadcrumb.css b/core/themes/olivero/css/components/breadcrumb.css index 4dfb61c30ae5..5f4d9d52ba8c 100644 --- a/core/themes/olivero/css/components/breadcrumb.css +++ b/core/themes/olivero/css/components/breadcrumb.css @@ -26,7 +26,7 @@ width: var(--sp3); height: var(--sp2); content: ""; - background: linear-gradient(to left, var(--color--white) 0%, rgba(255, 255, 255, 0) 100%); /* LTR */ + background: linear-gradient(to left, var(--color--white) 0%, rgb(255, 255, 255, 0) 100%); /* LTR */ } @media (min-width: 62.5rem) { @@ -42,7 +42,7 @@ } [dir="rtl"] .breadcrumb::after { - background: linear-gradient(to right, var(--color--white) 0%, rgba(255, 255, 255, 0) 100%); + background: linear-gradient(to right, var(--color--white) 0%, rgb(255, 255, 255, 0) 100%); } .breadcrumb__content { diff --git a/core/themes/olivero/css/components/breadcrumb.pcss.css b/core/themes/olivero/css/components/breadcrumb.pcss.css index 9f07f6cc59c9..d1f84c131c6e 100644 --- a/core/themes/olivero/css/components/breadcrumb.pcss.css +++ b/core/themes/olivero/css/components/breadcrumb.pcss.css @@ -19,7 +19,7 @@ width: var(--sp3); height: var(--sp2); content: ""; - background: linear-gradient(to left, var(--color--white) 0%, rgba(255, 255, 255, 0) 100%); /* LTR */ + background: linear-gradient(to left, var(--color--white) 0%, rgb(255, 255, 255, 0) 100%); /* LTR */ @media (--lg) { content: none; @@ -32,7 +32,7 @@ } [dir="rtl"] .breadcrumb::after { - background: linear-gradient(to right, var(--color--white) 0%, rgba(255, 255, 255, 0) 100%); + background: linear-gradient(to right, var(--color--white) 0%, rgb(255, 255, 255, 0) 100%); } .breadcrumb__content { diff --git a/core/themes/olivero/css/components/cke-dialog.css b/core/themes/olivero/css/components/cke-dialog.css index 7f45209e7eb2..27949ed7d067 100644 --- a/core/themes/olivero/css/components/cke-dialog.css +++ b/core/themes/olivero/css/components/cke-dialog.css @@ -11,5 +11,5 @@ */ select.cke_dialog_ui_input_select { - appearance: menulist; + appearance: auto; } diff --git a/core/themes/olivero/css/components/cke-dialog.pcss.css b/core/themes/olivero/css/components/cke-dialog.pcss.css index 342e585221d4..5371245a353f 100644 --- a/core/themes/olivero/css/components/cke-dialog.pcss.css +++ b/core/themes/olivero/css/components/cke-dialog.pcss.css @@ -4,5 +4,5 @@ */ select.cke_dialog_ui_input_select { - appearance: menulist; + appearance: auto; } diff --git a/core/themes/olivero/css/components/dropbutton.pcss.css b/core/themes/olivero/css/components/dropbutton.pcss.css index 0a30685ea12c..8437d69a573e 100644 --- a/core/themes/olivero/css/components/dropbutton.pcss.css +++ b/core/themes/olivero/css/components/dropbutton.pcss.css @@ -27,11 +27,11 @@ padding-inline-end: var(--dropbutton--height); border-radius: var(--dropbutton--border-radius); - @nest .dropbutton-single & { + .dropbutton-single & { padding-inline-end: 0; } - @nest .dropbutton-wrapper.open & { + .dropbutton-wrapper.open & { border-radius: var(--dropbutton--border-radius) var(--dropbutton--border-radius) 0 0; } } @@ -75,7 +75,7 @@ border-right: solid 2px var(--dropbutton--outline-color); border-bottom: solid 2px var(--dropbutton--outline-color); - @nest .dropbutton-wrapper.open & { + .dropbutton-wrapper.open & { transform: translateY(25%) rotate(225deg); } } @@ -119,7 +119,7 @@ } /* Special rules if there is only one action. */ - @nest .dropbutton-single & { + .dropbutton-single & { &:first-child { border-right: solid 1px transparent; /* LTR */ border-radius: var(--dropbutton--border-radius); @@ -151,7 +151,7 @@ color: var(--dropbutton--text-hover-color); } - @nest .dropbutton-wrapper.open & { + .dropbutton-wrapper.open & { visibility: visible; } } diff --git a/core/themes/olivero/css/components/form-select.css b/core/themes/olivero/css/components/form-select.css index 72067ba874ab..47a9e2878b16 100644 --- a/core/themes/olivero/css/components/form-select.css +++ b/core/themes/olivero/css/components/form-select.css @@ -80,7 +80,7 @@ select.form-element--small { select { padding-inline-end: var(--sp); background-image: none; - appearance: listbox; /* Default <select> appearance value for modern browsers. */ + appearance: auto; /* Default <select> appearance value for modern browsers. */ /* Lets browser set <select> appearance to whatever the browser's default is. */ } diff --git a/core/themes/olivero/css/components/form-select.pcss.css b/core/themes/olivero/css/components/form-select.pcss.css index 37d08fd294b7..3269808d1a37 100644 --- a/core/themes/olivero/css/components/form-select.pcss.css +++ b/core/themes/olivero/css/components/form-select.pcss.css @@ -70,7 +70,7 @@ select { @media (forced-colors: active) { padding-inline-end: var(--sp); background-image: none; - appearance: listbox; /* Default <select> appearance value for modern browsers. */ + appearance: auto; /* Default <select> appearance value for modern browsers. */ /* Lets browser set <select> appearance to whatever the browser's default is. */ @supports (appearance: revert) { diff --git a/core/themes/olivero/css/components/header-navigation.css b/core/themes/olivero/css/components/header-navigation.css index 1f070c67e6db..2dfc75b4ba01 100644 --- a/core/themes/olivero/css/components/header-navigation.css +++ b/core/themes/olivero/css/components/header-navigation.css @@ -32,7 +32,7 @@ * viewport on short screens. */ border-block-start: solid var(--color--white) calc(var(--sp3) + var(--drupal-displace-offset-top, 0px)); background-color: var(--color--white); - box-shadow: 0 0 72px rgba(0, 0, 0, 0.1); + box-shadow: 0 0 72px rgb(0, 0, 0, 0.1); } .header-nav.is-active { @@ -138,12 +138,12 @@ html.js .header-nav { background: var(--color--gray-5); } +.is-overlay-active .header-nav-overlay { + display: block; +} + @media (forced-colors: active) { .header-nav-overlay { background: canvastext; } } - -.is-overlay-active .header-nav-overlay { - display: block; -} diff --git a/core/themes/olivero/css/components/header-navigation.pcss.css b/core/themes/olivero/css/components/header-navigation.pcss.css index b8b615e87117..ba09c1d9f55f 100644 --- a/core/themes/olivero/css/components/header-navigation.pcss.css +++ b/core/themes/olivero/css/components/header-navigation.pcss.css @@ -27,7 +27,7 @@ * viewport on short screens. */ border-block-start: solid var(--color--white) calc(var(--sp3) + var(--drupal-displace-offset-top, 0px)); background-color: var(--color--white); - box-shadow: 0 0 72px rgba(0, 0, 0, 0.1); + box-shadow: 0 0 72px rgb(0, 0, 0, 0.1); &.is-active { visibility: visible; @@ -122,11 +122,11 @@ body.is-always-mobile-nav { opacity: 0.2; background: var(--color--gray-5); - @media (forced-colors: active) { - background: canvastext; + .is-overlay-active & { + display: block; } - @nest .is-overlay-active & { - display: block; + @media (forced-colors: active) { + background: canvastext; } } diff --git a/core/themes/olivero/css/components/navigation/nav-primary-wide.css b/core/themes/olivero/css/components/navigation/nav-primary-wide.css index 2506d46f3bab..6b21c65d67f2 100644 --- a/core/themes/olivero/css/components/navigation/nav-primary-wide.css +++ b/core/themes/olivero/css/components/navigation/nav-primary-wide.css @@ -137,7 +137,7 @@ border-left: solid 1px transparent; border-radius: 0 0 2px 2px; background: var(--color--white); - box-shadow: 0 1px 36px rgba(0, 0, 0, 0.08); + box-shadow: 0 1px 36px rgb(0, 0, 0, 0.08); } body:not(.is-always-mobile-nav) .primary-nav__menu--level-2.is-active-menu-parent { diff --git a/core/themes/olivero/css/components/navigation/nav-primary-wide.pcss.css b/core/themes/olivero/css/components/navigation/nav-primary-wide.pcss.css index 24d5cdcedf0b..9d67e67556c7 100644 --- a/core/themes/olivero/css/components/navigation/nav-primary-wide.pcss.css +++ b/core/themes/olivero/css/components/navigation/nav-primary-wide.pcss.css @@ -139,7 +139,7 @@ body:not(.is-always-mobile-nav) { border-left: solid 1px transparent; border-radius: 0 0 2px 2px; background: var(--color--white); - box-shadow: 0 1px 36px rgba(0, 0, 0, 0.08); + box-shadow: 0 1px 36px rgb(0, 0, 0, 0.08); &.is-active-menu-parent { visibility: visible; diff --git a/core/themes/olivero/css/components/navigation/nav-primary.pcss.css b/core/themes/olivero/css/components/navigation/nav-primary.pcss.css index a7f69278ce17..d99048dae82b 100644 --- a/core/themes/olivero/css/components/navigation/nav-primary.pcss.css +++ b/core/themes/olivero/css/components/navigation/nav-primary.pcss.css @@ -116,7 +116,7 @@ } &::after { - @nest .primary-nav__menu-link:hover & { + .primary-nav__menu-link:hover & { transform: scaleX(1); } } diff --git a/core/themes/olivero/css/components/node-preview-container.css b/core/themes/olivero/css/components/node-preview-container.css index 2564c4597b96..9b260a9d69fd 100644 --- a/core/themes/olivero/css/components/node-preview-container.css +++ b/core/themes/olivero/css/components/node-preview-container.css @@ -15,13 +15,13 @@ padding-inline-start: calc(var(--sp0-5) + var(--drupal-displace-offset-left, 0rem)); padding-inline-end: calc(var(--sp0-5) + var(--drupal-displace-offset-right, 0rem)); background: var(--color--white); - box-shadow: -36px 1px 36px rgba(0, 0, 0, 0.08); /* LTR */ + box-shadow: -36px 1px 36px rgb(0, 0, 0, 0.08); /* LTR */ } [dir="rtl"] .node-preview-container { padding-inline-start: calc(var(--sp0-5) + var(--drupal-displace-offset-right, 0rem)); padding-inline-end: calc(var(--sp0-5) + var(--drupal-displace-offset-left, 0rem)); - box-shadow: 36px 1px 36px rgba(0, 0, 0, 0.08); + box-shadow: 36px 1px 36px rgb(0, 0, 0, 0.08); } .toolbar-vertical.toolbar-tray-open .node-preview-container { diff --git a/core/themes/olivero/css/components/node-preview-container.pcss.css b/core/themes/olivero/css/components/node-preview-container.pcss.css index cffcc44f315f..90bd6ca89595 100644 --- a/core/themes/olivero/css/components/node-preview-container.pcss.css +++ b/core/themes/olivero/css/components/node-preview-container.pcss.css @@ -10,13 +10,13 @@ padding-inline-start: calc(var(--sp0-5) + var(--drupal-displace-offset-left, 0rem)); padding-inline-end: calc(var(--sp0-5) + var(--drupal-displace-offset-right, 0rem)); background: var(--color--white); - box-shadow: -36px 1px 36px rgba(0, 0, 0, 0.08); /* LTR */ + box-shadow: -36px 1px 36px rgb(0, 0, 0, 0.08); /* LTR */ } [dir="rtl"] .node-preview-container { padding-inline-start: calc(var(--sp0-5) + var(--drupal-displace-offset-right, 0rem)); padding-inline-end: calc(var(--sp0-5) + var(--drupal-displace-offset-left, 0rem)); - box-shadow: 36px 1px 36px rgba(0, 0, 0, 0.08); + box-shadow: 36px 1px 36px rgb(0, 0, 0, 0.08); } .toolbar-vertical.toolbar-tray-open .node-preview-container { diff --git a/core/themes/olivero/css/components/site-header.css b/core/themes/olivero/css/components/site-header.css index beb3f4ce6200..17fc4014ecd5 100644 --- a/core/themes/olivero/css/components/site-header.css +++ b/core/themes/olivero/css/components/site-header.css @@ -81,13 +81,13 @@ @media (min-width: 75rem) { .site-header__fixable.is-expanded .site-header__inner { - box-shadow: -36px 1px 36px rgba(0, 0, 0, 0.08); /* LTR */ + box-shadow: -36px 1px 36px rgb(0, 0, 0, 0.08); /* LTR */ } } @media (min-width: 75rem) { [dir="rtl"] .site-header__fixable.is-expanded .site-header__inner { - box-shadow: 36px 1px 36px rgba(0, 0, 0, 0.08); + box-shadow: 36px 1px 36px rgb(0, 0, 0, 0.08); } } diff --git a/core/themes/olivero/css/components/site-header.pcss.css b/core/themes/olivero/css/components/site-header.pcss.css index 1c3f3ceabbbd..b19216408595 100644 --- a/core/themes/olivero/css/components/site-header.pcss.css +++ b/core/themes/olivero/css/components/site-header.pcss.css @@ -77,13 +77,13 @@ html.js body:not(.is-always-mobile-nav) .site-header__inner { .site-header__fixable.is-expanded .site-header__inner { @media (--nav) { - box-shadow: -36px 1px 36px rgba(0, 0, 0, 0.08); /* LTR */ + box-shadow: -36px 1px 36px rgb(0, 0, 0, 0.08); /* LTR */ } } [dir="rtl"] .site-header__fixable.is-expanded .site-header__inner { @media (--nav) { - box-shadow: 36px 1px 36px rgba(0, 0, 0, 0.08); + box-shadow: 36px 1px 36px rgb(0, 0, 0, 0.08); } } diff --git a/core/themes/olivero/css/components/tabs.css b/core/themes/olivero/css/components/tabs.css index 0a74fc715130..8eebba05c448 100644 --- a/core/themes/olivero/css/components/tabs.css +++ b/core/themes/olivero/css/components/tabs.css @@ -42,13 +42,6 @@ .tabs__tab.is-active { display: flex; } -@media (min-width: 43.75rem) { - .tabs__tab { - display: flex; - margin-block-end: 0; - margin-inline-start: calc(-1 * var(--tabs-border-width)); - } -} /* Show tabs when JavaScript disabled. */ html:not(.js) .tabs__tab { display: flex; @@ -66,6 +59,13 @@ html:not(.js) .tabs__tab { display: flex; } } +@media (min-width: 43.75rem) { + .tabs__tab { + display: flex; + margin-block-end: 0; + margin-inline-start: calc(-1 * var(--tabs-border-width)); + } +} .tabs__link { display: flex; flex-grow: 1; diff --git a/core/themes/olivero/css/components/tabs.pcss.css b/core/themes/olivero/css/components/tabs.pcss.css index 200749bb0150..3c94c2414bed 100644 --- a/core/themes/olivero/css/components/tabs.pcss.css +++ b/core/themes/olivero/css/components/tabs.pcss.css @@ -41,30 +41,30 @@ display: flex; } - @media (--tabs-layout-switch) { - display: flex; - margin-block-end: 0; - margin-inline-start: calc(-1 * var(--tabs-border-width)); - } - /* Show tabs when JavaScript disabled. */ - @nest html:not(.js) & { + html:not(.js) & { display: flex; } /* Show tabs when tabs-expanded class is present. */ - @nest .tabs.is-expanded & { + .tabs.is-expanded & { display: flex; } /* Secondary tabs will always be expanded. */ - @nest .tabs--secondary & { + .tabs--secondary & { display: block; @media (--tabs-layout-switch) { display: flex; } } + + @media (--tabs-layout-switch) { + display: flex; + margin-block-end: 0; + margin-inline-start: calc(-1 * var(--tabs-border-width)); + } } .tabs__link { @@ -121,7 +121,7 @@ } /* No regular borders or background color for secondary tab links. */ - @nest .tabs--secondary & { + .tabs--secondary & { @media (--tabs-layout-switch) { border-color: transparent; background-color: transparent; @@ -152,7 +152,7 @@ } /* Button will not work when JavaScript is disabled, so we hide it. */ - @nest html:not(.js) & { + html:not(.js) & { display: none; } @@ -182,7 +182,7 @@ &:nth-child(1) { inset-block-start: 0; - @nest .tabs__trigger[aria-expanded="true"] & { + .tabs__trigger[aria-expanded="true"] & { inset-block-start: calc(50% + 1px); transform: rotate(45deg); } @@ -191,7 +191,7 @@ &:nth-child(2) { inset-block-start: calc(50% + 1px); - @nest .tabs__trigger[aria-expanded="true"] & { + .tabs__trigger[aria-expanded="true"] & { opacity: 0; } } @@ -199,7 +199,7 @@ &:nth-child(3) { inset-block-start: calc(100% + 2px); - @nest .tabs__trigger[aria-expanded="true"] & { + .tabs__trigger[aria-expanded="true"] & { inset-block-start: calc(50% + 1px); transform: rotate(-45deg); } diff --git a/core/themes/olivero/css/layout/layout.pcss.css b/core/themes/olivero/css/layout/layout.pcss.css index eed28ec0716f..3b8e9b80b1df 100644 --- a/core/themes/olivero/css/layout/layout.pcss.css +++ b/core/themes/olivero/css/layout/layout.pcss.css @@ -13,7 +13,7 @@ /* This fixes an issue where if the toolbar is open in vertical mode, and * the mobile navigation is open, the "close" button gets pushed outside of * the viewport. */ - @nest body.is-fixed & { + body.is-fixed & { width: calc(100% - var(--drupal-displace-offset-left, 0px) - var(--drupal-displace-offset-right, 0px)); } } diff --git a/core/themes/olivero/olivero.libraries.yml b/core/themes/olivero/olivero.libraries.yml index 137a4296eb67..c699ebc72c8d 100644 --- a/core/themes/olivero/olivero.libraries.yml +++ b/core/themes/olivero/olivero.libraries.yml @@ -45,6 +45,7 @@ global-styling: css/components/site-header.css: {} css/components/skip-link.css: {} css/components/pager.css: {} + css/components/table.css: {} css/components/text-content.css: {} css/components/wide-content.css: {} @@ -290,18 +291,3 @@ tags: css: theme: css/components/tags.css: {} - -olivero.table: - version: VERSION - css: - component: - css/components/table.css: {} - moved_files: - olivero/global-styling: - deprecation_version: 11.2.0 - removed_version: 12.0.0 - deprecation_link: https://www.drupal.org/node/3517675 - css: - component: - css/components/table.css: - base: css/components/table.css diff --git a/core/themes/olivero/olivero.theme b/core/themes/olivero/olivero.theme index b2f3bff26841..d10ee7d155cd 100644 --- a/core/themes/olivero/olivero.theme +++ b/core/themes/olivero/olivero.theme @@ -617,15 +617,6 @@ function olivero_preprocess_table(&$variables): void { } } } - - $variables['#attached']['library'][] = 'olivero/olivero.table'; -} - -/** - * Implements hook_preprocess_HOOK() for views-view-table templates. - */ -function olivero_preprocess_views_view_table(&$variables): void { - $variables['#attached']['library'][] = 'olivero/olivero.table'; } /** diff --git a/core/themes/stable9/css/settings_tray/settings_tray.theme.css b/core/themes/stable9/css/settings_tray/settings_tray.theme.css index 1dcaee1c4413..3c23d08da5b1 100644 --- a/core/themes/stable9/css/settings_tray/settings_tray.theme.css +++ b/core/themes/stable9/css/settings_tray/settings_tray.theme.css @@ -61,10 +61,10 @@ /* Style the editables while in edit mode. */ .dialog-off-canvas-main-canvas.js-settings-tray-edit-mode .settings-tray-editable { - outline: 1px dashed rgba(0, 0, 0, 0.5); - box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.7); + outline: 1px dashed rgb(0, 0, 0, 0.5); + box-shadow: 0 0 0 1px rgb(255, 255, 255, 0.7); } .dialog-off-canvas-main-canvas.js-settings-tray-edit-mode .settings-tray-editable:hover, .dialog-off-canvas-main-canvas.js-settings-tray-edit-mode .settings-tray-editable.settings-tray-active-editable { - background-color: rgba(0, 0, 0, 0.2); + background-color: rgb(0, 0, 0, 0.2); } diff --git a/core/themes/stable9/css/settings_tray/settings_tray.toolbar.css b/core/themes/stable9/css/settings_tray/settings_tray.toolbar.css index b378615dff12..7a25fad4c112 100644 --- a/core/themes/stable9/css/settings_tray/settings_tray.toolbar.css +++ b/core/themes/stable9/css/settings_tray/settings_tray.toolbar.css @@ -23,7 +23,7 @@ color: #eee; background-color: #0066a1; background-image: linear-gradient(to bottom, #0066a1, #005b98); - text-shadow: 0 1px hsla(0, 0%, 0%, 0.5); + text-shadow: 0 1px hsl(0, 0%, 0%, 0.5); font-weight: 700; -webkit-font-smoothing: antialiased; } @@ -31,7 +31,7 @@ color: #fff; background-color: #0a7bc1; background-image: linear-gradient(to bottom, #0a7bc1, #0a6eb4); - text-shadow: 0 1px hsla(0, 0%, 0%, 0.5); + text-shadow: 0 1px hsl(0, 0%, 0%, 0.5); font-weight: 700; -webkit-font-smoothing: antialiased; } diff --git a/core/themes/stable9/css/shortcut/shortcut.theme.css b/core/themes/stable9/css/shortcut/shortcut.theme.css index d7a5fa146f71..d98e6f1864b3 100644 --- a/core/themes/stable9/css/shortcut/shortcut.theme.css +++ b/core/themes/stable9/css/shortcut/shortcut.theme.css @@ -43,7 +43,7 @@ color: #fff; border-radius: 5px; background: #000; - background: rgba(0, 0, 0, 0.5); + background: rgb(0, 0, 0, 0.5); -webkit-backface-visibility: hidden; backface-visibility: hidden; } diff --git a/core/themes/stable9/css/system/components/system-status-report-counters.css b/core/themes/stable9/css/system/components/system-status-report-counters.css index 7040c257a0f2..54ffabe5fc1c 100644 --- a/core/themes/stable9/css/system/components/system-status-report-counters.css +++ b/core/themes/stable9/css/system/components/system-status-report-counters.css @@ -9,7 +9,7 @@ padding: 0.5em 0; text-align: center; white-space: nowrap; - background-color: rgba(0, 0, 0, 0.063); + background-color: rgb(0, 0, 0, 0.063); } @media screen and (min-width: 60em) { diff --git a/core/themes/stable9/css/toolbar/toolbar.theme.css b/core/themes/stable9/css/toolbar/toolbar.theme.css index b0c8ada38920..b3c3967a9cd5 100644 --- a/core/themes/stable9/css/toolbar/toolbar.theme.css +++ b/core/themes/stable9/css/toolbar/toolbar.theme.css @@ -5,10 +5,10 @@ font-family: "Source Sans Pro", "Lucida Grande", Verdana, sans-serif; /* Set base font size to 13px based on root ems. */ font-size: 0.8125rem; - -moz-tap-highlight-color: rgba(0, 0, 0, 0); - -o-tap-highlight-color: rgba(0, 0, 0, 0); - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); - tap-highlight-color: rgba(0, 0, 0, 0); + -moz-tap-highlight-color: rgb(0, 0, 0, 0); + -o-tap-highlight-color: rgb(0, 0, 0, 0); + -webkit-tap-highlight-color: rgb(0, 0, 0, 0); + tap-highlight-color: rgb(0, 0, 0, 0); -moz-touch-callout: none; -o-touch-callout: none; -webkit-touch-callout: none; @@ -31,10 +31,10 @@ .toolbar .toolbar-bar { color: #ddd; background-color: #0f0f0f; - box-shadow: -1px 0 3px 1px rgba(0, 0, 0, 0.3333); /* LTR */ + box-shadow: -1px 0 3px 1px rgb(0, 0, 0, 0.3333); /* LTR */ } [dir="rtl"] .toolbar .toolbar-bar { - box-shadow: 1px 0 3px 1px rgba(0, 0, 0, 0.3333); + box-shadow: 1px 0 3px 1px rgb(0, 0, 0, 0.3333); } .toolbar .toolbar-bar .toolbar-item { color: #fff; @@ -44,10 +44,10 @@ } .toolbar .toolbar-bar .toolbar-tab > .toolbar-item:hover, .toolbar .toolbar-bar .toolbar-tab > .toolbar-item:focus { - background-image: linear-gradient(rgba(255, 255, 255, 0.125) 20%, transparent 200%); + background-image: linear-gradient(rgb(255, 255, 255, 0.125) 20%, transparent 200%); } .toolbar .toolbar-bar .toolbar-tab > .toolbar-item.is-active { - background-image: linear-gradient(rgba(255, 255, 255, 0.25) 20%, transparent 200%); + background-image: linear-gradient(rgb(255, 255, 255, 0.25) 20%, transparent 200%); } /** @@ -66,19 +66,19 @@ .toolbar .toolbar-tray-vertical { border-right: 1px solid #aaa; /* LTR */ background-color: #f5f5f5; - box-shadow: -1px 0 5px 2px rgba(0, 0, 0, 0.3333); /* LTR */ + box-shadow: -1px 0 5px 2px rgb(0, 0, 0, 0.3333); /* LTR */ } [dir="rtl"] .toolbar .toolbar-tray-vertical { border-right: 0 none; border-left: 1px solid #aaa; - box-shadow: 1px 0 5px 2px rgba(0, 0, 0, 0.3333); + box-shadow: 1px 0 5px 2px rgb(0, 0, 0, 0.3333); } .toolbar-horizontal .toolbar-tray { border-bottom: 1px solid #aaa; - box-shadow: -2px 1px 3px 1px rgba(0, 0, 0, 0.3333); /* LTR */ + box-shadow: -2px 1px 3px 1px rgb(0, 0, 0, 0.3333); /* LTR */ } [dir="rtl"] .toolbar-horizontal .toolbar-tray { - box-shadow: 2px 1px 3px 1px rgba(0, 0, 0, 0.3333); + box-shadow: 2px 1px 3px 1px rgb(0, 0, 0, 0.3333); } .toolbar .toolbar-tray-horizontal .toolbar-tray { background-color: #f5f5f5; diff --git a/core/themes/stable9/css/views_ui/views_ui.admin.theme.css b/core/themes/stable9/css/views_ui/views_ui.admin.theme.css index a95a0c06a410..4e0b3d2a5181 100644 --- a/core/themes/stable9/css/views_ui/views_ui.admin.theme.css +++ b/core/themes/stable9/css/views_ui/views_ui.admin.theme.css @@ -39,11 +39,11 @@ background: linear-gradient(-90deg, #fff 0, #e8e8e8 100%) no-repeat, repeat-y; - box-shadow: 0 0 0 rgba(0, 0, 0, 0.3333) inset; + box-shadow: 0 0 0 rgb(0, 0, 0, 0.3333) inset; } .views-admin a.icon:hover { border-color: #d0d0d0; - box-shadow: 0 0 1px rgba(0, 0, 0, 0.3333) inset; + box-shadow: 0 0 1px rgb(0, 0, 0, 0.3333) inset; } .views-admin a.icon:active { border-color: #c0c0c0; diff --git a/core/themes/starterkit_theme/css/components/progress.css b/core/themes/starterkit_theme/css/components/progress.css index f8561b2eaf60..6ff2e1949884 100644 --- a/core/themes/starterkit_theme/css/components/progress.css +++ b/core/themes/starterkit_theme/css/components/progress.css @@ -10,7 +10,7 @@ border-radius: 10em; background-color: #f2f1eb; background-image: linear-gradient(#e7e7df, #f0f0f0); - box-shadow: inset 0 1px 3px hsla(0, 0%, 0%, 0.16); + box-shadow: inset 0 1px 3px hsl(0, 0%, 0%, 0.16); } .progress__bar { height: 16px; @@ -23,7 +23,7 @@ border: 1px #07629a solid; border-radius: 10em; background: #057ec9; - background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.15)), linear-gradient(to right bottom, #0094f0 0%, #0094f0 25%, #007ecc 25%, #007ecc 50%, #0094f0 50%, #0094f0 75%, #0094f0 100%); + background-image: linear-gradient(to bottom, rgb(0, 0, 0, 0), rgb(0, 0, 0, 0.15)), linear-gradient(to right bottom, #0094f0 0%, #0094f0 25%, #007ecc 25%, #007ecc 50%, #0094f0 50%, #0094f0 75%, #0094f0 100%); background-size: 40px 40px; } [dir="rtl"] .progress__bar { diff --git a/core/yarn.lock b/core/yarn.lock index 01c8a24805d9..685da4ef7429 100644 --- a/core/yarn.lock +++ b/core/yarn.lock @@ -5,51 +5,34 @@ __metadata: version: 8 cacheKey: 10c0 -"@aashutoshrathi/word-wrap@npm:^1.2.3": - version: 1.2.6 - resolution: "@aashutoshrathi/word-wrap@npm:1.2.6" - checksum: 10c0/53c2b231a61a46792b39a0d43bc4f4f776bb4542aa57ee04930676802e5501282c2fc8aac14e4cd1f1120ff8b52616b6ff5ab539ad30aa2277d726444b71619f - languageName: node - linkType: hard - "@asamuzakjp/css-color@npm:^3.1.2": - version: 3.1.7 - resolution: "@asamuzakjp/css-color@npm:3.1.7" + version: 3.2.0 + resolution: "@asamuzakjp/css-color@npm:3.2.0" dependencies: "@csstools/css-calc": "npm:^2.1.3" "@csstools/css-color-parser": "npm:^3.0.9" "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" lru-cache: "npm:^10.4.3" - checksum: 10c0/ac70af38c9b9d972941fe9dbed5221118077bc8f217617edbd534d9c7c281fd2c4023d0f0daa349d57b895cb73430d67d509b722226294bad2910a81d9439e91 + checksum: 10c0/a4bf1c831751b1fae46b437e37e8a38c0b5bd58d23230157ae210bd1e905fe509b89b7c243e63d1522d852668a6292ed730a160e21342772b4e5b7b8ea14c092 languageName: node linkType: hard "@babel/code-frame@npm:^7.0.0": - version: 7.23.5 - resolution: "@babel/code-frame@npm:7.23.5" + version: 7.27.1 + resolution: "@babel/code-frame@npm:7.27.1" dependencies: - "@babel/highlight": "npm:^7.23.4" - chalk: "npm:^2.4.2" - checksum: 10c0/a10e843595ddd9f97faa99917414813c06214f4d9205294013e20c70fbdf4f943760da37dec1d998bf3e6fc20fa2918a47c0e987a7e458663feb7698063ad7c6 - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.22.20": - version: 7.22.20 - resolution: "@babel/helper-validator-identifier@npm:7.22.20" - checksum: 10c0/dcad63db345fb110e032de46c3688384b0008a42a4845180ce7cd62b1a9c0507a1bed727c4d1060ed1a03ae57b4d918570259f81724aaac1a5b776056f37504e + "@babel/helper-validator-identifier": "npm:^7.27.1" + js-tokens: "npm:^4.0.0" + picocolors: "npm:^1.1.1" + checksum: 10c0/5dd9a18baa5fce4741ba729acc3a3272c49c25cb8736c4b18e113099520e7ef7b545a4096a26d600e4416157e63e87d66db46aa3fbf0a5f2286da2705c12da00 languageName: node linkType: hard -"@babel/highlight@npm:^7.23.4": - version: 7.23.4 - resolution: "@babel/highlight@npm:7.23.4" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.22.20" - chalk: "npm:^2.4.2" - js-tokens: "npm:^4.0.0" - checksum: 10c0/fbff9fcb2f5539289c3c097d130e852afd10d89a3a08ac0b5ebebbc055cc84a4bcc3dcfed463d488cde12dd0902ef1858279e31d7349b2e8cee43913744bda33 +"@babel/helper-validator-identifier@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-validator-identifier@npm:7.27.1" + checksum: 10c0/c558f11c4871d526498e49d07a84752d1800bf72ac0d3dad100309a2eaba24efbf56ea59af5137ff15e3a00280ebe588560534b0e894a4750f8b1411d8f78b84 languageName: node linkType: hard @@ -823,217 +806,222 @@ __metadata: languageName: node linkType: hard -"@cspell/cspell-bundled-dicts@npm:8.16.1": - version: 8.16.1 - resolution: "@cspell/cspell-bundled-dicts@npm:8.16.1" - dependencies: - "@cspell/dict-ada": "npm:^4.0.5" - "@cspell/dict-al": "npm:^1.0.3" - "@cspell/dict-aws": "npm:^4.0.7" - "@cspell/dict-bash": "npm:^4.1.8" - "@cspell/dict-companies": "npm:^3.1.7" - "@cspell/dict-cpp": "npm:^6.0.2" - "@cspell/dict-cryptocurrencies": "npm:^5.0.3" - "@cspell/dict-csharp": "npm:^4.0.5" - "@cspell/dict-css": "npm:^4.0.16" - "@cspell/dict-dart": "npm:^2.2.4" - "@cspell/dict-django": "npm:^4.1.3" - "@cspell/dict-docker": "npm:^1.1.11" - "@cspell/dict-dotnet": "npm:^5.0.8" - "@cspell/dict-elixir": "npm:^4.0.6" - "@cspell/dict-en-common-misspellings": "npm:^2.0.7" +"@cspell/cspell-bundled-dicts@npm:8.19.4": + version: 8.19.4 + resolution: "@cspell/cspell-bundled-dicts@npm:8.19.4" + dependencies: + "@cspell/dict-ada": "npm:^4.1.0" + "@cspell/dict-al": "npm:^1.1.0" + "@cspell/dict-aws": "npm:^4.0.10" + "@cspell/dict-bash": "npm:^4.2.0" + "@cspell/dict-companies": "npm:^3.1.15" + "@cspell/dict-cpp": "npm:^6.0.8" + "@cspell/dict-cryptocurrencies": "npm:^5.0.4" + "@cspell/dict-csharp": "npm:^4.0.6" + "@cspell/dict-css": "npm:^4.0.17" + "@cspell/dict-dart": "npm:^2.3.0" + "@cspell/dict-data-science": "npm:^2.0.8" + "@cspell/dict-django": "npm:^4.1.4" + "@cspell/dict-docker": "npm:^1.1.13" + "@cspell/dict-dotnet": "npm:^5.0.9" + "@cspell/dict-elixir": "npm:^4.0.7" + "@cspell/dict-en-common-misspellings": "npm:^2.0.10" "@cspell/dict-en-gb": "npm:1.1.33" - "@cspell/dict-en_us": "npm:^4.3.28" - "@cspell/dict-filetypes": "npm:^3.0.8" - "@cspell/dict-flutter": "npm:^1.0.3" - "@cspell/dict-fonts": "npm:^4.0.3" - "@cspell/dict-fsharp": "npm:^1.0.4" - "@cspell/dict-fullstack": "npm:^3.2.3" - "@cspell/dict-gaming-terms": "npm:^1.0.8" - "@cspell/dict-git": "npm:^3.0.3" - "@cspell/dict-golang": "npm:^6.0.17" - "@cspell/dict-google": "npm:^1.0.4" - "@cspell/dict-haskell": "npm:^4.0.4" - "@cspell/dict-html": "npm:^4.0.10" + "@cspell/dict-en_us": "npm:^4.4.3" + "@cspell/dict-filetypes": "npm:^3.0.11" + "@cspell/dict-flutter": "npm:^1.1.0" + "@cspell/dict-fonts": "npm:^4.0.4" + "@cspell/dict-fsharp": "npm:^1.1.0" + "@cspell/dict-fullstack": "npm:^3.2.6" + "@cspell/dict-gaming-terms": "npm:^1.1.1" + "@cspell/dict-git": "npm:^3.0.4" + "@cspell/dict-golang": "npm:^6.0.20" + "@cspell/dict-google": "npm:^1.0.8" + "@cspell/dict-haskell": "npm:^4.0.5" + "@cspell/dict-html": "npm:^4.0.11" "@cspell/dict-html-symbol-entities": "npm:^4.0.3" - "@cspell/dict-java": "npm:^5.0.10" - "@cspell/dict-julia": "npm:^1.0.4" - "@cspell/dict-k8s": "npm:^1.0.9" + "@cspell/dict-java": "npm:^5.0.11" + "@cspell/dict-julia": "npm:^1.1.0" + "@cspell/dict-k8s": "npm:^1.0.10" + "@cspell/dict-kotlin": "npm:^1.1.0" "@cspell/dict-latex": "npm:^4.0.3" - "@cspell/dict-lorem-ipsum": "npm:^4.0.3" - "@cspell/dict-lua": "npm:^4.0.6" - "@cspell/dict-makefile": "npm:^1.0.3" - "@cspell/dict-markdown": "npm:^2.0.7" - "@cspell/dict-monkeyc": "npm:^1.0.9" - "@cspell/dict-node": "npm:^5.0.5" - "@cspell/dict-npm": "npm:^5.1.14" - "@cspell/dict-php": "npm:^4.0.13" - "@cspell/dict-powershell": "npm:^5.0.13" - "@cspell/dict-public-licenses": "npm:^2.0.11" - "@cspell/dict-python": "npm:^4.2.12" - "@cspell/dict-r": "npm:^2.0.4" - "@cspell/dict-ruby": "npm:^5.0.7" - "@cspell/dict-rust": "npm:^4.0.10" - "@cspell/dict-scala": "npm:^5.0.6" - "@cspell/dict-software-terms": "npm:^4.1.17" - "@cspell/dict-sql": "npm:^2.1.8" - "@cspell/dict-svelte": "npm:^1.0.5" - "@cspell/dict-swift": "npm:^2.0.4" - "@cspell/dict-terraform": "npm:^1.0.6" - "@cspell/dict-typescript": "npm:^3.1.11" - "@cspell/dict-vue": "npm:^3.0.3" - checksum: 10c0/e463119ee822188d751ce1344e17d99955e66081a1d2b15f08c677307fa1643cac51e59809115fa129577fb17c7dde327d926290b126cfc8998f6d57f7e355e9 + "@cspell/dict-lorem-ipsum": "npm:^4.0.4" + "@cspell/dict-lua": "npm:^4.0.7" + "@cspell/dict-makefile": "npm:^1.0.4" + "@cspell/dict-markdown": "npm:^2.0.10" + "@cspell/dict-monkeyc": "npm:^1.0.10" + "@cspell/dict-node": "npm:^5.0.7" + "@cspell/dict-npm": "npm:^5.2.1" + "@cspell/dict-php": "npm:^4.0.14" + "@cspell/dict-powershell": "npm:^5.0.14" + "@cspell/dict-public-licenses": "npm:^2.0.13" + "@cspell/dict-python": "npm:^4.2.17" + "@cspell/dict-r": "npm:^2.1.0" + "@cspell/dict-ruby": "npm:^5.0.8" + "@cspell/dict-rust": "npm:^4.0.11" + "@cspell/dict-scala": "npm:^5.0.7" + "@cspell/dict-shell": "npm:^1.1.0" + "@cspell/dict-software-terms": "npm:^5.0.5" + "@cspell/dict-sql": "npm:^2.2.0" + "@cspell/dict-svelte": "npm:^1.0.6" + "@cspell/dict-swift": "npm:^2.0.5" + "@cspell/dict-terraform": "npm:^1.1.1" + "@cspell/dict-typescript": "npm:^3.2.1" + "@cspell/dict-vue": "npm:^3.0.4" + checksum: 10c0/ae51370ba8a62357c4612d2d23c3fb4387e0b7f01f91e404709ab0ec8251fdbb4225b224b6b0c3bcdd79dabdf437eca6a6bc58337a63e5debdf7eaa219d5872d languageName: node linkType: hard -"@cspell/cspell-json-reporter@npm:8.16.1": - version: 8.16.1 - resolution: "@cspell/cspell-json-reporter@npm:8.16.1" +"@cspell/cspell-json-reporter@npm:8.19.4": + version: 8.19.4 + resolution: "@cspell/cspell-json-reporter@npm:8.19.4" dependencies: - "@cspell/cspell-types": "npm:8.16.1" - checksum: 10c0/6e4125417fe62dafe906ef0235f278a17cc499cc499becde72f75058be9d8ecf8f8f0b22000652d8d70a1c3bffbdb045a58fb10ab694255c3a6983ec08e4a93f + "@cspell/cspell-types": "npm:8.19.4" + checksum: 10c0/892d2f6b5e46813b959559c61b53d51dbd837220584267be927c50725b80cd330c2dc3c1801ed5072501ad5103d7b2f8ff592545b56289cea85d24f83c431551 languageName: node linkType: hard -"@cspell/cspell-pipe@npm:8.16.1": - version: 8.16.1 - resolution: "@cspell/cspell-pipe@npm:8.16.1" - checksum: 10c0/95dda90bf897571e58b09ad3eca85f07dedb07278f55217e63ee76078863bffd74b3653cee3b6d0e04e70c624f9f56737f8de8f88a5a05d01e94f33916933321 +"@cspell/cspell-pipe@npm:8.19.4": + version: 8.19.4 + resolution: "@cspell/cspell-pipe@npm:8.19.4" + checksum: 10c0/2f4407745dffd56a484ce530149f0b9580e6feda4e41d59f43195e75536f3bbcc7b35e188b2a68b3e47c9fb8d891b000a62892079e9c58c4aee11cb3dd74e484 languageName: node linkType: hard -"@cspell/cspell-resolver@npm:8.16.1": - version: 8.16.1 - resolution: "@cspell/cspell-resolver@npm:8.16.1" +"@cspell/cspell-resolver@npm:8.19.4": + version: 8.19.4 + resolution: "@cspell/cspell-resolver@npm:8.19.4" dependencies: global-directory: "npm:^4.0.1" - checksum: 10c0/9329b897571458098a8828814bf27dc04b7b390eb499ac5f6254aa98300d91cff3d4fa16e24777f6d9fa754cf5f86e109b3efcc778ed61ad1940e884d8a7cba8 + checksum: 10c0/0db5cff86be3780a226e1f51afb0734035331437d2eaf0b899b425dd2f209448126defb6bdfbe1656b53a1c82dee22ff708f419e5fa34cb8db464aa65359887a languageName: node linkType: hard -"@cspell/cspell-service-bus@npm:8.16.1": - version: 8.16.1 - resolution: "@cspell/cspell-service-bus@npm:8.16.1" - checksum: 10c0/08b5be05a377a7412b0e690a8cac287a6029937ff10f754fdaf1d7d9e0b71536f7489ebf91fc77c8e922689d7c553b5e41dda8bf023f55ab09920871c4584989 +"@cspell/cspell-service-bus@npm:8.19.4": + version: 8.19.4 + resolution: "@cspell/cspell-service-bus@npm:8.19.4" + checksum: 10c0/7031c9a248148d76d9c431479912a6d633fbca88d8fd2132cf9b34d497548881b5e51f9181847bc3afd4058f73c3b1be722f5f27676bb648c5c13b289977134b languageName: node linkType: hard -"@cspell/cspell-types@npm:8.16.1": - version: 8.16.1 - resolution: "@cspell/cspell-types@npm:8.16.1" - checksum: 10c0/4072186ff1a69003f73c7ccbcd5d1a7d38ec5500b5b6659b71a09f9614a4e735fa47a3f4ad012f81a223de0358daff9a6f6bab1c32a054cc492ca6710cff174f +"@cspell/cspell-types@npm:8.19.4": + version: 8.19.4 + resolution: "@cspell/cspell-types@npm:8.19.4" + checksum: 10c0/5c462d7836b21dd9eaca66abb04b3341423548baa897ac7a173bff996731bd2e986818cd1defcdda1ec7866e4ea76730f97d8696c8a45846f1fa8fd571d5ad1a languageName: node linkType: hard -"@cspell/dict-ada@npm:^4.0.5": - version: 4.0.5 - resolution: "@cspell/dict-ada@npm:4.0.5" - checksum: 10c0/eac1a1852bc71131ac96ce70a3857cb97b0c2f28036a56badbd51b4d2f5c03eb53e85e2d91ced74a9b77898ff478ef27099cc8f452166304f7a475bf672bc710 +"@cspell/dict-ada@npm:^4.1.0": + version: 4.1.0 + resolution: "@cspell/dict-ada@npm:4.1.0" + checksum: 10c0/1600b1fc4f033f41edf07d18ee71232d9b6ae654dc4256ce759ae663186e1e2f6fbbc605508d11ee756d909e53a0e2dfcf1171371333de06094f709ee9172af7 languageName: node linkType: hard -"@cspell/dict-al@npm:^1.0.3": - version: 1.0.3 - resolution: "@cspell/dict-al@npm:1.0.3" - checksum: 10c0/77a54c7b7945669f938e52f51361353d934829161f96ea32582de50055ce35f69d3aa4f7bef8aeaac0a92da605a6546fecb5143138e757d631eda6c1c353d86c +"@cspell/dict-al@npm:^1.1.0": + version: 1.1.0 + resolution: "@cspell/dict-al@npm:1.1.0" + checksum: 10c0/448be78bf11a3775e766122efcf322f6cebe689f2a2e9c7bb83e7745c666b80ef6411806552a66af4112a95ae007d3b342874e69d3d280173839cc55df295ea5 languageName: node linkType: hard -"@cspell/dict-aws@npm:^4.0.7": - version: 4.0.7 - resolution: "@cspell/dict-aws@npm:4.0.7" - checksum: 10c0/6d736b25c99a6ba270c857bbf478af20a744632b7559223a6b49d5f10dfdaddd08a05cf5e5e65fc8c42fbe5e1d1d302a0068e778479352a4dff368b54986b023 +"@cspell/dict-aws@npm:^4.0.10": + version: 4.0.10 + resolution: "@cspell/dict-aws@npm:4.0.10" + checksum: 10c0/938d8bbd9960f152aea5cb2712fdd644d734acfda9f72aaf490ccdce6dd016dc5a4d2a38e37d8a13234e69346e6b1a74178fb4ae3d9525c4e64656c1d90fe057 languageName: node linkType: hard -"@cspell/dict-bash@npm:^4.1.8": - version: 4.1.8 - resolution: "@cspell/dict-bash@npm:4.1.8" - checksum: 10c0/5b111fbc365123dd003d9781b1de5e06cf33edbec6c203361cb749f3206bbca9207367191f0d405c1feb00225315b804510698d39c2e02cf7b8f049b4a9e3815 +"@cspell/dict-bash@npm:^4.2.0": + version: 4.2.0 + resolution: "@cspell/dict-bash@npm:4.2.0" + dependencies: + "@cspell/dict-shell": "npm:1.1.0" + checksum: 10c0/9fa084d80f64fa706e87e1ad1db459433a5d0ba4a7c850de9f165b7a50f24410e447589b3374b53ca4da6397ee13c8c0205ff4bc5083d9c25a32e69b3bd2fe8b languageName: node linkType: hard -"@cspell/dict-companies@npm:^3.1.7": - version: 3.1.7 - resolution: "@cspell/dict-companies@npm:3.1.7" - checksum: 10c0/edb92c7e25ea46f24f0d8b657304878d16bd808cd21a90a3338ade7e78705d7aa677d49c7650d54e88d4ce8d726b4f003324ea8827397a480173b9817f69d3cf +"@cspell/dict-companies@npm:^3.1.15": + version: 3.2.1 + resolution: "@cspell/dict-companies@npm:3.2.1" + checksum: 10c0/8e98d9321277a1e05b88a95f3ac2c421568c2806a5319177b8a998316dedd888d063793135f57b73f1b88d636bbbe45e43249574804c1a42913f8fbd252263b2 languageName: node linkType: hard -"@cspell/dict-cpp@npm:^6.0.2": - version: 6.0.2 - resolution: "@cspell/dict-cpp@npm:6.0.2" - checksum: 10c0/548d4d31bb4876993159f02e70c9559a34a9e6d7220d788876cd31256883ecf3798d983108526b7e801399216e28c82f37564512e6cbedaa6478b3e8097bee06 +"@cspell/dict-cpp@npm:^6.0.8": + version: 6.0.8 + resolution: "@cspell/dict-cpp@npm:6.0.8" + checksum: 10c0/8388be63c7db452c556af908951b91bb141e3320d640a967d90c847a5ba6e09b41356772d842b586074b4ec1beb8049b9abd56a8fe9037650b2ddd9b28f6724c languageName: node linkType: hard -"@cspell/dict-cryptocurrencies@npm:^5.0.3": - version: 5.0.3 - resolution: "@cspell/dict-cryptocurrencies@npm:5.0.3" - checksum: 10c0/e150a791f477b0c8a9ed6bb806f4dec90e6ee3d026307fdd4535ab01294fedf1a44ed29f52cb7662e79cb25847b16753d52d573bdf7c97c3b8393de18a82a615 +"@cspell/dict-cryptocurrencies@npm:^5.0.4": + version: 5.0.4 + resolution: "@cspell/dict-cryptocurrencies@npm:5.0.4" + checksum: 10c0/f9bf46de9efc543f7270f46ec424151aa297c0e3d969f7f350eaa9f1e6ad0a7eecb668ceeb53c23c5dd54fc49277dbbaa96d476b71515f72b246cbd0c2569b4d languageName: node linkType: hard -"@cspell/dict-csharp@npm:^4.0.5": - version: 4.0.5 - resolution: "@cspell/dict-csharp@npm:4.0.5" - checksum: 10c0/444b11f206cb3beea6fadd74f54b2ade7c51320373cf6d45a502bb4c2213f62f9bd766938f7d317afc18299cfc2f592777b30ef8166c49202ef97ad0e1c64dba +"@cspell/dict-csharp@npm:^4.0.6": + version: 4.0.6 + resolution: "@cspell/dict-csharp@npm:4.0.6" + checksum: 10c0/d10ceb009e6a2b838d5ba5b035124bc1e02cf0e3eff10631b814ae8e4c1de7f7b35d60f3509f4b6b81a59e86bf1fdd0dee925191811825f7e1454d080cf3ebba languageName: node linkType: hard -"@cspell/dict-css@npm:^4.0.16": - version: 4.0.16 - resolution: "@cspell/dict-css@npm:4.0.16" - checksum: 10c0/f75b58153f780f2e2ab16eb0a032823d30f323b8651c5ee532212de27d89fc28c00b629aa13b9dba5c780a4a533b9f783e6e3cc8acfb0c2030981920986622d7 +"@cspell/dict-css@npm:^4.0.17": + version: 4.0.17 + resolution: "@cspell/dict-css@npm:4.0.17" + checksum: 10c0/87ceb92f3a65b0b4089e2150abb86431d09ad27f4a00af233c01c799d9786495ae66ea8b1a7f089a923ad5fb6efcdbf92227a6728b0b826a76fa03a24c379a7c languageName: node linkType: hard -"@cspell/dict-dart@npm:^2.2.4": - version: 2.2.4 - resolution: "@cspell/dict-dart@npm:2.2.4" - checksum: 10c0/b7b6b00f330c24aa28a28596da19a3013a8170ade143124b3b92950d1890267d31d2b8375ddb84801e399b9530b79627f57594c64b7253601c8e97501af900a4 +"@cspell/dict-dart@npm:^2.3.0": + version: 2.3.0 + resolution: "@cspell/dict-dart@npm:2.3.0" + checksum: 10c0/493ac7de691fd93596014168f3def8253dd4e97a139ba60715c4368ef5183df5a75c2bb04ba63f2d791686bf5a6d91005237e5ed96636959e77e5a7e79e0999e languageName: node linkType: hard -"@cspell/dict-data-science@npm:^2.0.5": - version: 2.0.5 - resolution: "@cspell/dict-data-science@npm:2.0.5" - checksum: 10c0/06241df1c687b61fa3843825baf45509027100ed870f15f42f2880525a67f2c70617323ff2710a28fa40a4189165e610ee5831a3f618729cdf95bc543399b984 +"@cspell/dict-data-science@npm:^2.0.8": + version: 2.0.8 + resolution: "@cspell/dict-data-science@npm:2.0.8" + checksum: 10c0/fd93eea55bab6d418f6e36a0dd2fd28ea7ec15598139086dcf6d664e0fae5c3235f5ec71c2d2449315e58bd23b153aa0bbd84d894ecfbf2e619d8f93c2e3614f languageName: node linkType: hard -"@cspell/dict-django@npm:^4.1.3": - version: 4.1.3 - resolution: "@cspell/dict-django@npm:4.1.3" - checksum: 10c0/b97c376b6f4cb013c1aa356a97930969fc371005214c5a492bf82c298e28a665ae452031b673cc7c79132562c10cd191cb611a06f8f78eee744165cd5c091835 +"@cspell/dict-django@npm:^4.1.4": + version: 4.1.4 + resolution: "@cspell/dict-django@npm:4.1.4" + checksum: 10c0/bf55dc7aaf575d4cb50f48a9fd6b5619ae23a8f6c741197a8a4942fbc4188280d5fdd614b07a659d6828ca7004f2707101ed268ac48cc41e606cf9694bad9523 languageName: node linkType: hard -"@cspell/dict-docker@npm:^1.1.11": - version: 1.1.11 - resolution: "@cspell/dict-docker@npm:1.1.11" - checksum: 10c0/d9f73b8924c116879417cb0820733aa83d16d553e7f3ef5dcbc56ed54b212c20b62ab1b41d4119c2337f06b1458cf2655169d7fdda9b68f8d83bee7a2db17fc0 +"@cspell/dict-docker@npm:^1.1.13": + version: 1.1.14 + resolution: "@cspell/dict-docker@npm:1.1.14" + checksum: 10c0/cf929524dff283db90a1c8e4a6363ccbbed9d49c41d33038ca98cacca7a159e960798224b23433e008d842cc091069b23aa4de915ef1278fc023efc2a38079bd languageName: node linkType: hard -"@cspell/dict-dotnet@npm:^5.0.8": - version: 5.0.8 - resolution: "@cspell/dict-dotnet@npm:5.0.8" - checksum: 10c0/436b8df241b2083430681820d00a1d5ee66ef707835b23f1ff7121636e66985a19b2352fb98ec4e64236ba88685ed41d5b9ec5ce891758eb79b6d1686035add4 +"@cspell/dict-dotnet@npm:^5.0.9": + version: 5.0.9 + resolution: "@cspell/dict-dotnet@npm:5.0.9" + checksum: 10c0/ac30f0a8d4e3f9c1468060e1d6cbe09ff4c60046c01ef665539996fdb62ca794bc1fbee75347c1d50e11e82782b9eeeadb175ab4e8746501ed561400d611d3a8 languageName: node linkType: hard -"@cspell/dict-elixir@npm:^4.0.6": - version: 4.0.6 - resolution: "@cspell/dict-elixir@npm:4.0.6" - checksum: 10c0/d321a0b224829bad3f463e8f58104519a885b71023bc00bc2f9168e72a0b7a8c33369e3bf3afeead9137d73cff9275277c4c79419a9be0bf29227e5543514038 +"@cspell/dict-elixir@npm:^4.0.7": + version: 4.0.7 + resolution: "@cspell/dict-elixir@npm:4.0.7" + checksum: 10c0/c65521e34aa4d7eb6ed4cb1bb86033dfd98d7d40715846d8d987801ce392ac96f1f4280a8e8be166fa6918660441c140e80b37799734393a3e4572a36b1975f9 languageName: node linkType: hard -"@cspell/dict-en-common-misspellings@npm:^2.0.7": - version: 2.0.7 - resolution: "@cspell/dict-en-common-misspellings@npm:2.0.7" - checksum: 10c0/d865d80ea170cecb4699c9973f6735d3c9f80d1b1337da6eb7d211d09bbd0774d4deec3b5802e7ef0101a0fcc5fb2121c4264cb2f2f0f7ebdc30e9bc527d7bbc +"@cspell/dict-en-common-misspellings@npm:^2.0.10": + version: 2.0.11 + resolution: "@cspell/dict-en-common-misspellings@npm:2.0.11" + checksum: 10c0/da3bc9fb18705b2bf721c8d49012fc17b726fc5c9dc1fd9b559e39e2a7d043870914a6f21b3eb397f4667c030a5bb17819b18098ef113e6ddde8143a202f22ea languageName: node linkType: hard @@ -1044,80 +1032,80 @@ __metadata: languageName: node linkType: hard -"@cspell/dict-en_us@npm:^4.3.28": - version: 4.3.28 - resolution: "@cspell/dict-en_us@npm:4.3.28" - checksum: 10c0/6bee6d8313d6a2cd5afa0ac47a736507f97e8262e8a28a032831115689b44992addd3ed64e5dec82d72cd0881cea224114feca71c3d48920477b8f17dd735315 +"@cspell/dict-en_us@npm:^4.4.3": + version: 4.4.9 + resolution: "@cspell/dict-en_us@npm:4.4.9" + checksum: 10c0/d8a4b102ca3d14e0d4425584fcd010434f981fe3839d9c70cbc3f8bb562fefa0443f83b2d4f1f46407a3dec5c172c0c8a67ad69e88145a1b22f1d5d2d0b4f0d7 languageName: node linkType: hard -"@cspell/dict-filetypes@npm:^3.0.8": - version: 3.0.8 - resolution: "@cspell/dict-filetypes@npm:3.0.8" - checksum: 10c0/aaa419b473a090f529145dd19124cff80921d0a553df530ceded2b8d3d78274957cb7e55bb0a8f552f15066a29281d857369a145da6b4d2738142e0b24dfe314 +"@cspell/dict-filetypes@npm:^3.0.11": + version: 3.0.12 + resolution: "@cspell/dict-filetypes@npm:3.0.12" + checksum: 10c0/9674c3e8a7ec52654ba01c691d9817479690efbe796c5b6cc30ba51ce68d6a6f7da68c8be2a385964007328db8d1c65d30d7a876c12382f726faa35fe29c6a74 languageName: node linkType: hard -"@cspell/dict-flutter@npm:^1.0.3": - version: 1.0.3 - resolution: "@cspell/dict-flutter@npm:1.0.3" - checksum: 10c0/9e77406e03f7b3eea37efc54f16b33b8c4823ec1b6fb9462ae34c4665abbf5b7a1c351c475e927b0ca70963882eb97f9a206572be1de2ca80208f3fddca32197 +"@cspell/dict-flutter@npm:^1.1.0": + version: 1.1.0 + resolution: "@cspell/dict-flutter@npm:1.1.0" + checksum: 10c0/b72e82a7bdd76b7383f227eaf8714b940406bdcd39d63fcd576ae9cbd80b7c579fe7a11a07c92200550a6e9583e18a4b45501b80684f02f8da5731d8af154974 languageName: node linkType: hard -"@cspell/dict-fonts@npm:^4.0.3": - version: 4.0.3 - resolution: "@cspell/dict-fonts@npm:4.0.3" - checksum: 10c0/6415cb21a5d940d4aedf7b557f866394a280a9bbfabcd466151be74f57758e0a95d3a1f7929b1a148d11eccbd34549809ec83e9f599966ff54c97b46ea309ebe +"@cspell/dict-fonts@npm:^4.0.4": + version: 4.0.4 + resolution: "@cspell/dict-fonts@npm:4.0.4" + checksum: 10c0/589c680baf00cf41153ff9e9a3e6d948ca4d451f7626edbfce6ee5c3f4dd60ea293c0d8f9f442f000730c2f064b8013425735de25267c406e11a10e94809696a languageName: node linkType: hard -"@cspell/dict-fsharp@npm:^1.0.4": - version: 1.0.4 - resolution: "@cspell/dict-fsharp@npm:1.0.4" - checksum: 10c0/6af0bff9b4ffface5c6fcf5564fa919a09e8b4152b1b00c11d51522455f4699aa66f95e2a096e4614cc8e2e99e161434d6c5430b9dbd9d9bd50aba6a9a4a6239 +"@cspell/dict-fsharp@npm:^1.1.0": + version: 1.1.0 + resolution: "@cspell/dict-fsharp@npm:1.1.0" + checksum: 10c0/78d994fe596db26f7ca7465e39f0924661c83fbadcd107d2f1f4148de76ef4054dd54d41c8dc128804130573f16285569f88f7ca1f1d17f156e97089e937d533 languageName: node linkType: hard -"@cspell/dict-fullstack@npm:^3.2.3": - version: 3.2.3 - resolution: "@cspell/dict-fullstack@npm:3.2.3" - checksum: 10c0/e3c461cdb7ab20143ce33bdfdb39da9bb737123b55656a172434224e73cb14638718433113222ea72521a3af7ae0454a4d70d7c3bbf4432e4ecf3e0eed045fe5 +"@cspell/dict-fullstack@npm:^3.2.6": + version: 3.2.6 + resolution: "@cspell/dict-fullstack@npm:3.2.6" + checksum: 10c0/bf3482a116586a4d45881ec5e9264f396e1fb2426b172901d799baa6533f6aa19055f8b2f651546272b7bdd73f0223d2a723c3ce0e3df1cb398fe37a9161df5c languageName: node linkType: hard -"@cspell/dict-gaming-terms@npm:^1.0.8": - version: 1.0.8 - resolution: "@cspell/dict-gaming-terms@npm:1.0.8" - checksum: 10c0/7617d5278021598dd65cd2be68c0a22144a02888a82bf4ba8c7e49fec2ba6d22fb185d50b3f187bb40abaa2881f9e585f185b0539889684d5d49aa65f533ae09 +"@cspell/dict-gaming-terms@npm:^1.1.1": + version: 1.1.1 + resolution: "@cspell/dict-gaming-terms@npm:1.1.1" + checksum: 10c0/93ee860370074503732750dbcaf6fb6c030a1518e694b3c77597c9956b0f594a66a583fed22392fbfa1f1ca244e16fbd31cd5734c509ce3bfbe583177b5ba5b4 languageName: node linkType: hard -"@cspell/dict-git@npm:^3.0.3": - version: 3.0.3 - resolution: "@cspell/dict-git@npm:3.0.3" - checksum: 10c0/63511720f621dc90a946585597c8c9e75bae4971c163e1c31a9fc2e34fbd3af4ad0ab9042e0b8a3eef4971cbcf78d4f6057fe4c799a93c0879219944bd730c8e +"@cspell/dict-git@npm:^3.0.4": + version: 3.0.5 + resolution: "@cspell/dict-git@npm:3.0.5" + checksum: 10c0/0701288549667be5f4e736132d48fbded409dba10f02949e3e613f4f67944a817172331f5f092dab4d4ab18f41174f5b6bccedc7cf46da1c93c9b278a73de316 languageName: node linkType: hard -"@cspell/dict-golang@npm:^6.0.17": - version: 6.0.17 - resolution: "@cspell/dict-golang@npm:6.0.17" - checksum: 10c0/a4f98996e33639d987d06868ed7e4e34dc5bd0167f9907872331c1d125f9d0185ab39852ef232e355681e1fa1bb778fc0aefa4782ecfda94c08b83f6ef0d4f5e +"@cspell/dict-golang@npm:^6.0.20": + version: 6.0.21 + resolution: "@cspell/dict-golang@npm:6.0.21" + checksum: 10c0/da791b918c4cf5584149e091f15fb1db0c3acef14b4d774df08586b8353f8ccb4f5b699ad471f67d7818205799c474587b88d9d824702da10083413cb04cc992 languageName: node linkType: hard -"@cspell/dict-google@npm:^1.0.4": - version: 1.0.4 - resolution: "@cspell/dict-google@npm:1.0.4" - checksum: 10c0/2af215e6632e3b93869e054a3a24084bcbf6b4bc7eff0ff9ca631d8f93699f89902f588ec83ada97811362085e88fba2b12f3300d41ca457cd5584e0e37573bd +"@cspell/dict-google@npm:^1.0.8": + version: 1.0.8 + resolution: "@cspell/dict-google@npm:1.0.8" + checksum: 10c0/89385531361d1b00da54c2cade3e29442b6ba7baa2f5a4922b628ee79fb97c860319480061dd01a5a99b527514cad0594699c15a57bdf6c4c17c783aa257a0ab languageName: node linkType: hard -"@cspell/dict-haskell@npm:^4.0.4": - version: 4.0.4 - resolution: "@cspell/dict-haskell@npm:4.0.4" - checksum: 10c0/257b59f2fb9e931fadf5409386037cadd44304ed2606ffaf21d50576fcf0bc839fce1b2e59d07833de82e87e3013be48ecc87fb4a56be199f5070cd92ad943ef +"@cspell/dict-haskell@npm:^4.0.5": + version: 4.0.5 + resolution: "@cspell/dict-haskell@npm:4.0.5" + checksum: 10c0/a2d8cf98c208ecc5733c888037c9366d26f37ff8c7ed46756ad4d8651efe69a5d98447c0bf859cb3660b1c541ab1f8b4b0650591c327ff07a10c9d458b9be24a languageName: node linkType: hard @@ -1128,31 +1116,38 @@ __metadata: languageName: node linkType: hard -"@cspell/dict-html@npm:^4.0.10": - version: 4.0.10 - resolution: "@cspell/dict-html@npm:4.0.10" - checksum: 10c0/1ccdca06b36107e70f0031c7797ec062dab75a3570b07d6579f28eaa78dd0a900b800a41fc07ed03f8383e83d8956db9d4384fd24992c7842557aa78b40ad3a9 +"@cspell/dict-html@npm:^4.0.11": + version: 4.0.11 + resolution: "@cspell/dict-html@npm:4.0.11" + checksum: 10c0/6bb7751cae019a2dd2df8660f2b220078cbf7cdbbb3e7bf647428295f7483c1efce31f04a3ea459da5c6b6d22f87c0b5fc77f5a14f3ed17aa382c25f1483f9ad languageName: node linkType: hard -"@cspell/dict-java@npm:^5.0.10": - version: 5.0.10 - resolution: "@cspell/dict-java@npm:5.0.10" - checksum: 10c0/5e3113559154c2069466a6d7b3bc9c95708ab26ac025ca8f86645f5bbf492d89b369c6dc73a53d4b672f7f6141b646a970d6abdbd04c8b0e47c4689b5587edd5 +"@cspell/dict-java@npm:^5.0.11": + version: 5.0.11 + resolution: "@cspell/dict-java@npm:5.0.11" + checksum: 10c0/167ad55bec88ad9986d39fc483e20c0af64ffc5127bff42114ede20c8f90dc26074ee680266a8d09517a83c37bf50b2f0f5581ada870326ae2212c0c8caabb40 languageName: node linkType: hard -"@cspell/dict-julia@npm:^1.0.4": - version: 1.0.4 - resolution: "@cspell/dict-julia@npm:1.0.4" - checksum: 10c0/abd10732352d1d53a929c546e78f87afc745f4351add328b0e1bf093905b8083dc76fa29ba9ce3d29b893e96fdc44ed04b0418331430b4731fbb249debb10403 +"@cspell/dict-julia@npm:^1.1.0": + version: 1.1.0 + resolution: "@cspell/dict-julia@npm:1.1.0" + checksum: 10c0/851cc5d4e6f15f7b15fad6b601ae4a67158a9522e5dbdf675fddcd20255d0e89ff265a740a0c05a37c80d7aadfd0e9027de2b81b9d8d698ccdb5fdf26dcf1f89 languageName: node linkType: hard -"@cspell/dict-k8s@npm:^1.0.9": - version: 1.0.9 - resolution: "@cspell/dict-k8s@npm:1.0.9" - checksum: 10c0/66298e07977f1950114ed457f755d3be8faeb5ce6d70677ca60d144b9fb1a6f7e67c1d2b3ffa71232499a6100fd0c83c77c03baa220d99b0be2ac31e150b45db +"@cspell/dict-k8s@npm:^1.0.10": + version: 1.0.10 + resolution: "@cspell/dict-k8s@npm:1.0.10" + checksum: 10c0/d6de5ea9ad152f04e12fcc9b462608769e0fb99b0520d6786674dae9c3dd8ad04a40843fabf7510974b71bc2b32d5e47b11b4c9095118e90d856d18dbbf94787 + languageName: node + linkType: hard + +"@cspell/dict-kotlin@npm:^1.1.0": + version: 1.1.0 + resolution: "@cspell/dict-kotlin@npm:1.1.0" + checksum: 10c0/39e5c979d63958a06e2bfd89aa0a7f70217aac3a847603a5516395290d7c877ccb600cc5270e83edb25251106980592000dee5fb6700812c27ee6c61d281952f languageName: node linkType: hard @@ -1163,211 +1158,212 @@ __metadata: languageName: node linkType: hard -"@cspell/dict-lorem-ipsum@npm:^4.0.3": - version: 4.0.3 - resolution: "@cspell/dict-lorem-ipsum@npm:4.0.3" - checksum: 10c0/4c7682bb442e27894527c21265268ad7786dc4d087e0fae6c6c88a6483e93b07e0f26d59ef6a6bd836a5c92c3af6878914b2f98cad100ff244f0fd484ba03644 +"@cspell/dict-lorem-ipsum@npm:^4.0.4": + version: 4.0.4 + resolution: "@cspell/dict-lorem-ipsum@npm:4.0.4" + checksum: 10c0/a8f734acdab01f4171a38b079a2509fb27ceafef347ff02464e32211bf6877655f79ca411a681e415bb1b0a3feb524f00f3397734e945ada368179fe9080834a languageName: node linkType: hard -"@cspell/dict-lua@npm:^4.0.6": - version: 4.0.6 - resolution: "@cspell/dict-lua@npm:4.0.6" - checksum: 10c0/8fb550f3c7762ff1e3215cb1a4677b43a59a463c99eae5ac7eddf360269ec4d2abbc1cbcb4933df52eea026a65e681d62934c60bb92d0791640be81b5cbdc51c +"@cspell/dict-lua@npm:^4.0.7": + version: 4.0.7 + resolution: "@cspell/dict-lua@npm:4.0.7" + checksum: 10c0/4f6ea6d098f44a7bb5c87326ddb7f6e6e2e728f04445baef0c7d217c7399cea566a2b16e58724c8ed7ccf7dabdb1218c318330013ffa43f71782c288287855ca languageName: node linkType: hard -"@cspell/dict-makefile@npm:^1.0.3": - version: 1.0.3 - resolution: "@cspell/dict-makefile@npm:1.0.3" - checksum: 10c0/22576eca594afd4e8680e00d56d42a4298501f4a24e1999f150de8f3d85afe21698fa2cdcdd9b49a979b39bda7ebe364f57a818225312e39bddc92a760d61c78 +"@cspell/dict-makefile@npm:^1.0.4": + version: 1.0.4 + resolution: "@cspell/dict-makefile@npm:1.0.4" + checksum: 10c0/ac59836e7dcf95de7e2c04e5cf17a357c7aa06e72c638352beb3e8c7d94ab7736c3d1387f4829d24db3d4b1868fceddfb728ec3812c5f5062faf609668d3a970 languageName: node linkType: hard -"@cspell/dict-markdown@npm:^2.0.7": - version: 2.0.7 - resolution: "@cspell/dict-markdown@npm:2.0.7" +"@cspell/dict-markdown@npm:^2.0.10": + version: 2.0.10 + resolution: "@cspell/dict-markdown@npm:2.0.10" peerDependencies: - "@cspell/dict-css": ^4.0.16 - "@cspell/dict-html": ^4.0.10 + "@cspell/dict-css": ^4.0.17 + "@cspell/dict-html": ^4.0.11 "@cspell/dict-html-symbol-entities": ^4.0.3 - "@cspell/dict-typescript": ^3.1.11 - checksum: 10c0/8731b19ab5f25a33d5905337f011cfb8ed86b89edbc4a348d79ad0f6f1fee108046ab434786c277d961ae29d2e78d7958347f8c4005434a0a7fd07b2a8e9cc80 + "@cspell/dict-typescript": ^3.2.1 + checksum: 10c0/e976a295c1f936576edf412cf50818eccdd22c4a872d6a1a93e6499fa5577eb8564af1b61da09b5072f05053c92477573b30bff781a0c4819e9452cced413eb7 languageName: node linkType: hard -"@cspell/dict-monkeyc@npm:^1.0.9": - version: 1.0.9 - resolution: "@cspell/dict-monkeyc@npm:1.0.9" - checksum: 10c0/1ba425768363afeefa777ef0886dc421b2f47496794567473fc02a1453410638a6e340a1b06f67e63a6fc00b0e6253bf6c74d4bf11d8cd630ceecedf11c55aad +"@cspell/dict-monkeyc@npm:^1.0.10": + version: 1.0.10 + resolution: "@cspell/dict-monkeyc@npm:1.0.10" + checksum: 10c0/a48278f3d751b9d8f90930c55b9736c72aac02589c353849e68782de2e8019a16be88d5014693341a52db627ef9989ac4ea71b973a67c0cf2f8bacce8ec75a14 languageName: node linkType: hard -"@cspell/dict-node@npm:^5.0.5": - version: 5.0.5 - resolution: "@cspell/dict-node@npm:5.0.5" - checksum: 10c0/237821d87a25bbf2286cf1b3b03f2a7186342fdf1d335d22f32c74155c466c18cb1d862f2d540bade3dfa8020380c11d9df4b3046227c2f599429a232c488f2a +"@cspell/dict-node@npm:^5.0.7": + version: 5.0.7 + resolution: "@cspell/dict-node@npm:5.0.7" + checksum: 10c0/46520be977286bcc497ac883e47c407335dfd0522fff7c4a0e2d84e9b592ee5cdac432a19610f88f75550d1e2bea227c5fb5fb30eb13f47cc8b02ace24a7cad2 languageName: node linkType: hard -"@cspell/dict-npm@npm:^5.1.14": - version: 5.1.15 - resolution: "@cspell/dict-npm@npm:5.1.15" - checksum: 10c0/d45c219aaaeddf3378ee24616bf5f890011b58f00366374c9d8b2e337412e95115379496c570d4efc2d353af39d860d3604f2491a5c58b0cbad0e74c88f5b09f +"@cspell/dict-npm@npm:^5.2.1": + version: 5.2.4 + resolution: "@cspell/dict-npm@npm:5.2.4" + checksum: 10c0/b01a07baef601ca46bed697037b09c7aafa93cbb1b9b0206147e8746c280d1c9e9095cb0ec2909f5493978130155e98c48c681059b38bfd109cab5e0edd91714 languageName: node linkType: hard -"@cspell/dict-php@npm:^4.0.13": - version: 4.0.13 - resolution: "@cspell/dict-php@npm:4.0.13" - checksum: 10c0/2d2ee84a4b102290206c1f5ab710efb547b3c4d2be0f231930fe3323a5d846843ecfee5684c656ca90ee3ebff649af19d6022fbbe9bf304fddb77b353aed1ffa +"@cspell/dict-php@npm:^4.0.14": + version: 4.0.14 + resolution: "@cspell/dict-php@npm:4.0.14" + checksum: 10c0/185754d3e56de9db37db265e2073cca2977ad15d7b228c6a2a272db5699d8019b1d7096a8b76483bd757b0c00bbc426abffad37dcec404cdfc9912d7380b0cf9 languageName: node linkType: hard -"@cspell/dict-powershell@npm:^5.0.13": - version: 5.0.13 - resolution: "@cspell/dict-powershell@npm:5.0.13" - checksum: 10c0/8b731e720da9963f2ea2a10bf4560a4db41f9bd9dc4cd2de0bc9fb5f2b69e18e5a89d6f3b7cd8836d9b7adf11376634fd6a25792f8edab237ff82b3d1f624aec +"@cspell/dict-powershell@npm:^5.0.14": + version: 5.0.14 + resolution: "@cspell/dict-powershell@npm:5.0.14" + checksum: 10c0/2409aeb029c0abe869ce9d684fc17e9d117bf3f2d55a227a6229924c69ba70e1bd3683dd6f3cc309e1abdd435d6610dd6ad1a794ea28116997eeacd07efbc107 languageName: node linkType: hard -"@cspell/dict-public-licenses@npm:^2.0.11": - version: 2.0.11 - resolution: "@cspell/dict-public-licenses@npm:2.0.11" - checksum: 10c0/81fefcd0f425c5a354f3bcdfa635eba4dcb0a0c42c61fa379b2318510d080f619aaa01c5ea249b58a63462af83c9b6a5bbd5b259b0f9807a70d02723f4af20fa +"@cspell/dict-public-licenses@npm:^2.0.13": + version: 2.0.13 + resolution: "@cspell/dict-public-licenses@npm:2.0.13" + checksum: 10c0/c9fafd755e7543a14483abebe743b6e69eb3ce6d321e91c589ef2931d18de721c0c8f71e5fe750c7c3dd4146903aba56d54fac853c83d4d2779ce4989db3e650 languageName: node linkType: hard -"@cspell/dict-python@npm:^4.2.12": - version: 4.2.12 - resolution: "@cspell/dict-python@npm:4.2.12" +"@cspell/dict-python@npm:^4.2.17": + version: 4.2.18 + resolution: "@cspell/dict-python@npm:4.2.18" dependencies: - "@cspell/dict-data-science": "npm:^2.0.5" - checksum: 10c0/930f7f10eb89c56994d5e8d891d55950331c010e5f0d5dec03383a0d001078df646b44b003014504aba827dda8a1ff564902186586dc6e9ffc9637fa70b8a5bd + "@cspell/dict-data-science": "npm:^2.0.8" + checksum: 10c0/4d1023b720dbf6fc7eeeed4d3bda35ef4cf8c8a8ebbf339abdbe407f7c69b621bd5cf63c8327ee06b1d94f15753973528a5529f4720da2a6e30a5e379ca1904a languageName: node linkType: hard -"@cspell/dict-r@npm:^2.0.4": - version: 2.0.4 - resolution: "@cspell/dict-r@npm:2.0.4" - checksum: 10c0/3f5d2fdb41f058be4eb21a79b19f0c1f033e501ecfd30e43f5c3dd810235b9837c0cac1b5e2dc087845fd3db9e2d33e4ab31dd22b89c861d98d011e0cb33eb05 +"@cspell/dict-r@npm:^2.1.0": + version: 2.1.0 + resolution: "@cspell/dict-r@npm:2.1.0" + checksum: 10c0/96a1057a5789b15e85e7a3eca9042b0f94645da953b7919840fcb97f6ab72d1ebaae792e962cabb7479e1adbb9d8e565a9340c7b415518c713d578f2779c802a languageName: node linkType: hard -"@cspell/dict-ruby@npm:^5.0.7": - version: 5.0.7 - resolution: "@cspell/dict-ruby@npm:5.0.7" - checksum: 10c0/84ae8331467911d687f9c145a0cc310f06e9bae0c2abc872cfc2d890abe0fe9c53a7f6ea7d3f5de546ffcc715b2b8c63dcfe30e5d58a9eea910d307dad335b55 +"@cspell/dict-ruby@npm:^5.0.8": + version: 5.0.8 + resolution: "@cspell/dict-ruby@npm:5.0.8" + checksum: 10c0/24807292b33f3468c1580ef9bc781a6c93bb3b745b9130fa1d23ae9fe685609e08f13b0bdd61d271ec7307cf86273909fcff3958cc190a08b4fc2433729cf950 languageName: node linkType: hard -"@cspell/dict-rust@npm:^4.0.10": - version: 4.0.10 - resolution: "@cspell/dict-rust@npm:4.0.10" - checksum: 10c0/6731d59a9f7172f4d5e5d16ddd7dc848e0a5ed1dea2c58bef69dc91122e33f38ce1f942dd1eeaf6d154ec8bde279b2cb33330727d2057e80fa5ec64616ea1bf8 +"@cspell/dict-rust@npm:^4.0.11": + version: 4.0.11 + resolution: "@cspell/dict-rust@npm:4.0.11" + checksum: 10c0/f5adf582f45b02c0695e1118b1f99952cc3a443625b279b0d657dce1c297b74f9782c000e45959b9ab096509de99c0549c1dd01b49a83a3fd6d7453444a4d776 languageName: node linkType: hard -"@cspell/dict-scala@npm:^5.0.6": - version: 5.0.6 - resolution: "@cspell/dict-scala@npm:5.0.6" - checksum: 10c0/5018e63ef1e0b640d229a7a22baaae1244bfaa7d5639365f92ef4b4acd0d44e315905259f5a9135dbabf172390eb89b43cc04cf94d4b3a54e4c2f79083af75d8 +"@cspell/dict-scala@npm:^5.0.7": + version: 5.0.7 + resolution: "@cspell/dict-scala@npm:5.0.7" + checksum: 10c0/273eb0123b59d55624ce837b793c12a06f672ffd7653c40565d9647682b11851862929ae6f1171fe5b28dbb3ef4f5f7b892d4b3f939130f6947f75358684e59b languageName: node linkType: hard -"@cspell/dict-software-terms@npm:^4.1.17": - version: 4.1.18 - resolution: "@cspell/dict-software-terms@npm:4.1.18" - checksum: 10c0/cb7886107082ae973aae26fb35d0d1ea3851f8fc44e430e78120a85b08e3abb203e99e2a52a2a3e368fc3eb1aea22103b5185a79b03750604d2a4c88e9d1cff0 +"@cspell/dict-shell@npm:1.1.0, @cspell/dict-shell@npm:^1.1.0": + version: 1.1.0 + resolution: "@cspell/dict-shell@npm:1.1.0" + checksum: 10c0/820343ea423769099fc27ed1c5aa1e23b2f6d9f2552375b0f6343d4d6b34b2d010c15167883d46d3e68d5612770d23704ce0baf5c8fef4b0864224d38605a7f8 languageName: node linkType: hard -"@cspell/dict-sql@npm:^2.1.8": - version: 2.1.8 - resolution: "@cspell/dict-sql@npm:2.1.8" - checksum: 10c0/dad458146cba600716cc4990ed58a39ca1386049d85a66c0b484ba95c404743d650099b2e55ce11d472c7c183fd1e21519de6808f47a80aacb9db190d199e4b1 +"@cspell/dict-software-terms@npm:^5.0.5": + version: 5.0.10 + resolution: "@cspell/dict-software-terms@npm:5.0.10" + checksum: 10c0/58c87c316a47651c61920fd5366e120a7679b2d0a0359cda176ac2697d435724d2f7dd9ce81e6a050750e966b5fd6690a5698d31cac95a47808007343a5ba74d languageName: node linkType: hard -"@cspell/dict-svelte@npm:^1.0.5": - version: 1.0.5 - resolution: "@cspell/dict-svelte@npm:1.0.5" - checksum: 10c0/9f482c333c304a465fa5ae6cdbb736f32b47ca57a68ad6f3429a79720aa54082553381130272d7bfad01207c186aa557e712c0c5904d5b8d9b8fdfdfa9a88438 +"@cspell/dict-sql@npm:^2.2.0": + version: 2.2.0 + resolution: "@cspell/dict-sql@npm:2.2.0" + checksum: 10c0/bf509e15ef2973f829a1e52620b004a5c507837a25342645ea2776ff4c529f2c6422887316f78a1c217d490d65da41da385da98935f955c681e515a6b7a71703 languageName: node linkType: hard -"@cspell/dict-swift@npm:^2.0.4": - version: 2.0.4 - resolution: "@cspell/dict-swift@npm:2.0.4" - checksum: 10c0/10ef516b54da3b7c5e4a69009d444faaf4986f32121050ef319e997b25a0d63f707de7027dad4d17303d86d9707fad044f5ffae25e96e9fbca3a6aea555eccd5 +"@cspell/dict-svelte@npm:^1.0.6": + version: 1.0.6 + resolution: "@cspell/dict-svelte@npm:1.0.6" + checksum: 10c0/81864325d7bc97d51abbfbd717e2b3dca9eeffb1042be9483407493664c5c53fa7176cb07f648a2a7633da39870de37a20067e13a3ddc008803c5e80c37c5f15 languageName: node linkType: hard -"@cspell/dict-terraform@npm:^1.0.6": - version: 1.0.6 - resolution: "@cspell/dict-terraform@npm:1.0.6" - checksum: 10c0/0494d01703d671c47b93085ba791c2098640d11fc366adc877df16e79b5eccedf7d93d46d6acb37f4fa24f2c7ffac761ff1cd4c539ece2701519abbbbaa445e4 +"@cspell/dict-swift@npm:^2.0.5": + version: 2.0.5 + resolution: "@cspell/dict-swift@npm:2.0.5" + checksum: 10c0/3123cfde3661ae2b6255863ce4afc648e7e30f20ffb3289e51a624c4b9688cb4e489aff864987e7a1b6f893026f97f5082a8c688e05491f60cad6cc03558ef3c languageName: node linkType: hard -"@cspell/dict-typescript@npm:^3.1.11": - version: 3.1.11 - resolution: "@cspell/dict-typescript@npm:3.1.11" - checksum: 10c0/080558cb1399c64ff0a9cb5b711e726bf6585e983f6559518b13f9ec1770db2880434ee772186b755b863c8a22f6b4c1660038627e5c32239dd1ddc59ee87273 +"@cspell/dict-terraform@npm:^1.1.1": + version: 1.1.1 + resolution: "@cspell/dict-terraform@npm:1.1.1" + checksum: 10c0/c6d54c4e9cae5f8e83fe07051d09224c7d8cdbe02e3d8c75613f1c01e187a0959065fbe9c67fcaf8715aac6633196b32839e5ae05e9a63d7b07448b3e7e33eb3 languageName: node linkType: hard -"@cspell/dict-vue@npm:^3.0.3": - version: 3.0.3 - resolution: "@cspell/dict-vue@npm:3.0.3" - checksum: 10c0/8b69413b5b5002cff8b1b2f8441accc14fdc1fca731ff30be66ba925e9cbbb4caf428c2a35327b756269fbe608db7d3ec0946f8017f8433ee508ead14147389f +"@cspell/dict-typescript@npm:^3.2.1": + version: 3.2.1 + resolution: "@cspell/dict-typescript@npm:3.2.1" + checksum: 10c0/79069c810021210052c450a5c68097108730ff07c57a411e156f2ed225bcef8504b80581975867ac952d942b675409a5a16ca29d91c684438528e9bd525ec42b languageName: node linkType: hard -"@cspell/dynamic-import@npm:8.16.1": - version: 8.16.1 - resolution: "@cspell/dynamic-import@npm:8.16.1" - dependencies: - import-meta-resolve: "npm:^4.1.0" - checksum: 10c0/083b0de1795ecc2b72a2205919735804a7626bb67ca28dab6007c58dc70eca496cad0b7ef2534476dd163a9b427eb0063be369de5949755aaf89c328d96da3ce +"@cspell/dict-vue@npm:^3.0.4": + version: 3.0.4 + resolution: "@cspell/dict-vue@npm:3.0.4" + checksum: 10c0/8a39099c15a6d2ae640aa5a2947dc0c9baf782a8754afaccc0d1fb014fda20be121cf4c2cff6f7e9e61c62fab52a7b8b2a3a07dfe2996b6ea6e4d80165746416 languageName: node linkType: hard -"@cspell/filetypes@npm:8.16.1": - version: 8.16.1 - resolution: "@cspell/filetypes@npm:8.16.1" - checksum: 10c0/539f230eb097b95e36777f93891034fa6657af7fb04eac38ffd464440b8e6c5b9445c83b8202260104b8e102218f7759c88d8e603681af907c03e99f0a65fb7d +"@cspell/dynamic-import@npm:8.19.4": + version: 8.19.4 + resolution: "@cspell/dynamic-import@npm:8.19.4" + dependencies: + "@cspell/url": "npm:8.19.4" + import-meta-resolve: "npm:^4.1.0" + checksum: 10c0/2af14cdc075da171353d1b46edc34d8912ce3897f93eb76060c322d64fc885000c6450b625bd2fa453eaf078ace1442c983419fbeea186450ad2ac9df0609559 languageName: node linkType: hard -"@cspell/strong-weak-map@npm:8.16.1": - version: 8.16.1 - resolution: "@cspell/strong-weak-map@npm:8.16.1" - checksum: 10c0/11338336d372dab8898017eb54bf7f31e3d92b5a51d192f2185df99d92473a8ce8e6742f29a8670faa0a1a520c4de3166e6dbac26fc93b61ff6f74aa35d6fdf3 +"@cspell/filetypes@npm:8.19.4": + version: 8.19.4 + resolution: "@cspell/filetypes@npm:8.19.4" + checksum: 10c0/c559bbc6e30bd8b1a0fe95f47a1d5eb631785df99ff1c2740ca02e118c3ab608e9b88ffae0e875d5d958c0152a7effff8e522ee371fdc505eaee505ea80f15d4 languageName: node linkType: hard -"@cspell/url@npm:8.16.1": - version: 8.16.1 - resolution: "@cspell/url@npm:8.16.1" - checksum: 10c0/79ce9e8946c79c0c5b2a8f49c3cdab89edca7b21e5b23152f951a3b78905a2bd829a45139ad6cca4126879e43d8f5c6ddd92d90b30203c6b1acc19b677164f19 +"@cspell/strong-weak-map@npm:8.19.4": + version: 8.19.4 + resolution: "@cspell/strong-weak-map@npm:8.19.4" + checksum: 10c0/ffa84dc389ac9285a3994d6fa85fc9cc025007b351851bfd4ea14dca472f58c3f805d4dba97edd454674becbcb97f02b24001072eb0c66fcad74b4fc6235ad78 languageName: node linkType: hard -"@csstools/cascade-layer-name-parser@npm:^1.0.13": - version: 1.0.13 - resolution: "@csstools/cascade-layer-name-parser@npm:1.0.13" - peerDependencies: - "@csstools/css-parser-algorithms": ^2.7.1 - "@csstools/css-tokenizer": ^2.4.1 - checksum: 10c0/a6412fc8601af1baadc8195934aa668d3476e799891c9d0883390f31ec8678e9b565ac14d919bec633bbc086657ac12aa4cd852c718851a2d34517ee6856ff8e +"@cspell/url@npm:8.19.4": + version: 8.19.4 + resolution: "@cspell/url@npm:8.19.4" + checksum: 10c0/37dc0414bd1c7d425b253877a685a317745ef61716ca1306b2aca41e79334f85c9afc5103a62b7c4fc4be754ff8fd63f00c04a7bfa13fcc3e2f64cdee1c12617 languageName: node linkType: hard -"@csstools/color-helpers@npm:^4.2.1": - version: 4.2.1 - resolution: "@csstools/color-helpers@npm:4.2.1" - checksum: 10c0/72e11b186ad0f6019a9b4b3752e620fa798c2a40cf47e8cad565dff46e572c9342eb8cf804542d7886344a1e540555d77f20119ace6b2d8a45b6e5ef8a41685c +"@csstools/cascade-layer-name-parser@npm:^2.0.4": + version: 2.0.4 + resolution: "@csstools/cascade-layer-name-parser@npm:2.0.4" + peerDependencies: + "@csstools/css-parser-algorithms": ^3.0.4 + "@csstools/css-tokenizer": ^3.0.3 + checksum: 10c0/774f2bcc96a576183853191bdfd31df15e22c51901ee01678ee47f1d1afcb4ab0e6d9a78e08f7383ac089c7e0b390013633f45ff1f1d577c9aefd252589bcced languageName: node linkType: hard @@ -1378,16 +1374,6 @@ __metadata: languageName: node linkType: hard -"@csstools/css-calc@npm:^1.2.4": - version: 1.2.4 - resolution: "@csstools/css-calc@npm:1.2.4" - peerDependencies: - "@csstools/css-parser-algorithms": ^2.7.1 - "@csstools/css-tokenizer": ^2.4.1 - checksum: 10c0/6233746eb642797b7fbc2cf6e7651e95700b294e78e3c29e8730c3236bb92cf62903efb6e54639e8f877683c40646e137c95e615c4450809b21b61a6192888ca - languageName: node - linkType: hard - "@csstools/css-calc@npm:^2.1.3": version: 2.1.3 resolution: "@csstools/css-calc@npm:2.1.3" @@ -1398,19 +1384,6 @@ __metadata: languageName: node linkType: hard -"@csstools/css-color-parser@npm:^2.0.4": - version: 2.0.4 - resolution: "@csstools/css-color-parser@npm:2.0.4" - dependencies: - "@csstools/color-helpers": "npm:^4.2.1" - "@csstools/css-calc": "npm:^1.2.4" - peerDependencies: - "@csstools/css-parser-algorithms": ^2.7.1 - "@csstools/css-tokenizer": ^2.4.1 - checksum: 10c0/e009a2f34b6c328daad54262deb86b71c6a7a9a1da1db8ad39cf719641e1a728ed8ddbd23613d519d26deee33b89ba12cb15a6928718c1b3cc5e24ac1ed02f47 - languageName: node - linkType: hard - "@csstools/css-color-parser@npm:^3.0.9": version: 3.0.9 resolution: "@csstools/css-color-parser@npm:3.0.9" @@ -1424,15 +1397,6 @@ __metadata: languageName: node linkType: hard -"@csstools/css-parser-algorithms@npm:^2.7.1": - version: 2.7.1 - resolution: "@csstools/css-parser-algorithms@npm:2.7.1" - peerDependencies: - "@csstools/css-tokenizer": ^2.4.1 - checksum: 10c0/7d29bef6f5790ddb67d922ad232253bf910e4fa5293f5e4a5ed8b920ae9bd4e8171942df7d8943af23b42fd4e9fb460181394d20c97da9562e6ce98a875e8c47 - languageName: node - linkType: hard - "@csstools/css-parser-algorithms@npm:^3.0.4": version: 3.0.4 resolution: "@csstools/css-parser-algorithms@npm:3.0.4" @@ -1442,13 +1406,6 @@ __metadata: languageName: node linkType: hard -"@csstools/css-tokenizer@npm:^2.4.1": - version: 2.4.1 - resolution: "@csstools/css-tokenizer@npm:2.4.1" - checksum: 10c0/fe71cee85ec7372da07083d088b6a704f43e5d3d2d8071c4b8a86fae60408b559a218a43f8625bf2f0be5c7f90c8f3ad20a1aae1921119a1c02b51c310cc2b6b - languageName: node - linkType: hard - "@csstools/css-tokenizer@npm:^3.0.3": version: 3.0.3 resolution: "@csstools/css-tokenizer@npm:3.0.3" @@ -1456,16 +1413,6 @@ __metadata: languageName: node linkType: hard -"@csstools/media-query-list-parser@npm:^2.1.13": - version: 2.1.13 - resolution: "@csstools/media-query-list-parser@npm:2.1.13" - peerDependencies: - "@csstools/css-parser-algorithms": ^2.7.1 - "@csstools/css-tokenizer": ^2.4.1 - checksum: 10c0/8bf72342c15581b8f658633436d83c26a214056f6b960ff121b940271f4b1b5b07e9cc3990a73e684fb72319592f0c392408b4f0e08bbe242b2065aa456e2733 - languageName: node - linkType: hard - "@csstools/media-query-list-parser@npm:^4.0.2": version: 4.0.2 resolution: "@csstools/media-query-list-parser@npm:4.0.2" @@ -1476,392 +1423,409 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-cascade-layers@npm:^4.0.6": - version: 4.0.6 - resolution: "@csstools/postcss-cascade-layers@npm:4.0.6" +"@csstools/postcss-cascade-layers@npm:^5.0.1": + version: 5.0.1 + resolution: "@csstools/postcss-cascade-layers@npm:5.0.1" dependencies: - "@csstools/selector-specificity": "npm:^3.1.1" - postcss-selector-parser: "npm:^6.0.13" + "@csstools/selector-specificity": "npm:^5.0.0" + postcss-selector-parser: "npm:^7.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/134019e9b3f71de39034658e2a284f549883745a309f774d8d272871f9e65680e0981c893766537a8a56ed7f41dba2d0f9fc3cb4fa4057c227bc193976a2ec79 + checksum: 10c0/5cc3c6f220d9216f7ab16e716a20d6db845f127c917521e6236342bfa871accd63eb662a04c1e24a28e396412dcb47b1c4abccc490b88e4010cd704d14a702f1 languageName: node linkType: hard -"@csstools/postcss-color-function@npm:^3.0.19": - version: 3.0.19 - resolution: "@csstools/postcss-color-function@npm:3.0.19" +"@csstools/postcss-color-function@npm:^4.0.9": + version: 4.0.9 + resolution: "@csstools/postcss-color-function@npm:4.0.9" dependencies: - "@csstools/css-color-parser": "npm:^2.0.4" - "@csstools/css-parser-algorithms": "npm:^2.7.1" - "@csstools/css-tokenizer": "npm:^2.4.1" - "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0" - "@csstools/utilities": "npm:^1.0.0" + "@csstools/css-color-parser": "npm:^3.0.9" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" + "@csstools/postcss-progressive-custom-properties": "npm:^4.0.1" + "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/067e33d7dfc32b56fe63d4f97464a3eaf27dde720961e44feab6076bd2c172dd4c1bad16aa37a922dcbba470756bd6a13e728d9e71eab6937d48d83873cd1879 + checksum: 10c0/11f7e8a1a4d6ff113706928eb4702454d18ee8d6b07166b98d33b499ba1933cdf034876101a9c3d22fcc009d054ca6fe2df1455daf391d5eb4af86fa6b530e75 languageName: node linkType: hard -"@csstools/postcss-color-mix-function@npm:^2.0.19": - version: 2.0.19 - resolution: "@csstools/postcss-color-mix-function@npm:2.0.19" +"@csstools/postcss-color-mix-function@npm:^3.0.9": + version: 3.0.9 + resolution: "@csstools/postcss-color-mix-function@npm:3.0.9" dependencies: - "@csstools/css-color-parser": "npm:^2.0.4" - "@csstools/css-parser-algorithms": "npm:^2.7.1" - "@csstools/css-tokenizer": "npm:^2.4.1" - "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0" - "@csstools/utilities": "npm:^1.0.0" + "@csstools/css-color-parser": "npm:^3.0.9" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" + "@csstools/postcss-progressive-custom-properties": "npm:^4.0.1" + "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/e967d93672a065806dc78da0153f8b4f5087f7c3ddfe361eba4942780760d47b317124913c9b0dda7f9bfff1253f77d1b6debd8a6a2aa3a6c80e263101da5e8c + checksum: 10c0/e26ecec62ac6085e8c46225e444bfb6082fffad1559005c0746226b22f995727c2e4ede0fb347e37c81e8f4f2ac9cf4de88800184a650638351f4cbfb8baf1d3 languageName: node linkType: hard -"@csstools/postcss-content-alt-text@npm:^1.0.0": - version: 1.0.0 - resolution: "@csstools/postcss-content-alt-text@npm:1.0.0" +"@csstools/postcss-content-alt-text@npm:^2.0.5": + version: 2.0.5 + resolution: "@csstools/postcss-content-alt-text@npm:2.0.5" dependencies: - "@csstools/css-parser-algorithms": "npm:^2.7.1" - "@csstools/css-tokenizer": "npm:^2.4.1" - "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0" - "@csstools/utilities": "npm:^1.0.0" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" + "@csstools/postcss-progressive-custom-properties": "npm:^4.0.1" + "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/0c2c64857ac652989d00c3d2ba49d0cd1cc245193cba6724d2f5841aa990ee6a07267cfebc6fabde6a6246616df60373006d17c5ea9b904129fbfd826dc10a8d + checksum: 10c0/fd0543e8195b1a1228fa41995d48bafafb635d32b0b80bdae8edfc3af7fcccb75aa472a072e552420ed0bd2f62d38e764483e3b9cca25a41dc2b450098b2436d languageName: node linkType: hard -"@csstools/postcss-exponential-functions@npm:^1.0.9": - version: 1.0.9 - resolution: "@csstools/postcss-exponential-functions@npm:1.0.9" +"@csstools/postcss-exponential-functions@npm:^2.0.8": + version: 2.0.8 + resolution: "@csstools/postcss-exponential-functions@npm:2.0.8" dependencies: - "@csstools/css-calc": "npm:^1.2.4" - "@csstools/css-parser-algorithms": "npm:^2.7.1" - "@csstools/css-tokenizer": "npm:^2.4.1" + "@csstools/css-calc": "npm:^2.1.3" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" peerDependencies: postcss: ^8.4 - checksum: 10c0/eaec29ef6ec201786c606176235dced4af1922d5ac56c6b0993ad2e7d87464a32702d9b28cae9a76e8527f741b50cbc31d4c646f45d02dc69d520f241b3e7878 + checksum: 10c0/8ed7cea3ab7b3fce351dc678c97aad0c12d9e9eae43c9793081fc09e2b3281a89a9d67e57df02d87b6af40839d582b5d08523a9f9bfabbd4e05e319995ae7789 languageName: node linkType: hard -"@csstools/postcss-font-format-keywords@npm:^3.0.2": - version: 3.0.2 - resolution: "@csstools/postcss-font-format-keywords@npm:3.0.2" +"@csstools/postcss-font-format-keywords@npm:^4.0.0": + version: 4.0.0 + resolution: "@csstools/postcss-font-format-keywords@npm:4.0.0" dependencies: - "@csstools/utilities": "npm:^1.0.0" + "@csstools/utilities": "npm:^2.0.0" postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/1b9bf031ce1a00fef1fae0b1ad614eddc6bb4c036ecad47e065c99063ba3d2f6ab8e47f9db02a6fbe8b75b0e02a075a7a80480d4296918970ba9e8d36f07a523 + checksum: 10c0/eb794fb95fefcac75e606d185255e601636af177866a317b0c6b6c375055e7240be53918229fd8d4bba00df01bedd2256bdac2b0ad4a4c2ec64f9d27cd6ff639 languageName: node linkType: hard -"@csstools/postcss-gamut-mapping@npm:^1.0.11": - version: 1.0.11 - resolution: "@csstools/postcss-gamut-mapping@npm:1.0.11" +"@csstools/postcss-gamut-mapping@npm:^2.0.9": + version: 2.0.9 + resolution: "@csstools/postcss-gamut-mapping@npm:2.0.9" dependencies: - "@csstools/css-color-parser": "npm:^2.0.4" - "@csstools/css-parser-algorithms": "npm:^2.7.1" - "@csstools/css-tokenizer": "npm:^2.4.1" + "@csstools/css-color-parser": "npm:^3.0.9" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" peerDependencies: postcss: ^8.4 - checksum: 10c0/29e755013f1d1de34eb62a931ed410d2830ca3dfc81476cb3c72d9d3260b85a9adedc51aa548550c6e308f3f9640c489e6953db40e9cac9835d0421d5b14ef1f + checksum: 10c0/a5985c74bfa8c0fc4406cec807818e35949c73d62b6acd2901dbdd54a30afa7d2094f839ba550812bca76f0df95205492f271df4bab03f4b15115cf10b06b1b5 languageName: node linkType: hard -"@csstools/postcss-gradients-interpolation-method@npm:^4.0.20": - version: 4.0.20 - resolution: "@csstools/postcss-gradients-interpolation-method@npm:4.0.20" +"@csstools/postcss-gradients-interpolation-method@npm:^5.0.9": + version: 5.0.9 + resolution: "@csstools/postcss-gradients-interpolation-method@npm:5.0.9" dependencies: - "@csstools/css-color-parser": "npm:^2.0.4" - "@csstools/css-parser-algorithms": "npm:^2.7.1" - "@csstools/css-tokenizer": "npm:^2.4.1" - "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0" - "@csstools/utilities": "npm:^1.0.0" + "@csstools/css-color-parser": "npm:^3.0.9" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" + "@csstools/postcss-progressive-custom-properties": "npm:^4.0.1" + "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/6588825a72a1471e2d6036c8cf7dbad2bf05f369d96dbdd68ff5ce7ff91803b8ee1146f5f1bf6f3ab6299944549da872914664c3f9e8ae5a31847f76f0085c74 + checksum: 10c0/b284558e38c096e1abfb04306717e23eec841ab23979479adbe165332db84503493b74e6d23d7752abec9327b9bfc343857e9a2393957d5bb9fd2e249570467e languageName: node linkType: hard -"@csstools/postcss-hwb-function@npm:^3.0.18": - version: 3.0.18 - resolution: "@csstools/postcss-hwb-function@npm:3.0.18" +"@csstools/postcss-hwb-function@npm:^4.0.9": + version: 4.0.9 + resolution: "@csstools/postcss-hwb-function@npm:4.0.9" dependencies: - "@csstools/css-color-parser": "npm:^2.0.4" - "@csstools/css-parser-algorithms": "npm:^2.7.1" - "@csstools/css-tokenizer": "npm:^2.4.1" - "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0" - "@csstools/utilities": "npm:^1.0.0" + "@csstools/css-color-parser": "npm:^3.0.9" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" + "@csstools/postcss-progressive-custom-properties": "npm:^4.0.1" + "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/e9d76b0b2f9c54920124ca1804b49e3f5b26e003729418b5ef4b340ff1baa4779da1c02be618888fdbcc2d0747182352efbbd3ffe128e2417928c35c25443789 + checksum: 10c0/31f9b3540e8af221e1716944ed8719f97ae335e5f866dfc96a3d81f042ef8975ce0d6163925cb32514f4903cb35177bf8d814a571da3f44b63244f88b6b395ad languageName: node linkType: hard -"@csstools/postcss-ic-unit@npm:^3.0.7": - version: 3.0.7 - resolution: "@csstools/postcss-ic-unit@npm:3.0.7" +"@csstools/postcss-ic-unit@npm:^4.0.1": + version: 4.0.1 + resolution: "@csstools/postcss-ic-unit@npm:4.0.1" dependencies: - "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0" - "@csstools/utilities": "npm:^1.0.0" + "@csstools/postcss-progressive-custom-properties": "npm:^4.0.1" + "@csstools/utilities": "npm:^2.0.0" postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/2add905b75860c64d7174886fecfc76d86e3818f42f003f4bbfc0604cc7f0f31c6dbd1651e6b9512fea876190d80033578ae49e813b64b17c8cf3b1f03d8e146 + checksum: 10c0/1097cbdc385bcf32e15df1ed2946477c5927e34ebaf273297f1ae46aeaf2084c7a63858ba1a7a5e1f241be441968a2e1c6deb43ddb101708110c7f608b6fc525 languageName: node linkType: hard -"@csstools/postcss-initial@npm:^1.0.1": - version: 1.0.1 - resolution: "@csstools/postcss-initial@npm:1.0.1" +"@csstools/postcss-initial@npm:^2.0.1": + version: 2.0.1 + resolution: "@csstools/postcss-initial@npm:2.0.1" peerDependencies: postcss: ^8.4 - checksum: 10c0/5d21c7c611d90a4b6758ba5be5e38d8d9eea9499c62797c4f5e01fbc9ccc2c68daf1c201850efe70ffa4ff9e979e7dea80b854b8793768550879562881aa6f9f + checksum: 10c0/dbff7084ef4f1c4647efe2b147001daf172003c15b5e22689f0540d03c8d362f2a332cd9cf136e6c8dcda7564ee30492a4267ea188f72cb9c1000fb9bcfbfef8 languageName: node linkType: hard -"@csstools/postcss-is-pseudo-class@npm:^4.0.8": - version: 4.0.8 - resolution: "@csstools/postcss-is-pseudo-class@npm:4.0.8" +"@csstools/postcss-is-pseudo-class@npm:^5.0.1": + version: 5.0.1 + resolution: "@csstools/postcss-is-pseudo-class@npm:5.0.1" dependencies: - "@csstools/selector-specificity": "npm:^3.1.1" - postcss-selector-parser: "npm:^6.0.13" + "@csstools/selector-specificity": "npm:^5.0.0" + postcss-selector-parser: "npm:^7.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/82f191571c3e0973354a54ef15feeb17f9408b4abbefad19fc0f087683b1212fc854cdf09a47324267dd47be4c5cb47d63b8d083695a67c3f8f3e53df3d561f6 + checksum: 10c0/3aaab18ebb2dcf5565efa79813eaa987d40de1e086765358524392a09631c68ad1ee952e6aff8f42513b2c18ab84891787e065fe287f696128498fc641520b6c languageName: node linkType: hard -"@csstools/postcss-light-dark-function@npm:^1.0.8": - version: 1.0.8 - resolution: "@csstools/postcss-light-dark-function@npm:1.0.8" +"@csstools/postcss-light-dark-function@npm:^2.0.8": + version: 2.0.8 + resolution: "@csstools/postcss-light-dark-function@npm:2.0.8" dependencies: - "@csstools/css-parser-algorithms": "npm:^2.7.1" - "@csstools/css-tokenizer": "npm:^2.4.1" - "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0" - "@csstools/utilities": "npm:^1.0.0" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" + "@csstools/postcss-progressive-custom-properties": "npm:^4.0.1" + "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/78fa6d799d38f14af1b32b534eedbec9478033e1fbc5a4e820f2421e865673d010b69b391546686ceb408ead64d79bb4eba2a4fb1fc9f0de70ff21e3ff8477c6 + checksum: 10c0/5494516f52d467dcace80495a4fb0fbd24207ae13634bb82b5c24e5d52e84665aebc28cd31fed8d96a41e91bf822185aba5a3d01680a140278c484741516c383 languageName: node linkType: hard -"@csstools/postcss-logical-float-and-clear@npm:^2.0.1": - version: 2.0.1 - resolution: "@csstools/postcss-logical-float-and-clear@npm:2.0.1" +"@csstools/postcss-logical-float-and-clear@npm:^3.0.0": + version: 3.0.0 + resolution: "@csstools/postcss-logical-float-and-clear@npm:3.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/92d9184bf8a159753a5872463dcfde580abd9b935e2a59f7ebe601cd14d9871f2f9f4dc18d8bbe251e7d8a3e446e302d9d99bf408d9cabbd9a6323825f5e833d + checksum: 10c0/71a20e8c37877bf68ae615d7bb93fc11b4f8da8be8b1dc1a6e0fc69e27f189712ed71436b8ed51fa69fdb98b8e6718df2b5f42f246c4d39badaf0e43020fcfd4 languageName: node linkType: hard -"@csstools/postcss-logical-overflow@npm:^1.0.1": - version: 1.0.1 - resolution: "@csstools/postcss-logical-overflow@npm:1.0.1" +"@csstools/postcss-logical-overflow@npm:^2.0.0": + version: 2.0.0 + resolution: "@csstools/postcss-logical-overflow@npm:2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/a8f5b1fdaf4ce7b1665407dac2f2e0c0ea11195e6873cfc714d9cd206489170fd91fc172b337330baf60191206f60579e235264f0dc7fee750ccd27ffe02c163 + checksum: 10c0/0e103343d3ff8b34eef01b02355c5e010d272fd12d149a242026bb13ab1577b7f3a11fd4514be9342d96f73d61dac1f093a9bd36ece591753ed09a84eb7fca0a languageName: node linkType: hard -"@csstools/postcss-logical-overscroll-behavior@npm:^1.0.1": - version: 1.0.1 - resolution: "@csstools/postcss-logical-overscroll-behavior@npm:1.0.1" +"@csstools/postcss-logical-overscroll-behavior@npm:^2.0.0": + version: 2.0.0 + resolution: "@csstools/postcss-logical-overscroll-behavior@npm:2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/9485502bd9235276525351818d6cc11544ac1b270bb4f527f3fac32fe98ac66269366c34cdb8f61920b10ff9aac5824935004a5927490a5febca77eb41226604 + checksum: 10c0/1649601bb26f04d760fb5ebc42cdf414fa2a380b8ec22fe1c117f664c286665a786bd7bbda01b7e7567eaf3cc018a4f36a5c9805f6751cc497da223e0ffe9524 languageName: node linkType: hard -"@csstools/postcss-logical-resize@npm:^2.0.1": - version: 2.0.1 - resolution: "@csstools/postcss-logical-resize@npm:2.0.1" +"@csstools/postcss-logical-resize@npm:^3.0.0": + version: 3.0.0 + resolution: "@csstools/postcss-logical-resize@npm:3.0.0" dependencies: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/18f7e19ea465a15b334d8231b9ed98b630c74a6c2a6c52884437b852065f7b55bb1282cdbbdc1136aade479e996605b01799ab0ab771e2c47fd78d966ed33162 + checksum: 10c0/4f12efcaf5468ff359bb3f32f0f66034b9acc9b3ac21fcd2f30a1c8998fc653ebac0091f35c8b7e8dbfe6ccf595aee67f9b06a67adf45a8844e49a82d98b4386 languageName: node linkType: hard -"@csstools/postcss-logical-viewport-units@npm:^2.0.11": - version: 2.0.11 - resolution: "@csstools/postcss-logical-viewport-units@npm:2.0.11" +"@csstools/postcss-logical-viewport-units@npm:^3.0.3": + version: 3.0.3 + resolution: "@csstools/postcss-logical-viewport-units@npm:3.0.3" dependencies: - "@csstools/css-tokenizer": "npm:^2.4.1" - "@csstools/utilities": "npm:^1.0.0" + "@csstools/css-tokenizer": "npm:^3.0.3" + "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/20207e9b7fc3ab52df5fcd06fde71fca4fd22bd6bd451cfc2ec6ea69994708b7fc5381e203dc4367293a8de00b1eca7a3ebe89cfa9b933d2f2cb8e3ac4d5aa86 + checksum: 10c0/8ec746598d7ce8697c3dafd83cb3a319a90079ad755dd78e3ec92f4ba9ad849c4cdaba33b16e9dcbac1e9489b3d7c48262030110c20ce1d88cdacbe9f5987cec languageName: node linkType: hard -"@csstools/postcss-media-minmax@npm:^1.1.8": - version: 1.1.8 - resolution: "@csstools/postcss-media-minmax@npm:1.1.8" +"@csstools/postcss-media-minmax@npm:^2.0.8": + version: 2.0.8 + resolution: "@csstools/postcss-media-minmax@npm:2.0.8" dependencies: - "@csstools/css-calc": "npm:^1.2.4" - "@csstools/css-parser-algorithms": "npm:^2.7.1" - "@csstools/css-tokenizer": "npm:^2.4.1" - "@csstools/media-query-list-parser": "npm:^2.1.13" + "@csstools/css-calc": "npm:^2.1.3" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" + "@csstools/media-query-list-parser": "npm:^4.0.2" peerDependencies: postcss: ^8.4 - checksum: 10c0/7d666905282c7a89387dbce84f3429bad04870e0de264c5b1ce3e6f042b8eb72d585a18b2d7ac5e1a8c7f6785892da3cc7f6ea0b48069b06e9d383bdbc149b4a + checksum: 10c0/aff72b83b888d3d0dc6441f219f7c2833a4aa0f59493da22db1087fce32763bb765f068c6ddedc0ddc6fe79f1843e6b1375af07fa572494ecac91e59b1dc324f languageName: node linkType: hard -"@csstools/postcss-media-queries-aspect-ratio-number-values@npm:^2.0.11": - version: 2.0.11 - resolution: "@csstools/postcss-media-queries-aspect-ratio-number-values@npm:2.0.11" +"@csstools/postcss-media-queries-aspect-ratio-number-values@npm:^3.0.4": + version: 3.0.4 + resolution: "@csstools/postcss-media-queries-aspect-ratio-number-values@npm:3.0.4" dependencies: - "@csstools/css-parser-algorithms": "npm:^2.7.1" - "@csstools/css-tokenizer": "npm:^2.4.1" - "@csstools/media-query-list-parser": "npm:^2.1.13" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" + "@csstools/media-query-list-parser": "npm:^4.0.2" peerDependencies: postcss: ^8.4 - checksum: 10c0/b4023a1951b7661196332852ce714a4e2fb4f1a67164ec0944e28a009b389e59c67e9de790920fcd082b122276414dd39c12ae12a4566e59e1bbcc794560a870 + checksum: 10c0/27dc9419b0f4315774647588f599348e7cc593984f59b414c51c910066501fd087cbe232deb762907c18bd21dd4184e7b6e0e0b730e5c72341ab9cc696c75739 languageName: node linkType: hard -"@csstools/postcss-nested-calc@npm:^3.0.2": - version: 3.0.2 - resolution: "@csstools/postcss-nested-calc@npm:3.0.2" +"@csstools/postcss-nested-calc@npm:^4.0.0": + version: 4.0.0 + resolution: "@csstools/postcss-nested-calc@npm:4.0.0" dependencies: - "@csstools/utilities": "npm:^1.0.0" + "@csstools/utilities": "npm:^2.0.0" postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/3e24cf641170f9090f0dce088f6dae09ed9a0f38af1bdaa369ecc791a94cce54d7a02a0634f661a97fae24e04f1601c21d753593de018c80ad4236d36144b975 + checksum: 10c0/fb61512fa4909bdf0ee32a23e771145086c445f2208a737b52093c8adfab7362c56d3aeaf2a6e33ffcec067e99a07219775465d2fbb1a3ac30cdcfb278b218b7 languageName: node linkType: hard -"@csstools/postcss-normalize-display-values@npm:^3.0.2": - version: 3.0.2 - resolution: "@csstools/postcss-normalize-display-values@npm:3.0.2" +"@csstools/postcss-normalize-display-values@npm:^4.0.0": + version: 4.0.0 + resolution: "@csstools/postcss-normalize-display-values@npm:4.0.0" dependencies: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/a20e2f4c213a5ec6e004c2ba76b543d3288a39aae21b3198b06a57df0d2c7916111d2cd70dcb0e8c6ca1cf1b01751e88fd2fe9abbc070e1efab1a4e54dcdbbbe + checksum: 10c0/d3a3a362b532163bd791f97348ef28b7a43baf01987c7702b06285e751cdc5ea3e3a2553f088260515b4d28263d5c475923d4d4780ecb4078ec66dff50c9e638 languageName: node linkType: hard -"@csstools/postcss-oklab-function@npm:^3.0.19": - version: 3.0.19 - resolution: "@csstools/postcss-oklab-function@npm:3.0.19" +"@csstools/postcss-oklab-function@npm:^4.0.9": + version: 4.0.9 + resolution: "@csstools/postcss-oklab-function@npm:4.0.9" dependencies: - "@csstools/css-color-parser": "npm:^2.0.4" - "@csstools/css-parser-algorithms": "npm:^2.7.1" - "@csstools/css-tokenizer": "npm:^2.4.1" - "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0" - "@csstools/utilities": "npm:^1.0.0" + "@csstools/css-color-parser": "npm:^3.0.9" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" + "@csstools/postcss-progressive-custom-properties": "npm:^4.0.1" + "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/2909f76ba408c9f60b61c479994c96200b0e1d3dbf524d5ae6dc5ca1e21d38caf974595e0d071c3900dbe3568376928085dd811aa24ea3e715bcd9de26fb0fa9 + checksum: 10c0/9955aafc1dfc0bb5c886b2af3a82abed2d0a707c7654b2b49886db4c7153e1a016f327f4cc0d94b5b28f3b6227d9b3422c63555f78412433655beec90f37b388 languageName: node linkType: hard -"@csstools/postcss-progressive-custom-properties@npm:^3.3.0": - version: 3.3.0 - resolution: "@csstools/postcss-progressive-custom-properties@npm:3.3.0" +"@csstools/postcss-progressive-custom-properties@npm:^4.0.1": + version: 4.0.1 + resolution: "@csstools/postcss-progressive-custom-properties@npm:4.0.1" dependencies: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/6c9987d65049a70b5090dcfe42fde9ab2b3cb88911a81bb6651ed81c8baf99502ff2cbec0cb3e022426fa994b558b4bf33fd791ccdcdf683dde75b4865d34f39 + checksum: 10c0/a33e2a67ac29e731b112df9718596f703990492900bb118c513fcee7c0dc0a03f58248b2c5467b14de3e757f0ef2c6d97882254af784d8df390c633780bdf1f9 languageName: node linkType: hard -"@csstools/postcss-relative-color-syntax@npm:^2.0.19": - version: 2.0.19 - resolution: "@csstools/postcss-relative-color-syntax@npm:2.0.19" +"@csstools/postcss-random-function@npm:^2.0.0": + version: 2.0.0 + resolution: "@csstools/postcss-random-function@npm:2.0.0" dependencies: - "@csstools/css-color-parser": "npm:^2.0.4" - "@csstools/css-parser-algorithms": "npm:^2.7.1" - "@csstools/css-tokenizer": "npm:^2.4.1" - "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0" - "@csstools/utilities": "npm:^1.0.0" + "@csstools/css-calc": "npm:^2.1.3" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" peerDependencies: postcss: ^8.4 - checksum: 10c0/f0aff764f4889ff664b6fa94ddfa5a22daf39354aa2d2ac0eab893eb3ed841b7d2a72131393334d6a5379445fc80f92ab5bd63d4dc3b43746bc7c9055da46591 + checksum: 10c0/e0744b1472c4037b6491aac232d005659c0c65bc08af785cbdc50b722efaf71330e38607f4c88b54322338294f92ec68817ec1cd6e688953aa127f27cd2a5b00 languageName: node linkType: hard -"@csstools/postcss-scope-pseudo-class@npm:^3.0.1": - version: 3.0.1 - resolution: "@csstools/postcss-scope-pseudo-class@npm:3.0.1" +"@csstools/postcss-relative-color-syntax@npm:^3.0.9": + version: 3.0.9 + resolution: "@csstools/postcss-relative-color-syntax@npm:3.0.9" dependencies: - postcss-selector-parser: "npm:^6.0.13" + "@csstools/css-color-parser": "npm:^3.0.9" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" + "@csstools/postcss-progressive-custom-properties": "npm:^4.0.1" + "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/489c5469951277b810754ba02e9f6c42196e03f2203b908181a81747bf1dcaa7b194c8c0f5c7dcb6b7276d08f2573a71bd7df4f2251c034ef1b92968c7070285 + checksum: 10c0/486e6c91b1042ca96e6e5c3d94d95e343101c7862e772aee16cd48607633f7c93c42dd23b5adc44cfa8dc8cb32ef3ba0f1f86e3f9a23be5c8744533d23128624 languageName: node linkType: hard -"@csstools/postcss-stepped-value-functions@npm:^3.0.10": - version: 3.0.10 - resolution: "@csstools/postcss-stepped-value-functions@npm:3.0.10" +"@csstools/postcss-scope-pseudo-class@npm:^4.0.1": + version: 4.0.1 + resolution: "@csstools/postcss-scope-pseudo-class@npm:4.0.1" dependencies: - "@csstools/css-calc": "npm:^1.2.4" - "@csstools/css-parser-algorithms": "npm:^2.7.1" - "@csstools/css-tokenizer": "npm:^2.4.1" + postcss-selector-parser: "npm:^7.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/f9ebe50fb884d002aa40070196a827816f635b891fd2147ae5ddf1ad6df5bddbb50783d6786897bb3dffa33052565e38289392040cf4454aaa179ab00353117d + checksum: 10c0/6a0ca50fae655f4498200d1ce298ca794c85fbe2e3fd5d6419843254f055df5007a973e09b5f1e78e376c02b54278e411516c8d824300c68b265d3e5b311d7ee languageName: node linkType: hard -"@csstools/postcss-text-decoration-shorthand@npm:^3.0.7": - version: 3.0.7 - resolution: "@csstools/postcss-text-decoration-shorthand@npm:3.0.7" +"@csstools/postcss-sign-functions@npm:^1.1.3": + version: 1.1.3 + resolution: "@csstools/postcss-sign-functions@npm:1.1.3" dependencies: - "@csstools/color-helpers": "npm:^4.2.1" - postcss-value-parser: "npm:^4.2.0" + "@csstools/css-calc": "npm:^2.1.3" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" peerDependencies: postcss: ^8.4 - checksum: 10c0/072b9893ca2409aa16e53e84747d7b7e13071ce19738a0800a139bf71b535e439958d9093df2b85f83eee2e0c44bc22a14bf3a39b5a7508bca9e747a12273d02 + checksum: 10c0/97998443191ab0ef370bdc413b4952fd86d9274700fade2a83cdf5d59f449a4a7001ceda35dd6cb45fefebafb0959be35c3fcfa0e3333c55b1658f514eb64e96 languageName: node linkType: hard -"@csstools/postcss-trigonometric-functions@npm:^3.0.10": - version: 3.0.10 - resolution: "@csstools/postcss-trigonometric-functions@npm:3.0.10" +"@csstools/postcss-stepped-value-functions@npm:^4.0.8": + version: 4.0.8 + resolution: "@csstools/postcss-stepped-value-functions@npm:4.0.8" dependencies: - "@csstools/css-calc": "npm:^1.2.4" - "@csstools/css-parser-algorithms": "npm:^2.7.1" - "@csstools/css-tokenizer": "npm:^2.4.1" + "@csstools/css-calc": "npm:^2.1.3" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" peerDependencies: postcss: ^8.4 - checksum: 10c0/31adcc66510d9788ccb0669d2761517a6135b13692007d8e4334bc0e8d3515dfecfbdcd04e060d0c09a0f5fc2f12db92221b9d53e92b65b044c89cde9a3424cb + checksum: 10c0/515630c3d25029a5e3789d665ae7f4a394245e5442c79d99f0fff018c698e356680aea0f937819a00cb78563ce2285a43ede50e32992cee4e062e413d22df44f languageName: node linkType: hard -"@csstools/postcss-unset-value@npm:^3.0.1": - version: 3.0.1 - resolution: "@csstools/postcss-unset-value@npm:3.0.1" +"@csstools/postcss-text-decoration-shorthand@npm:^4.0.2": + version: 4.0.2 + resolution: "@csstools/postcss-text-decoration-shorthand@npm:4.0.2" + dependencies: + "@csstools/color-helpers": "npm:^5.0.2" + postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/5032c3125eada0a3a77d0867644cf994e28b789aaa40e990e7eebcdf5a9ed9f36b30e0904827044cea39849c9a9a19c90e82d3ca655550d82a7530872b3b6ff8 + checksum: 10c0/01e2f3717e7a42224dc1a746491c55a381cf208cb7588f0308eeefe730675be4c7bb56c0cc557e75999c981e67da7d0b0bb68610635752c89ef251ee435b9cac languageName: node linkType: hard -"@csstools/selector-resolve-nested@npm:^1.1.0": - version: 1.1.0 - resolution: "@csstools/selector-resolve-nested@npm:1.1.0" +"@csstools/postcss-trigonometric-functions@npm:^4.0.8": + version: 4.0.8 + resolution: "@csstools/postcss-trigonometric-functions@npm:4.0.8" + dependencies: + "@csstools/css-calc": "npm:^2.1.3" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" peerDependencies: - postcss-selector-parser: ^6.0.13 - checksum: 10c0/3a53b14e048d48b8900c1cf30442ab5eec1a1087c74ce41459c4dcd42ad7d363c9327890ba7aed25288d09c206d9565178bae126b25cdc3e1170a1d55e763c77 + postcss: ^8.4 + checksum: 10c0/609d03b752aae1c57d671eaefe4cdbde0a1d62c4b4d3ffb8bb39a41ebb61fdade7c7892a2c7c365d2997d9f93f4f3bb4034801a5baf1988b274120b3ec0ba6ad languageName: node linkType: hard -"@csstools/selector-specificity@npm:^3.1.1": - version: 3.1.1 - resolution: "@csstools/selector-specificity@npm:3.1.1" +"@csstools/postcss-unset-value@npm:^4.0.0": + version: 4.0.0 + resolution: "@csstools/postcss-unset-value@npm:4.0.0" peerDependencies: - postcss-selector-parser: ^6.0.13 - checksum: 10c0/1d4a3f8015904d6aeb3203afe0e1f6db09b191d9c1557520e3e960c9204ad852df9db4cbde848643f78a26f6ea09101b4e528dbb9193052db28258dbcc8a6e1d + postcss: ^8.4 + checksum: 10c0/8424ac700ded5bf59d49310335896f10c069e2c3fc6a676b5d13ca5a6fb78689b948f50494df875da284c4c76651deb005eafba70d87e693274628c5a685abfa + languageName: node + linkType: hard + +"@csstools/selector-resolve-nested@npm:^3.0.0": + version: 3.0.0 + resolution: "@csstools/selector-resolve-nested@npm:3.0.0" + peerDependencies: + postcss-selector-parser: ^7.0.0 + checksum: 10c0/2b01c36b3fa81388d5bddd8db962766465d76b021a815c8bb5a48c3a42c530154cc155fc496707ade627dbba6745eb8ecd9fa840c1972133c0f7d8811e0a959d languageName: node linkType: hard @@ -1874,12 +1838,12 @@ __metadata: languageName: node linkType: hard -"@csstools/utilities@npm:^1.0.0": - version: 1.0.0 - resolution: "@csstools/utilities@npm:1.0.0" +"@csstools/utilities@npm:^2.0.0": + version: 2.0.0 + resolution: "@csstools/utilities@npm:2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/2ac10895e0a1f9e1fc9c092197c8595a09f632552791af91219f38c55bb39083fb44b74a6a7de9112492cf24a2fe66d20c955a2b4aff041d5c017d87bbebc0f2 + checksum: 10c0/be5c31437b726928f64cd4bb3e47f5b90bfd2e2a69a8eaabd8e89cc6c0977e4f0f7ee48de50c8ed8b07e04e3956a02293247e0da3236d521fb2e836f88f65822 languageName: node linkType: hard @@ -1905,20 +1869,20 @@ __metadata: linkType: hard "@eslint-community/eslint-utils@npm:^4.2.0": - version: 4.4.0 - resolution: "@eslint-community/eslint-utils@npm:4.4.0" + version: 4.7.0 + resolution: "@eslint-community/eslint-utils@npm:4.7.0" dependencies: - eslint-visitor-keys: "npm:^3.3.0" + eslint-visitor-keys: "npm:^3.4.3" peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: 10c0/7e559c4ce59cd3a06b1b5a517b593912e680a7f981ae7affab0d01d709e99cd5647019be8fafa38c350305bc32f1f7d42c7073edde2ab536c745e365f37b607e + checksum: 10c0/c0f4f2bd73b7b7a9de74b716a664873d08ab71ab439e51befe77d61915af41a81ecec93b408778b3a7856185244c34c2c8ee28912072ec14def84ba2dec70adf languageName: node linkType: hard "@eslint-community/regexpp@npm:^4.6.1": - version: 4.10.0 - resolution: "@eslint-community/regexpp@npm:4.10.0" - checksum: 10c0/c5f60ef1f1ea7649fa7af0e80a5a79f64b55a8a8fa5086de4727eb4c86c652aedee407a9c143b8995d2c0b2d75c1222bec9ba5d73dbfc1f314550554f0979ef4 + version: 4.12.1 + resolution: "@eslint-community/regexpp@npm:4.12.1" + checksum: 10c0/a03d98c246bcb9109aec2c08e4d10c8d010256538dcb3f56610191607214523d4fb1b00aa81df830b6dffb74c5fa0be03642513a289c567949d3e550ca11cdf6 languageName: node linkType: hard @@ -2020,49 +1984,58 @@ __metadata: languageName: node linkType: hard -"@jridgewell/gen-mapping@npm:^0.3.0": - version: 0.3.3 - resolution: "@jridgewell/gen-mapping@npm:0.3.3" +"@isaacs/fs-minipass@npm:^4.0.0": + version: 4.0.1 + resolution: "@isaacs/fs-minipass@npm:4.0.1" + dependencies: + minipass: "npm:^7.0.4" + checksum: 10c0/c25b6dc1598790d5b55c0947a9b7d111cfa92594db5296c3b907e2f533c033666f692a3939eadac17b1c7c40d362d0b0635dc874cbfe3e70db7c2b07cc97a5d2 + languageName: node + linkType: hard + +"@jridgewell/gen-mapping@npm:^0.3.5": + version: 0.3.8 + resolution: "@jridgewell/gen-mapping@npm:0.3.8" dependencies: - "@jridgewell/set-array": "npm:^1.0.1" + "@jridgewell/set-array": "npm:^1.2.1" "@jridgewell/sourcemap-codec": "npm:^1.4.10" - "@jridgewell/trace-mapping": "npm:^0.3.9" - checksum: 10c0/376fc11cf5a967318ba3ddd9d8e91be528eab6af66810a713c49b0c3f8dc67e9949452c51c38ab1b19aa618fb5e8594da5a249977e26b1e7fea1ee5a1fcacc74 + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/c668feaf86c501d7c804904a61c23c67447b2137b813b9ce03eca82cb9d65ac7006d766c218685d76e3d72828279b6ee26c347aa1119dab23fbaf36aed51585a languageName: node linkType: hard "@jridgewell/resolve-uri@npm:^3.1.0": - version: 3.1.1 - resolution: "@jridgewell/resolve-uri@npm:3.1.1" - checksum: 10c0/0dbc9e29bc640bbbdc5b9876d2859c69042bfcf1423c1e6421bcca53e826660bff4e41c7d4bcb8dbea696404231a6f902f76ba41835d049e20f2dd6cffb713bf + version: 3.1.2 + resolution: "@jridgewell/resolve-uri@npm:3.1.2" + checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e languageName: node linkType: hard -"@jridgewell/set-array@npm:^1.0.1": - version: 1.1.2 - resolution: "@jridgewell/set-array@npm:1.1.2" - checksum: 10c0/bc7ab4c4c00470de4e7562ecac3c0c84f53e7ee8a711e546d67c47da7febe7c45cd67d4d84ee3c9b2c05ae8e872656cdded8a707a283d30bd54fbc65aef821ab +"@jridgewell/set-array@npm:^1.2.1": + version: 1.2.1 + resolution: "@jridgewell/set-array@npm:1.2.1" + checksum: 10c0/2a5aa7b4b5c3464c895c802d8ae3f3d2b92fcbe84ad12f8d0bfbb1f5ad006717e7577ee1fd2eac00c088abe486c7adb27976f45d2941ff6b0b92b2c3302c60f4 languageName: node linkType: hard "@jridgewell/source-map@npm:^0.3.3": - version: 0.3.5 - resolution: "@jridgewell/source-map@npm:0.3.5" + version: 0.3.6 + resolution: "@jridgewell/source-map@npm:0.3.6" dependencies: - "@jridgewell/gen-mapping": "npm:^0.3.0" - "@jridgewell/trace-mapping": "npm:^0.3.9" - checksum: 10c0/b985d9ebd833a21a6e9ace820c8a76f60345a34d9e28d98497c16b6e93ce1f131bff0abd45f8585f14aa382cce678ed680d628c631b40a9616a19cfbc2049b68 + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.25" + checksum: 10c0/6a4ecc713ed246ff8e5bdcc1ef7c49aaa93f7463d948ba5054dda18b02dcc6a055e2828c577bcceee058f302ce1fc95595713d44f5c45e43d459f88d267f2f04 languageName: node linkType: hard "@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14": - version: 1.4.15 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" - checksum: 10c0/0c6b5ae663087558039052a626d2d7ed5208da36cfd707dcc5cea4a07cfc918248403dcb5989a8f7afaf245ce0573b7cc6fd94c4a30453bd10e44d9363940ba5 + version: 1.5.0 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" + checksum: 10c0/2eb864f276eb1096c3c11da3e9bb518f6d9fc0023c78344cdc037abadc725172c70314bdb360f2d4b7bffec7f5d657ce006816bc5d4ecb35e61b66132db00c18 languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.25": +"@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": version: 0.3.25 resolution: "@jridgewell/trace-mapping@npm:0.3.25" dependencies: @@ -2072,13 +2045,12 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.20 - resolution: "@jridgewell/trace-mapping@npm:0.3.20" +"@keyv/serialize@npm:^1.0.3": + version: 1.0.3 + resolution: "@keyv/serialize@npm:1.0.3" dependencies: - "@jridgewell/resolve-uri": "npm:^3.1.0" - "@jridgewell/sourcemap-codec": "npm:^1.4.14" - checksum: 10c0/0ea0b2675cf513ec44dc25605616a3c9b808b9832e74b5b63c44260d66b58558bba65764f81928fc1033ead911f8718dca1134049c3e7a93937faf436671df31 + buffer: "npm:^6.0.3" + checksum: 10c0/24a257870b0548cfe430680c2ae1641751e6a6ec90c573eaf51bfe956839b6cfa462b4d2827157363b6d620872d32d69fa2f37210a864ba488f8ec7158436398 languageName: node linkType: hard @@ -2089,6 +2061,175 @@ __metadata: languageName: node linkType: hard +"@napi-rs/nice-android-arm-eabi@npm:1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice-android-arm-eabi@npm:1.0.1" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@napi-rs/nice-android-arm64@npm:1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice-android-arm64@npm:1.0.1" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@napi-rs/nice-darwin-arm64@npm:1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice-darwin-arm64@npm:1.0.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@napi-rs/nice-darwin-x64@npm:1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice-darwin-x64@npm:1.0.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@napi-rs/nice-freebsd-x64@npm:1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice-freebsd-x64@npm:1.0.1" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@napi-rs/nice-linux-arm-gnueabihf@npm:1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice-linux-arm-gnueabihf@npm:1.0.1" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@napi-rs/nice-linux-arm64-gnu@npm:1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice-linux-arm64-gnu@npm:1.0.1" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@napi-rs/nice-linux-arm64-musl@npm:1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice-linux-arm64-musl@npm:1.0.1" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@napi-rs/nice-linux-ppc64-gnu@npm:1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice-linux-ppc64-gnu@npm:1.0.1" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@napi-rs/nice-linux-riscv64-gnu@npm:1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice-linux-riscv64-gnu@npm:1.0.1" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + +"@napi-rs/nice-linux-s390x-gnu@npm:1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice-linux-s390x-gnu@npm:1.0.1" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@napi-rs/nice-linux-x64-gnu@npm:1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice-linux-x64-gnu@npm:1.0.1" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@napi-rs/nice-linux-x64-musl@npm:1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice-linux-x64-musl@npm:1.0.1" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@napi-rs/nice-win32-arm64-msvc@npm:1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice-win32-arm64-msvc@npm:1.0.1" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@napi-rs/nice-win32-ia32-msvc@npm:1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice-win32-ia32-msvc@npm:1.0.1" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@napi-rs/nice-win32-x64-msvc@npm:1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice-win32-x64-msvc@npm:1.0.1" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@napi-rs/nice@npm:^1.0.1": + version: 1.0.1 + resolution: "@napi-rs/nice@npm:1.0.1" + dependencies: + "@napi-rs/nice-android-arm-eabi": "npm:1.0.1" + "@napi-rs/nice-android-arm64": "npm:1.0.1" + "@napi-rs/nice-darwin-arm64": "npm:1.0.1" + "@napi-rs/nice-darwin-x64": "npm:1.0.1" + "@napi-rs/nice-freebsd-x64": "npm:1.0.1" + "@napi-rs/nice-linux-arm-gnueabihf": "npm:1.0.1" + "@napi-rs/nice-linux-arm64-gnu": "npm:1.0.1" + "@napi-rs/nice-linux-arm64-musl": "npm:1.0.1" + "@napi-rs/nice-linux-ppc64-gnu": "npm:1.0.1" + "@napi-rs/nice-linux-riscv64-gnu": "npm:1.0.1" + "@napi-rs/nice-linux-s390x-gnu": "npm:1.0.1" + "@napi-rs/nice-linux-x64-gnu": "npm:1.0.1" + "@napi-rs/nice-linux-x64-musl": "npm:1.0.1" + "@napi-rs/nice-win32-arm64-msvc": "npm:1.0.1" + "@napi-rs/nice-win32-ia32-msvc": "npm:1.0.1" + "@napi-rs/nice-win32-x64-msvc": "npm:1.0.1" + dependenciesMeta: + "@napi-rs/nice-android-arm-eabi": + optional: true + "@napi-rs/nice-android-arm64": + optional: true + "@napi-rs/nice-darwin-arm64": + optional: true + "@napi-rs/nice-darwin-x64": + optional: true + "@napi-rs/nice-freebsd-x64": + optional: true + "@napi-rs/nice-linux-arm-gnueabihf": + optional: true + "@napi-rs/nice-linux-arm64-gnu": + optional: true + "@napi-rs/nice-linux-arm64-musl": + optional: true + "@napi-rs/nice-linux-ppc64-gnu": + optional: true + "@napi-rs/nice-linux-riscv64-gnu": + optional: true + "@napi-rs/nice-linux-s390x-gnu": + optional: true + "@napi-rs/nice-linux-x64-gnu": + optional: true + "@napi-rs/nice-linux-x64-musl": + optional: true + "@napi-rs/nice-win32-arm64-msvc": + optional: true + "@napi-rs/nice-win32-ia32-msvc": + optional: true + "@napi-rs/nice-win32-x64-msvc": + optional: true + checksum: 10c0/9be30f8292e23f45f5b8f6553411f5cbaead998cc3a51859c60f56fc2e679610a3a04ed49b748267552b9abd17fe5e6ae88186e223ab5cb93d5d184d10b6569b + languageName: node + linkType: hard + "@nightwatch/chai@npm:5.0.3": version: 5.0.3 resolution: "@nightwatch/chai@npm:5.0.3" @@ -2146,25 +2287,25 @@ __metadata: languageName: node linkType: hard -"@npmcli/agent@npm:^2.0.0": - version: 2.2.1 - resolution: "@npmcli/agent@npm:2.2.1" +"@npmcli/agent@npm:^3.0.0": + version: 3.0.0 + resolution: "@npmcli/agent@npm:3.0.0" dependencies: agent-base: "npm:^7.1.0" http-proxy-agent: "npm:^7.0.0" https-proxy-agent: "npm:^7.0.1" lru-cache: "npm:^10.0.1" - socks-proxy-agent: "npm:^8.0.1" - checksum: 10c0/38ee5cbe8f3cde13be916e717bfc54fd1a7605c07af056369ff894e244c221e0b56b08ca5213457477f9bc15bca9e729d51a4788829b5c3cf296b3c996147f76 + socks-proxy-agent: "npm:^8.0.3" + checksum: 10c0/efe37b982f30740ee77696a80c196912c274ecd2cb243bc6ae7053a50c733ce0f6c09fda085145f33ecf453be19654acca74b69e81eaad4c90f00ccffe2f9271 languageName: node linkType: hard -"@npmcli/fs@npm:^3.1.0": - version: 3.1.0 - resolution: "@npmcli/fs@npm:3.1.0" +"@npmcli/fs@npm:^4.0.0": + version: 4.0.0 + resolution: "@npmcli/fs@npm:4.0.0" dependencies: semver: "npm:^7.3.5" - checksum: 10c0/162b4a0b8705cd6f5c2470b851d1dc6cd228c86d2170e1769d738c1fbb69a87160901411c3c035331e9e99db72f1f1099a8b734bf1637cc32b9a5be1660e4e1e + checksum: 10c0/c90935d5ce670c87b6b14fab04a965a3b8137e585f8b2a6257263bd7f97756dd736cb165bb470e5156a9e718ecd99413dccc54b1138c1a46d6ec7cf325982fe5 languageName: node linkType: hard @@ -2175,10 +2316,10 @@ __metadata: languageName: node linkType: hard -"@pkgr/core@npm:^0.1.0": - version: 0.1.1 - resolution: "@pkgr/core@npm:0.1.1" - checksum: 10c0/3f7536bc7f57320ab2cf96f8973664bef624710c403357429fbf680a5c3b4843c1dbd389bb43daa6b1f6f1f007bb082f5abcb76bb2b5dc9f421647743b71d3d8 +"@pkgr/core@npm:^0.2.4": + version: 0.2.4 + resolution: "@pkgr/core@npm:0.2.4" + checksum: 10c0/2528a443bbbef5d4686614e1d73f834f19ccbc975f62b2a64974a6b97bcdf677b9c5e8948e04808ac4f0d853e2f422adfaae2a06e9e9f4f5cf8af76f1adf8dc1 languageName: node linkType: hard @@ -2190,9 +2331,9 @@ __metadata: linkType: hard "@types/chai@npm:^4.3.5": - version: 4.3.17 - resolution: "@types/chai@npm:4.3.17" - checksum: 10c0/322a74489cdfde9c301b593d086c539584924c4c92689a858e0930708895a5ab229c31c64ac26b137615ef3ffbff1866851c280c093e07b3d3de05983d3793e0 + version: 4.3.20 + resolution: "@types/chai@npm:4.3.20" + checksum: 10c0/4601189d611752e65018f1ecadac82e94eed29f348e1d5430e5681a60b01e1ecf855d9bcc74ae43b07394751f184f6970fac2b5561fc57a1f36e93a0f5ffb6e8 languageName: node linkType: hard @@ -2217,9 +2358,9 @@ __metadata: linkType: hard "@types/estree@npm:*, @types/estree@npm:^1.0.6": - version: 1.0.6 - resolution: "@types/estree@npm:1.0.6" - checksum: 10c0/cdfd751f6f9065442cd40957c07fd80361c962869aa853c1c2fd03e101af8b9389d8ff4955a43a6fcfa223dd387a089937f95be0f3eec21ca527039fd2d9859a + version: 1.0.7 + resolution: "@types/estree@npm:1.0.7" + checksum: 10c0/be815254316882f7c40847336cd484c3bc1c3e34f710d197160d455dc9d6d050ffbf4c3bc76585dba86f737f020ab20bdb137ebe0e9116b0c86c7c0342221b8c languageName: node linkType: hard @@ -2238,37 +2379,37 @@ __metadata: linkType: hard "@types/node@npm:*": - version: 20.10.4 - resolution: "@types/node@npm:20.10.4" + version: 22.15.21 + resolution: "@types/node@npm:22.15.21" dependencies: - undici-types: "npm:~5.26.4" - checksum: 10c0/2c8b70cba731eb2ae3ae046daa74903bfcbb0e7b9196da767e5895054f6d252296ae7a04fb1dbbcb53bb004c4c658c05eaea2731bc9e2dd9e08f7e88d672f563 + undici-types: "npm:~6.21.0" + checksum: 10c0/f092bbccda2131c2b2c8f720338080aa0ef1d928f5f1062c03954a4f7dafa7ee3ed29bc3e51bd4e2584473b3d943c637a2b39ad7174898970818270187cf10c1 languageName: node linkType: hard "@types/selenium-webdriver@npm:^4.1.14": - version: 4.1.24 - resolution: "@types/selenium-webdriver@npm:4.1.24" + version: 4.1.28 + resolution: "@types/selenium-webdriver@npm:4.1.28" dependencies: "@types/node": "npm:*" "@types/ws": "npm:*" - checksum: 10c0/7019cb6c9e6ecfb870a54f146b31be6d1d29b01ed597c988be85c79876105e0573c78b5b4ed5678fb51c11cd25a327c4482c77098e904def2ac3ef2a377f9863 + checksum: 10c0/69a0eba9376d676299ee73384a4ff2bb1b35d926ec72e380281fd8cee53777baa01cb8040e3ba2665c547bbe4faf8fc5ca69e07f0b95bd7079bb1ac27fe53de8 languageName: node linkType: hard "@types/ws@npm:*": - version: 8.5.12 - resolution: "@types/ws@npm:8.5.12" + version: 8.18.1 + resolution: "@types/ws@npm:8.18.1" dependencies: "@types/node": "npm:*" - checksum: 10c0/3fd77c9e4e05c24ce42bfc7647f7506b08c40a40fe2aea236ef6d4e96fc7cb4006a81ed1b28ec9c457e177a74a72924f4768b7b4652680b42dfd52bc380e15f9 + checksum: 10c0/61aff1129143fcc4312f083bc9e9e168aa3026b7dd6e70796276dcfb2c8211c4292603f9c4864fae702f2ed86e4abd4d38aa421831c2fd7f856c931a481afbab languageName: node linkType: hard "@ungap/structured-clone@npm:^1.2.0": - version: 1.2.0 - resolution: "@ungap/structured-clone@npm:1.2.0" - checksum: 10c0/8209c937cb39119f44eb63cf90c0b73e7c754209a6411c707be08e50e29ee81356dca1a848a405c8bdeebfe2f5e4f831ad310ae1689eeef65e7445c090c6657d + version: 1.3.0 + resolution: "@ungap/structured-clone@npm:1.3.0" + checksum: 10c0/0fc3097c2540ada1fc340ee56d58d96b5b536a2a0dab6e3ec17d4bfc8c4c86db345f61a375a8185f9da96f01c69678f836a2b57eeaa9e4b8eeafd26428e57b0a languageName: node linkType: hard @@ -2508,13 +2649,13 @@ __metadata: dotenv-safe: "npm:^9.1.0" eslint: "npm:^8.57.1" eslint-config-airbnb-base: "npm:^15.0.0" - eslint-config-prettier: "npm:^9.1.0" + eslint-config-prettier: "npm:^10.1.3" eslint-formatter-gitlab: "npm:^5.1.0" eslint-plugin-import: "npm:^2.31.0" - eslint-plugin-no-jquery: "npm:^3.1.0" - eslint-plugin-prettier: "npm:^5.2.1" - eslint-plugin-yml: "npm:^1.16.0" - glob: "npm:11.0.2" + eslint-plugin-no-jquery: "npm:^3.1.1" + eslint-plugin-prettier: "npm:^5.4.0" + eslint-plugin-yml: "npm:^1.18.0" + glob: "npm:11.0.0" htmx.org: "npm:2.0.4" jquery: "npm:^4.0.0-beta.2" jquery-ui: "npm:^1.14.1" @@ -2525,19 +2666,19 @@ __metadata: mkdirp: "npm:^3.0.1" nightwatch: "npm:^3.12.1" normalize.css: "npm:^8.0.1" - postcss: "npm:^8.4.40" + postcss: "npm:^8.5.3" postcss-header: "npm:^3.0.3" postcss-import: "npm:^16.1.0" - postcss-preset-env: "npm:^9.6.0" + postcss-preset-env: "npm:^10.1.6" postcss-pxtorem: "npm:^6.1.0" postcss-url: "npm:^10.1.3" - prettier: "npm:^3.4.2" + prettier: "npm:^3.5.3" sortablejs: "npm:^1.15.6" - stylelint: "npm:^16.11.0" + stylelint: "npm:^16.19.1" stylelint-checkstyle-formatter: "npm:^0.1.2" - stylelint-config-standard: "npm:^36.0.1" - stylelint-order: "npm:^6.0.4" - stylelint-prettier: "npm:^5.0.2" + stylelint-config-standard: "npm:^38.0.0" + stylelint-order: "npm:^7.0.0" + stylelint-prettier: "npm:^5.0.3" tabbable: "npm:^6.2.0" terser: "npm:^5.39.0" terser-webpack-plugin: "npm:^5.3.14" @@ -2549,10 +2690,10 @@ __metadata: languageName: unknown linkType: soft -"abbrev@npm:^2.0.0": - version: 2.0.0 - resolution: "abbrev@npm:2.0.0" - checksum: 10c0/f742a5a107473946f426c691c08daba61a1d15942616f300b5d32fd735be88fef5cba24201757b6c407fd564555fb48c751cfa33519b2605c8a7aadd22baf372 +"abbrev@npm:^3.0.0": + version: 3.0.1 + resolution: "abbrev@npm:3.0.1" + checksum: 10c0/21ba8f574ea57a3106d6d35623f2c4a9111d9ee3e9a5be47baed46ec2457d2eac46e07a5c4a60186f88cb98abbe3e24f2d4cca70bc2b12f1692523e2209a9ccf languageName: node linkType: hard @@ -2565,50 +2706,22 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.14.0": - version: 8.14.0 - resolution: "acorn@npm:8.14.0" +"acorn@npm:^8.14.0, acorn@npm:^8.9.0": + version: 8.14.1 + resolution: "acorn@npm:8.14.1" bin: acorn: bin/acorn - checksum: 10c0/6d4ee461a7734b2f48836ee0fbb752903606e576cc100eb49340295129ca0b452f3ba91ddd4424a1d4406a98adfb2ebb6bd0ff4c49d7a0930c10e462719bbfd7 - languageName: node - linkType: hard - -"acorn@npm:^8.8.2, acorn@npm:^8.9.0": - version: 8.11.2 - resolution: "acorn@npm:8.11.2" - bin: - acorn: bin/acorn - checksum: 10c0/a3ed76c761b75ec54b1ec3068fb7f113a182e95aea7f322f65098c2958d232e3d211cb6dac35ff9c647024b63714bc528a26d54a925d1fef2c25585b4c8e4017 - languageName: node - linkType: hard - -"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0": - version: 7.1.0 - resolution: "agent-base@npm:7.1.0" - dependencies: - debug: "npm:^4.3.4" - checksum: 10c0/fc974ab57ffdd8421a2bc339644d312a9cca320c20c3393c9d8b1fd91731b9bbabdb985df5fc860f5b79d81c3e350daa3fcb31c5c07c0bb385aafc817df004ce + checksum: 10c0/dbd36c1ed1d2fa3550140000371fcf721578095b18777b85a79df231ca093b08edc6858d75d6e48c73e431c174dcf9214edbd7e6fa5911b93bd8abfa54e47123 languageName: node linkType: hard -"agent-base@npm:^7.1.2": +"agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": version: 7.1.3 resolution: "agent-base@npm:7.1.3" checksum: 10c0/6192b580c5b1d8fb399b9c62bf8343d76654c2dd62afcb9a52b2cf44a8b6ace1e3b704d3fe3547d91555c857d3df02603341ff2cb961b9cfe2b12f9f3c38ee11 languageName: node linkType: hard -"aggregate-error@npm:^3.0.0": - version: 3.1.0 - resolution: "aggregate-error@npm:3.1.0" - dependencies: - clean-stack: "npm:^2.0.0" - indent-string: "npm:^4.0.0" - checksum: 10c0/a42f67faa79e3e6687a4923050e7c9807db3848a037076f791d10e092677d65c1d2d863b7848560699f40fc0502c19f40963fb1cd1fb3d338a7423df8e45e039 - languageName: node - linkType: hard - "ajv-formats@npm:^2.1.1": version: 2.1.1 resolution: "ajv-formats@npm:2.1.1" @@ -2646,7 +2759,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^8.0.0, ajv@npm:^8.9.0": +"ajv@npm:^8.0.0, ajv@npm:^8.0.1, ajv@npm:^8.9.0": version: 8.17.1 resolution: "ajv@npm:8.17.1" dependencies: @@ -2658,18 +2771,6 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^8.0.1": - version: 8.12.0 - resolution: "ajv@npm:8.12.0" - dependencies: - fast-deep-equal: "npm:^3.1.1" - json-schema-traverse: "npm:^1.0.0" - require-from-string: "npm:^2.0.2" - uri-js: "npm:^4.2.2" - checksum: 10c0/ac4f72adf727ee425e049bc9d8b31d4a57e1c90da8d28bcd23d60781b12fcd6fc3d68db5df16994c57b78b94eed7988f5a6b482fd376dc5b084125e20a0a622e - languageName: node - linkType: hard - "ansi-align@npm:^3.0.0": version: 3.0.1 resolution: "ansi-align@npm:3.0.1" @@ -2694,18 +2795,9 @@ __metadata: linkType: hard "ansi-regex@npm:^6.0.1": - version: 6.0.1 - resolution: "ansi-regex@npm:6.0.1" - checksum: 10c0/cbe16dbd2c6b2735d1df7976a7070dd277326434f0212f43abf6d87674095d247968209babdaad31bb00882fa68807256ba9be340eec2f1004de14ca75f52a08 - languageName: node - linkType: hard - -"ansi-styles@npm:^3.2.1": - version: 3.2.1 - resolution: "ansi-styles@npm:3.2.1" - dependencies: - color-convert: "npm:^1.9.0" - checksum: 10c0/ece5a8ef069fcc5298f67e3f4771a663129abd174ea2dfa87923a2be2abf6cd367ef72ac87942da00ce85bd1d651d4cd8595aebdb1b385889b89b205860e977b + version: 6.1.0 + resolution: "ansi-regex@npm:6.1.0" + checksum: 10c0/a91daeddd54746338478eef88af3439a7edf30f8e23196e2d6ed182da9add559c601266dbef01c2efa46a958ad6f1f8b176799657616c702b5b02e799e7fd8dc languageName: node linkType: hard @@ -2813,23 +2905,13 @@ __metadata: languageName: node linkType: hard -"array-buffer-byte-length@npm:^1.0.0": - version: 1.0.0 - resolution: "array-buffer-byte-length@npm:1.0.0" - dependencies: - call-bind: "npm:^1.0.2" - is-array-buffer: "npm:^3.0.1" - checksum: 10c0/12f84f6418b57a954caa41654e5e63e019142a4bbb2c6829ba86d1ba65d31ccfaf1461d1743556fd32b091fac34ff44d9dfbdb001402361c45c373b2c86f5c20 - languageName: node - linkType: hard - -"array-buffer-byte-length@npm:^1.0.1": - version: 1.0.1 - resolution: "array-buffer-byte-length@npm:1.0.1" +"array-buffer-byte-length@npm:^1.0.0, array-buffer-byte-length@npm:^1.0.1, array-buffer-byte-length@npm:^1.0.2": + version: 1.0.2 + resolution: "array-buffer-byte-length@npm:1.0.2" dependencies: - call-bind: "npm:^1.0.5" - is-array-buffer: "npm:^3.0.4" - checksum: 10c0/f5cdf54527cd18a3d2852ddf73df79efec03829e7373a8322ef5df2b4ef546fb365c19c71d6b42d641cb6bfe0f1a2f19bc0ece5b533295f86d7c3d522f228917 + call-bound: "npm:^1.0.3" + is-array-buffer: "npm:^3.0.5" + checksum: 10c0/74e1d2d996941c7a1badda9cabb7caab8c449db9086407cad8a1b71d2604cc8abf105db8ca4e02c04579ec58b7be40279ddb09aea4784832984485499f48432d languageName: node linkType: hard @@ -2862,71 +2944,56 @@ __metadata: linkType: hard "array.prototype.findlastindex@npm:^1.2.5": - version: 1.2.5 - resolution: "array.prototype.findlastindex@npm:1.2.5" + version: 1.2.6 + resolution: "array.prototype.findlastindex@npm:1.2.6" dependencies: - call-bind: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.4" define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.2" + es-abstract: "npm:^1.23.9" es-errors: "npm:^1.3.0" - es-object-atoms: "npm:^1.0.0" - es-shim-unscopables: "npm:^1.0.2" - checksum: 10c0/962189487728b034f3134802b421b5f39e42ee2356d13b42d2ddb0e52057ffdcc170b9524867f4f0611a6f638f4c19b31e14606e8bcbda67799e26685b195aa3 + es-object-atoms: "npm:^1.1.1" + es-shim-unscopables: "npm:^1.1.0" + checksum: 10c0/82559310d2e57ec5f8fc53d7df420e3abf0ba497935de0a5570586035478ba7d07618cb18e2d4ada2da514c8fb98a034aaf5c06caa0a57e2f7f4c4adedef5956 languageName: node linkType: hard "array.prototype.flat@npm:^1.3.2": - version: 1.3.2 - resolution: "array.prototype.flat@npm:1.3.2" + version: 1.3.3 + resolution: "array.prototype.flat@npm:1.3.3" dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - es-shim-unscopables: "npm:^1.0.0" - checksum: 10c0/a578ed836a786efbb6c2db0899ae80781b476200617f65a44846cb1ed8bd8b24c8821b83703375d8af639c689497b7b07277060024b9919db94ac3e10dc8a49b + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.5" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/d90e04dfbc43bb96b3d2248576753d1fb2298d2d972e29ca7ad5ec621f0d9e16ff8074dae647eac4f31f4fb7d3f561a7ac005fb01a71f51705a13b5af06a7d8a languageName: node linkType: hard "array.prototype.flatmap@npm:^1.3.2": - version: 1.3.2 - resolution: "array.prototype.flatmap@npm:1.3.2" + version: 1.3.3 + resolution: "array.prototype.flatmap@npm:1.3.3" dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - es-shim-unscopables: "npm:^1.0.0" - checksum: 10c0/67b3f1d602bb73713265145853128b1ad77cc0f9b833c7e1e056b323fbeac41a4ff1c9c99c7b9445903caea924d9ca2450578d9011913191aa88cc3c3a4b54f4 - languageName: node - linkType: hard - -"arraybuffer.prototype.slice@npm:^1.0.2": - version: 1.0.2 - resolution: "arraybuffer.prototype.slice@npm:1.0.2" - dependencies: - array-buffer-byte-length: "npm:^1.0.0" - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - get-intrinsic: "npm:^1.2.1" - is-array-buffer: "npm:^3.0.2" - is-shared-array-buffer: "npm:^1.0.2" - checksum: 10c0/96b6e40e439678ffb7fa266398510074d33c3980fbb475490b69980cca60adec3b0777047ef377068a29862157f83edef42efc64ce48ce38977d04d68de5b7fb + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.5" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/ba899ea22b9dc9bf276e773e98ac84638ed5e0236de06f13d63a90b18ca9e0ec7c97d622d899796e3773930b946cd2413d098656c0c5d8cc58c6f25c21e6bd54 languageName: node linkType: hard -"arraybuffer.prototype.slice@npm:^1.0.3": - version: 1.0.3 - resolution: "arraybuffer.prototype.slice@npm:1.0.3" +"arraybuffer.prototype.slice@npm:^1.0.4": + version: 1.0.4 + resolution: "arraybuffer.prototype.slice@npm:1.0.4" dependencies: array-buffer-byte-length: "npm:^1.0.1" - call-bind: "npm:^1.0.5" + call-bind: "npm:^1.0.8" define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.22.3" - es-errors: "npm:^1.2.1" - get-intrinsic: "npm:^1.2.3" + es-abstract: "npm:^1.23.5" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.6" is-array-buffer: "npm:^3.0.4" - is-shared-array-buffer: "npm:^1.0.2" - checksum: 10c0/d32754045bcb2294ade881d45140a5e52bda2321b9e98fa514797b7f0d252c4c5ab0d1edb34112652c62fa6a9398def568da63a4d7544672229afea283358c36 + checksum: 10c0/2f2459caa06ae0f7f615003f9104b01f6435cc803e11bd2a655107d52a1781dc040532dc44d93026b694cc18793993246237423e13a5337e86b43ed604932c06 languageName: node linkType: hard @@ -2944,10 +3011,17 @@ __metadata: languageName: node linkType: hard +"async-function@npm:^1.0.0": + version: 1.0.0 + resolution: "async-function@npm:1.0.0" + checksum: 10c0/669a32c2cb7e45091330c680e92eaeb791bc1d4132d827591e499cd1f776ff5a873e77e5f92d0ce795a8d60f10761dec9ddfe7225a5de680f5d357f67b1aac73 + languageName: node + linkType: hard + "async@npm:^3.2.3, async@npm:^3.2.4": - version: 3.2.5 - resolution: "async@npm:3.2.5" - checksum: 10c0/1408287b26c6db67d45cb346e34892cee555b8b59e6c68e6f8c3e495cad5ca13b4f218180e871f3c2ca30df4ab52693b66f2f6ff43644760cab0b2198bda79c1 + version: 3.2.6 + resolution: "async@npm:3.2.6" + checksum: 10c0/36484bb15ceddf07078688d95e27076379cc2f87b10c03b6dd8a83e89475a3c8df5848859dd06a4c95af1e4c16fc973de0171a77f18ea00be899aca2a4f85e70 languageName: node linkType: hard @@ -2958,28 +3032,21 @@ __metadata: languageName: node linkType: hard -"autoprefixer@npm:^10.4.19": - version: 10.4.19 - resolution: "autoprefixer@npm:10.4.19" +"autoprefixer@npm:^10.4.21": + version: 10.4.21 + resolution: "autoprefixer@npm:10.4.21" dependencies: - browserslist: "npm:^4.23.0" - caniuse-lite: "npm:^1.0.30001599" + browserslist: "npm:^4.24.4" + caniuse-lite: "npm:^1.0.30001702" fraction.js: "npm:^4.3.7" normalize-range: "npm:^0.1.2" - picocolors: "npm:^1.0.0" + picocolors: "npm:^1.1.1" postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.1.0 bin: autoprefixer: bin/autoprefixer - checksum: 10c0/fe0178eb8b1da4f15c6535cd329926609b22d1811e047371dccce50563623f8075dd06fb167daff059e4228da651b0bdff6d9b44281541eaf0ce0b79125bfd19 - languageName: node - linkType: hard - -"available-typed-arrays@npm:^1.0.5": - version: 1.0.5 - resolution: "available-typed-arrays@npm:1.0.5" - checksum: 10c0/c4df567ca72d2754a6cbad20088f5f98b1065b3360178169fa9b44ea101af62c0f423fc3854fa820fd6895b6b9171b8386e71558203103ff8fc2ad503fdcc660 + checksum: 10c0/de5b71d26d0baff4bbfb3d59f7cf7114a6030c9eeb66167acf49a32c5b61c68e308f1e0f869d92334436a221035d08b51cd1b2f2c4689b8d955149423c16d4d4 languageName: node linkType: hard @@ -2993,9 +3060,9 @@ __metadata: linkType: hard "axe-core@npm:^4.9.1": - version: 4.10.0 - resolution: "axe-core@npm:4.10.0" - checksum: 10c0/732c171d48caaace5e784895c4dacb8ca6155e9d98045138ebe3952f78457dd05b92c57d05b41ce2a570aff87dbd0471e8398d2c0f6ebe79617b746c8f658998 + version: 4.10.3 + resolution: "axe-core@npm:4.10.3" + checksum: 10c0/1b1c24f435b2ffe89d76eca0001cbfff42dbf012ad9bd37398b70b11f0d614281a38a28bc3069e8972e3c90ec929a8937994bd24b0ebcbaab87b8d1e241ab0c7 languageName: node linkType: hard @@ -3030,9 +3097,9 @@ __metadata: linkType: hard "binary-extensions@npm:^2.0.0": - version: 2.2.0 - resolution: "binary-extensions@npm:2.2.0" - checksum: 10c0/d73d8b897238a2d3ffa5f59c0241870043aa7471335e89ea5e1ff48edb7c2d0bb471517a3e4c5c3f4c043615caa2717b5f80a5e61e07503d51dc85cb848e665d + version: 2.3.0 + resolution: "binary-extensions@npm:2.3.0" + checksum: 10c0/75a59cafc10fb12a11d510e77110c6c7ae3f4ca22463d52487709ca7f18f69d886aa387557cc9864fbdb10153d0bdb4caacabf11541f55e89ed6e18d12ece2b5 languageName: node linkType: hard @@ -3089,7 +3156,7 @@ __metadata: languageName: node linkType: hard -"braces@npm:^3.0.2, braces@npm:^3.0.3, braces@npm:~3.0.2": +"braces@npm:^3.0.3, braces@npm:~3.0.2": version: 3.0.3 resolution: "braces@npm:3.0.3" dependencies: @@ -3105,45 +3172,17 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.23.0": - version: 4.23.0 - resolution: "browserslist@npm:4.23.0" - dependencies: - caniuse-lite: "npm:^1.0.30001587" - electron-to-chromium: "npm:^1.4.668" - node-releases: "npm:^2.0.14" - update-browserslist-db: "npm:^1.0.13" - bin: - browserslist: cli.js - checksum: 10c0/8e9cc154529062128d02a7af4d8adeead83ca1df8cd9ee65a88e2161039f3d68a4d40fea7353cab6bae4c16182dec2fdd9a1cf7dc2a2935498cee1af0e998943 - languageName: node - linkType: hard - -"browserslist@npm:^4.23.1": - version: 4.23.2 - resolution: "browserslist@npm:4.23.2" - dependencies: - caniuse-lite: "npm:^1.0.30001640" - electron-to-chromium: "npm:^1.4.820" - node-releases: "npm:^2.0.14" - update-browserslist-db: "npm:^1.1.0" - bin: - browserslist: cli.js - checksum: 10c0/0217d23c69ed61cdd2530c7019bf7c822cd74c51f8baab18dd62457fed3129f52499f8d3a6f809ae1fb7bb3050aa70caa9a529cc36c7478427966dbf429723a5 - languageName: node - linkType: hard - -"browserslist@npm:^4.24.0": - version: 4.24.2 - resolution: "browserslist@npm:4.24.2" +"browserslist@npm:^4.24.0, browserslist@npm:^4.24.4": + version: 4.24.5 + resolution: "browserslist@npm:4.24.5" dependencies: - caniuse-lite: "npm:^1.0.30001669" - electron-to-chromium: "npm:^1.5.41" - node-releases: "npm:^2.0.18" - update-browserslist-db: "npm:^1.1.1" + caniuse-lite: "npm:^1.0.30001716" + electron-to-chromium: "npm:^1.5.149" + node-releases: "npm:^2.0.19" + update-browserslist-db: "npm:^1.1.3" bin: browserslist: cli.js - checksum: 10c0/d747c9fb65ed7b4f1abcae4959405707ed9a7b835639f8a9ba0da2911995a6ab9b0648fd05baf2a4d4e3cf7f9fdbad56d3753f91881e365992c1d49c8d88ff7a + checksum: 10c0/f4c1ce1a7d8fdfab5e5b88bb6e93d09e8a883c393f86801537a252da0362dbdcde4dbd97b318246c5d84c6607b2f6b47af732c1b000d6a8a881ee024bad29204 languageName: node linkType: hard @@ -3171,11 +3210,21 @@ __metadata: languageName: node linkType: hard -"cacache@npm:^18.0.0": - version: 18.0.2 - resolution: "cacache@npm:18.0.2" +"buffer@npm:^6.0.3": + version: 6.0.3 + resolution: "buffer@npm:6.0.3" dependencies: - "@npmcli/fs": "npm:^3.1.0" + base64-js: "npm:^1.3.1" + ieee754: "npm:^1.2.1" + checksum: 10c0/2a905fbbcde73cc5d8bd18d1caa23715d5f83a5935867c2329f0ac06104204ba7947be098fe1317fbd8830e26090ff8e764f08cd14fefc977bb248c3487bcbd0 + languageName: node + linkType: hard + +"cacache@npm:^19.0.1": + version: 19.0.1 + resolution: "cacache@npm:19.0.1" + dependencies: + "@npmcli/fs": "npm:^4.0.0" fs-minipass: "npm:^3.0.0" glob: "npm:^10.2.2" lru-cache: "npm:^10.0.1" @@ -3183,36 +3232,35 @@ __metadata: minipass-collect: "npm:^2.0.1" minipass-flush: "npm:^1.0.5" minipass-pipeline: "npm:^1.2.4" - p-map: "npm:^4.0.0" - ssri: "npm:^10.0.0" - tar: "npm:^6.1.11" - unique-filename: "npm:^3.0.0" - checksum: 10c0/7992665305cc251a984f4fdbab1449d50e88c635bc43bf2785530c61d239c61b349e5734461baa461caaee65f040ab14e2d58e694f479c0810cffd181ba5eabc + p-map: "npm:^7.0.2" + ssri: "npm:^12.0.0" + tar: "npm:^7.4.3" + unique-filename: "npm:^4.0.0" + checksum: 10c0/01f2134e1bd7d3ab68be851df96c8d63b492b1853b67f2eecb2c37bb682d37cb70bb858a16f2f0554d3c0071be6dfe21456a1ff6fa4b7eed996570d6a25ffe9c languageName: node linkType: hard -"call-bind-apply-helpers@npm:^1.0.0": - version: 1.0.1 - resolution: "call-bind-apply-helpers@npm:1.0.1" +"cacheable@npm:^1.9.0": + version: 1.9.0 + resolution: "cacheable@npm:1.9.0" dependencies: - es-errors: "npm:^1.3.0" - function-bind: "npm:^1.1.2" - checksum: 10c0/acb2ab68bf2718e68a3e895f0d0b73ccc9e45b9b6f210f163512ba76f91dab409eb8792f6dae188356f9095747512a3101646b3dea9d37fb8c7c6bf37796d18c + hookified: "npm:^1.8.2" + keyv: "npm:^5.3.3" + checksum: 10c0/1ca171dd2f7c3a929d84b3f94e712cb8fbbfb7c636f19ba01657cf89c6ea4316f21f2beb6c696fa5c87d42f52620f4a7c2dfecb41bf71ee3b249d539895256c4 languageName: node linkType: hard -"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2, call-bind@npm:^1.0.4, call-bind@npm:^1.0.5": - version: 1.0.5 - resolution: "call-bind@npm:1.0.5" +"call-bind-apply-helpers@npm:^1.0.0, call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2": + version: 1.0.2 + resolution: "call-bind-apply-helpers@npm:1.0.2" dependencies: + es-errors: "npm:^1.3.0" function-bind: "npm:^1.1.2" - get-intrinsic: "npm:^1.2.1" - set-function-length: "npm:^1.1.1" - checksum: 10c0/a6172c168fd6dacf744fcde745099218056bd755c50415b592655dcd6562157ed29f130f56c3f6db2250f67e4bd62e5c218cdc56d7bfd76e0bda50770fce2d10 + checksum: 10c0/47bd9901d57b857590431243fea704ff18078b16890a6b3e021e12d279bbf211d039155e27d7566b374d49ee1f8189344bac9833dec7a20cdec370506361c938 languageName: node linkType: hard -"call-bind@npm:^1.0.6, call-bind@npm:^1.0.8": +"call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.7, call-bind@npm:^1.0.8": version: 1.0.8 resolution: "call-bind@npm:1.0.8" dependencies: @@ -3224,16 +3272,13 @@ __metadata: languageName: node linkType: hard -"call-bind@npm:^1.0.7": - version: 1.0.7 - resolution: "call-bind@npm:1.0.7" +"call-bound@npm:^1.0.2, call-bound@npm:^1.0.3, call-bound@npm:^1.0.4": + version: 1.0.4 + resolution: "call-bound@npm:1.0.4" dependencies: - es-define-property: "npm:^1.0.0" - es-errors: "npm:^1.3.0" - function-bind: "npm:^1.1.2" - get-intrinsic: "npm:^1.2.4" - set-function-length: "npm:^1.2.1" - checksum: 10c0/a3ded2e423b8e2a265983dba81c27e125b48eefb2655e7dfab6be597088da3d47c47976c24bc51b8fd9af1061f8f87b4ab78a314f3c77784b2ae2ba535ad8b8d + call-bind-apply-helpers: "npm:^1.0.2" + get-intrinsic: "npm:^1.3.0" + checksum: 10c0/f4796a6a0941e71c766aea672f63b72bc61234c4f4964dc6d7606e3664c307e7d77845328a8f3359ce39ddb377fed67318f9ee203dea1d47e46165dcf2917644 languageName: node linkType: hard @@ -3251,10 +3296,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001587, caniuse-lite@npm:^1.0.30001599, caniuse-lite@npm:^1.0.30001640, caniuse-lite@npm:^1.0.30001669": - version: 1.0.30001680 - resolution: "caniuse-lite@npm:1.0.30001680" - checksum: 10c0/11a4e7f6f5d5f965cfd4b7dc4aef34e12a26e99647f02b5ac9fd7f7670845473b95ada416a785473237e4b1b67281f7b043c8736c85b77097f6b697e8950b15f +"caniuse-lite@npm:^1.0.30001702, caniuse-lite@npm:^1.0.30001716": + version: 1.0.30001718 + resolution: "caniuse-lite@npm:1.0.30001718" + checksum: 10c0/67f9ad09bc16443e28d14f265d6e468480cd8dc1900d0d8b982222de80c699c4f2306599c3da8a3fa7139f110d4b30d49dbac78f215470f479abb6ffe141d5d3 languageName: node linkType: hard @@ -3276,17 +3321,6 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^2.4.2": - version: 2.4.2 - resolution: "chalk@npm:2.4.2" - dependencies: - ansi-styles: "npm:^3.2.1" - escape-string-regexp: "npm:^1.0.5" - supports-color: "npm:^5.3.0" - checksum: 10c0/e6543f02ec877732e3a2d1c3c3323ddb4d39fbab687c23f526e25bd4c6a9bf3b83a696e8c769d078e04e5754921648f7821b2a2acfd16c550435fd630026e073 - languageName: node - linkType: hard - "chalk@npm:^4.0.0, chalk@npm:^4.0.2, chalk@npm:^4.1.0, chalk@npm:^4.1.2": version: 4.1.2 resolution: "chalk@npm:4.1.2" @@ -3297,10 +3331,10 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^5.2.0, chalk@npm:^5.3.0": - version: 5.3.0 - resolution: "chalk@npm:5.3.0" - checksum: 10c0/8297d436b2c0f95801103ff2ef67268d362021b8210daf8ddbe349695333eb3610a71122172ff3b0272f1ef2cf7cc2c41fdaa4715f52e49ffe04c56340feed09 +"chalk@npm:^5.2.0, chalk@npm:^5.4.1": + version: 5.4.1 + resolution: "chalk@npm:5.4.1" + checksum: 10c0/b23e88132c702f4855ca6d25cb5538b1114343e41472d5263ee8a37cccfccd9c4216d111e1097c6a27830407a1dc81fecdf2a56f2c63033d4dbbd88c10b0dcef languageName: node linkType: hard @@ -3339,17 +3373,17 @@ __metadata: languageName: node linkType: hard -"chownr@npm:^2.0.0": - version: 2.0.0 - resolution: "chownr@npm:2.0.0" - checksum: 10c0/594754e1303672171cc04e50f6c398ae16128eb134a88f801bf5354fd96f205320f23536a045d9abd8b51024a149696e51231565891d4efdab8846021ecf88e6 +"chownr@npm:^3.0.0": + version: 3.0.0 + resolution: "chownr@npm:3.0.0" + checksum: 10c0/43925b87700f7e3893296c8e9c56cc58f926411cce3a6e5898136daaf08f08b9a8eb76d37d3267e707d0dcc17aed2e2ebdf5848c0c3ce95cf910a919935c1b10 languageName: node linkType: hard "chrome-trace-event@npm:^1.0.2": - version: 1.0.3 - resolution: "chrome-trace-event@npm:1.0.3" - checksum: 10c0/080ce2d20c2b9e0f8461a380e9585686caa768b1c834a464470c9dc74cda07f27611c7b727a2cd768a9cecd033297fdec4ce01f1e58b62227882c1059dec321c + version: 1.0.4 + resolution: "chrome-trace-event@npm:1.0.4" + checksum: 10c0/3058da7a5f4934b87cf6a90ef5fb68ebc5f7d06f143ed5a4650208e5d7acae47bc03ec844b29fbf5ba7e46e8daa6acecc878f7983a4f4bb7271593da91e61ff5 languageName: node linkType: hard @@ -3426,13 +3460,6 @@ __metadata: languageName: node linkType: hard -"clean-stack@npm:^2.0.0": - version: 2.2.0 - resolution: "clean-stack@npm:2.2.0" - checksum: 10c0/1f90262d5f6230a17e27d0c190b09d47ebe7efdd76a03b5a1127863f7b3c9aec4c3e6c8bb3a7bbf81d553d56a1fd35728f5a8ef4c63f867ac8d690109742a8c1 - languageName: node - linkType: hard - "clear-module@npm:^4.1.2": version: 4.1.2 resolution: "clear-module@npm:4.1.2" @@ -3467,15 +3494,15 @@ __metadata: linkType: hard "cli-table3@npm:^0.6.3": - version: 0.6.3 - resolution: "cli-table3@npm:0.6.3" + version: 0.6.5 + resolution: "cli-table3@npm:0.6.5" dependencies: "@colors/colors": "npm:1.5.0" string-width: "npm:^4.2.0" dependenciesMeta: "@colors/colors": optional: true - checksum: 10c0/39e580cb346c2eaf1bd8f4ff055ae644e902b8303c164a1b8894c0dc95941f92e001db51f49649011be987e708d9fa3183ccc2289a4d376a057769664048cc0c + checksum: 10c0/d7cc9ed12212ae68241cc7a3133c52b844113b17856e11f4f81308acc3febcea7cc9fd298e70933e294dd642866b29fd5d113c2c098948701d0c35f09455de78 languageName: node linkType: hard @@ -3528,22 +3555,6 @@ __metadata: languageName: node linkType: hard -"color-convert@npm:^1.9.0": - version: 1.9.3 - resolution: "color-convert@npm:1.9.3" - dependencies: - color-name: "npm:1.1.3" - checksum: 10c0/5ad3c534949a8c68fca8fbc6f09068f435f0ad290ab8b2f76841b9e6af7e0bb57b98cb05b0e19fe33f5d91e5a8611ad457e5f69e0a484caad1f7487fd0e8253c - languageName: node - linkType: hard - -"color-name@npm:1.1.3": - version: 1.1.3 - resolution: "color-name@npm:1.1.3" - checksum: 10c0/566a3d42cca25b9b3cd5528cd7754b8e89c0eb646b7f214e8e2eaddb69994ac5f0557d9c175eb5d8f0ad73531140d9c47525085ee752a91a2ab15ab459caf6d6 - languageName: node - linkType: hard - "color-name@npm:^1.0.0, color-name@npm:~1.1.4": version: 1.1.4 resolution: "color-name@npm:1.1.4" @@ -3590,6 +3601,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^13.1.0": + version: 13.1.0 + resolution: "commander@npm:13.1.0" + checksum: 10c0/7b8c5544bba704fbe84b7cab2e043df8586d5c114a4c5b607f83ae5060708940ed0b5bd5838cf8ce27539cde265c1cbd59ce3c8c6b017ed3eec8943e3a415164 + languageName: node + linkType: hard + "commander@npm:^2.20.0": version: 2.20.3 resolution: "commander@npm:2.20.3" @@ -3679,166 +3697,164 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": - version: 7.0.3 - resolution: "cross-spawn@npm:7.0.3" +"cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3, cross-spawn@npm:^7.0.6": + version: 7.0.6 + resolution: "cross-spawn@npm:7.0.6" dependencies: path-key: "npm:^3.1.0" shebang-command: "npm:^2.0.0" which: "npm:^2.0.1" - checksum: 10c0/5738c312387081c98d69c98e105b6327b069197f864a60593245d64c8089c8a0a744e16349281210d56835bb9274130d825a78b2ad6853ca13cfbeffc0c31750 + checksum: 10c0/053ea8b2135caff68a9e81470e845613e374e7309a47731e81639de3eaeb90c3d01af0e0b44d2ab9d50b43467223b88567dfeb3262db942dc063b9976718ffc1 languageName: node linkType: hard -"cspell-config-lib@npm:8.16.1": - version: 8.16.1 - resolution: "cspell-config-lib@npm:8.16.1" +"cspell-config-lib@npm:8.19.4": + version: 8.19.4 + resolution: "cspell-config-lib@npm:8.19.4" dependencies: - "@cspell/cspell-types": "npm:8.16.1" + "@cspell/cspell-types": "npm:8.19.4" comment-json: "npm:^4.2.5" - yaml: "npm:^2.6.1" - checksum: 10c0/c0ee27baf5c7143173c51869df95d7f917cd02d88516cbb9e03a099ced752c3bfad7b13958362bd99ead7b712642e99f91782412db47ea8a35f9fdf16a07c373 + yaml: "npm:^2.7.1" + checksum: 10c0/a6c68a6395d268974730ad3b99ebde1ec6bfda21ebf6e11bb8b2264311c230e023f846c5a07a69fefa070a5b1fd338b3b91cf80fb45dbe921c2d2e34168effc1 languageName: node linkType: hard -"cspell-dictionary@npm:8.16.1": - version: 8.16.1 - resolution: "cspell-dictionary@npm:8.16.1" +"cspell-dictionary@npm:8.19.4": + version: 8.19.4 + resolution: "cspell-dictionary@npm:8.19.4" dependencies: - "@cspell/cspell-pipe": "npm:8.16.1" - "@cspell/cspell-types": "npm:8.16.1" - cspell-trie-lib: "npm:8.16.1" - fast-equals: "npm:^5.0.1" - checksum: 10c0/46c2de9b258aecd54f9dc8751b4d6c6253fcd04a197447b3a147a64edfdca328e4fb13201348f6f90acffbbb9b987069280c6367e9116dc41b41ca314b6e2436 + "@cspell/cspell-pipe": "npm:8.19.4" + "@cspell/cspell-types": "npm:8.19.4" + cspell-trie-lib: "npm:8.19.4" + fast-equals: "npm:^5.2.2" + checksum: 10c0/eaf2c49b824c60b8863a9d7c49337904f311880d0f49da54ab900bff650a98de1f04402f59063e92279585d02f0dd88d05316b43988ed24f58f467fea5d3f237 languageName: node linkType: hard -"cspell-gitignore@npm:8.16.1": - version: 8.16.1 - resolution: "cspell-gitignore@npm:8.16.1" +"cspell-gitignore@npm:8.19.4": + version: 8.19.4 + resolution: "cspell-gitignore@npm:8.19.4" dependencies: - "@cspell/url": "npm:8.16.1" - cspell-glob: "npm:8.16.1" - cspell-io: "npm:8.16.1" - find-up-simple: "npm:^1.0.0" + "@cspell/url": "npm:8.19.4" + cspell-glob: "npm:8.19.4" + cspell-io: "npm:8.19.4" bin: cspell-gitignore: bin.mjs - checksum: 10c0/21beb4a6c0469c400f61cd2aff2aa4bd9f669633cebcd226f04f5dd47ad8818eff9fd921701417dd54081b9ee75dd90e66f5ec75e43e0a0f7c7f6f5e213b3008 + checksum: 10c0/fa04a00cf5bee2d7bb4b7e3cc980b76a08e1dc4896efd9a4a600bfb73a06111e96f7f5f88adf99cad58f7e66cfc4af7b4a89cce0bc474849cb1b9c3e4ff311e9 languageName: node linkType: hard -"cspell-glob@npm:8.16.1": - version: 8.16.1 - resolution: "cspell-glob@npm:8.16.1" +"cspell-glob@npm:8.19.4": + version: 8.19.4 + resolution: "cspell-glob@npm:8.19.4" dependencies: - "@cspell/url": "npm:8.16.1" - micromatch: "npm:^4.0.8" - checksum: 10c0/34546985cad63f649b981a4e4a898d0b213dfee355eadd9d43a1c7a767fb62dd4a696d33eabe5e178fb1a17566c909f4e48cb2834f4603c56cfd11150bb20680 + "@cspell/url": "npm:8.19.4" + picomatch: "npm:^4.0.2" + checksum: 10c0/600678edf3d3cba0774a721f965e288fd9932286458528df66ce686a7cce32a36258d0c2291478ca321d8c70628563def717de978357be46cce58db37ceb73cb languageName: node linkType: hard -"cspell-grammar@npm:8.16.1": - version: 8.16.1 - resolution: "cspell-grammar@npm:8.16.1" +"cspell-grammar@npm:8.19.4": + version: 8.19.4 + resolution: "cspell-grammar@npm:8.19.4" dependencies: - "@cspell/cspell-pipe": "npm:8.16.1" - "@cspell/cspell-types": "npm:8.16.1" + "@cspell/cspell-pipe": "npm:8.19.4" + "@cspell/cspell-types": "npm:8.19.4" bin: cspell-grammar: bin.mjs - checksum: 10c0/c16c08027cc4e4dec1926b25687e577b9133f1216df903e1cc4fe7667eeea3300b34b92a0367c1f6a9e5551c7c6096f980516dd25746cc61a48c691353afc9f7 + checksum: 10c0/f45cd8d8a2c8d9661bbf920eb81a57cb536ead5562cf3ed1c872a2f6589217a5e443d86b836e8774a91f97da6ba9f31c2c9bea2379abf274525c2cb696a84d4b languageName: node linkType: hard -"cspell-io@npm:8.16.1": - version: 8.16.1 - resolution: "cspell-io@npm:8.16.1" +"cspell-io@npm:8.19.4": + version: 8.19.4 + resolution: "cspell-io@npm:8.19.4" dependencies: - "@cspell/cspell-service-bus": "npm:8.16.1" - "@cspell/url": "npm:8.16.1" - checksum: 10c0/3da14b5163e7ad5b0767e330d9081b5aeba1cbd7f0140e8ad0dddfcb7c3c1c713eb1d7764e2d515113740c00af17f39da0716833d8f5f99e4a29911f56d4eb74 + "@cspell/cspell-service-bus": "npm:8.19.4" + "@cspell/url": "npm:8.19.4" + checksum: 10c0/648b7d28aa9384b71777f8f452382e023b00d2617f98198a4bb6a5b3d61651070daf22869425d46819eb96061bbecda637167defbd1c571489ebd4b3334b769d languageName: node linkType: hard -"cspell-lib@npm:8.16.1": - version: 8.16.1 - resolution: "cspell-lib@npm:8.16.1" +"cspell-lib@npm:8.19.4": + version: 8.19.4 + resolution: "cspell-lib@npm:8.19.4" dependencies: - "@cspell/cspell-bundled-dicts": "npm:8.16.1" - "@cspell/cspell-pipe": "npm:8.16.1" - "@cspell/cspell-resolver": "npm:8.16.1" - "@cspell/cspell-types": "npm:8.16.1" - "@cspell/dynamic-import": "npm:8.16.1" - "@cspell/filetypes": "npm:8.16.1" - "@cspell/strong-weak-map": "npm:8.16.1" - "@cspell/url": "npm:8.16.1" + "@cspell/cspell-bundled-dicts": "npm:8.19.4" + "@cspell/cspell-pipe": "npm:8.19.4" + "@cspell/cspell-resolver": "npm:8.19.4" + "@cspell/cspell-types": "npm:8.19.4" + "@cspell/dynamic-import": "npm:8.19.4" + "@cspell/filetypes": "npm:8.19.4" + "@cspell/strong-weak-map": "npm:8.19.4" + "@cspell/url": "npm:8.19.4" clear-module: "npm:^4.1.2" comment-json: "npm:^4.2.5" - cspell-config-lib: "npm:8.16.1" - cspell-dictionary: "npm:8.16.1" - cspell-glob: "npm:8.16.1" - cspell-grammar: "npm:8.16.1" - cspell-io: "npm:8.16.1" - cspell-trie-lib: "npm:8.16.1" + cspell-config-lib: "npm:8.19.4" + cspell-dictionary: "npm:8.19.4" + cspell-glob: "npm:8.19.4" + cspell-grammar: "npm:8.19.4" + cspell-io: "npm:8.19.4" + cspell-trie-lib: "npm:8.19.4" env-paths: "npm:^3.0.0" - fast-equals: "npm:^5.0.1" + fast-equals: "npm:^5.2.2" gensequence: "npm:^7.0.0" - import-fresh: "npm:^3.3.0" + import-fresh: "npm:^3.3.1" resolve-from: "npm:^5.0.0" vscode-languageserver-textdocument: "npm:^1.0.12" - vscode-uri: "npm:^3.0.8" + vscode-uri: "npm:^3.1.0" xdg-basedir: "npm:^5.1.0" - checksum: 10c0/d2ced7860e4254f9acf052eabbf6bf4013c8a79c8fe0b2fcfc580f0fc1990a3697a7a19623cfbd09ec79cf865244805c9b58769cab9298fce52aa43e57a7d4ef + checksum: 10c0/b44e358488d5fa318c18645fda6ec77239989a410fc26dee6ca54ee4cc49c99405c75363df09f99e58875a8d9bc305eeb1ba2e4e9b9a900adfd832ece8955336 languageName: node linkType: hard -"cspell-trie-lib@npm:8.16.1": - version: 8.16.1 - resolution: "cspell-trie-lib@npm:8.16.1" +"cspell-trie-lib@npm:8.19.4": + version: 8.19.4 + resolution: "cspell-trie-lib@npm:8.19.4" dependencies: - "@cspell/cspell-pipe": "npm:8.16.1" - "@cspell/cspell-types": "npm:8.16.1" + "@cspell/cspell-pipe": "npm:8.19.4" + "@cspell/cspell-types": "npm:8.19.4" gensequence: "npm:^7.0.0" - checksum: 10c0/bd665b47b5c7222f0a51600e8781b9062d7eef8a9f7692b2e586dd79b80c89f87f5cee88bd0c291531ac9e5cdc8a0711ccf7711de84d13b15336168188c16e7f + checksum: 10c0/01cd861b0b42c7c4863b4310d5d03d06b6a2b783c81e03d3d087e17771cee5a389278a4f459ffd0be3da88db712f4a33a2a188a27aaaf7bcc3184e44911e3df4 languageName: node linkType: hard "cspell@npm:^8.16.1": - version: 8.16.1 - resolution: "cspell@npm:8.16.1" - dependencies: - "@cspell/cspell-json-reporter": "npm:8.16.1" - "@cspell/cspell-pipe": "npm:8.16.1" - "@cspell/cspell-types": "npm:8.16.1" - "@cspell/dynamic-import": "npm:8.16.1" - "@cspell/url": "npm:8.16.1" - chalk: "npm:^5.3.0" + version: 8.19.4 + resolution: "cspell@npm:8.19.4" + dependencies: + "@cspell/cspell-json-reporter": "npm:8.19.4" + "@cspell/cspell-pipe": "npm:8.19.4" + "@cspell/cspell-types": "npm:8.19.4" + "@cspell/dynamic-import": "npm:8.19.4" + "@cspell/url": "npm:8.19.4" + chalk: "npm:^5.4.1" chalk-template: "npm:^1.1.0" - commander: "npm:^12.1.0" - cspell-dictionary: "npm:8.16.1" - cspell-gitignore: "npm:8.16.1" - cspell-glob: "npm:8.16.1" - cspell-io: "npm:8.16.1" - cspell-lib: "npm:8.16.1" + commander: "npm:^13.1.0" + cspell-dictionary: "npm:8.19.4" + cspell-gitignore: "npm:8.19.4" + cspell-glob: "npm:8.19.4" + cspell-io: "npm:8.19.4" + cspell-lib: "npm:8.19.4" fast-json-stable-stringify: "npm:^2.1.0" file-entry-cache: "npm:^9.1.0" - get-stdin: "npm:^9.0.0" - semver: "npm:^7.6.3" - tinyglobby: "npm:^0.2.10" + semver: "npm:^7.7.1" + tinyglobby: "npm:^0.2.13" bin: cspell: bin.mjs cspell-esm: bin.mjs - checksum: 10c0/ae5c91f21508a48fdb74848e746bf60f34a5f52255f52b17bd2feb673f86c17c9b47909760f6f05b8058399c6f336586fd3c8835db20f73187203c382fc80a8f + checksum: 10c0/7914f35ec1cc6ad5536bc7b0cd81de40a3233ef2631466ab6f3de3459d779b97a8496e6efce20bd793b1f22e6398c49316ac4eebcce8a9c578b94cd0b455e1cc languageName: node linkType: hard -"css-blank-pseudo@npm:^6.0.2": - version: 6.0.2 - resolution: "css-blank-pseudo@npm:6.0.2" +"css-blank-pseudo@npm:^7.0.1": + version: 7.0.1 + resolution: "css-blank-pseudo@npm:7.0.1" dependencies: - postcss-selector-parser: "npm:^6.0.13" + postcss-selector-parser: "npm:^7.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/609303551c2a518ca23ed12fed43945ca4f7af04140da68a5536f5dc9d42f33412c13ac3fe5c616d7401a9e13a23d80b4cfa87149a45f94b244d8067bb11f3dd + checksum: 10c0/46c3d3a611972fdb0c264db7c0b34fe437bc4300961d11945145cf04962f52a545a6ef55bc8ff4afd82b605bd692b4970f2b54582616dea00441105e725d4618 languageName: node linkType: hard @@ -3849,29 +3865,29 @@ __metadata: languageName: node linkType: hard -"css-has-pseudo@npm:^6.0.5": - version: 6.0.5 - resolution: "css-has-pseudo@npm:6.0.5" +"css-has-pseudo@npm:^7.0.2": + version: 7.0.2 + resolution: "css-has-pseudo@npm:7.0.2" dependencies: - "@csstools/selector-specificity": "npm:^3.1.1" - postcss-selector-parser: "npm:^6.0.13" + "@csstools/selector-specificity": "npm:^5.0.0" + postcss-selector-parser: "npm:^7.0.0" postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/946930b7e699d6dbcb8426ebcd593228ee0e2143a148fb2399111ea4c9ed8d6eb3447e944251f1be44ae987d5ab16e450b0b006ca197f318c2a3760ba431fbb9 + checksum: 10c0/456e9ce1eec8a535683c329956acfe53ce5a208345d7f2fcbe662626be8b3c98681e9041d7f4980316714397b0c1c3defde25653d629c396df17803d599c4edf languageName: node linkType: hard -"css-prefers-color-scheme@npm:^9.0.1": - version: 9.0.1 - resolution: "css-prefers-color-scheme@npm:9.0.1" +"css-prefers-color-scheme@npm:^10.0.0": + version: 10.0.0 + resolution: "css-prefers-color-scheme@npm:10.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/b94da00d84c4ebb56eb8fce96d4fdb20d2e622a7cd8cd6d7b87d1d2b718a55ce88bccc9d871771bfe77c5107de06132ba87190e3656f049e45f19f652d50136c + checksum: 10c0/a66c727bb2455328b18862f720819fc98ff5c1486b69f758bdb5c66f46cc6d484f9fc0bfa4f00f2693c5da6707ad136ca789496982f713ade693f08af624930e languageName: node linkType: hard -"css-tree@npm:^3.0.1": +"css-tree@npm:^3.1.0": version: 3.1.0 resolution: "css-tree@npm:3.1.0" dependencies: @@ -3881,10 +3897,10 @@ __metadata: languageName: node linkType: hard -"cssdb@npm:^8.1.0": - version: 8.1.0 - resolution: "cssdb@npm:8.1.0" - checksum: 10c0/1fa1f1566c7e9964f5c71e443583eaba16a90933a3ef6803815c4281d084b75da948c415bade33d7085894fe0929c082fcb3135bf4400048cfff40d227ebd5dd +"cssdb@npm:^8.2.5": + version: 8.2.5 + resolution: "cssdb@npm:8.2.5" + checksum: 10c0/3f6f2941c958ea0bdbcc1f807ee728d851ef60c370fbcd54360840e3192f082e0a0b2fa4ea600ca74fa771936c9130883727d7845132cc8bf135a4e0a1e55746 languageName: node linkType: hard @@ -3897,16 +3913,7 @@ __metadata: languageName: node linkType: hard -"cssstyle@npm:^4.0.1": - version: 4.0.1 - resolution: "cssstyle@npm:4.0.1" - dependencies: - rrweb-cssom: "npm:^0.6.0" - checksum: 10c0/cadf9a8b23e11f4c6d63f21291096a0b0be868bd4ab9c799daa2c5b18330e39e5281605f01da906e901b42f742df0f3b3645af6465e83377ff7d15a88ee432a0 - languageName: node - linkType: hard - -"cssstyle@npm:^4.2.1": +"cssstyle@npm:^4.0.1, cssstyle@npm:^4.2.1": version: 4.3.1 resolution: "cssstyle@npm:4.3.1" dependencies: @@ -3933,40 +3940,52 @@ __metadata: languageName: node linkType: hard -"data-view-buffer@npm:^1.0.1": - version: 1.0.1 - resolution: "data-view-buffer@npm:1.0.1" +"data-view-buffer@npm:^1.0.2": + version: 1.0.2 + resolution: "data-view-buffer@npm:1.0.2" dependencies: - call-bind: "npm:^1.0.6" + call-bound: "npm:^1.0.3" es-errors: "npm:^1.3.0" - is-data-view: "npm:^1.0.1" - checksum: 10c0/8984119e59dbed906a11fcfb417d7d861936f16697a0e7216fe2c6c810f6b5e8f4a5281e73f2c28e8e9259027190ac4a33e2a65fdd7fa86ac06b76e838918583 + is-data-view: "npm:^1.0.2" + checksum: 10c0/7986d40fc7979e9e6241f85db8d17060dd9a71bd53c894fa29d126061715e322a4cd47a00b0b8c710394854183d4120462b980b8554012acc1c0fa49df7ad38c languageName: node linkType: hard -"data-view-byte-length@npm:^1.0.1": - version: 1.0.1 - resolution: "data-view-byte-length@npm:1.0.1" +"data-view-byte-length@npm:^1.0.2": + version: 1.0.2 + resolution: "data-view-byte-length@npm:1.0.2" dependencies: - call-bind: "npm:^1.0.7" + call-bound: "npm:^1.0.3" es-errors: "npm:^1.3.0" - is-data-view: "npm:^1.0.1" - checksum: 10c0/b7d9e48a0cf5aefed9ab7d123559917b2d7e0d65531f43b2fd95b9d3a6b46042dd3fca597c42bba384e66b70d7ad66ff23932f8367b241f53d93af42cfe04ec2 + is-data-view: "npm:^1.0.2" + checksum: 10c0/f8a4534b5c69384d95ac18137d381f18a5cfae1f0fc1df0ef6feef51ef0d568606d970b69e02ea186c6c0f0eac77fe4e6ad96fec2569cc86c3afcc7475068c55 languageName: node linkType: hard -"data-view-byte-offset@npm:^1.0.0": - version: 1.0.0 - resolution: "data-view-byte-offset@npm:1.0.0" +"data-view-byte-offset@npm:^1.0.1": + version: 1.0.1 + resolution: "data-view-byte-offset@npm:1.0.1" dependencies: - call-bind: "npm:^1.0.6" + call-bound: "npm:^1.0.2" es-errors: "npm:^1.3.0" is-data-view: "npm:^1.0.1" - checksum: 10c0/21b0d2e53fd6e20cc4257c873bf6d36d77bd6185624b84076c0a1ddaa757b49aaf076254006341d35568e89f52eecd1ccb1a502cfb620f2beca04f48a6a62a8f + checksum: 10c0/fa7aa40078025b7810dcffc16df02c480573b7b53ef1205aa6a61533011005c1890e5ba17018c692ce7c900212b547262d33279fde801ad9843edc0863bf78c4 languageName: node linkType: hard -"debug@npm:4, debug@npm:4.3.4, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4": +"debug@npm:4, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.7": + version: 4.4.1 + resolution: "debug@npm:4.4.1" + dependencies: + ms: "npm:^2.1.3" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10c0/d2b44bc1afd912b49bb7ebb0d50a860dc93a4dd7d946e8de94abc957bb63726b7dd5aa48c18c2386c379ec024c46692e15ed3ed97d481729f929201e671fcd55 + languageName: node + linkType: hard + +"debug@npm:4.3.4": version: 4.3.4 resolution: "debug@npm:4.3.4" dependencies: @@ -3987,18 +4006,6 @@ __metadata: languageName: node linkType: hard -"debug@npm:^4.3.7": - version: 4.3.7 - resolution: "debug@npm:4.3.7" - dependencies: - ms: "npm:^2.1.3" - peerDependenciesMeta: - supports-color: - optional: true - checksum: 10c0/1471db19c3b06d485a622d62f65947a19a23fbd0dd73f7fd3eafb697eec5360cde447fb075919987899b1a2096e85d35d4eb5a4de09a57600ac9cf7e6c8e768b - languageName: node - linkType: hard - "decamelize@npm:^4.0.0": version: 4.0.0 resolution: "decamelize@npm:4.0.0" @@ -4006,14 +4013,7 @@ __metadata: languageName: node linkType: hard -"decimal.js@npm:^10.4.3": - version: 10.4.3 - resolution: "decimal.js@npm:10.4.3" - checksum: 10c0/6d60206689ff0911f0ce968d40f163304a6c1bc739927758e6efc7921cfa630130388966f16bf6ef6b838cb33679fbe8e7a78a2f3c478afce841fd55ac8fb8ee - languageName: node - linkType: hard - -"decimal.js@npm:^10.5.0": +"decimal.js@npm:^10.4.3, decimal.js@npm:^10.5.0": version: 10.5.0 resolution: "decimal.js@npm:10.5.0" checksum: 10c0/785c35279df32762143914668df35948920b6c1c259b933e0519a69b7003fc0a5ed2a766b1e1dda02574450c566b21738a45f15e274b47c2ac02072c0d1f3ac3 @@ -4071,18 +4071,7 @@ __metadata: languageName: node linkType: hard -"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.1": - version: 1.1.1 - resolution: "define-data-property@npm:1.1.1" - dependencies: - get-intrinsic: "npm:^1.2.1" - gopd: "npm:^1.0.1" - has-property-descriptors: "npm:^1.0.0" - checksum: 10c0/77ef6e0bceb515e05b5913ab635a84d537cee84f8a7c37c77fdcb31fc5b80f6dbe81b33375e4b67d96aa04e6a0d8d4ea099e431d83f089af8d93adfb584bcb94 - languageName: node - linkType: hard - -"define-data-property@npm:^1.1.4": +"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": version: 1.1.4 resolution: "define-data-property@npm:1.1.4" dependencies: @@ -4100,7 +4089,7 @@ __metadata: languageName: node linkType: hard -"define-properties@npm:^1.1.3, define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": +"define-properties@npm:^1.2.1": version: 1.2.1 resolution: "define-properties@npm:1.2.1" dependencies: @@ -4189,14 +4178,14 @@ __metadata: languageName: node linkType: hard -"dunder-proto@npm:^1.0.0": - version: 1.0.0 - resolution: "dunder-proto@npm:1.0.0" +"dunder-proto@npm:^1.0.0, dunder-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "dunder-proto@npm:1.0.1" dependencies: - call-bind-apply-helpers: "npm:^1.0.0" + call-bind-apply-helpers: "npm:^1.0.1" es-errors: "npm:^1.3.0" gopd: "npm:^1.2.0" - checksum: 10c0/b321e5cbf64f0a4c786b0b3dc187eb5197a83f6e05a1e11b86db25251b3ae6747c4b805d9e0a4fbf481d22a86a539dc75f82d883daeac7fc2ce4bd72ff5ef5a2 + checksum: 10c0/199f2a0c1c16593ca0a145dbf76a962f8033ce3129f01284d48c45ed4e14fea9bbacd7b3610b6cdc33486cef20385ac054948fefc6272fcce645c09468f93031 languageName: node linkType: hard @@ -4218,24 +4207,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.4.668": - version: 1.4.762 - resolution: "electron-to-chromium@npm:1.4.762" - checksum: 10c0/b4f9e7472b0f25bac24454a6450c43257ef931a12f4f18d0f430997b383db228b73caf268010cec0441646d6842875503c25fca7125f0bf2805fb2ee8c2e2aea - languageName: node - linkType: hard - -"electron-to-chromium@npm:^1.4.820": - version: 1.4.823 - resolution: "electron-to-chromium@npm:1.4.823" - checksum: 10c0/772ad25e1305ab4a1a18beb9edae5d62ba55c5660c9d20a86c90e195d22da64dcf209ba8c9fb8172c76d1cbff12ea56a83eb75863bd2b22fb7ddabcd1d73c1e7 - languageName: node - linkType: hard - -"electron-to-chromium@npm:^1.5.41": - version: 1.5.58 - resolution: "electron-to-chromium@npm:1.5.58" - checksum: 10c0/a3f5544ef12a84a7046b297195d19937f396683be8f245e1569cb9a877afd59f3630c8de9bb07f57aee1e6cda564c1a80c7d0b2fd28effb70db1558ca4669996 +"electron-to-chromium@npm:^1.5.149": + version: 1.5.155 + resolution: "electron-to-chromium@npm:1.5.155" + checksum: 10c0/aee32a0b03282e488352370f6a910de37788b814031020a0e244943450e844e8a41f741d6e5ec70d553dfa4382ef80088034ddc400b48f45de95de331b9ec178 languageName: node linkType: hard @@ -4272,12 +4247,12 @@ __metadata: linkType: hard "enhanced-resolve@npm:^5.17.1": - version: 5.17.1 - resolution: "enhanced-resolve@npm:5.17.1" + version: 5.18.1 + resolution: "enhanced-resolve@npm:5.18.1" dependencies: graceful-fs: "npm:^4.2.4" tapable: "npm:^2.2.0" - checksum: 10c0/81a0515675eca17efdba2cf5bad87abc91a528fc1191aad50e275e74f045b41506167d420099022da7181c8d787170ea41e4a11a0b10b7a16f6237daecb15370 + checksum: 10c0/4cffd9b125225184e2abed9fdf0ed3dbd2224c873b165d0838fd066cde32e0918626cba2f1f4bf6860762f13a7e2364fd89a82b99566be2873d813573ac71846 languageName: node linkType: hard @@ -4288,13 +4263,6 @@ __metadata: languageName: node linkType: hard -"entities@npm:^4.4.0": - version: 4.5.0 - resolution: "entities@npm:4.5.0" - checksum: 10c0/5b039739f7621f5d1ad996715e53d964035f75ad3b9a4d38c6b3804bb226e282ffeae2443624d8fdd9c47d8e926ae9ac009c54671243f0c3294c26af7cc85250 - languageName: node - linkType: hard - "entities@npm:^6.0.0": version: 6.0.0 resolution: "entities@npm:6.0.0" @@ -4350,124 +4318,73 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.22.1": - version: 1.22.3 - resolution: "es-abstract@npm:1.22.3" +"es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.9": + version: 1.23.9 + resolution: "es-abstract@npm:1.23.9" dependencies: - array-buffer-byte-length: "npm:^1.0.0" - arraybuffer.prototype.slice: "npm:^1.0.2" - available-typed-arrays: "npm:^1.0.5" - call-bind: "npm:^1.0.5" - es-set-tostringtag: "npm:^2.0.1" - es-to-primitive: "npm:^1.2.1" - function.prototype.name: "npm:^1.1.6" - get-intrinsic: "npm:^1.2.2" - get-symbol-description: "npm:^1.0.0" - globalthis: "npm:^1.0.3" - gopd: "npm:^1.0.1" - has-property-descriptors: "npm:^1.0.0" - has-proto: "npm:^1.0.1" - has-symbols: "npm:^1.0.3" - hasown: "npm:^2.0.0" - internal-slot: "npm:^1.0.5" - is-array-buffer: "npm:^3.0.2" - is-callable: "npm:^1.2.7" - is-negative-zero: "npm:^2.0.2" - is-regex: "npm:^1.1.4" - is-shared-array-buffer: "npm:^1.0.2" - is-string: "npm:^1.0.7" - is-typed-array: "npm:^1.1.12" - is-weakref: "npm:^1.0.2" - object-inspect: "npm:^1.13.1" - object-keys: "npm:^1.1.1" - object.assign: "npm:^4.1.4" - regexp.prototype.flags: "npm:^1.5.1" - safe-array-concat: "npm:^1.0.1" - safe-regex-test: "npm:^1.0.0" - string.prototype.trim: "npm:^1.2.8" - string.prototype.trimend: "npm:^1.0.7" - string.prototype.trimstart: "npm:^1.0.7" - typed-array-buffer: "npm:^1.0.0" - typed-array-byte-length: "npm:^1.0.0" - typed-array-byte-offset: "npm:^1.0.0" - typed-array-length: "npm:^1.0.4" - unbox-primitive: "npm:^1.0.2" - which-typed-array: "npm:^1.1.13" - checksum: 10c0/da31ec43b1c8eb47ba8a17693cac143682a1078b6c3cd883ce0e2062f135f532e93d873694ef439670e1f6ca03195118f43567ba6f33fb0d6c7daae750090236 - languageName: node - linkType: hard - -"es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.5": - version: 1.23.5 - resolution: "es-abstract@npm:1.23.5" - dependencies: - array-buffer-byte-length: "npm:^1.0.1" - arraybuffer.prototype.slice: "npm:^1.0.3" + array-buffer-byte-length: "npm:^1.0.2" + arraybuffer.prototype.slice: "npm:^1.0.4" available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.7" - data-view-buffer: "npm:^1.0.1" - data-view-byte-length: "npm:^1.0.1" - data-view-byte-offset: "npm:^1.0.0" - es-define-property: "npm:^1.0.0" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + data-view-buffer: "npm:^1.0.2" + data-view-byte-length: "npm:^1.0.2" + data-view-byte-offset: "npm:^1.0.1" + es-define-property: "npm:^1.0.1" es-errors: "npm:^1.3.0" es-object-atoms: "npm:^1.0.0" - es-set-tostringtag: "npm:^2.0.3" - es-to-primitive: "npm:^1.2.1" - function.prototype.name: "npm:^1.1.6" - get-intrinsic: "npm:^1.2.4" - get-symbol-description: "npm:^1.0.2" + es-set-tostringtag: "npm:^2.1.0" + es-to-primitive: "npm:^1.3.0" + function.prototype.name: "npm:^1.1.8" + get-intrinsic: "npm:^1.2.7" + get-proto: "npm:^1.0.0" + get-symbol-description: "npm:^1.1.0" globalthis: "npm:^1.0.4" - gopd: "npm:^1.0.1" + gopd: "npm:^1.2.0" has-property-descriptors: "npm:^1.0.2" - has-proto: "npm:^1.0.3" - has-symbols: "npm:^1.0.3" + has-proto: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" hasown: "npm:^2.0.2" - internal-slot: "npm:^1.0.7" - is-array-buffer: "npm:^3.0.4" + internal-slot: "npm:^1.1.0" + is-array-buffer: "npm:^3.0.5" is-callable: "npm:^1.2.7" - is-data-view: "npm:^1.0.1" - is-negative-zero: "npm:^2.0.3" - is-regex: "npm:^1.1.4" - is-shared-array-buffer: "npm:^1.0.3" - is-string: "npm:^1.0.7" - is-typed-array: "npm:^1.1.13" - is-weakref: "npm:^1.0.2" + is-data-view: "npm:^1.0.2" + is-regex: "npm:^1.2.1" + is-shared-array-buffer: "npm:^1.0.4" + is-string: "npm:^1.1.1" + is-typed-array: "npm:^1.1.15" + is-weakref: "npm:^1.1.0" + math-intrinsics: "npm:^1.1.0" object-inspect: "npm:^1.13.3" object-keys: "npm:^1.1.1" - object.assign: "npm:^4.1.5" + object.assign: "npm:^4.1.7" + own-keys: "npm:^1.0.1" regexp.prototype.flags: "npm:^1.5.3" - safe-array-concat: "npm:^1.1.2" - safe-regex-test: "npm:^1.0.3" - string.prototype.trim: "npm:^1.2.9" - string.prototype.trimend: "npm:^1.0.8" + safe-array-concat: "npm:^1.1.3" + safe-push-apply: "npm:^1.0.0" + safe-regex-test: "npm:^1.1.0" + set-proto: "npm:^1.0.0" + string.prototype.trim: "npm:^1.2.10" + string.prototype.trimend: "npm:^1.0.9" string.prototype.trimstart: "npm:^1.0.8" - typed-array-buffer: "npm:^1.0.2" - typed-array-byte-length: "npm:^1.0.1" - typed-array-byte-offset: "npm:^1.0.2" - typed-array-length: "npm:^1.0.6" - unbox-primitive: "npm:^1.0.2" - which-typed-array: "npm:^1.1.15" - checksum: 10c0/1f6f91da9cf7ee2c81652d57d3046621d598654d1d1b05c1578bafe5c4c2d3d69513901679bdca2de589f620666ec21de337e4935cec108a4ed0871d5ef04a5d - languageName: node - linkType: hard - -"es-define-property@npm:^1.0.0": - version: 1.0.0 - resolution: "es-define-property@npm:1.0.0" - dependencies: - get-intrinsic: "npm:^1.2.4" - checksum: 10c0/6bf3191feb7ea2ebda48b577f69bdfac7a2b3c9bcf97307f55fd6ef1bbca0b49f0c219a935aca506c993d8c5d8bddd937766cb760cd5e5a1071351f2df9f9aa4 + typed-array-buffer: "npm:^1.0.3" + typed-array-byte-length: "npm:^1.0.3" + typed-array-byte-offset: "npm:^1.0.4" + typed-array-length: "npm:^1.0.7" + unbox-primitive: "npm:^1.1.0" + which-typed-array: "npm:^1.1.18" + checksum: 10c0/1de229c9e08fe13c17fe5abaec8221545dfcd57e51f64909599a6ae896df84b8fd2f7d16c60cb00d7bf495b9298ca3581aded19939d4b7276854a4b066f8422b languageName: node linkType: hard -"es-define-property@npm:^1.0.1": +"es-define-property@npm:^1.0.0, es-define-property@npm:^1.0.1": version: 1.0.1 resolution: "es-define-property@npm:1.0.1" checksum: 10c0/3f54eb49c16c18707949ff25a1456728c883e81259f045003499efba399c08bad00deebf65cccde8c0e07908c1a225c9d472b7107e558f2a48e28d530e34527c languageName: node linkType: hard -"es-errors@npm:^1.2.1, es-errors@npm:^1.3.0": +"es-errors@npm:^1.3.0": version: 1.3.0 resolution: "es-errors@npm:1.3.0" checksum: 10c0/0a61325670072f98d8ae3b914edab3559b6caa980f08054a3b872052640d91da01d38df55df797fcc916389d77fc92b8d5906cf028f4db46d7e3003abecbca85 @@ -4492,78 +4409,54 @@ __metadata: linkType: hard "es-module-lexer@npm:^1.2.1": - version: 1.4.1 - resolution: "es-module-lexer@npm:1.4.1" - checksum: 10c0/b7260a138668554d3f0ddcc728cb4b60c2fa463f15545cf155ecbdd5450a1348952d58298a7f48642e900ee579f21d7f5304b6b3c61b3d9fc2d4b2109b5a9dff + version: 1.7.0 + resolution: "es-module-lexer@npm:1.7.0" + checksum: 10c0/4c935affcbfeba7fb4533e1da10fa8568043df1e3574b869385980de9e2d475ddc36769891936dbb07036edb3c3786a8b78ccf44964cd130dedc1f2c984b6c7b languageName: node linkType: hard -"es-object-atoms@npm:^1.0.0": - version: 1.0.0 - resolution: "es-object-atoms@npm:1.0.0" +"es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1": + version: 1.1.1 + resolution: "es-object-atoms@npm:1.1.1" dependencies: es-errors: "npm:^1.3.0" - checksum: 10c0/1fed3d102eb27ab8d983337bb7c8b159dd2a1e63ff833ec54eea1311c96d5b08223b433060ba240541ca8adba9eee6b0a60cdbf2f80634b784febc9cc8b687b4 + checksum: 10c0/65364812ca4daf48eb76e2a3b7a89b3f6a2e62a1c420766ce9f692665a29d94fe41fe88b65f24106f449859549711e4b40d9fb8002d862dfd7eb1c512d10be0c languageName: node linkType: hard -"es-set-tostringtag@npm:^2.0.1": - version: 2.0.2 - resolution: "es-set-tostringtag@npm:2.0.2" - dependencies: - get-intrinsic: "npm:^1.2.2" - has-tostringtag: "npm:^1.0.0" - hasown: "npm:^2.0.0" - checksum: 10c0/176d6bd1be31dd0145dcceee62bb78d4a5db7f81db437615a18308a6f62bcffe45c15081278413455e8cf0aad4ea99079de66f8de389605942dfdacbad74c2d5 - languageName: node - linkType: hard - -"es-set-tostringtag@npm:^2.0.3": - version: 2.0.3 - resolution: "es-set-tostringtag@npm:2.0.3" +"es-set-tostringtag@npm:^2.1.0": + version: 2.1.0 + resolution: "es-set-tostringtag@npm:2.1.0" dependencies: - get-intrinsic: "npm:^1.2.4" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.6" has-tostringtag: "npm:^1.0.2" - hasown: "npm:^2.0.1" - checksum: 10c0/f22aff1585eb33569c326323f0b0d175844a1f11618b86e193b386f8be0ea9474cfbe46df39c45d959f7aa8f6c06985dc51dd6bce5401645ec5a74c4ceaa836a + hasown: "npm:^2.0.2" + checksum: 10c0/ef2ca9ce49afe3931cb32e35da4dcb6d86ab02592cfc2ce3e49ced199d9d0bb5085fc7e73e06312213765f5efa47cc1df553a6a5154584b21448e9fb8355b1af languageName: node linkType: hard -"es-shim-unscopables@npm:^1.0.0, es-shim-unscopables@npm:^1.0.2": - version: 1.0.2 - resolution: "es-shim-unscopables@npm:1.0.2" +"es-shim-unscopables@npm:^1.0.2, es-shim-unscopables@npm:^1.1.0": + version: 1.1.0 + resolution: "es-shim-unscopables@npm:1.1.0" dependencies: - hasown: "npm:^2.0.0" - checksum: 10c0/f495af7b4b7601a4c0cfb893581c352636e5c08654d129590386a33a0432cf13a7bdc7b6493801cadd990d838e2839b9013d1de3b880440cb537825e834fe783 + hasown: "npm:^2.0.2" + checksum: 10c0/1b9702c8a1823fc3ef39035a4e958802cf294dd21e917397c561d0b3e195f383b978359816b1732d02b255ccf63e1e4815da0065b95db8d7c992037be3bbbcdb languageName: node linkType: hard -"es-to-primitive@npm:^1.2.1": - version: 1.2.1 - resolution: "es-to-primitive@npm:1.2.1" +"es-to-primitive@npm:^1.3.0": + version: 1.3.0 + resolution: "es-to-primitive@npm:1.3.0" dependencies: - is-callable: "npm:^1.1.4" - is-date-object: "npm:^1.0.1" - is-symbol: "npm:^1.0.2" - checksum: 10c0/0886572b8dc075cb10e50c0af62a03d03a68e1e69c388bd4f10c0649ee41b1fbb24840a1b7e590b393011b5cdbe0144b776da316762653685432df37d6de60f1 - languageName: node - linkType: hard - -"escalade@npm:^3.1.1": - version: 3.1.1 - resolution: "escalade@npm:3.1.1" - checksum: 10c0/afd02e6ca91ffa813e1108b5e7756566173d6bc0d1eb951cb44d6b21702ec17c1cf116cfe75d4a2b02e05acb0b808a7a9387d0d1ca5cf9c04ad03a8445c3e46d - languageName: node - linkType: hard - -"escalade@npm:^3.1.2": - version: 3.1.2 - resolution: "escalade@npm:3.1.2" - checksum: 10c0/6b4adafecd0682f3aa1cd1106b8fff30e492c7015b178bc81b2d2f75106dabea6c6d6e8508fc491bd58e597c74abb0e8e2368f943ecb9393d4162e3c2f3cf287 + is-callable: "npm:^1.2.7" + is-date-object: "npm:^1.0.5" + is-symbol: "npm:^1.0.4" + checksum: 10c0/c7e87467abb0b438639baa8139f701a06537d2b9bc758f23e8622c3b42fd0fdb5bde0f535686119e446dd9d5e4c0f238af4e14960f4771877cf818d023f6730b languageName: node linkType: hard -"escalade@npm:^3.2.0": +"escalade@npm:^3.1.1, escalade@npm:^3.2.0": version: 3.2.0 resolution: "escalade@npm:3.2.0" checksum: 10c0/ced4dd3a78e15897ed3be74e635110bbf3b08877b0a41be50dcb325ee0e0b5f65fc2d50e9845194d7c4633f327e2e1c6cce00a71b617c5673df0374201d67f65 @@ -4577,21 +4470,14 @@ __metadata: languageName: node linkType: hard -"escape-string-regexp@npm:^1.0.5": - version: 1.0.5 - resolution: "escape-string-regexp@npm:1.0.5" - checksum: 10c0/a968ad453dd0c2724e14a4f20e177aaf32bb384ab41b674a8454afe9a41c5e6fe8903323e0a1052f56289d04bd600f81278edf140b0fcc02f5cac98d0f5b5371 - languageName: node - linkType: hard - "eslint-compat-utils@npm:^0.6.0": - version: 0.6.4 - resolution: "eslint-compat-utils@npm:0.6.4" + version: 0.6.5 + resolution: "eslint-compat-utils@npm:0.6.5" dependencies: semver: "npm:^7.5.4" peerDependencies: eslint: ">=6.0.0" - checksum: 10c0/5b665c4051e978b9f9c48621f63d07e6b2a8ba1b334fc430f1ce0d8b596968677bdb54c23c00ca961ad5b4673d5e83e014a52b4baf9a2f7d4ccd79e3c213acfb + checksum: 10c0/f3519e1460ec82c6967c4b0132801924bf5c17328999014f444ec12f075b151e992d1ebf378cb8eb0b2e00b3d04e0eaac80897209121fd115f857598b4588393 languageName: node linkType: hard @@ -4610,14 +4496,14 @@ __metadata: languageName: node linkType: hard -"eslint-config-prettier@npm:^9.1.0": - version: 9.1.0 - resolution: "eslint-config-prettier@npm:9.1.0" +"eslint-config-prettier@npm:^10.1.3": + version: 10.1.5 + resolution: "eslint-config-prettier@npm:10.1.5" peerDependencies: eslint: ">=7.0.0" bin: eslint-config-prettier: bin/cli.js - checksum: 10c0/6d332694b36bc9ac6fdb18d3ca2f6ac42afa2ad61f0493e89226950a7091e38981b66bac2b47ba39d15b73fff2cd32c78b850a9cf9eed9ca9a96bfb2f3a2f10d + checksum: 10c0/5486255428e4577e8064b40f27db299faf7312b8e43d7b4bc913a6426e6c0f5950cd519cad81ae24e9aecb4002c502bc665c02e3b52efde57af2debcf27dd6e0 languageName: node linkType: hard @@ -4685,47 +4571,47 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-no-jquery@npm:^3.1.0": - version: 3.1.0 - resolution: "eslint-plugin-no-jquery@npm:3.1.0" +"eslint-plugin-no-jquery@npm:^3.1.1": + version: 3.1.1 + resolution: "eslint-plugin-no-jquery@npm:3.1.1" peerDependencies: eslint: ">=8.0.0" - checksum: 10c0/d449e93f1bb6fe0b4b229e0dd4e26c56095256f6eb3ca2ec905ab5c62622546c405c19f8e6022de580aa1898f40b065097d21857fd8f4d528a592256ed156293 + checksum: 10c0/fcf538876f994a754909cfa441ce59911449d93fd03eadc6960e0c8b9a8ea6d7cfd79423e828db08d943115ee04c8146bc46e29f75595043cc080f11fbc0f528 languageName: node linkType: hard -"eslint-plugin-prettier@npm:^5.2.1": - version: 5.2.1 - resolution: "eslint-plugin-prettier@npm:5.2.1" +"eslint-plugin-prettier@npm:^5.4.0": + version: 5.4.0 + resolution: "eslint-plugin-prettier@npm:5.4.0" dependencies: prettier-linter-helpers: "npm:^1.0.0" - synckit: "npm:^0.9.1" + synckit: "npm:^0.11.0" peerDependencies: "@types/eslint": ">=8.0.0" eslint: ">=8.0.0" - eslint-config-prettier: "*" + eslint-config-prettier: ">= 7.0.0 <10.0.0 || >=10.1.0" prettier: ">=3.0.0" peerDependenciesMeta: "@types/eslint": optional: true eslint-config-prettier: optional: true - checksum: 10c0/4bc8bbaf5bb556c9c501dcdff369137763c49ccaf544f9fa91400360ed5e3a3f1234ab59690e06beca5b1b7e6f6356978cdd3b02af6aba3edea2ffe69ca6e8b2 + checksum: 10c0/50718d16266dfbe6909697f9d7c9188d2664f5be50fa1de4decc0c8236565570823fdf5973f89cd51254af5551b6160650e092716002a62aaa0f0b2c18e8fc3e languageName: node linkType: hard -"eslint-plugin-yml@npm:^1.16.0": - version: 1.16.0 - resolution: "eslint-plugin-yml@npm:1.16.0" +"eslint-plugin-yml@npm:^1.18.0": + version: 1.18.0 + resolution: "eslint-plugin-yml@npm:1.18.0" dependencies: debug: "npm:^4.3.2" + escape-string-regexp: "npm:4.0.0" eslint-compat-utils: "npm:^0.6.0" - lodash: "npm:^4.17.21" natural-compare: "npm:^1.4.0" yaml-eslint-parser: "npm:^1.2.1" peerDependencies: eslint: ">=6.0.0" - checksum: 10c0/35052c2f77fb1d143141329444ca975dbc3190393595051ce4890b7f990aaf79286b52ff18c8ffb66e9739ad779fb23efe0eb9011e761d2b26a3244e20e5a925 + checksum: 10c0/ff6619bb488c98f3b6639c58f135f375bba6a4e4763cfeded461c6bbe654164678055981d1a27949568efc5ca9f3904e3abdda593b837cabb96f58948cc2d6be languageName: node linkType: hard @@ -4749,7 +4635,7 @@ __metadata: languageName: node linkType: hard -"eslint-visitor-keys@npm:^3.0.0, eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": +"eslint-visitor-keys@npm:^3.0.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": version: 3.4.3 resolution: "eslint-visitor-keys@npm:3.4.3" checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 @@ -4826,11 +4712,11 @@ __metadata: linkType: hard "esquery@npm:^1.4.2": - version: 1.5.0 - resolution: "esquery@npm:1.5.0" + version: 1.6.0 + resolution: "esquery@npm:1.6.0" dependencies: estraverse: "npm:^5.1.0" - checksum: 10c0/a084bd049d954cc88ac69df30534043fb2aee5555b56246493f42f27d1e168f00d9e5d4192e46f10290d312dc30dc7d58994d61a609c579c1219d636996f9213 + checksum: 10c0/cb9065ec605f9da7a76ca6dadb0619dfb611e37a81e318732977d90fab50a256b95fee2d925fba7c2f3f0523aa16f91587246693bc09bc34d5a59575fe6e93d2 languageName: node linkType: hard @@ -4872,9 +4758,9 @@ __metadata: linkType: hard "exponential-backoff@npm:^3.1.1": - version: 3.1.1 - resolution: "exponential-backoff@npm:3.1.1" - checksum: 10c0/160456d2d647e6019640bd07111634d8c353038d9fa40176afb7cd49b0548bdae83b56d05e907c2cce2300b81cae35d800ef92fefb9d0208e190fa3b7d6bb579 + version: 3.1.2 + resolution: "exponential-backoff@npm:3.1.2" + checksum: 10c0/d9d3e1eafa21b78464297df91f1776f7fbaa3d5e3f7f0995648ca5b89c069d17055033817348d9f4a43d1c20b0eab84f75af6991751e839df53e4dfd6f22e844 languageName: node linkType: hard @@ -4892,23 +4778,23 @@ __metadata: languageName: node linkType: hard -"fast-equals@npm:^5.0.1": - version: 5.0.1 - resolution: "fast-equals@npm:5.0.1" - checksum: 10c0/d7077b8b681036c2840ed9860a3048e44fc268fad2b525b8f25b43458be0c8ad976152eb4b475de9617170423c5b802121ebb61ed6641c3ac035fadaf805c8c0 +"fast-equals@npm:^5.2.2": + version: 5.2.2 + resolution: "fast-equals@npm:5.2.2" + checksum: 10c0/2bfeac6317a8959a00e2134749323557e5df6dea3af24e4457297733eace8ce4313fcbca2cf4532f3a6792607461e80442cd8d3af148d5c2e4e98ad996d6e5b5 languageName: node linkType: hard -"fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.2": - version: 3.3.2 - resolution: "fast-glob@npm:3.3.2" +"fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.3": + version: 3.3.3 + resolution: "fast-glob@npm:3.3.3" dependencies: "@nodelib/fs.stat": "npm:^2.0.2" "@nodelib/fs.walk": "npm:^1.2.3" glob-parent: "npm:^5.1.2" merge2: "npm:^1.3.0" - micromatch: "npm:^4.0.4" - checksum: 10c0/42baad7b9cd40b63e42039132bde27ca2cb3a4950d0a0f9abe4639ea1aa9d3e3b40f98b1fe31cbc0cc17b664c9ea7447d911a152fa34ec5b72977b125a6fc845 + micromatch: "npm:^4.0.8" + checksum: 10c0/f6aaa141d0d3384cf73cbcdfc52f475ed293f6d5b65bfc5def368b09163a9f7e5ec2b3014d80f733c405f58e470ee0cc451c2937685045cddcdeaa24199c43fe languageName: node linkType: hard @@ -4941,23 +4827,32 @@ __metadata: linkType: hard "fastq@npm:^1.6.0": - version: 1.15.0 - resolution: "fastq@npm:1.15.0" + version: 1.19.1 + resolution: "fastq@npm:1.19.1" dependencies: reusify: "npm:^1.0.4" - checksum: 10c0/5ce4f83afa5f88c9379e67906b4d31bc7694a30826d6cc8d0f0473c966929017fda65c2174b0ec89f064ede6ace6c67f8a4fe04cef42119b6a55b0d465554c24 + checksum: 10c0/ebc6e50ac7048daaeb8e64522a1ea7a26e92b3cee5cd1c7f2316cdca81ba543aa40a136b53891446ea5c3a67ec215fbaca87ad405f102dd97012f62916905630 languageName: node linkType: hard -"fdir@npm:^6.4.2": - version: 6.4.2 - resolution: "fdir@npm:6.4.2" +"fdir@npm:^6.4.4": + version: 6.4.4 + resolution: "fdir@npm:6.4.4" peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: picomatch: optional: true - checksum: 10c0/34829886f34a3ca4170eca7c7180ec4de51a3abb4d380344063c0ae2e289b11d2ba8b724afee974598c83027fea363ff598caf2b51bc4e6b1e0d8b80cc530573 + checksum: 10c0/6ccc33be16945ee7bc841e1b4178c0b4cf18d3804894cb482aa514651c962a162f96da7ffc6ebfaf0df311689fb70091b04dd6caffe28d56b9ebdc0e7ccadfdd + languageName: node + linkType: hard + +"file-entry-cache@npm:^10.0.8": + version: 10.1.0 + resolution: "file-entry-cache@npm:10.1.0" + dependencies: + flat-cache: "npm:^6.1.9" + checksum: 10c0/9464848577f68809237ffdf11c09a285d930ed4cda8cf392ee44ac8fa70658e41bbe60d08d883285d6af798a26f008dd8dfa94a31d42ecf1ba5a7bcd6dd8b07d languageName: node linkType: hard @@ -4997,13 +4892,6 @@ __metadata: languageName: node linkType: hard -"find-up-simple@npm:^1.0.0": - version: 1.0.0 - resolution: "find-up-simple@npm:1.0.0" - checksum: 10c0/de1ad5e55c8c162f5600fe3297bb55a3da5cd9cb8c6755e463ec1d52c4c15a84e312a68397fb5962d13263b3dbd4ea294668c465ccacc41291d7cc97588769f9 - languageName: node - linkType: hard - "find-up@npm:5.0.0, find-up@npm:^5.0.0": version: 5.0.0 resolution: "find-up@npm:5.0.0" @@ -5045,6 +4933,17 @@ __metadata: languageName: node linkType: hard +"flat-cache@npm:^6.1.9": + version: 6.1.9 + resolution: "flat-cache@npm:6.1.9" + dependencies: + cacheable: "npm:^1.9.0" + flatted: "npm:^3.3.3" + hookified: "npm:^1.8.2" + checksum: 10c0/ca9241fab68154e9a4efe8875beff43cb7b2de65628d15dcf8488dc69bca3f8e98085a707c3395d03b1022f586364b0f37aa5dd5cc085a8cf7481516757ac864 + languageName: node + linkType: hard + "flat@npm:^5.0.2": version: 5.0.2 resolution: "flat@npm:5.0.2" @@ -5054,47 +4953,41 @@ __metadata: languageName: node linkType: hard -"flatted@npm:^3.2.9": - version: 3.2.9 - resolution: "flatted@npm:3.2.9" - checksum: 10c0/5c91c5a0a21bbc0b07b272231e5b4efe6b822bcb4ad317caf6bb06984be4042a9e9045026307da0fdb4583f1f545e317a67ef1231a59e71f7fced3cc429cfc53 +"flatted@npm:^3.2.9, flatted@npm:^3.3.1, flatted@npm:^3.3.3": + version: 3.3.3 + resolution: "flatted@npm:3.3.3" + checksum: 10c0/e957a1c6b0254aa15b8cce8533e24165abd98fadc98575db082b786b5da1b7d72062b81bfdcd1da2f4d46b6ed93bec2434e62333e9b4261d79ef2e75a10dd538 languageName: node linkType: hard -"flatted@npm:^3.3.1": - version: 3.3.1 - resolution: "flatted@npm:3.3.1" - checksum: 10c0/324166b125ee07d4ca9bcf3a5f98d915d5db4f39d711fba640a3178b959919aae1f7cfd8aabcfef5826ed8aa8a2aa14cc85b2d7d18ff638ddf4ae3df39573eaf - languageName: node - linkType: hard - -"for-each@npm:^0.3.3": - version: 0.3.3 - resolution: "for-each@npm:0.3.3" +"for-each@npm:^0.3.3, for-each@npm:^0.3.5": + version: 0.3.5 + resolution: "for-each@npm:0.3.5" dependencies: - is-callable: "npm:^1.1.3" - checksum: 10c0/22330d8a2db728dbf003ec9182c2d421fbcd2969b02b4f97ec288721cda63eb28f2c08585ddccd0f77cb2930af8d958005c9e72f47141dc51816127a118f39aa + is-callable: "npm:^1.2.7" + checksum: 10c0/0e0b50f6a843a282637d43674d1fb278dda1dd85f4f99b640024cfb10b85058aac0cc781bf689d5fe50b4b7f638e91e548560723a4e76e04fe96ae35ef039cee languageName: node linkType: hard "foreground-child@npm:^3.1.0": - version: 3.1.1 - resolution: "foreground-child@npm:3.1.1" + version: 3.3.1 + resolution: "foreground-child@npm:3.3.1" dependencies: - cross-spawn: "npm:^7.0.0" + cross-spawn: "npm:^7.0.6" signal-exit: "npm:^4.0.1" - checksum: 10c0/9700a0285628abaeb37007c9a4d92bd49f67210f09067638774338e146c8e9c825c5c877f072b2f75f41dc6a2d0be8664f79ffc03f6576649f54a84fb9b47de0 + checksum: 10c0/8986e4af2430896e65bc2788d6679067294d6aee9545daefc84923a0a4b399ad9c7a3ea7bd8c0b2b80fdf4a92de4c69df3f628233ff3224260e9c1541a9e9ed3 languageName: node linkType: hard "form-data@npm:^4.0.0": - version: 4.0.0 - resolution: "form-data@npm:4.0.0" + version: 4.0.2 + resolution: "form-data@npm:4.0.2" dependencies: asynckit: "npm:^0.4.0" combined-stream: "npm:^1.0.8" + es-set-tostringtag: "npm:^2.1.0" mime-types: "npm:^2.1.12" - checksum: 10c0/cb6f3ac49180be03ff07ba3ff125f9eba2ff0b277fb33c7fc47569fc5e616882c5b1c69b9904c4c4187e97dd0419dd03b134174756f296dec62041e6527e2c6e + checksum: 10c0/e534b0cf025c831a0929bf4b9bbe1a9a6b03e273a8161f9947286b9b13bf8fb279c6944aae0070c4c311100c6d6dbb815cd955dc217728caf73fad8dc5b8ee9c languageName: node linkType: hard @@ -5112,15 +5005,6 @@ __metadata: languageName: node linkType: hard -"fs-minipass@npm:^2.0.0": - version: 2.1.0 - resolution: "fs-minipass@npm:2.1.0" - dependencies: - minipass: "npm:^3.0.0" - checksum: 10c0/703d16522b8282d7299337539c3ed6edddd1afe82435e4f5b76e34a79cd74e488a8a0e26a636afc2440e1a23b03878e2122e3a2cfe375a5cf63c37d92b86a004 - languageName: node - linkType: hard - "fs-minipass@npm:^3.0.0": version: 3.0.3 resolution: "fs-minipass@npm:3.0.3" @@ -5163,15 +5047,17 @@ __metadata: languageName: node linkType: hard -"function.prototype.name@npm:^1.1.6": - version: 1.1.6 - resolution: "function.prototype.name@npm:1.1.6" +"function.prototype.name@npm:^1.1.6, function.prototype.name@npm:^1.1.8": + version: 1.1.8 + resolution: "function.prototype.name@npm:1.1.8" dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + define-properties: "npm:^1.2.1" functions-have-names: "npm:^1.2.3" - checksum: 10c0/9eae11294905b62cb16874adb4fc687927cda3162285e0ad9612e6a1d04934005d46907362ea9cdb7428edce05a2f2c3dabc3b2d21e9fd343e9bb278230ad94b + hasown: "npm:^2.0.2" + is-callable: "npm:^1.2.7" + checksum: 10c0/e920a2ab52663005f3cbe7ee3373e3c71c1fb5558b0b0548648cdf3e51961085032458e26c71ff1a8c8c20e7ee7caeb03d43a5d1fa8610c459333323a2e71253 languageName: node linkType: hard @@ -5203,72 +5089,42 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.2": - version: 1.2.2 - resolution: "get-intrinsic@npm:1.2.2" - dependencies: - function-bind: "npm:^1.1.2" - has-proto: "npm:^1.0.1" - has-symbols: "npm:^1.0.3" - hasown: "npm:^2.0.0" - checksum: 10c0/4e7fb8adc6172bae7c4fe579569b4d5238b3667c07931cd46b4eee74bbe6ff6b91329bec311a638d8e60f5b51f44fe5445693c6be89ae88d4b5c49f7ff12db0b - languageName: node - linkType: hard - -"get-intrinsic@npm:^1.2.3": - version: 1.2.5 - resolution: "get-intrinsic@npm:1.2.5" +"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.2, get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.2.7, get-intrinsic@npm:^1.3.0": + version: 1.3.0 + resolution: "get-intrinsic@npm:1.3.0" dependencies: - call-bind-apply-helpers: "npm:^1.0.0" - dunder-proto: "npm:^1.0.0" + call-bind-apply-helpers: "npm:^1.0.2" es-define-property: "npm:^1.0.1" es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.1.1" function-bind: "npm:^1.1.2" + get-proto: "npm:^1.0.1" gopd: "npm:^1.2.0" has-symbols: "npm:^1.1.0" hasown: "npm:^2.0.2" - checksum: 10c0/dcaace9fd4b4dd127b6668f580393e1a704bad308b7b88d694145e2599ee6c51b70cbfd49c6c96a5ffdb14a70824a0b3bd9b78bad84953932e5f0c5da4e508fd - languageName: node - linkType: hard - -"get-intrinsic@npm:^1.2.4": - version: 1.2.4 - resolution: "get-intrinsic@npm:1.2.4" - dependencies: - es-errors: "npm:^1.3.0" - function-bind: "npm:^1.1.2" - has-proto: "npm:^1.0.1" - has-symbols: "npm:^1.0.3" - hasown: "npm:^2.0.0" - checksum: 10c0/0a9b82c16696ed6da5e39b1267104475c47e3a9bdbe8b509dfe1710946e38a87be70d759f4bb3cda042d76a41ef47fe769660f3b7c0d1f68750299344ffb15b7 - languageName: node - linkType: hard - -"get-stdin@npm:^9.0.0": - version: 9.0.0 - resolution: "get-stdin@npm:9.0.0" - checksum: 10c0/7ef2edc0c81a0644ca9f051aad8a96ae9373d901485abafaabe59fd347a1c378689d8a3d8825fb3067415d1d09dfcaa43cb9b9516ecac6b74b3138b65a8ccc6b + math-intrinsics: "npm:^1.1.0" + checksum: 10c0/52c81808af9a8130f581e6a6a83e1ba4a9f703359e7a438d1369a5267a25412322f03dcbd7c549edaef0b6214a0630a28511d7df0130c93cfd380f4fa0b5b66a languageName: node linkType: hard -"get-symbol-description@npm:^1.0.0": - version: 1.0.0 - resolution: "get-symbol-description@npm:1.0.0" +"get-proto@npm:^1.0.0, get-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "get-proto@npm:1.0.1" dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.1.1" - checksum: 10c0/23bc3b44c221cdf7669a88230c62f4b9e30393b61eb21ba4400cb3e346801bd8f95fe4330ee78dbae37aecd874646d53e3e76a17a654d0c84c77f6690526d6bb + dunder-proto: "npm:^1.0.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/9224acb44603c5526955e83510b9da41baf6ae73f7398875fba50edc5e944223a89c4a72b070fcd78beb5f7bdda58ecb6294adc28f7acfc0da05f76a2399643c languageName: node linkType: hard -"get-symbol-description@npm:^1.0.2": - version: 1.0.2 - resolution: "get-symbol-description@npm:1.0.2" +"get-symbol-description@npm:^1.1.0": + version: 1.1.0 + resolution: "get-symbol-description@npm:1.1.0" dependencies: - call-bind: "npm:^1.0.5" + call-bound: "npm:^1.0.3" es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.4" - checksum: 10c0/867be6d63f5e0eb026cb3b0ef695ec9ecf9310febb041072d2e142f260bd91ced9eeb426b3af98791d1064e324e653424afa6fd1af17dee373bea48ae03162bc + get-intrinsic: "npm:^1.2.6" + checksum: 10c0/d6a7d6afca375779a4b307738c9e80dbf7afc0bdbe5948768d54ab9653c865523d8920e670991a925936eb524b7cb6a6361d199a760b21d0ca7620194455aa4b languageName: node linkType: hard @@ -5297,9 +5153,9 @@ __metadata: languageName: node linkType: hard -"glob@npm:11.0.2": - version: 11.0.2 - resolution: "glob@npm:11.0.2" +"glob@npm:11.0.0": + version: 11.0.0 + resolution: "glob@npm:11.0.0" dependencies: foreground-child: "npm:^3.1.0" jackspeak: "npm:^4.0.1" @@ -5309,7 +5165,7 @@ __metadata: path-scurry: "npm:^2.0.0" bin: glob: dist/esm/bin.mjs - checksum: 10c0/49f91c64ca882d5e3a72397bd45a146ca91fd3ca53dafb5254daf6c0e83fc510d39ea66f136f9ac7ca075cdd11fbe9aaa235b28f743bd477622e472f4fdc0240 + checksum: 10c0/419866015d8795258a8ac51de5b9d1a99c72634fc3ead93338e4da388e89773ab21681e494eac0fbc4250b003451ca3110bb4f1c9393d15d14466270094fdb4e languageName: node linkType: hard @@ -5340,18 +5196,19 @@ __metadata: languageName: node linkType: hard -"glob@npm:^10.2.2, glob@npm:^10.3.10": - version: 10.3.10 - resolution: "glob@npm:10.3.10" +"glob@npm:^10.2.2": + version: 10.4.5 + resolution: "glob@npm:10.4.5" dependencies: foreground-child: "npm:^3.1.0" - jackspeak: "npm:^2.3.5" - minimatch: "npm:^9.0.1" - minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" - path-scurry: "npm:^1.10.1" + jackspeak: "npm:^3.1.2" + minimatch: "npm:^9.0.4" + minipass: "npm:^7.1.2" + package-json-from-dist: "npm:^1.0.0" + path-scurry: "npm:^1.11.1" bin: glob: dist/esm/bin.mjs - checksum: 10c0/13d8a1feb7eac7945f8c8480e11cd4a44b24d26503d99a8d8ac8d5aefbf3e9802a2b6087318a829fad04cb4e829f25c5f4f1110c68966c498720dd261c7e344d + checksum: 10c0/19a9759ea77b8e3ca0a43c2f07ecddc2ad46216b786bb8f993c445aee80d345925a21e5280c7b7c6c59e860a0154b84e4b2b60321fea92cd3c56b4a7489f160e languageName: node linkType: hard @@ -5393,15 +5250,6 @@ __metadata: languageName: node linkType: hard -"globalthis@npm:^1.0.3": - version: 1.0.3 - resolution: "globalthis@npm:1.0.3" - dependencies: - define-properties: "npm:^1.1.3" - checksum: 10c0/0db6e9af102a5254630351557ac15e6909bc7459d3e3f6b001e59fe784c96d31108818f032d9095739355a88467459e6488ff16584ee6250cd8c27dec05af4b0 - languageName: node - linkType: hard - "globalthis@npm:^1.0.4": version: 1.0.4 resolution: "globalthis@npm:1.0.4" @@ -5433,16 +5281,7 @@ __metadata: languageName: node linkType: hard -"gopd@npm:^1.0.1": - version: 1.0.1 - resolution: "gopd@npm:1.0.1" - dependencies: - get-intrinsic: "npm:^1.1.3" - checksum: 10c0/505c05487f7944c552cee72087bf1567debb470d4355b1335f2c262d218ebbff805cd3715448fe29b4b380bae6912561d0467233e4165830efd28da241418c63 - languageName: node - linkType: hard - -"gopd@npm:^1.2.0": +"gopd@npm:^1.0.1, gopd@npm:^1.2.0": version: 1.2.0 resolution: "gopd@npm:1.2.0" checksum: 10c0/50fff1e04ba2b7737c097358534eacadad1e68d24cccee3272e04e007bed008e68d2614f3987788428fd192a5ae3889d08fb2331417e4fc4a9ab366b2043cead @@ -5463,17 +5302,10 @@ __metadata: languageName: node linkType: hard -"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": - version: 1.0.2 - resolution: "has-bigints@npm:1.0.2" - checksum: 10c0/724eb1485bfa3cdff6f18d95130aa190561f00b3fcf9f19dc640baf8176b5917c143b81ec2123f8cddb6c05164a198c94b13e1377c497705ccc8e1a80306e83b - languageName: node - linkType: hard - -"has-flag@npm:^3.0.0": - version: 3.0.0 - resolution: "has-flag@npm:3.0.0" - checksum: 10c0/1c6c83b14b8b1b3c25b0727b8ba3e3b647f99e9e6e13eb7322107261de07a4c1be56fc0d45678fc376e09772a3a1642ccdaf8fc69bdf123b6c086598397ce473 +"has-bigints@npm:^1.0.2": + version: 1.1.0 + resolution: "has-bigints@npm:1.1.0" + checksum: 10c0/2de0cdc4a1ccf7a1e75ffede1876994525ac03cc6f5ae7392d3415dd475cd9eee5bceec63669ab61aa997ff6cceebb50ef75561c7002bed8988de2b9d1b40788 languageName: node linkType: hard @@ -5491,16 +5323,7 @@ __metadata: languageName: node linkType: hard -"has-property-descriptors@npm:^1.0.0": - version: 1.0.1 - resolution: "has-property-descriptors@npm:1.0.1" - dependencies: - get-intrinsic: "npm:^1.2.2" - checksum: 10c0/d62ba94b40150b00d621bc64a6aedb5bf0ee495308b4b7ed6bac856043db3cdfb1db553ae81cec91c9d2bd82057ff0e94145e7fa25d5aa5985ed32e0921927f6 - languageName: node - linkType: hard - -"has-property-descriptors@npm:^1.0.2": +"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2": version: 1.0.2 resolution: "has-property-descriptors@npm:1.0.2" dependencies: @@ -5509,14 +5332,7 @@ __metadata: languageName: node linkType: hard -"has-proto@npm:^1.0.1": - version: 1.0.1 - resolution: "has-proto@npm:1.0.1" - checksum: 10c0/c8a8fe411f810b23a564bd5546a8f3f0fff6f1b692740eb7a2fdc9df716ef870040806891e2f23ff4653f1083e3895bf12088703dd1a0eac3d9202d3a4768cd0 - languageName: node - linkType: hard - -"has-proto@npm:^1.0.3": +"has-proto@npm:^1.2.0": version: 1.2.0 resolution: "has-proto@npm:1.2.0" dependencies: @@ -5525,29 +5341,13 @@ __metadata: languageName: node linkType: hard -"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": - version: 1.0.3 - resolution: "has-symbols@npm:1.0.3" - checksum: 10c0/e6922b4345a3f37069cdfe8600febbca791c94988c01af3394d86ca3360b4b93928bbf395859158f88099cb10b19d98e3bbab7c9ff2c1bd09cf665ee90afa2c3 - languageName: node - linkType: hard - -"has-symbols@npm:^1.1.0": +"has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0": version: 1.1.0 resolution: "has-symbols@npm:1.1.0" checksum: 10c0/dde0a734b17ae51e84b10986e651c664379018d10b91b6b0e9b293eddb32f0f069688c841fb40f19e9611546130153e0a2a48fd7f512891fb000ddfa36f5a20e languageName: node linkType: hard -"has-tostringtag@npm:^1.0.0": - version: 1.0.0 - resolution: "has-tostringtag@npm:1.0.0" - dependencies: - has-symbols: "npm:^1.0.2" - checksum: 10c0/1cdba76b7d13f65198a92b8ca1560ba40edfa09e85d182bf436d928f3588a9ebd260451d569f0ed1b849c4bf54f49c862aa0d0a77f9552b1855bb6deb526c011 - languageName: node - linkType: hard - "has-tostringtag@npm:^1.0.2": version: 1.0.2 resolution: "has-tostringtag@npm:1.0.2" @@ -5557,16 +5357,7 @@ __metadata: languageName: node linkType: hard -"hasown@npm:^2.0.0": - version: 2.0.0 - resolution: "hasown@npm:2.0.0" - dependencies: - function-bind: "npm:^1.1.2" - checksum: 10c0/5d415b114f410661208c95e7ab4879f1cc2765b8daceff4dc8718317d1cb7b9ffa7c5d1eafd9a4389c9aab7445d6ea88e05f3096cb1e529618b55304956b87fc - languageName: node - linkType: hard - -"hasown@npm:^2.0.1, hasown@npm:^2.0.2": +"hasown@npm:^2.0.2": version: 2.0.2 resolution: "hasown@npm:2.0.2" dependencies: @@ -5584,6 +5375,13 @@ __metadata: languageName: node linkType: hard +"hookified@npm:^1.8.2": + version: 1.9.0 + resolution: "hookified@npm:1.9.0" + checksum: 10c0/28145882504e40ef58f328554966520c56dc2aaca92457996a5cd68fda6f92e38d3ca283e7ebbf3d71f36cda887234ce580abfa6532ade906be7810a812f15fa + languageName: node + linkType: hard + "html-encoding-sniffer@npm:^4.0.0": version: 4.0.0 resolution: "html-encoding-sniffer@npm:4.0.0" @@ -5608,23 +5406,13 @@ __metadata: linkType: hard "http-cache-semantics@npm:^4.1.1": - version: 4.1.1 - resolution: "http-cache-semantics@npm:4.1.1" - checksum: 10c0/ce1319b8a382eb3cbb4a37c19f6bfe14e5bb5be3d09079e885e8c513ab2d3cd9214902f8a31c9dc4e37022633ceabfc2d697405deeaf1b8f3552bb4ed996fdfc - languageName: node - linkType: hard - -"http-proxy-agent@npm:^7.0.0": - version: 7.0.0 - resolution: "http-proxy-agent@npm:7.0.0" - dependencies: - agent-base: "npm:^7.1.0" - debug: "npm:^4.3.4" - checksum: 10c0/a11574ff39436cee3c7bc67f259444097b09474605846ddd8edf0bf4ad8644be8533db1aa463426e376865047d05dc22755e638632819317c0c2f1b2196657c8 + version: 4.2.0 + resolution: "http-cache-semantics@npm:4.2.0" + checksum: 10c0/45b66a945cf13ec2d1f29432277201313babf4a01d9e52f44b31ca923434083afeca03f18417f599c9ab3d0e7b618ceb21257542338b57c54b710463b4a53e37 languageName: node linkType: hard -"http-proxy-agent@npm:^7.0.2": +"http-proxy-agent@npm:^7.0.0, http-proxy-agent@npm:^7.0.2": version: 7.0.2 resolution: "http-proxy-agent@npm:7.0.2" dependencies: @@ -5634,27 +5422,7 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:^7.0.1": - version: 7.0.4 - resolution: "https-proxy-agent@npm:7.0.4" - dependencies: - agent-base: "npm:^7.0.2" - debug: "npm:4" - checksum: 10c0/bc4f7c38da32a5fc622450b6cb49a24ff596f9bd48dcedb52d2da3fa1c1a80e100fb506bd59b326c012f21c863c69b275c23de1a01d0b84db396822fdf25e52b - languageName: node - linkType: hard - -"https-proxy-agent@npm:^7.0.5": - version: 7.0.5 - resolution: "https-proxy-agent@npm:7.0.5" - dependencies: - agent-base: "npm:^7.0.2" - debug: "npm:4" - checksum: 10c0/2490e3acec397abeb88807db52cac59102d5ed758feee6df6112ab3ccd8325e8a1ce8bce6f4b66e5470eca102d31e425ace904242e4fa28dbe0c59c4bafa7b2c - languageName: node - linkType: hard - -"https-proxy-agent@npm:^7.0.6": +"https-proxy-agent@npm:^7.0.1, https-proxy-agent@npm:^7.0.5, https-proxy-agent@npm:^7.0.6": version: 7.0.6 resolution: "https-proxy-agent@npm:7.0.6" dependencies: @@ -5673,7 +5441,7 @@ __metadata: languageName: node linkType: hard -"ieee754@npm:^1.1.13": +"ieee754@npm:^1.1.13, ieee754@npm:^1.2.1": version: 1.2.1 resolution: "ieee754@npm:1.2.1" checksum: 10c0/b0782ef5e0935b9f12883a2e2aa37baa75da6e66ce6515c168697b42160807d9330de9a32ec1ed73149aea02e0d822e572bca6f1e22bdcbd2149e13b050b17bb @@ -5681,16 +5449,16 @@ __metadata: linkType: hard "ignore@npm:^5.2.0": - version: 5.3.0 - resolution: "ignore@npm:5.3.0" - checksum: 10c0/dc06bea5c23aae65d0725a957a0638b57e235ae4568dda51ca142053ed2c352de7e3bc93a69b2b32ac31966a1952e9a93c5ef2e2ab7c6b06aef9808f6b55b571 + version: 5.3.2 + resolution: "ignore@npm:5.3.2" + checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337 languageName: node linkType: hard -"ignore@npm:^6.0.2": - version: 6.0.2 - resolution: "ignore@npm:6.0.2" - checksum: 10c0/9a38feac1861906a78ba0f03e8ef3cd6b0526dce2a1a84e1009324b557763afeb9c3ebcc04666b21f7bbf71adda45e76781bb9e2eaa0903d45dcaded634454f5 +"ignore@npm:^7.0.3": + version: 7.0.4 + resolution: "ignore@npm:7.0.4" + checksum: 10c0/90e1f69ce352b9555caecd9cbfd07abe7626d312a6f90efbbb52c7edca6ea8df065d66303863b30154ab1502afb2da8bc59d5b04e1719a52ef75bbf675c488eb languageName: node linkType: hard @@ -5701,25 +5469,25 @@ __metadata: languageName: node linkType: hard -"import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0": - version: 3.3.0 - resolution: "import-fresh@npm:3.3.0" +"import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0, import-fresh@npm:^3.3.1": + version: 3.3.1 + resolution: "import-fresh@npm:3.3.1" dependencies: parent-module: "npm:^1.0.0" resolve-from: "npm:^4.0.0" - checksum: 10c0/7f882953aa6b740d1f0e384d0547158bc86efbf2eea0f1483b8900a6f65c5a5123c2cf09b0d542cc419d0b98a759ecaeb394237e97ea427f2da221dc3cd80cc3 + checksum: 10c0/bf8cc494872fef783249709385ae883b447e3eb09db0ebd15dcead7d9afe7224dad7bd7591c6b73b0b19b3c0f9640eb8ee884f01cfaf2887ab995b0b36a0cbec languageName: node linkType: hard "import-local@npm:^3.0.2": - version: 3.1.0 - resolution: "import-local@npm:3.1.0" + version: 3.2.0 + resolution: "import-local@npm:3.2.0" dependencies: pkg-dir: "npm:^4.2.0" resolve-cwd: "npm:^3.0.0" bin: import-local-fixture: fixtures/cli.js - checksum: 10c0/c67ecea72f775fe8684ca3d057e54bdb2ae28c14bf261d2607c269c18ea0da7b730924c06262eca9aed4b8ab31e31d65bc60b50e7296c85908a56e2f7d41ecd2 + checksum: 10c0/94cd6367a672b7e0cb026970c85b76902d2710a64896fa6de93bd5c571dd03b228c5759308959de205083e3b1c61e799f019c9e36ee8e9c523b993e1057f0433 languageName: node linkType: hard @@ -5737,13 +5505,6 @@ __metadata: languageName: node linkType: hard -"indent-string@npm:^4.0.0": - version: 4.0.0 - resolution: "indent-string@npm:4.0.0" - checksum: 10c0/1e1904ddb0cb3d6cce7cd09e27a90184908b7a5d5c21b92e232c93579d314f0b83c246ffb035493d0504b1e9147ba2c9b21df0030f48673fba0496ecd698161f - languageName: node - linkType: hard - "inflight@npm:^1.0.4": version: 1.0.6 resolution: "inflight@npm:1.0.6" @@ -5775,25 +5536,14 @@ __metadata: languageName: node linkType: hard -"internal-slot@npm:^1.0.4, internal-slot@npm:^1.0.7": - version: 1.0.7 - resolution: "internal-slot@npm:1.0.7" +"internal-slot@npm:^1.1.0": + version: 1.1.0 + resolution: "internal-slot@npm:1.1.0" dependencies: es-errors: "npm:^1.3.0" - hasown: "npm:^2.0.0" - side-channel: "npm:^1.0.4" - checksum: 10c0/f8b294a4e6ea3855fc59551bbf35f2b832cf01fd5e6e2a97f5c201a071cc09b49048f856e484b67a6c721da5e55736c5b6ddafaf19e2dbeb4a3ff1821680de6c - languageName: node - linkType: hard - -"internal-slot@npm:^1.0.5": - version: 1.0.6 - resolution: "internal-slot@npm:1.0.6" - dependencies: - get-intrinsic: "npm:^1.2.2" - hasown: "npm:^2.0.0" - side-channel: "npm:^1.0.4" - checksum: 10c0/aa37cafc8ffbf513a340de58f40d5017b4949d99722d7e4f0e24b182455bdd258000d4bb1d7b4adcf9f8979b97049b99fe9defa9db8e18a78071d2637ac143fb + hasown: "npm:^2.0.2" + side-channel: "npm:^1.1.0" + checksum: 10c0/03966f5e259b009a9bf1a78d60da920df198af4318ec004f57b8aef1dd3fe377fbc8cce63a96e8c810010302654de89f9e19de1cd8ad0061d15be28a695465c7 languageName: node linkType: hard @@ -5815,33 +5565,23 @@ __metadata: linkType: hard "is-arguments@npm:^1.1.1": - version: 1.1.1 - resolution: "is-arguments@npm:1.1.1" - dependencies: - call-bind: "npm:^1.0.2" - has-tostringtag: "npm:^1.0.0" - checksum: 10c0/5ff1f341ee4475350adfc14b2328b38962564b7c2076be2f5bac7bd9b61779efba99b9f844a7b82ba7654adccf8e8eb19d1bb0cc6d1c1a085e498f6793d4328f - languageName: node - linkType: hard - -"is-array-buffer@npm:^3.0.1, is-array-buffer@npm:^3.0.2": - version: 3.0.2 - resolution: "is-array-buffer@npm:3.0.2" + version: 1.2.0 + resolution: "is-arguments@npm:1.2.0" dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.2.0" - is-typed-array: "npm:^1.1.10" - checksum: 10c0/40ed13a5f5746ac3ae2f2e463687d9b5a3f5fd0086f970fb4898f0253c2a5ec2e3caea2d664dd8f54761b1c1948609702416921a22faebe160c7640a9217c80e + call-bound: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/6377344b31e9fcb707c6751ee89b11f132f32338e6a782ec2eac9393b0cbd32235dad93052998cda778ee058754860738341d8114910d50ada5615912bb929fc languageName: node linkType: hard -"is-array-buffer@npm:^3.0.4": - version: 3.0.4 - resolution: "is-array-buffer@npm:3.0.4" +"is-array-buffer@npm:^3.0.2, is-array-buffer@npm:^3.0.4, is-array-buffer@npm:^3.0.5": + version: 3.0.5 + resolution: "is-array-buffer@npm:3.0.5" dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.2.1" - checksum: 10c0/42a49d006cc6130bc5424eae113e948c146f31f9d24460fc0958f855d9d810e6fd2e4519bf19aab75179af9c298ea6092459d8cafdec523cd19e529b26eab860 + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + get-intrinsic: "npm:^1.2.6" + checksum: 10c0/c5c9f25606e86dbb12e756694afbbff64bc8b348d1bc989324c037e1068695131930199d6ad381952715dad3a9569333817f0b1a72ce5af7f883ce802e49c83d languageName: node linkType: hard @@ -5853,20 +5593,24 @@ __metadata: linkType: hard "is-async-function@npm:^2.0.0": - version: 2.0.0 - resolution: "is-async-function@npm:2.0.0" + version: 2.1.1 + resolution: "is-async-function@npm:2.1.1" dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 10c0/787bc931576aad525d751fc5ce211960fe91e49ac84a5c22d6ae0bc9541945fbc3f686dc590c3175722ce4f6d7b798a93f6f8ff4847fdb2199aea6f4baf5d668 + async-function: "npm:^1.0.0" + call-bound: "npm:^1.0.3" + get-proto: "npm:^1.0.1" + has-tostringtag: "npm:^1.0.2" + safe-regex-test: "npm:^1.1.0" + checksum: 10c0/d70c236a5e82de6fc4d44368ffd0c2fee2b088b893511ce21e679da275a5ecc6015ff59a7d7e1bdd7ca39f71a8dbdd253cf8cce5c6b3c91cdd5b42b5ce677298 languageName: node linkType: hard -"is-bigint@npm:^1.0.1": - version: 1.0.4 - resolution: "is-bigint@npm:1.0.4" +"is-bigint@npm:^1.1.0": + version: 1.1.0 + resolution: "is-bigint@npm:1.1.0" dependencies: - has-bigints: "npm:^1.0.1" - checksum: 10c0/eb9c88e418a0d195ca545aff2b715c9903d9b0a5033bc5922fec600eb0c3d7b1ee7f882dbf2e0d5a6e694e42391be3683e4368737bd3c4a77f8ac293e7773696 + has-bigints: "npm:^1.0.2" + checksum: 10c0/f4f4b905ceb195be90a6ea7f34323bf1c18e3793f18922e3e9a73c684c29eeeeff5175605c3a3a74cc38185fe27758f07efba3dbae812e5c5afbc0d2316b40e4 languageName: node linkType: hard @@ -5879,56 +5623,50 @@ __metadata: languageName: node linkType: hard -"is-boolean-object@npm:^1.1.0": - version: 1.1.2 - resolution: "is-boolean-object@npm:1.1.2" +"is-boolean-object@npm:^1.2.1": + version: 1.2.2 + resolution: "is-boolean-object@npm:1.2.2" dependencies: - call-bind: "npm:^1.0.2" - has-tostringtag: "npm:^1.0.0" - checksum: 10c0/6090587f8a8a8534c0f816da868bc94f32810f08807aa72fa7e79f7e11c466d281486ffe7a788178809c2aa71fe3e700b167fe80dd96dad68026bfff8ebf39f7 + call-bound: "npm:^1.0.3" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/36ff6baf6bd18b3130186990026f5a95c709345c39cd368468e6c1b6ab52201e9fd26d8e1f4c066357b4938b0f0401e1a5000e08257787c1a02f3a719457001e languageName: node linkType: hard -"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": +"is-callable@npm:^1.2.7": version: 1.2.7 resolution: "is-callable@npm:1.2.7" checksum: 10c0/ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f languageName: node linkType: hard -"is-core-module@npm:^2.13.0": - version: 2.13.1 - resolution: "is-core-module@npm:2.13.1" - dependencies: - hasown: "npm:^2.0.0" - checksum: 10c0/2cba9903aaa52718f11c4896dabc189bab980870aae86a62dc0d5cedb546896770ee946fb14c84b7adf0735f5eaea4277243f1b95f5cefa90054f92fbcac2518 - languageName: node - linkType: hard - -"is-core-module@npm:^2.15.1": - version: 2.15.1 - resolution: "is-core-module@npm:2.15.1" +"is-core-module@npm:^2.13.0, is-core-module@npm:^2.15.1, is-core-module@npm:^2.16.0": + version: 2.16.1 + resolution: "is-core-module@npm:2.16.1" dependencies: hasown: "npm:^2.0.2" - checksum: 10c0/53432f10c69c40bfd2fa8914133a68709ff9498c86c3bf5fca3cdf3145a56fd2168cbf4a43b29843a6202a120a5f9c5ffba0a4322e1e3441739bc0b641682612 + checksum: 10c0/898443c14780a577e807618aaae2b6f745c8538eca5c7bc11388a3f2dc6de82b9902bcc7eb74f07be672b11bbe82dd6a6edded44a00cb3d8f933d0459905eedd languageName: node linkType: hard -"is-data-view@npm:^1.0.1": - version: 1.0.1 - resolution: "is-data-view@npm:1.0.1" +"is-data-view@npm:^1.0.1, is-data-view@npm:^1.0.2": + version: 1.0.2 + resolution: "is-data-view@npm:1.0.2" dependencies: + call-bound: "npm:^1.0.2" + get-intrinsic: "npm:^1.2.6" is-typed-array: "npm:^1.1.13" - checksum: 10c0/a3e6ec84efe303da859107aed9b970e018e2bee7ffcb48e2f8096921a493608134240e672a2072577e5f23a729846241d9634806e8a0e51d9129c56d5f65442d + checksum: 10c0/ef3548a99d7e7f1370ce21006baca6d40c73e9f15c941f89f0049c79714c873d03b02dae1c64b3f861f55163ecc16da06506c5b8a1d4f16650b3d9351c380153 languageName: node linkType: hard -"is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.5": - version: 1.0.5 - resolution: "is-date-object@npm:1.0.5" +"is-date-object@npm:^1.0.5, is-date-object@npm:^1.1.0": + version: 1.1.0 + resolution: "is-date-object@npm:1.1.0" dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 10c0/eed21e5dcc619c48ccef804dfc83a739dbb2abee6ca202838ee1bd5f760fe8d8a93444f0d49012ad19bb7c006186e2884a1b92f6e1c056da7fd23d0a9ad5992e + call-bound: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/1a4d199c8e9e9cac5128d32e6626fa7805175af9df015620ac0d5d45854ccf348ba494679d872d37301032e35a54fc7978fba1687e8721b2139aea7870cafa2f languageName: node linkType: hard @@ -5949,11 +5687,11 @@ __metadata: linkType: hard "is-finalizationregistry@npm:^1.1.0": - version: 1.1.0 - resolution: "is-finalizationregistry@npm:1.1.0" + version: 1.1.1 + resolution: "is-finalizationregistry@npm:1.1.1" dependencies: - call-bind: "npm:^1.0.7" - checksum: 10c0/1cd94236bfb6e060fe2b973c8726a2782727f7d495b3e8e1d51d3e619c5a3345413706f555956eb5b12af15eba0414118f64a1b19d793ec36b5e6767a13836ac + call-bound: "npm:^1.0.3" + checksum: 10c0/818dff679b64f19e228a8205a1e2d09989a98e98def3a817f889208cfcbf918d321b251aadf2c05918194803ebd2eb01b14fc9d0b2bea53d984f4137bfca5e97 languageName: node linkType: hard @@ -5965,11 +5703,14 @@ __metadata: linkType: hard "is-generator-function@npm:^1.0.10": - version: 1.0.10 - resolution: "is-generator-function@npm:1.0.10" + version: 1.1.0 + resolution: "is-generator-function@npm:1.1.0" dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 10c0/df03514df01a6098945b5a0cfa1abff715807c8e72f57c49a0686ad54b3b74d394e2d8714e6f709a71eb00c9630d48e73ca1796c1ccc84ac95092c1fecc0d98b + call-bound: "npm:^1.0.3" + get-proto: "npm:^1.0.0" + has-tostringtag: "npm:^1.0.2" + safe-regex-test: "npm:^1.1.0" + checksum: 10c0/fdfa96c8087bf36fc4cd514b474ba2ff404219a4dd4cfa6cf5426404a1eed259bdcdb98f082a71029a48d01f27733e3436ecc6690129a7ec09cb0434bee03a2a languageName: node linkType: hard @@ -5989,13 +5730,6 @@ __metadata: languageName: node linkType: hard -"is-lambda@npm:^1.0.1": - version: 1.0.1 - resolution: "is-lambda@npm:1.0.1" - checksum: 10c0/85fee098ae62ba6f1e24cf22678805473c7afd0fb3978a3aa260e354cb7bcb3a5806cf0a98403188465efedec41ab4348e8e4e79305d409601323855b3839d4d - languageName: node - linkType: hard - "is-map@npm:^2.0.2, is-map@npm:^2.0.3": version: 2.0.3 resolution: "is-map@npm:2.0.3" @@ -6003,26 +5737,13 @@ __metadata: languageName: node linkType: hard -"is-negative-zero@npm:^2.0.2": - version: 2.0.2 - resolution: "is-negative-zero@npm:2.0.2" - checksum: 10c0/eda024c158f70f2017f3415e471b818d314da5ef5be68f801b16314d4a4b6304a74cbed778acf9e2f955bb9c1c5f2935c1be0c7c99e1ad12286f45366217b6a3 - languageName: node - linkType: hard - -"is-negative-zero@npm:^2.0.3": - version: 2.0.3 - resolution: "is-negative-zero@npm:2.0.3" - checksum: 10c0/bcdcf6b8b9714063ffcfa9929c575ac69bfdabb8f4574ff557dfc086df2836cf07e3906f5bbc4f2a5c12f8f3ba56af640c843cdfc74da8caed86c7c7d66fd08e - languageName: node - linkType: hard - -"is-number-object@npm:^1.0.4": - version: 1.0.7 - resolution: "is-number-object@npm:1.0.7" +"is-number-object@npm:^1.1.1": + version: 1.1.1 + resolution: "is-number-object@npm:1.1.1" dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 10c0/aad266da1e530f1804a2b7bd2e874b4869f71c98590b3964f9d06cc9869b18f8d1f4778f838ecd2a11011bce20aeecb53cb269ba916209b79c24580416b74b1b + call-bound: "npm:^1.0.3" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/97b451b41f25135ff021d85c436ff0100d84a039bb87ffd799cbcdbea81ef30c464ced38258cdd34f080be08fc3b076ca1f472086286d2aa43521d6ec6a79f53 languageName: node linkType: hard @@ -6070,13 +5791,15 @@ __metadata: languageName: node linkType: hard -"is-regex@npm:^1.1.4": - version: 1.1.4 - resolution: "is-regex@npm:1.1.4" +"is-regex@npm:^1.1.4, is-regex@npm:^1.2.1": + version: 1.2.1 + resolution: "is-regex@npm:1.2.1" dependencies: - call-bind: "npm:^1.0.2" - has-tostringtag: "npm:^1.0.0" - checksum: 10c0/bb72aae604a69eafd4a82a93002058c416ace8cde95873589a97fc5dac96a6c6c78a9977d487b7b95426a8f5073969124dd228f043f9f604f041f32fcc465fc1 + call-bound: "npm:^1.0.2" + gopd: "npm:^1.2.0" + has-tostringtag: "npm:^1.0.2" + hasown: "npm:^2.0.2" + checksum: 10c0/1d3715d2b7889932349241680032e85d0b492cfcb045acb75ffc2c3085e8d561184f1f7e84b6f8321935b4aea39bc9c6ba74ed595b57ce4881a51dfdbc214e04 languageName: node linkType: hard @@ -6087,57 +5810,42 @@ __metadata: languageName: node linkType: hard -"is-shared-array-buffer@npm:^1.0.2": - version: 1.0.2 - resolution: "is-shared-array-buffer@npm:1.0.2" - dependencies: - call-bind: "npm:^1.0.2" - checksum: 10c0/cfeee6f171f1b13e6cbc6f3b6cc44e192b93df39f3fcb31aa66ffb1d2df3b91e05664311659f9701baba62f5e98c83b0673c628e7adc30f55071c4874fcdccec - languageName: node - linkType: hard - -"is-shared-array-buffer@npm:^1.0.3": - version: 1.0.3 - resolution: "is-shared-array-buffer@npm:1.0.3" - dependencies: - call-bind: "npm:^1.0.7" - checksum: 10c0/adc11ab0acbc934a7b9e5e9d6c588d4ec6682f6fea8cda5180721704fa32927582ede5b123349e32517fdadd07958973d24716c80e7ab198970c47acc09e59c7 - languageName: node - linkType: hard - -"is-string@npm:^1.0.5, is-string@npm:^1.0.7": - version: 1.0.7 - resolution: "is-string@npm:1.0.7" +"is-shared-array-buffer@npm:^1.0.2, is-shared-array-buffer@npm:^1.0.4": + version: 1.0.4 + resolution: "is-shared-array-buffer@npm:1.0.4" dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 10c0/905f805cbc6eedfa678aaa103ab7f626aac9ebbdc8737abb5243acaa61d9820f8edc5819106b8fcd1839e33db21de9f0116ae20de380c8382d16dc2a601921f6 + call-bound: "npm:^1.0.3" + checksum: 10c0/65158c2feb41ff1edd6bbd6fd8403a69861cf273ff36077982b5d4d68e1d59278c71691216a4a64632bd76d4792d4d1d2553901b6666d84ade13bba5ea7bc7db languageName: node linkType: hard -"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": - version: 1.0.4 - resolution: "is-symbol@npm:1.0.4" +"is-string@npm:^1.0.7, is-string@npm:^1.1.1": + version: 1.1.1 + resolution: "is-string@npm:1.1.1" dependencies: - has-symbols: "npm:^1.0.2" - checksum: 10c0/9381dd015f7c8906154dbcbf93fad769de16b4b961edc94f88d26eb8c555935caa23af88bda0c93a18e65560f6d7cca0fd5a3f8a8e1df6f1abbb9bead4502ef7 + call-bound: "npm:^1.0.3" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/2f518b4e47886bb81567faba6ffd0d8a8333cf84336e2e78bf160693972e32ad00fe84b0926491cc598dee576fdc55642c92e62d0cbe96bf36f643b6f956f94d languageName: node linkType: hard -"is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.12, is-typed-array@npm:^1.1.9": - version: 1.1.12 - resolution: "is-typed-array@npm:1.1.12" +"is-symbol@npm:^1.0.4, is-symbol@npm:^1.1.1": + version: 1.1.1 + resolution: "is-symbol@npm:1.1.1" dependencies: - which-typed-array: "npm:^1.1.11" - checksum: 10c0/9863e9cc7223c6fc1c462a2c3898a7beff6b41b1ee0fabb03b7d278ae7de670b5bcbc8627db56bb66ed60902fa37d53fe5cce0fd2f7d73ac64fe5da6f409b6ae + call-bound: "npm:^1.0.2" + has-symbols: "npm:^1.1.0" + safe-regex-test: "npm:^1.1.0" + checksum: 10c0/f08f3e255c12442e833f75a9e2b84b2d4882fdfd920513cf2a4a2324f0a5b076c8fd913778e3ea5d258d5183e9d92c0cd20e04b03ab3df05316b049b2670af1e languageName: node linkType: hard -"is-typed-array@npm:^1.1.13": - version: 1.1.13 - resolution: "is-typed-array@npm:1.1.13" +"is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.14, is-typed-array@npm:^1.1.15": + version: 1.1.15 + resolution: "is-typed-array@npm:1.1.15" dependencies: - which-typed-array: "npm:^1.1.14" - checksum: 10c0/fa5cb97d4a80e52c2cc8ed3778e39f175a1a2ae4ddf3adae3187d69586a1fd57cfa0b095db31f66aa90331e9e3da79184cea9c6abdcd1abc722dc3c3edd51cca + which-typed-array: "npm:^1.1.16" + checksum: 10c0/415511da3669e36e002820584e264997ffe277ff136643a3126cc949197e6ca3334d0f12d084e83b1994af2e9c8141275c741cf2b7da5a2ff62dd0cac26f76c4 languageName: node linkType: hard @@ -6155,22 +5863,22 @@ __metadata: languageName: node linkType: hard -"is-weakref@npm:^1.0.2": - version: 1.0.2 - resolution: "is-weakref@npm:1.0.2" +"is-weakref@npm:^1.0.2, is-weakref@npm:^1.1.0": + version: 1.1.1 + resolution: "is-weakref@npm:1.1.1" dependencies: - call-bind: "npm:^1.0.2" - checksum: 10c0/1545c5d172cb690c392f2136c23eec07d8d78a7f57d0e41f10078aa4f5daf5d7f57b6513a67514ab4f073275ad00c9822fc8935e00229d0a2089e1c02685d4b1 + call-bound: "npm:^1.0.3" + checksum: 10c0/8e0a9c07b0c780949a100e2cab2b5560a48ecd4c61726923c1a9b77b6ab0aa0046c9e7fb2206042296817045376dee2c8ab1dabe08c7c3dfbf195b01275a085b languageName: node linkType: hard "is-weakset@npm:^2.0.3": - version: 2.0.3 - resolution: "is-weakset@npm:2.0.3" + version: 2.0.4 + resolution: "is-weakset@npm:2.0.4" dependencies: - call-bind: "npm:^1.0.7" - get-intrinsic: "npm:^1.2.4" - checksum: 10c0/8ad6141b6a400e7ce7c7442a13928c676d07b1f315ab77d9912920bf5f4170622f43126f111615788f26c3b1871158a6797c862233124507db0bcc33a9537d1a + call-bound: "npm:^1.0.3" + get-intrinsic: "npm:^1.2.6" + checksum: 10c0/6491eba08acb8dc9532da23cb226b7d0192ede0b88f16199e592e4769db0a077119c1f5d2283d1e0d16d739115f70046e887e477eb0e66cd90e1bb29f28ba647 languageName: node linkType: hard @@ -6218,35 +5926,31 @@ __metadata: languageName: node linkType: hard -"jackspeak@npm:^2.3.5": - version: 2.3.6 - resolution: "jackspeak@npm:2.3.6" +"jackspeak@npm:^3.1.2": + version: 3.4.3 + resolution: "jackspeak@npm:3.4.3" dependencies: "@isaacs/cliui": "npm:^8.0.2" "@pkgjs/parseargs": "npm:^0.11.0" dependenciesMeta: "@pkgjs/parseargs": optional: true - checksum: 10c0/f01d8f972d894cd7638bc338e9ef5ddb86f7b208ce177a36d718eac96ec86638a6efa17d0221b10073e64b45edc2ce15340db9380b1f5d5c5d000cbc517dc111 + checksum: 10c0/6acc10d139eaefdbe04d2f679e6191b3abf073f111edf10b1de5302c97ec93fffeb2fdd8681ed17f16268aa9dd4f8c588ed9d1d3bffbbfa6e8bf897cbb3149b9 languageName: node linkType: hard "jackspeak@npm:^4.0.1": - version: 4.0.1 - resolution: "jackspeak@npm:4.0.1" + version: 4.1.0 + resolution: "jackspeak@npm:4.1.0" dependencies: "@isaacs/cliui": "npm:^8.0.2" - "@pkgjs/parseargs": "npm:^0.11.0" - dependenciesMeta: - "@pkgjs/parseargs": - optional: true - checksum: 10c0/c87997d9c9c5b7366259b1f2a444ef148692f8eedad5307caca939babbb60af2b47d306e5c63bf9d5fefbab2ab48d4da275188c3de525d0e716cc21b784bbccb + checksum: 10c0/08a6a24a366c90b83aef3ad6ec41dcaaa65428ffab8d80bc7172add0fbb8b134a34f415ad288b2a6fbd406526e9a62abdb40ed4f399fbe00cb45c44056d4dce0 languageName: node linkType: hard "jake@npm:^10.8.5": - version: 10.8.7 - resolution: "jake@npm:10.8.7" + version: 10.9.2 + resolution: "jake@npm:10.9.2" dependencies: async: "npm:^3.2.3" chalk: "npm:^4.0.2" @@ -6254,7 +5958,7 @@ __metadata: minimatch: "npm:^3.1.2" bin: jake: bin/cli.js - checksum: 10c0/89326d01a8bc110d02d973729a66394c79a34b34461116f5c530a2a2dbc30265683fe6737928f75df9178e9d369ff1442f5753fb983d525e740eefdadc56a103 + checksum: 10c0/c4597b5ed9b6a908252feab296485a4f87cba9e26d6c20e0ca144fb69e0c40203d34a2efddb33b3d297b8bd59605e6c1f44f6221ca1e10e69175ecbf3ff5fe31 languageName: node linkType: hard @@ -6325,8 +6029,8 @@ __metadata: linkType: hard "jsdom@npm:^24.1.0": - version: 24.1.1 - resolution: "jsdom@npm:24.1.1" + version: 24.1.3 + resolution: "jsdom@npm:24.1.3" dependencies: cssstyle: "npm:^4.0.1" data-urls: "npm:^5.0.0" @@ -6354,7 +6058,7 @@ __metadata: peerDependenciesMeta: canvas: optional: true - checksum: 10c0/02d6bfe32f09f26329c0e53ad9f9883a3c671fc1f75725167d2089ca412f5b7ca85ff8aa62327d1cc6fc70ffbb3b18dfc7642c4b2096c2c8b19aaf9a48473eb3 + checksum: 10c0/e48b342afacd7418a23dac204a62deea729c50f4d072a7c04c09fd32355fdb4335f8779fa79fd0277a2dbeb2d356250a950955719d00047324b251233b11277f languageName: node linkType: hard @@ -6458,6 +6162,15 @@ __metadata: languageName: node linkType: hard +"keyv@npm:^5.3.3": + version: 5.3.3 + resolution: "keyv@npm:5.3.3" + dependencies: + "@keyv/serialize": "npm:^1.0.3" + checksum: 10c0/6b9064d061784e80a5dc500453b03cacb099f06fddd0346063519371d563a66771237e04467f3387b60d8a33a3c99864288991274921fb1338c6adf638574924 + languageName: node + linkType: hard + "kind-of@npm:^6.0.2": version: 6.0.3 resolution: "kind-of@npm:6.0.3" @@ -6465,10 +6178,10 @@ __metadata: languageName: node linkType: hard -"known-css-properties@npm:^0.35.0": - version: 0.35.0 - resolution: "known-css-properties@npm:0.35.0" - checksum: 10c0/04a4a2859d62670bb25b5b28091a1f03f6f0d3298a5ed3e7476397c5287b98c434f6dd9c004a0c67a53b7f21acc93f83c972e98c122f568d4d0bd21fd2b90fb6 +"known-css-properties@npm:^0.36.0": + version: 0.36.0 + resolution: "known-css-properties@npm:0.36.0" + checksum: 10c0/098c8f956408a7ce26a639c2354e0184fb2bb2772bb7d1ba23192b6b6cf5818cbb8a0acfb4049705ea103d9916065703bc540fa084a6349fdb41bf745aada4bc languageName: node linkType: hard @@ -6621,14 +6334,7 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^10.0.1": - version: 10.2.0 - resolution: "lru-cache@npm:10.2.0" - checksum: 10c0/c9847612aa2daaef102d30542a8d6d9b2c2bb36581c1bf0dc3ebf5e5f3352c772a749e604afae2e46873b930a9e9523743faac4e5b937c576ab29196774712ee - languageName: node - linkType: hard - -"lru-cache@npm:^10.4.3": +"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0, lru-cache@npm:^10.4.3": version: 10.4.3 resolution: "lru-cache@npm:10.4.3" checksum: 10c0/ebd04fbca961e6c1d6c0af3799adcc966a1babe798f685bb84e6599266599cd95d94630b10262f5424539bc4640107e8a33aa28585374abf561d30d16f4b39fb @@ -6636,9 +6342,9 @@ __metadata: linkType: hard "lru-cache@npm:^11.0.0": - version: 11.0.0 - resolution: "lru-cache@npm:11.0.0" - checksum: 10c0/827ff0e0739f9b0f30f92f5a5fc97c6a2bd3ae32c0452bc58cb7411d6c589d49536073027293f2d1f02d0c2e72b63b162f238df7e9ff6f4cc0345f92afec4d1d + version: 11.1.0 + resolution: "lru-cache@npm:11.1.0" + checksum: 10c0/85c312f7113f65fae6a62de7985348649937eb34fb3d212811acbf6704dc322a421788aca253b62838f1f07049a84cc513d88f494e373d3756514ad263670a64 languageName: node linkType: hard @@ -6651,13 +6357,6 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^9.1.1 || ^10.0.0": - version: 10.1.0 - resolution: "lru-cache@npm:10.1.0" - checksum: 10c0/778bc8b2626daccd75f24c4b4d10632496e21ba064b126f526c626fbdbc5b28c472013fccd45d7646b9e1ef052444824854aed617b59cd570d01a8b7d651fc1e - languageName: node - linkType: hard - "make-dir@npm:~3.1.0": version: 3.1.0 resolution: "make-dir@npm:3.1.0" @@ -6667,22 +6366,22 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^13.0.0": - version: 13.0.0 - resolution: "make-fetch-happen@npm:13.0.0" +"make-fetch-happen@npm:^14.0.3": + version: 14.0.3 + resolution: "make-fetch-happen@npm:14.0.3" dependencies: - "@npmcli/agent": "npm:^2.0.0" - cacache: "npm:^18.0.0" + "@npmcli/agent": "npm:^3.0.0" + cacache: "npm:^19.0.1" http-cache-semantics: "npm:^4.1.1" - is-lambda: "npm:^1.0.1" minipass: "npm:^7.0.2" - minipass-fetch: "npm:^3.0.0" + minipass-fetch: "npm:^4.0.0" minipass-flush: "npm:^1.0.5" minipass-pipeline: "npm:^1.2.4" - negotiator: "npm:^0.6.3" + negotiator: "npm:^1.0.0" + proc-log: "npm:^5.0.0" promise-retry: "npm:^2.0.1" - ssri: "npm:^10.0.0" - checksum: 10c0/43b9f6dcbc6fe8b8604cb6396957c3698857a15ba4dbc38284f7f0e61f248300585ef1eb8cc62df54e9c724af977e45b5cdfd88320ef7f53e45070ed3488da55 + ssri: "npm:^12.0.0" + checksum: 10c0/c40efb5e5296e7feb8e37155bde8eb70bc57d731b1f7d90e35a092fde403d7697c56fb49334d92d330d6f1ca29a98142036d6480a12681133a0a1453164cb2f0 languageName: node linkType: hard @@ -6695,6 +6394,13 @@ __metadata: languageName: node linkType: hard +"math-intrinsics@npm:^1.1.0": + version: 1.1.0 + resolution: "math-intrinsics@npm:1.1.0" + checksum: 10c0/7579ff94e899e2f76ab64491d76cf606274c874d8f2af4a442c016bd85688927fcfca157ba6bf74b08e9439dc010b248ce05b96cc7c126a354c3bae7fcb48b7f + languageName: node + linkType: hard + "mathml-tag-names@npm:^2.1.3": version: 2.1.3 resolution: "mathml-tag-names@npm:2.1.3" @@ -6730,16 +6436,6 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:^4.0.4": - version: 4.0.5 - resolution: "micromatch@npm:4.0.5" - dependencies: - braces: "npm:^3.0.2" - picomatch: "npm:^2.3.1" - checksum: 10c0/3d6505b20f9fa804af5d8c596cb1c5e475b9b0cd05f652c5b56141cf941bd72adaeb7a436fda344235cef93a7f29b7472efc779fcdb83b478eab0867b95cdeff - languageName: node - linkType: hard - "micromatch@npm:^4.0.8": version: 4.0.8 resolution: "micromatch@npm:4.0.8" @@ -6818,12 +6514,12 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^9.0.1": - version: 9.0.3 - resolution: "minimatch@npm:9.0.3" +"minimatch@npm:^9.0.4": + version: 9.0.5 + resolution: "minimatch@npm:9.0.5" dependencies: brace-expansion: "npm:^2.0.1" - checksum: 10c0/85f407dcd38ac3e180f425e86553911d101455ca3ad5544d6a7cec16286657e4f8a9aa6695803025c55e31e35a91a2252b5dc8e7d527211278b8b65b4dbd5eac + checksum: 10c0/de96cf5e35bdf0eab3e2c853522f98ffbe9a36c37797778d2665231ec1f20a9447a7e567cb640901f89e4daaa95ae5d70c65a9e8aa2bb0019b6facbc3c0575ed languageName: node linkType: hard @@ -6859,18 +6555,18 @@ __metadata: languageName: node linkType: hard -"minipass-fetch@npm:^3.0.0": - version: 3.0.4 - resolution: "minipass-fetch@npm:3.0.4" +"minipass-fetch@npm:^4.0.0": + version: 4.0.1 + resolution: "minipass-fetch@npm:4.0.1" dependencies: encoding: "npm:^0.1.13" minipass: "npm:^7.0.3" minipass-sized: "npm:^1.0.3" - minizlib: "npm:^2.1.2" + minizlib: "npm:^3.0.1" dependenciesMeta: encoding: optional: true - checksum: 10c0/1b63c1f3313e88eeac4689f1b71c9f086598db9a189400e3ee960c32ed89e06737fa23976c9305c2d57464fb3fcdc12749d3378805c9d6176f5569b0d0ee8a75 + checksum: 10c0/a3147b2efe8e078c9bf9d024a0059339c5a09c5b1dded6900a219c218cc8b1b78510b62dae556b507304af226b18c3f1aeb1d48660283602d5b6586c399eed5c languageName: node linkType: hard @@ -6910,43 +6606,19 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^5.0.0": - version: 5.0.0 - resolution: "minipass@npm:5.0.0" - checksum: 10c0/a91d8043f691796a8ac88df039da19933ef0f633e3d7f0d35dcd5373af49131cf2399bfc355f41515dc495e3990369c3858cd319e5c2722b4753c90bf3152462 - languageName: node - linkType: hard - -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3": - version: 7.0.4 - resolution: "minipass@npm:7.0.4" - checksum: 10c0/6c7370a6dfd257bf18222da581ba89a5eaedca10e158781232a8b5542a90547540b4b9b7e7f490e4cda43acfbd12e086f0453728ecf8c19e0ef6921bc5958ac5 - languageName: node - linkType: hard - -"minipass@npm:^7.1.2": +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2": version: 7.1.2 resolution: "minipass@npm:7.1.2" checksum: 10c0/b0fd20bb9fb56e5fa9a8bfac539e8915ae07430a619e4b86ff71f5fc757ef3924b23b2c4230393af1eda647ed3d75739e4e0acb250a6b1eb277cf7f8fe449557 languageName: node linkType: hard -"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": - version: 2.1.2 - resolution: "minizlib@npm:2.1.2" +"minizlib@npm:^3.0.1": + version: 3.0.2 + resolution: "minizlib@npm:3.0.2" dependencies: - minipass: "npm:^3.0.0" - yallist: "npm:^4.0.0" - checksum: 10c0/64fae024e1a7d0346a1102bb670085b17b7f95bf6cfdf5b128772ec8faf9ea211464ea4add406a3a6384a7d87a0cd1a96263692134323477b4fb43659a6cab78 - languageName: node - linkType: hard - -"mkdirp@npm:^1.0.3": - version: 1.0.4 - resolution: "mkdirp@npm:1.0.4" - bin: - mkdirp: bin/cmd.js - checksum: 10c0/46ea0f3ffa8bc6a5bc0c7081ffc3907777f0ed6516888d40a518c5111f8366d97d2678911ad1a6882bf592fa9de6c784fea32e1687bb94e1f4944170af48a5cf + minipass: "npm:^7.1.2" + checksum: 10c0/9f3bd35e41d40d02469cb30470c55ccc21cae0db40e08d1d0b1dff01cc8cc89a6f78e9c5d2b7c844e485ec0a8abc2238111213fdc5b2038e6d1012eacf316f78 languageName: node linkType: hard @@ -7004,12 +6676,12 @@ __metadata: languageName: node linkType: hard -"nanoid@npm:^3.3.7": - version: 3.3.7 - resolution: "nanoid@npm:3.3.7" +"nanoid@npm:^3.3.8": + version: 3.3.11 + resolution: "nanoid@npm:3.3.11" bin: nanoid: bin/nanoid.cjs - checksum: 10c0/e3fb661aa083454f40500473bb69eedb85dc160e763150b9a2c567c7e9ff560ce028a9f833123b618a6ea742e311138b591910e795614a629029e86e180660f3 + checksum: 10c0/40e7f70b3d15f725ca072dfc4f74e81fcf1fbb02e491cf58ac0c79093adc9b0a73b152bcde57df4b79cd097e13023d7504acb38404a4da7bc1cd8e887b82fe0b languageName: node linkType: hard @@ -7020,10 +6692,10 @@ __metadata: languageName: node linkType: hard -"negotiator@npm:^0.6.3": - version: 0.6.3 - resolution: "negotiator@npm:0.6.3" - checksum: 10c0/3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 +"negotiator@npm:^1.0.0": + version: 1.0.0 + resolution: "negotiator@npm:1.0.0" + checksum: 10c0/4c559dd52669ea48e1914f9d634227c561221dd54734070791f999c52ed0ff36e437b2e07d5c1f6e32909fc625fe46491c16e4a8f0572567d4dd15c3a4fda04b languageName: node linkType: hard @@ -7034,17 +6706,6 @@ __metadata: languageName: node linkType: hard -"nice-napi@npm:^1.0.2": - version: 1.0.2 - resolution: "nice-napi@npm:1.0.2" - dependencies: - node-addon-api: "npm:^3.0.0" - node-gyp: "npm:latest" - node-gyp-build: "npm:^4.2.2" - conditions: "!os=win32" - languageName: node - linkType: hard - "nightwatch-axe-verbose@npm:^2.3.0": version: 2.3.1 resolution: "nightwatch-axe-verbose@npm:2.3.1" @@ -7107,68 +6768,41 @@ __metadata: languageName: node linkType: hard -"node-addon-api@npm:^3.0.0": - version: 3.2.1 - resolution: "node-addon-api@npm:3.2.1" - dependencies: - node-gyp: "npm:latest" - checksum: 10c0/41f21c9d12318875a2c429befd06070ce367065a3ef02952cfd4ea17ef69fa14012732f510b82b226e99c254da8d671847ea018cad785f839a5366e02dd56302 - languageName: node - linkType: hard - -"node-gyp-build@npm:^4.2.2": - version: 4.8.1 - resolution: "node-gyp-build@npm:4.8.1" - bin: - node-gyp-build: bin.js - node-gyp-build-optional: optional.js - node-gyp-build-test: build-test.js - checksum: 10c0/e36ca3d2adf2b9cca316695d7687207c19ac6ed326d6d7c68d7112cebe0de4f82d6733dff139132539fcc01cf5761f6c9082a21864ab9172edf84282bc849ce7 - languageName: node - linkType: hard - "node-gyp@npm:latest": - version: 10.0.1 - resolution: "node-gyp@npm:10.0.1" + version: 11.2.0 + resolution: "node-gyp@npm:11.2.0" dependencies: env-paths: "npm:^2.2.0" exponential-backoff: "npm:^3.1.1" - glob: "npm:^10.3.10" graceful-fs: "npm:^4.2.6" - make-fetch-happen: "npm:^13.0.0" - nopt: "npm:^7.0.0" - proc-log: "npm:^3.0.0" + make-fetch-happen: "npm:^14.0.3" + nopt: "npm:^8.0.0" + proc-log: "npm:^5.0.0" semver: "npm:^7.3.5" - tar: "npm:^6.1.2" - which: "npm:^4.0.0" + tar: "npm:^7.4.3" + tinyglobby: "npm:^0.2.12" + which: "npm:^5.0.0" bin: node-gyp: bin/node-gyp.js - checksum: 10c0/abddfff7d873312e4ed4a5fb75ce893a5c4fb69e7fcb1dfa71c28a6b92a7f1ef6b62790dffb39181b5a82728ba8f2f32d229cf8cbe66769fe02cea7db4a555aa - languageName: node - linkType: hard - -"node-releases@npm:^2.0.14": - version: 2.0.14 - resolution: "node-releases@npm:2.0.14" - checksum: 10c0/199fc93773ae70ec9969bc6d5ac5b2bbd6eb986ed1907d751f411fef3ede0e4bfdb45ceb43711f8078bea237b6036db8b1bf208f6ff2b70c7d615afd157f3ab9 + checksum: 10c0/bd8d8c76b06be761239b0c8680f655f6a6e90b48e44d43415b11c16f7e8c15be346fba0cbf71588c7cdfb52c419d928a7d3db353afc1d952d19756237d8f10b9 languageName: node linkType: hard -"node-releases@npm:^2.0.18": - version: 2.0.18 - resolution: "node-releases@npm:2.0.18" - checksum: 10c0/786ac9db9d7226339e1dc84bbb42007cb054a346bd9257e6aa154d294f01bc6a6cddb1348fa099f079be6580acbb470e3c048effd5f719325abd0179e566fd27 +"node-releases@npm:^2.0.19": + version: 2.0.19 + resolution: "node-releases@npm:2.0.19" + checksum: 10c0/52a0dbd25ccf545892670d1551690fe0facb6a471e15f2cfa1b20142a5b255b3aa254af5f59d6ecb69c2bec7390bc643c43aa63b13bf5e64b6075952e716b1aa languageName: node linkType: hard -"nopt@npm:^7.0.0": - version: 7.2.0 - resolution: "nopt@npm:7.2.0" +"nopt@npm:^8.0.0": + version: 8.1.0 + resolution: "nopt@npm:8.1.0" dependencies: - abbrev: "npm:^2.0.0" + abbrev: "npm:^3.0.0" bin: nopt: bin/nopt.js - checksum: 10c0/9bd7198df6f16eb29ff16892c77bcf7f0cc41f9fb5c26280ac0def2cf8cf319f3b821b3af83eba0e74c85807cc430a16efe0db58fe6ae1f41e69519f585b6aff + checksum: 10c0/62e9ea70c7a3eb91d162d2c706b6606c041e4e7b547cbbb48f8b3695af457dd6479904d7ace600856bf923dd8d1ed0696f06195c8c20f02ac87c1da0e1d315ef languageName: node linkType: hard @@ -7193,31 +6827,17 @@ __metadata: languageName: node linkType: hard -"nwsapi@npm:^2.2.12": - version: 2.2.12 - resolution: "nwsapi@npm:2.2.12" - checksum: 10c0/95e9623d63df111405503df8c5d800e26f71675d319e2c9c70cddfa31e5ace1d3f8b6d98d354544fc156a1506d920ec291e303fab761e4f99296868e199a466e - languageName: node - linkType: hard - -"nwsapi@npm:^2.2.16": +"nwsapi@npm:^2.2.12, nwsapi@npm:^2.2.16": version: 2.2.20 resolution: "nwsapi@npm:2.2.20" checksum: 10c0/07f4dafa3186aef7c007863e90acd4342a34ba9d44b22f14f644fdb311f6086887e21c2fc15efaa826c2bc39ab2bc841364a1a630e7c87e0cb723ba59d729297 languageName: node linkType: hard -"object-inspect@npm:^1.13.1, object-inspect@npm:^1.9.0": - version: 1.13.1 - resolution: "object-inspect@npm:1.13.1" - checksum: 10c0/fad603f408e345c82e946abdf4bfd774260a5ed3e5997a0b057c44153ac32c7271ff19e3a5ae39c858da683ba045ccac2f65245c12763ce4e8594f818f4a648d - languageName: node - linkType: hard - "object-inspect@npm:^1.13.3": - version: 1.13.3 - resolution: "object-inspect@npm:1.13.3" - checksum: 10c0/cc3f15213406be89ffdc54b525e115156086796a515410a8d390215915db9f23c8eab485a06f1297402f440a33715fe8f71a528c1dcbad6e1a3bcaf5a46921d4 + version: 1.13.4 + resolution: "object-inspect@npm:1.13.4" + checksum: 10c0/d7f8711e803b96ea3191c745d6f8056ce1f2496e530e6a19a0e92d89b0fa3c76d910c31f0aa270432db6bd3b2f85500a376a83aaba849a8d518c8845b3211692 languageName: node linkType: hard @@ -7238,26 +6858,29 @@ __metadata: languageName: node linkType: hard -"object.assign@npm:^4.1.2, object.assign@npm:^4.1.4, object.assign@npm:^4.1.5": - version: 4.1.5 - resolution: "object.assign@npm:4.1.5" +"object.assign@npm:^4.1.2, object.assign@npm:^4.1.4, object.assign@npm:^4.1.7": + version: 4.1.7 + resolution: "object.assign@npm:4.1.7" dependencies: - call-bind: "npm:^1.0.5" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" define-properties: "npm:^1.2.1" - has-symbols: "npm:^1.0.3" + es-object-atoms: "npm:^1.0.0" + has-symbols: "npm:^1.1.0" object-keys: "npm:^1.1.1" - checksum: 10c0/60108e1fa2706f22554a4648299b0955236c62b3685c52abf4988d14fffb0e7731e00aa8c6448397e3eb63d087dcc124a9f21e1980f36d0b2667f3c18bacd469 + checksum: 10c0/3b2732bd860567ea2579d1567525168de925a8d852638612846bd8082b3a1602b7b89b67b09913cbb5b9bd6e95923b2ae73580baa9d99cb4e990564e8cbf5ddc languageName: node linkType: hard "object.entries@npm:^1.1.5": - version: 1.1.7 - resolution: "object.entries@npm:1.1.7" + version: 1.1.9 + resolution: "object.entries@npm:1.1.9" dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - checksum: 10c0/3ad1899cc7bf14546bf28f4a9b363ae8690b90948fcfbcac4c808395435d760f26193d9cae95337ce0e3c1e5c1f4fa45f7b46b31b68d389e9e117fce38775d86 + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.4" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.1.1" + checksum: 10c0/d4b8c1e586650407da03370845f029aa14076caca4e4d4afadbc69cfb5b78035fd3ee7be417141abdb0258fa142e59b11923b4c44d8b1255b28f5ffcc50da7db languageName: node linkType: hard @@ -7285,13 +6908,14 @@ __metadata: linkType: hard "object.values@npm:^1.2.0": - version: 1.2.0 - resolution: "object.values@npm:1.2.0" + version: 1.2.1 + resolution: "object.values@npm:1.2.1" dependencies: - call-bind: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" define-properties: "npm:^1.2.1" es-object-atoms: "npm:^1.0.0" - checksum: 10c0/15809dc40fd6c5529501324fec5ff08570b7d70fb5ebbe8e2b3901afec35cf2b3dc484d1210c6c642cd3e7e0a5e18dd1d6850115337fef46bdae14ab0cb18ac3 + checksum: 10c0/3c47814fdc64842ae3d5a74bc9d06bdd8d21563c04d9939bf6716a9c00596a4ebc342552f8934013d1ec991c74e3671b26710a0c51815f0b603795605ab6b2c9 languageName: node linkType: hard @@ -7325,16 +6949,16 @@ __metadata: linkType: hard "optionator@npm:^0.9.3": - version: 0.9.3 - resolution: "optionator@npm:0.9.3" + version: 0.9.4 + resolution: "optionator@npm:0.9.4" dependencies: - "@aashutoshrathi/word-wrap": "npm:^1.2.3" deep-is: "npm:^0.1.3" fast-levenshtein: "npm:^2.0.6" levn: "npm:^0.4.1" prelude-ls: "npm:^1.2.1" type-check: "npm:^0.4.0" - checksum: 10c0/66fba794d425b5be51353035cf3167ce6cfa049059cbb93229b819167687e0f48d2bc4603fcb21b091c99acb516aae1083624675b15c4765b2e4693a085e959c + word-wrap: "npm:^1.2.5" + checksum: 10c0/4afb687a059ee65b61df74dfe87d8d6815cd6883cb8b3d5883a910df72d0f5d029821f37025e4bccf4048873dbdb09acc6d303d27b8f76b1a80dd5a7d5334675 languageName: node linkType: hard @@ -7355,6 +6979,17 @@ __metadata: languageName: node linkType: hard +"own-keys@npm:^1.0.1": + version: 1.0.1 + resolution: "own-keys@npm:1.0.1" + dependencies: + get-intrinsic: "npm:^1.2.6" + object-keys: "npm:^1.1.1" + safe-push-apply: "npm:^1.0.0" + checksum: 10c0/6dfeb3455bff92ec3f16a982d4e3e65676345f6902d9f5ded1d8265a6318d0200ce461956d6d1c70053c7fe9f9fe65e552faac03f8140d37ef0fdd108e67013a + languageName: node + linkType: hard + "p-limit@npm:^2.2.0": version: 2.3.0 resolution: "p-limit@npm:2.3.0" @@ -7391,12 +7026,10 @@ __metadata: languageName: node linkType: hard -"p-map@npm:^4.0.0": - version: 4.0.0 - resolution: "p-map@npm:4.0.0" - dependencies: - aggregate-error: "npm:^3.0.0" - checksum: 10c0/592c05bd6262c466ce269ff172bb8de7c6975afca9b50c975135b974e9bdaafbfe80e61aaaf5be6d1200ba08b30ead04b88cfa7e25ff1e3b93ab28c9f62a2c75 +"p-map@npm:^7.0.2": + version: 7.0.3 + resolution: "p-map@npm:7.0.3" + checksum: 10c0/46091610da2b38ce47bcd1d8b4835a6fa4e832848a6682cf1652bc93915770f4617afc844c10a77d1b3e56d2472bb2d5622353fa3ead01a7f42b04fc8e744a5c languageName: node linkType: hard @@ -7408,9 +7041,9 @@ __metadata: linkType: hard "package-json-from-dist@npm:^1.0.0": - version: 1.0.0 - resolution: "package-json-from-dist@npm:1.0.0" - checksum: 10c0/e3ffaf6ac1040ab6082a658230c041ad14e72fabe99076a2081bb1d5d41210f11872403fc09082daf4387fc0baa6577f96c9c0e94c90c394fd57794b66aa4033 + version: 1.0.1 + resolution: "package-json-from-dist@npm:1.0.1" + checksum: 10c0/62ba2785eb655fec084a257af34dbe24292ab74516d6aecef97ef72d4897310bc6898f6c85b5cd22770eaa1ce60d55a0230e150fb6a966e3ecd6c511e23d164b languageName: node linkType: hard @@ -7451,16 +7084,7 @@ __metadata: languageName: node linkType: hard -"parse5@npm:^7.1.2": - version: 7.1.2 - resolution: "parse5@npm:7.1.2" - dependencies: - entities: "npm:^4.4.0" - checksum: 10c0/297d7af8224f4b5cb7f6617ecdae98eeaed7f8cbd78956c42785e230505d5a4f07cef352af10d3006fa5c1544b76b57784d3a22d861ae071bbc460c649482bf4 - languageName: node - linkType: hard - -"parse5@npm:^7.2.1": +"parse5@npm:^7.1.2, parse5@npm:^7.2.1": version: 7.3.0 resolution: "parse5@npm:7.3.0" dependencies: @@ -7497,13 +7121,13 @@ __metadata: languageName: node linkType: hard -"path-scurry@npm:^1.10.1": - version: 1.10.1 - resolution: "path-scurry@npm:1.10.1" +"path-scurry@npm:^1.11.1": + version: 1.11.1 + resolution: "path-scurry@npm:1.11.1" dependencies: - lru-cache: "npm:^9.1.1 || ^10.0.0" + lru-cache: "npm:^10.2.0" minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" - checksum: 10c0/e5dc78a7348d25eec61ab166317e9e9c7b46818aa2c2b9006c507a6ff48c672d011292d9662527213e558f5652ce0afcc788663a061d8b59ab495681840c0c1e + checksum: 10c0/32a13711a2a505616ae1cc1b5076801e453e7aae6ac40ab55b388bb91b9d0547a52f5aaceff710ea400205f18691120d4431e520afbe4266b836fadede15872d languageName: node linkType: hard @@ -7531,21 +7155,7 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.0.0": - version: 1.0.0 - resolution: "picocolors@npm:1.0.0" - checksum: 10c0/20a5b249e331c14479d94ec6817a182fd7a5680debae82705747b2db7ec50009a5f6648d0621c561b0572703f84dbef0858abcbd5856d3c5511426afcb1961f7 - languageName: node - linkType: hard - -"picocolors@npm:^1.0.1": - version: 1.0.1 - resolution: "picocolors@npm:1.0.1" - checksum: 10c0/c63cdad2bf812ef0d66c8db29583802355d4ca67b9285d846f390cc15c2f6ccb94e8cb7eb6a6e97fc5990a6d3ad4ae42d86c84d3146e667c739a4234ed50d400 - languageName: node - linkType: hard - -"picocolors@npm:^1.1.0, picocolors@npm:^1.1.1": +"picocolors@npm:^1.1.1": version: 1.1.1 resolution: "picocolors@npm:1.1.1" checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 @@ -7574,14 +7184,14 @@ __metadata: linkType: hard "piscina@npm:^4.3.1": - version: 4.6.1 - resolution: "piscina@npm:4.6.1" + version: 4.9.2 + resolution: "piscina@npm:4.9.2" dependencies: - nice-napi: "npm:^1.0.2" + "@napi-rs/nice": "npm:^1.0.1" dependenciesMeta: - nice-napi: + "@napi-rs/nice": optional: true - checksum: 10c0/2225fb42806f8d72bf09f2528bd65721b440dcc63ece957a9542a28b3b958be353dc48802fb11a8af66fdfd28a419300ed28e04573b8bf420e6dcfe63d6f58b5 + checksum: 10c0/ab67830065ff41523cd901db41b11045cb00a0be43bf79323ff7b4ef2fbce5e3a56ad440d99d6c3944ce94451a0a69fd175500e3220b21efe54142e601322189 languageName: node linkType: hard @@ -7595,20 +7205,20 @@ __metadata: linkType: hard "possible-typed-array-names@npm:^1.0.0": - version: 1.0.0 - resolution: "possible-typed-array-names@npm:1.0.0" - checksum: 10c0/d9aa22d31f4f7680e20269db76791b41c3a32c01a373e25f8a4813b4d45f7456bfc2b6d68f752dc4aab0e0bb0721cb3d76fb678c9101cb7a16316664bc2c73fd + version: 1.1.0 + resolution: "possible-typed-array-names@npm:1.1.0" + checksum: 10c0/c810983414142071da1d644662ce4caebce890203eb2bc7bf119f37f3fe5796226e117e6cca146b521921fa6531072674174a3325066ac66fce089a53e1e5196 languageName: node linkType: hard -"postcss-attribute-case-insensitive@npm:^6.0.3": - version: 6.0.3 - resolution: "postcss-attribute-case-insensitive@npm:6.0.3" +"postcss-attribute-case-insensitive@npm:^7.0.1": + version: 7.0.1 + resolution: "postcss-attribute-case-insensitive@npm:7.0.1" dependencies: - postcss-selector-parser: "npm:^6.0.13" + postcss-selector-parser: "npm:^7.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/6161a625356db17ea23daa50797e23fa830a15629fa45e7438b5ac72a389f81ba51088503c5893a941d34d287857882867199584c5f03bf7762258c74570f456 + checksum: 10c0/48945abe2024e2d2e4c37d30b8c1aaf37af720f24f6a996f7ea7e7ed33621f5c22cf247ed22028c0c922de040c58c0802729bc39b903cb1693f4b63c0b49da34 languageName: node linkType: hard @@ -7623,131 +7233,131 @@ __metadata: languageName: node linkType: hard -"postcss-color-functional-notation@npm:^6.0.14": - version: 6.0.14 - resolution: "postcss-color-functional-notation@npm:6.0.14" +"postcss-color-functional-notation@npm:^7.0.9": + version: 7.0.9 + resolution: "postcss-color-functional-notation@npm:7.0.9" dependencies: - "@csstools/css-color-parser": "npm:^2.0.4" - "@csstools/css-parser-algorithms": "npm:^2.7.1" - "@csstools/css-tokenizer": "npm:^2.4.1" - "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0" - "@csstools/utilities": "npm:^1.0.0" + "@csstools/css-color-parser": "npm:^3.0.9" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" + "@csstools/postcss-progressive-custom-properties": "npm:^4.0.1" + "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/fdc5188e19c3923da32fe08d50e55d0b3ca1cedf99f46331baa0a4bbd73a1fc6b4447b0346ab16049032b56ab84b98b4758a0ede7c237637e35a4cc60caac141 + checksum: 10c0/62ffe51ec200df8e01daca3f45b2e05e7e509b57bfe50c880490878aff9bc63ed36cc92db42f0274a21f21330acd8fb1dff6529f7e3a202d100ea74914cf4cfd languageName: node linkType: hard -"postcss-color-hex-alpha@npm:^9.0.4": - version: 9.0.4 - resolution: "postcss-color-hex-alpha@npm:9.0.4" +"postcss-color-hex-alpha@npm:^10.0.0": + version: 10.0.0 + resolution: "postcss-color-hex-alpha@npm:10.0.0" dependencies: - "@csstools/utilities": "npm:^1.0.0" + "@csstools/utilities": "npm:^2.0.0" postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/57b5cfe17e0b659d5444f267c485462b8b25f6ab087b810c7dd44662af4828e1e8f9c4a9169b8635a4755509ca7c0f3463c2e96444764c4e6ff9f4036aad05e5 + checksum: 10c0/8a6dcb27403d04b55d6de88bf3074622bcea537fc4436bbcb346e92289c4d17059444e2e6c3554c325e7a777bb4cdc711e764a83123b4000aec211052e957d5b languageName: node linkType: hard -"postcss-color-rebeccapurple@npm:^9.0.3": - version: 9.0.3 - resolution: "postcss-color-rebeccapurple@npm:9.0.3" +"postcss-color-rebeccapurple@npm:^10.0.0": + version: 10.0.0 + resolution: "postcss-color-rebeccapurple@npm:10.0.0" dependencies: - "@csstools/utilities": "npm:^1.0.0" + "@csstools/utilities": "npm:^2.0.0" postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/ab36d29df23dd475a2a540101427640ef9c7936bbf941816e8582caea05feced26c65f795a849e2ad17469cee6682d1bbccd2f8ab0da07fe91efcc0649568038 + checksum: 10c0/308e33f76f2b48c1c2121d4502fc053e869f3415898de7d30314353df680e79b37497e7b628e3447edc1049091da3672f7d891e45604f238598e846e06b893ed languageName: node linkType: hard -"postcss-custom-media@npm:^10.0.8": - version: 10.0.8 - resolution: "postcss-custom-media@npm:10.0.8" +"postcss-custom-media@npm:^11.0.5": + version: 11.0.5 + resolution: "postcss-custom-media@npm:11.0.5" dependencies: - "@csstools/cascade-layer-name-parser": "npm:^1.0.13" - "@csstools/css-parser-algorithms": "npm:^2.7.1" - "@csstools/css-tokenizer": "npm:^2.4.1" - "@csstools/media-query-list-parser": "npm:^2.1.13" + "@csstools/cascade-layer-name-parser": "npm:^2.0.4" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" + "@csstools/media-query-list-parser": "npm:^4.0.2" peerDependencies: postcss: ^8.4 - checksum: 10c0/673ca0058a2f2357a83b33ce00bbeee7cda92621c08472fa55d7ac7ae56f5f8f979132528d537f2dedf715d35a8f9b14b2f0ab6b45423d49e2554c19aab3c827 + checksum: 10c0/5ba1ca0383818e83d5f6f398a2b0c12cfda066b5d552adfc0e030a2c5f8690c2cc6224f9a1832a9c780dae3fd8d00d78c4a5c88eb36b731da1752f0c3917d488 languageName: node linkType: hard -"postcss-custom-properties@npm:^13.3.12": - version: 13.3.12 - resolution: "postcss-custom-properties@npm:13.3.12" +"postcss-custom-properties@npm:^14.0.4": + version: 14.0.4 + resolution: "postcss-custom-properties@npm:14.0.4" dependencies: - "@csstools/cascade-layer-name-parser": "npm:^1.0.13" - "@csstools/css-parser-algorithms": "npm:^2.7.1" - "@csstools/css-tokenizer": "npm:^2.4.1" - "@csstools/utilities": "npm:^1.0.0" + "@csstools/cascade-layer-name-parser": "npm:^2.0.4" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" + "@csstools/utilities": "npm:^2.0.0" postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/6af9f6ac94a6ac887749cd38d4586349f6aca29269ebfdb837019a3ba0130032f0ff4899b431b5c348f4ac79a7b16fb7300a256514a6a68e32a63489c18a70e7 + checksum: 10c0/5b101ee71289657cc2e5a16f4912009c10441052e2c54bd9e4f3d4d72b652bab56adb662ddaa96881413e375cf9852e2159b3c778d953442ce86efb781c3b2bf languageName: node linkType: hard -"postcss-custom-selectors@npm:^7.1.12": - version: 7.1.12 - resolution: "postcss-custom-selectors@npm:7.1.12" +"postcss-custom-selectors@npm:^8.0.4": + version: 8.0.4 + resolution: "postcss-custom-selectors@npm:8.0.4" dependencies: - "@csstools/cascade-layer-name-parser": "npm:^1.0.13" - "@csstools/css-parser-algorithms": "npm:^2.7.1" - "@csstools/css-tokenizer": "npm:^2.4.1" - postcss-selector-parser: "npm:^6.1.0" + "@csstools/cascade-layer-name-parser": "npm:^2.0.4" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" + postcss-selector-parser: "npm:^7.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/78a7930e4f97c42b544f00c06272264432d47f9df777684b57673bb971b7ab49d5d6fb9289a5a869125e7e50dcd0cad65cf8846501253084b73a42ffab41b2c5 + checksum: 10c0/09d494d2580d0a99f57684f79793d03358286c32460b61a84063c33bdde24865771cb1205efe9a8e26a508be24eba4fb93fc7f1e96ba21ca96a5d17fadb24863 languageName: node linkType: hard -"postcss-dir-pseudo-class@npm:^8.0.1": - version: 8.0.1 - resolution: "postcss-dir-pseudo-class@npm:8.0.1" +"postcss-dir-pseudo-class@npm:^9.0.1": + version: 9.0.1 + resolution: "postcss-dir-pseudo-class@npm:9.0.1" dependencies: - postcss-selector-parser: "npm:^6.0.13" + postcss-selector-parser: "npm:^7.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/8c096e096b09e4041818bd2edf5581b5172375621f5eeca013633166ea100ab98e71bf60fccd92fa20cfa7b55c57598605a1655c6bcbe54a80728a7d4e36859e + checksum: 10c0/da9d3387648c5c3161a653d354c8f3e70a299108df3977e8aa65cf10793e4dd58a2711b3426cd63716245b13584ca8d95adcd6e10e3c9adbc61d08743e2d8690 languageName: node linkType: hard -"postcss-double-position-gradients@npm:^5.0.7": - version: 5.0.7 - resolution: "postcss-double-position-gradients@npm:5.0.7" +"postcss-double-position-gradients@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-double-position-gradients@npm:6.0.1" dependencies: - "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0" - "@csstools/utilities": "npm:^1.0.0" + "@csstools/postcss-progressive-custom-properties": "npm:^4.0.1" + "@csstools/utilities": "npm:^2.0.0" postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/52d96a34aa3e2e251edeaa2d4c2dd106c687f7910ec18266693656c0edd003384b927c855cecac07f52b5c7bdccd140abdc7e27082ce4c3755e3a966206a2cb9 + checksum: 10c0/4c6cf3f54b2154cd622cdcaea58a7634c2e19bc0c366c73c46a27a3e31aa280c8721ee2b21cdd5cdca3166052cf5881c16bab2836b8896e71578213957021d52 languageName: node linkType: hard -"postcss-focus-visible@npm:^9.0.1": - version: 9.0.1 - resolution: "postcss-focus-visible@npm:9.0.1" +"postcss-focus-visible@npm:^10.0.1": + version: 10.0.1 + resolution: "postcss-focus-visible@npm:10.0.1" dependencies: - postcss-selector-parser: "npm:^6.0.13" + postcss-selector-parser: "npm:^7.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/b8eb14ef51df62969559a7b2b4a4b6313a802fc2de225de293ad484ed6528833fc6bb7574aad5fabe7eeb27e8cd62663c2d547b25ff058d31c06d3d066abd904 + checksum: 10c0/c5ecc8536a708a49a99d0abd68a88a160664e6c832c808db8edd9f0221e7017a258daa87e49daf2cb098cb037005d46cf492403c8c9c92ad8835d30adaccf665 languageName: node linkType: hard -"postcss-focus-within@npm:^8.0.1": - version: 8.0.1 - resolution: "postcss-focus-within@npm:8.0.1" +"postcss-focus-within@npm:^9.0.1": + version: 9.0.1 + resolution: "postcss-focus-within@npm:9.0.1" dependencies: - postcss-selector-parser: "npm:^6.0.13" + postcss-selector-parser: "npm:^7.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/cb0380d89f3b9313345dbea65c78c7ad16a6e6ab2ba9e90451d5b14f05ee691a0cdf458376368061327182e031644da21eee7e6e9ae508d195f083e0a20c0502 + checksum: 10c0/d6ab49d2a7f33485a9e137dc77ec92c5619a3ec92e1e672734fc604853ff1f3c0c189085c12461614be4fcb03ea0347d91791a45986a18d50b5228d161eda57a languageName: node linkType: hard @@ -7760,12 +7370,12 @@ __metadata: languageName: node linkType: hard -"postcss-gap-properties@npm:^5.0.1": - version: 5.0.1 - resolution: "postcss-gap-properties@npm:5.0.1" +"postcss-gap-properties@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-gap-properties@npm:6.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/3b28c38819add37a2fc7decd7e3bdda1cab1de861af228abfb3e4310d87786eff4572a693bec6cea1c435bcd3dd0bb58bc9a58f1dde3a1c7def9feaf800762b8 + checksum: 10c0/4e07e0d3927d0e65d67eaf047ac39e08d39cb1bf74e16e10c7df7f0d01b184a77ea59f63fd5691b5ed6df159970b972db28cb784d883e26e981137696460897d languageName: node linkType: hard @@ -7778,15 +7388,15 @@ __metadata: languageName: node linkType: hard -"postcss-image-set-function@npm:^6.0.3": - version: 6.0.3 - resolution: "postcss-image-set-function@npm:6.0.3" +"postcss-image-set-function@npm:^7.0.0": + version: 7.0.0 + resolution: "postcss-image-set-function@npm:7.0.0" dependencies: - "@csstools/utilities": "npm:^1.0.0" + "@csstools/utilities": "npm:^2.0.0" postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/b35ce25aeca95f7abc5e5820f2398588150f5be02209054d714e870ae2fa01a8482fd10600fe1f847add898c39690275a60a5999f83f6bed6c66be9b0444b704 + checksum: 10c0/913fd9492f00122aa0c2550fb0d72130428cbe1e6465bc65e8fe71e9deb10ac0c01d7caceb68b560da759139e8cbc6c90ed22dfe6cf34949af49bb86bcbf4d3a languageName: node linkType: hard @@ -7803,62 +7413,62 @@ __metadata: languageName: node linkType: hard -"postcss-lab-function@npm:^6.0.19": - version: 6.0.19 - resolution: "postcss-lab-function@npm:6.0.19" +"postcss-lab-function@npm:^7.0.9": + version: 7.0.9 + resolution: "postcss-lab-function@npm:7.0.9" dependencies: - "@csstools/css-color-parser": "npm:^2.0.4" - "@csstools/css-parser-algorithms": "npm:^2.7.1" - "@csstools/css-tokenizer": "npm:^2.4.1" - "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0" - "@csstools/utilities": "npm:^1.0.0" + "@csstools/css-color-parser": "npm:^3.0.9" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" + "@csstools/postcss-progressive-custom-properties": "npm:^4.0.1" + "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/d9a91fb57dcbe967260df86e22ca335a5444f1f34d128fa7b5dbf2522772f2138ad708f1f20f0a59035d66ed736e82972ca7f1b669a157534a17ee8898af1921 + checksum: 10c0/4180669e7555d474b660d106de5fa1d4a705d693451254123bf56ab6dc1a82e4e175c387868703c14e4637d795d461b5e7f10e74d7b42df55a31f6b52bfa048e languageName: node linkType: hard -"postcss-logical@npm:^7.0.1": - version: 7.0.1 - resolution: "postcss-logical@npm:7.0.1" +"postcss-logical@npm:^8.1.0": + version: 8.1.0 + resolution: "postcss-logical@npm:8.1.0" dependencies: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/66a06b5d3cb31181dd76c80286addd219205066a4a8c216076869fc54769ee0011cdaa8063e1b2c19c114cdc5ad12a2e2e8b730f6971960dc77d55f25f290223 + checksum: 10c0/0e2e9e901d8a550db7f682d46b1f7e4f363c1ada061dc8e4548e2b563c5e39f3684a2d7c3f11fe061188782bca37874e34967fc6179fa6d98a49ff66a0076d27 languageName: node linkType: hard -"postcss-nesting@npm:^12.1.5": - version: 12.1.5 - resolution: "postcss-nesting@npm:12.1.5" +"postcss-nesting@npm:^13.0.1": + version: 13.0.1 + resolution: "postcss-nesting@npm:13.0.1" dependencies: - "@csstools/selector-resolve-nested": "npm:^1.1.0" - "@csstools/selector-specificity": "npm:^3.1.1" - postcss-selector-parser: "npm:^6.1.0" + "@csstools/selector-resolve-nested": "npm:^3.0.0" + "@csstools/selector-specificity": "npm:^5.0.0" + postcss-selector-parser: "npm:^7.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/8f049fe24dccb186707e065ffb697f9f0633a03b0e1139e9c24656f3d2158a738a51c7b1f405b48fdb8b4f19515ad4ad9d3cd4ec9d9fe1dd4e5f18729bf8e589 + checksum: 10c0/549307c272cdd4cb5105d8fbcd582f15a1cb74e5bba240b05b27f77fe0422730be966699a49a9ad15fd9d1bc551c1edbaefb21a69686a9b131b585dbc9d90ebf languageName: node linkType: hard -"postcss-opacity-percentage@npm:^2.0.0": - version: 2.0.0 - resolution: "postcss-opacity-percentage@npm:2.0.0" +"postcss-opacity-percentage@npm:^3.0.0": + version: 3.0.0 + resolution: "postcss-opacity-percentage@npm:3.0.0" peerDependencies: - postcss: ^8.2 - checksum: 10c0/f031f3281060c4c0ede8f9a5832f65a3d8c2a1896ff324c41de42016e092635f0e0abee07545b01db93dc430a9741674a1d09c377c6c01cd8c2f4be65f889161 + postcss: ^8.4 + checksum: 10c0/15c7d66036fa966d265c8737196646b3f93deb83d4eea0b17ed5033460599afc31d3a989345e4d7c472963b2a2bb75c83d06979d5d30d6a60fcc7f74cb6d8d40 languageName: node linkType: hard -"postcss-overflow-shorthand@npm:^5.0.1": - version: 5.0.1 - resolution: "postcss-overflow-shorthand@npm:5.0.1" +"postcss-overflow-shorthand@npm:^6.0.0": + version: 6.0.0 + resolution: "postcss-overflow-shorthand@npm:6.0.0" dependencies: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/328407adffae084c096b3ea2c03037f0083a0000cae744872bb1168fdd317eef12bb049cdfef749343c3ed65b4275dc6eefe577d99cbc78e3617cb36d07e8717 + checksum: 10c0/6598321b2ed0b68461135395bba9c7f76a4672617770df1e8487f459bc975f4ded6c3d37b6f72a44f4f77f7b6789e0c6f927e66dbbf1bcde1537167dbea39968 languageName: node linkType: hard @@ -7871,96 +7481,98 @@ __metadata: languageName: node linkType: hard -"postcss-place@npm:^9.0.1": - version: 9.0.1 - resolution: "postcss-place@npm:9.0.1" +"postcss-place@npm:^10.0.0": + version: 10.0.0 + resolution: "postcss-place@npm:10.0.0" dependencies: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/d0fb5b0416fd15d5ac7da5fcc1829b9b78c5a90caba5bd045052c6ac0467910cbbeb2fff6c5257190affa656be27168c94ff339f86c0b7df54f9bea04bcadba7 - languageName: node - linkType: hard - -"postcss-preset-env@npm:^9.6.0": - version: 9.6.0 - resolution: "postcss-preset-env@npm:9.6.0" - dependencies: - "@csstools/postcss-cascade-layers": "npm:^4.0.6" - "@csstools/postcss-color-function": "npm:^3.0.19" - "@csstools/postcss-color-mix-function": "npm:^2.0.19" - "@csstools/postcss-content-alt-text": "npm:^1.0.0" - "@csstools/postcss-exponential-functions": "npm:^1.0.9" - "@csstools/postcss-font-format-keywords": "npm:^3.0.2" - "@csstools/postcss-gamut-mapping": "npm:^1.0.11" - "@csstools/postcss-gradients-interpolation-method": "npm:^4.0.20" - "@csstools/postcss-hwb-function": "npm:^3.0.18" - "@csstools/postcss-ic-unit": "npm:^3.0.7" - "@csstools/postcss-initial": "npm:^1.0.1" - "@csstools/postcss-is-pseudo-class": "npm:^4.0.8" - "@csstools/postcss-light-dark-function": "npm:^1.0.8" - "@csstools/postcss-logical-float-and-clear": "npm:^2.0.1" - "@csstools/postcss-logical-overflow": "npm:^1.0.1" - "@csstools/postcss-logical-overscroll-behavior": "npm:^1.0.1" - "@csstools/postcss-logical-resize": "npm:^2.0.1" - "@csstools/postcss-logical-viewport-units": "npm:^2.0.11" - "@csstools/postcss-media-minmax": "npm:^1.1.8" - "@csstools/postcss-media-queries-aspect-ratio-number-values": "npm:^2.0.11" - "@csstools/postcss-nested-calc": "npm:^3.0.2" - "@csstools/postcss-normalize-display-values": "npm:^3.0.2" - "@csstools/postcss-oklab-function": "npm:^3.0.19" - "@csstools/postcss-progressive-custom-properties": "npm:^3.3.0" - "@csstools/postcss-relative-color-syntax": "npm:^2.0.19" - "@csstools/postcss-scope-pseudo-class": "npm:^3.0.1" - "@csstools/postcss-stepped-value-functions": "npm:^3.0.10" - "@csstools/postcss-text-decoration-shorthand": "npm:^3.0.7" - "@csstools/postcss-trigonometric-functions": "npm:^3.0.10" - "@csstools/postcss-unset-value": "npm:^3.0.1" - autoprefixer: "npm:^10.4.19" - browserslist: "npm:^4.23.1" - css-blank-pseudo: "npm:^6.0.2" - css-has-pseudo: "npm:^6.0.5" - css-prefers-color-scheme: "npm:^9.0.1" - cssdb: "npm:^8.1.0" - postcss-attribute-case-insensitive: "npm:^6.0.3" + checksum: 10c0/ebb13deaac7648ba6042622375a31f78fbcc5209b7d196e478debbdf94525963fe621c932f4737a5b6b3d487af3b5ed6d059ed6193fdcbff6d3d5b150886ccc1 + languageName: node + linkType: hard + +"postcss-preset-env@npm:^10.1.6": + version: 10.1.6 + resolution: "postcss-preset-env@npm:10.1.6" + dependencies: + "@csstools/postcss-cascade-layers": "npm:^5.0.1" + "@csstools/postcss-color-function": "npm:^4.0.9" + "@csstools/postcss-color-mix-function": "npm:^3.0.9" + "@csstools/postcss-content-alt-text": "npm:^2.0.5" + "@csstools/postcss-exponential-functions": "npm:^2.0.8" + "@csstools/postcss-font-format-keywords": "npm:^4.0.0" + "@csstools/postcss-gamut-mapping": "npm:^2.0.9" + "@csstools/postcss-gradients-interpolation-method": "npm:^5.0.9" + "@csstools/postcss-hwb-function": "npm:^4.0.9" + "@csstools/postcss-ic-unit": "npm:^4.0.1" + "@csstools/postcss-initial": "npm:^2.0.1" + "@csstools/postcss-is-pseudo-class": "npm:^5.0.1" + "@csstools/postcss-light-dark-function": "npm:^2.0.8" + "@csstools/postcss-logical-float-and-clear": "npm:^3.0.0" + "@csstools/postcss-logical-overflow": "npm:^2.0.0" + "@csstools/postcss-logical-overscroll-behavior": "npm:^2.0.0" + "@csstools/postcss-logical-resize": "npm:^3.0.0" + "@csstools/postcss-logical-viewport-units": "npm:^3.0.3" + "@csstools/postcss-media-minmax": "npm:^2.0.8" + "@csstools/postcss-media-queries-aspect-ratio-number-values": "npm:^3.0.4" + "@csstools/postcss-nested-calc": "npm:^4.0.0" + "@csstools/postcss-normalize-display-values": "npm:^4.0.0" + "@csstools/postcss-oklab-function": "npm:^4.0.9" + "@csstools/postcss-progressive-custom-properties": "npm:^4.0.1" + "@csstools/postcss-random-function": "npm:^2.0.0" + "@csstools/postcss-relative-color-syntax": "npm:^3.0.9" + "@csstools/postcss-scope-pseudo-class": "npm:^4.0.1" + "@csstools/postcss-sign-functions": "npm:^1.1.3" + "@csstools/postcss-stepped-value-functions": "npm:^4.0.8" + "@csstools/postcss-text-decoration-shorthand": "npm:^4.0.2" + "@csstools/postcss-trigonometric-functions": "npm:^4.0.8" + "@csstools/postcss-unset-value": "npm:^4.0.0" + autoprefixer: "npm:^10.4.21" + browserslist: "npm:^4.24.4" + css-blank-pseudo: "npm:^7.0.1" + css-has-pseudo: "npm:^7.0.2" + css-prefers-color-scheme: "npm:^10.0.0" + cssdb: "npm:^8.2.5" + postcss-attribute-case-insensitive: "npm:^7.0.1" postcss-clamp: "npm:^4.1.0" - postcss-color-functional-notation: "npm:^6.0.14" - postcss-color-hex-alpha: "npm:^9.0.4" - postcss-color-rebeccapurple: "npm:^9.0.3" - postcss-custom-media: "npm:^10.0.8" - postcss-custom-properties: "npm:^13.3.12" - postcss-custom-selectors: "npm:^7.1.12" - postcss-dir-pseudo-class: "npm:^8.0.1" - postcss-double-position-gradients: "npm:^5.0.7" - postcss-focus-visible: "npm:^9.0.1" - postcss-focus-within: "npm:^8.0.1" + postcss-color-functional-notation: "npm:^7.0.9" + postcss-color-hex-alpha: "npm:^10.0.0" + postcss-color-rebeccapurple: "npm:^10.0.0" + postcss-custom-media: "npm:^11.0.5" + postcss-custom-properties: "npm:^14.0.4" + postcss-custom-selectors: "npm:^8.0.4" + postcss-dir-pseudo-class: "npm:^9.0.1" + postcss-double-position-gradients: "npm:^6.0.1" + postcss-focus-visible: "npm:^10.0.1" + postcss-focus-within: "npm:^9.0.1" postcss-font-variant: "npm:^5.0.0" - postcss-gap-properties: "npm:^5.0.1" - postcss-image-set-function: "npm:^6.0.3" - postcss-lab-function: "npm:^6.0.19" - postcss-logical: "npm:^7.0.1" - postcss-nesting: "npm:^12.1.5" - postcss-opacity-percentage: "npm:^2.0.0" - postcss-overflow-shorthand: "npm:^5.0.1" + postcss-gap-properties: "npm:^6.0.0" + postcss-image-set-function: "npm:^7.0.0" + postcss-lab-function: "npm:^7.0.9" + postcss-logical: "npm:^8.1.0" + postcss-nesting: "npm:^13.0.1" + postcss-opacity-percentage: "npm:^3.0.0" + postcss-overflow-shorthand: "npm:^6.0.0" postcss-page-break: "npm:^3.0.4" - postcss-place: "npm:^9.0.1" - postcss-pseudo-class-any-link: "npm:^9.0.2" + postcss-place: "npm:^10.0.0" + postcss-pseudo-class-any-link: "npm:^10.0.1" postcss-replace-overflow-wrap: "npm:^4.0.0" - postcss-selector-not: "npm:^7.0.2" + postcss-selector-not: "npm:^8.0.1" peerDependencies: postcss: ^8.4 - checksum: 10c0/caa91ba4d3b897d43ab2669b3edf40b24ef32c88e23b113be8956412e64b28deed6ba229c331848fcbc0d143bfde155173fb1e1ada9ccae5037b2ee8f7e554b7 + checksum: 10c0/89af9060f3528e254005e6b81e88c57589e6e7f74125b10d50ca8a05f830c9ac206f8197af1b3c4b7ba82d97993118dd121f1a11cfc9fd026e18d01ca6f7ad2d languageName: node linkType: hard -"postcss-pseudo-class-any-link@npm:^9.0.2": - version: 9.0.2 - resolution: "postcss-pseudo-class-any-link@npm:9.0.2" +"postcss-pseudo-class-any-link@npm:^10.0.1": + version: 10.0.1 + resolution: "postcss-pseudo-class-any-link@npm:10.0.1" dependencies: - postcss-selector-parser: "npm:^6.0.13" + postcss-selector-parser: "npm:^7.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/cc2cb455a793b1f5dc0ac290e02296eafb317d9ce987dc9f2102027e22f265299666dbd1e78f1d7836fce549dead73f41e24251c08a2dd0cf482f3cc43cf7909 + checksum: 10c0/95e883996e87baf14fc09d25f9a763a2e9d599eb3b9c6b736e83a8c3d0b55841bcb886bccdf51b5b7fefc128cbd0187ad8841f59878f85bd1613642e592d7673 languageName: node linkType: hard @@ -7998,53 +7610,33 @@ __metadata: languageName: node linkType: hard -"postcss-selector-not@npm:^7.0.2": - version: 7.0.2 - resolution: "postcss-selector-not@npm:7.0.2" +"postcss-selector-not@npm:^8.0.1": + version: 8.0.1 + resolution: "postcss-selector-not@npm:8.0.1" dependencies: - postcss-selector-parser: "npm:^6.0.13" + postcss-selector-parser: "npm:^7.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/624b6e516d37d43406ff1414b3413fe7a5dc34eccadd6a6082fe7df13c5c2fab3e244af33ff0916f9be0a4f7db91d1c22102f5166d7a6e6595e7c00e11e20281 + checksum: 10c0/491ea3dcc421cd90135be786078521605e2062fb93624ea8813cfd5ba0d35143f931e2e608d5f20effd5ea7d3f4786d2afea2afa42d117779a0288e135f132b6 languageName: node linkType: hard -"postcss-selector-parser@npm:^6.0.13": - version: 6.0.13 - resolution: "postcss-selector-parser@npm:6.0.13" - dependencies: - cssesc: "npm:^3.0.0" - util-deprecate: "npm:^1.0.2" - checksum: 10c0/51f099b27f7c7198ea1826470ef0adfa58b3bd3f59b390fda123baa0134880a5fa9720137b6009c4c1373357b144f700b0edac73335d0067422063129371444e - languageName: node - linkType: hard - -"postcss-selector-parser@npm:^6.1.0": - version: 6.1.0 - resolution: "postcss-selector-parser@npm:6.1.0" - dependencies: - cssesc: "npm:^3.0.0" - util-deprecate: "npm:^1.0.2" - checksum: 10c0/91e9c6434772506bc7f318699dd9d19d32178b52dfa05bed24cb0babbdab54f8fb765d9920f01ac548be0a642aab56bce493811406ceb00ae182bbb53754c473 - languageName: node - linkType: hard - -"postcss-selector-parser@npm:^7.0.0": - version: 7.0.0 - resolution: "postcss-selector-parser@npm:7.0.0" +"postcss-selector-parser@npm:^7.0.0, postcss-selector-parser@npm:^7.1.0": + version: 7.1.0 + resolution: "postcss-selector-parser@npm:7.1.0" dependencies: cssesc: "npm:^3.0.0" util-deprecate: "npm:^1.0.2" - checksum: 10c0/e96e096afcce70bf5c97789f5ea09d7415ae5eb701d82b05b5e8532885d31363b484fcb1ca9488c9a331f30508d9e5bb6c3109eb2eb5067ef3d3919f9928cd9d + checksum: 10c0/0fef257cfd1c0fe93c18a3f8a6e739b4438b527054fd77e9a62730a89b2d0ded1b59314a7e4aaa55bc256204f40830fecd2eb50f20f8cb7ab3a10b52aa06c8aa languageName: node linkType: hard -"postcss-sorting@npm:^8.0.2": - version: 8.0.2 - resolution: "postcss-sorting@npm:8.0.2" +"postcss-sorting@npm:^9.1.0": + version: 9.1.0 + resolution: "postcss-sorting@npm:9.1.0" peerDependencies: postcss: ^8.4.20 - checksum: 10c0/955c72d8d71b6b54dcdcbcef765a593803512d215cef12a49b71d1abf8ab8d2dacb5645dbb5a0a6535609aab6bffb834599d6073f28fe61e589a4437af85e243 + checksum: 10c0/1faea84bf00d85929228d297587798fa9c384a02966a28a942777b2de553a8186087cfdcd0aca3dd40e4b2793aee050792d807458db8cf4880867c98c7bf22fd languageName: node linkType: hard @@ -8069,36 +7661,14 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.4.32": - version: 8.4.32 - resolution: "postcss@npm:8.4.32" - dependencies: - nanoid: "npm:^3.3.7" - picocolors: "npm:^1.0.0" - source-map-js: "npm:^1.0.2" - checksum: 10c0/39308a9195fa34d4dbdd7b58a896cff0c7809f84f7a4ac1b95b68ca86c9138a395addff33075668ed3983d41b90aac05754c445237a9365eb1c3a5602ebd03ad - languageName: node - linkType: hard - -"postcss@npm:^8.4.40": - version: 8.4.40 - resolution: "postcss@npm:8.4.40" - dependencies: - nanoid: "npm:^3.3.7" - picocolors: "npm:^1.0.1" - source-map-js: "npm:^1.2.0" - checksum: 10c0/65ed67573e5443beaeb582282ff27a6be7c7fe3b4d9fa15761157616f2b97510cb1c335023c26220b005909f007337026d6e3ff092f25010b484ad484e80ea7f - languageName: node - linkType: hard - -"postcss@npm:^8.4.49": - version: 8.4.49 - resolution: "postcss@npm:8.4.49" +"postcss@npm:^8.5.3": + version: 8.5.3 + resolution: "postcss@npm:8.5.3" dependencies: - nanoid: "npm:^3.3.7" + nanoid: "npm:^3.3.8" picocolors: "npm:^1.1.1" source-map-js: "npm:^1.2.1" - checksum: 10c0/f1b3f17aaf36d136f59ec373459f18129908235e65dbdc3aee5eef8eba0756106f52de5ec4682e29a2eab53eb25170e7e871b3e4b52a8f1de3d344a514306be3 + checksum: 10c0/b75510d7b28c3ab728c8733dd01538314a18c52af426f199a3c9177e63eb08602a3938bfb66b62dc01350b9aed62087eabbf229af97a1659eb8d3513cec823b3 languageName: node linkType: hard @@ -8118,19 +7688,19 @@ __metadata: languageName: node linkType: hard -"prettier@npm:^3.4.2": - version: 3.4.2 - resolution: "prettier@npm:3.4.2" +"prettier@npm:^3.5.3": + version: 3.5.3 + resolution: "prettier@npm:3.5.3" bin: prettier: bin/prettier.cjs - checksum: 10c0/99e076a26ed0aba4ebc043880d0f08bbb8c59a4c6641cdee6cdadf2205bdd87aa1d7823f50c3aea41e015e99878d37c58d7b5f0e663bba0ef047f94e36b96446 + checksum: 10c0/3880cb90b9dc0635819ab52ff571518c35bd7f15a6e80a2054c05dbc8a3aa6e74f135519e91197de63705bcb38388ded7e7230e2178432a1468005406238b877 languageName: node linkType: hard -"proc-log@npm:^3.0.0": - version: 3.0.0 - resolution: "proc-log@npm:3.0.0" - checksum: 10c0/f66430e4ff947dbb996058f6fd22de2c66612ae1a89b097744e17fb18a4e8e7a86db99eda52ccf15e53f00b63f4ec0b0911581ff2aac0355b625c8eac509b0dc +"proc-log@npm:^5.0.0": + version: 5.0.0 + resolution: "proc-log@npm:5.0.0" + checksum: 10c0/bbe5edb944b0ad63387a1d5b1911ae93e05ce8d0f60de1035b218cdcceedfe39dbd2c697853355b70f1a090f8f58fe90da487c85216bf9671f9499d1a897e9e3 languageName: node linkType: hard @@ -8152,9 +7722,11 @@ __metadata: linkType: hard "psl@npm:^1.1.33": - version: 1.9.0 - resolution: "psl@npm:1.9.0" - checksum: 10c0/6a3f805fdab9442f44de4ba23880c4eba26b20c8e8e0830eff1cb31007f6825dace61d17203c58bfe36946842140c97a1ba7f67bc63ca2d88a7ee052b65d97ab + version: 1.15.0 + resolution: "psl@npm:1.15.0" + dependencies: + punycode: "npm:^2.3.1" + checksum: 10c0/d8d45a99e4ca62ca12ac3c373e63d80d2368d38892daa40cfddaa1eb908be98cd549ac059783ef3a56cfd96d57ae8e2fd9ae53d1378d90d42bc661ff924e102a languageName: node linkType: hard @@ -8233,9 +7805,9 @@ __metadata: linkType: hard "readdirp@npm:^4.0.1": - version: 4.0.2 - resolution: "readdirp@npm:4.0.2" - checksum: 10c0/a16ecd8ef3286dcd90648c3b103e3826db2b766cdb4a988752c43a83f683d01c7059158d623cbcd8bdfb39e65d302d285be2d208e7d9f34d022d912b929217dd + version: 4.1.2 + resolution: "readdirp@npm:4.1.2" + checksum: 10c0/60a14f7619dec48c9c850255cd523e2717001b0e179dc7037cfa0895da7b9e9ab07532d324bfb118d73a710887d1e35f79c495fa91582784493e085d18c72c62 languageName: node linkType: hard @@ -8257,42 +7829,33 @@ __metadata: languageName: node linkType: hard -"reflect.getprototypeof@npm:^1.0.6": - version: 1.0.8 - resolution: "reflect.getprototypeof@npm:1.0.8" +"reflect.getprototypeof@npm:^1.0.6, reflect.getprototypeof@npm:^1.0.9": + version: 1.0.10 + resolution: "reflect.getprototypeof@npm:1.0.10" dependencies: call-bind: "npm:^1.0.8" define-properties: "npm:^1.2.1" - dunder-proto: "npm:^1.0.0" - es-abstract: "npm:^1.23.5" + es-abstract: "npm:^1.23.9" es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.4" - gopd: "npm:^1.2.0" - which-builtin-type: "npm:^1.2.0" - checksum: 10c0/720479dd7a72a20d66efaca507ed7c7e18403d24ce764f436130464d4a516a12ed8a9a2714dcabc3e1296f9a31f914ba1095e2371619df23d3ac56c4f8c8bae1 - languageName: node - linkType: hard - -"regexp.prototype.flags@npm:^1.5.1": - version: 1.5.1 - resolution: "regexp.prototype.flags@npm:1.5.1" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - set-function-name: "npm:^2.0.0" - checksum: 10c0/1de7d214c0a726c7c874a7023e47b0e27b9f7fdb64175bfe1861189de1704aaeca05c3d26c35aa375432289b99946f3cf86651a92a8f7601b90d8c226a23bcd8 + es-object-atoms: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.7" + get-proto: "npm:^1.0.1" + which-builtin-type: "npm:^1.2.1" + checksum: 10c0/7facec28c8008876f8ab98e80b7b9cb4b1e9224353fd4756dda5f2a4ab0d30fa0a5074777c6df24e1e0af463a2697513b0a11e548d99cf52f21f7bc6ba48d3ac languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.5.3": - version: 1.5.3 - resolution: "regexp.prototype.flags@npm:1.5.3" +"regexp.prototype.flags@npm:^1.5.1, regexp.prototype.flags@npm:^1.5.3": + version: 1.5.4 + resolution: "regexp.prototype.flags@npm:1.5.4" dependencies: - call-bind: "npm:^1.0.7" + call-bind: "npm:^1.0.8" define-properties: "npm:^1.2.1" es-errors: "npm:^1.3.0" + get-proto: "npm:^1.0.1" + gopd: "npm:^1.2.0" set-function-name: "npm:^2.0.2" - checksum: 10c0/e1a7c7dc42cc91abf73e47a269c4b3a8f225321b7f617baa25821f6a123a91d23a73b5152f21872c566e699207e1135d075d2251cd3e84cc96d82a910adf6020 + checksum: 10c0/83b88e6115b4af1c537f8dabf5c3744032cb875d63bc05c288b1b8c0ef37cbe55353f95d8ca817e8843806e3e150b118bc624e4279b24b4776b4198232735a77 languageName: node linkType: hard @@ -8348,28 +7911,28 @@ __metadata: linkType: hard "resolve@npm:^1.1.7, resolve@npm:^1.20.0, resolve@npm:^1.22.4": - version: 1.22.8 - resolution: "resolve@npm:1.22.8" + version: 1.22.10 + resolution: "resolve@npm:1.22.10" dependencies: - is-core-module: "npm:^2.13.0" + is-core-module: "npm:^2.16.0" path-parse: "npm:^1.0.7" supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 10c0/07e179f4375e1fd072cfb72ad66d78547f86e6196c4014b31cb0b8bb1db5f7ca871f922d08da0fbc05b94e9fd42206f819648fa3b5b873ebbc8e1dc68fec433a + checksum: 10c0/8967e1f4e2cc40f79b7e080b4582b9a8c5ee36ffb46041dccb20e6461161adf69f843b43067b4a375de926a2cd669157e29a29578191def399dd5ef89a1b5203 languageName: node linkType: hard "resolve@patch:resolve@npm%3A^1.1.7#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin<compat/resolve>": - version: 1.22.8 - resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin<compat/resolve>::version=1.22.8&hash=c3c19d" + version: 1.22.10 + resolution: "resolve@patch:resolve@npm%3A1.22.10#optional!builtin<compat/resolve>::version=1.22.10&hash=c3c19d" dependencies: - is-core-module: "npm:^2.13.0" + is-core-module: "npm:^2.16.0" path-parse: "npm:^1.0.7" supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 10c0/0446f024439cd2e50c6c8fa8ba77eaa8370b4180f401a96abf3d1ebc770ac51c1955e12764cde449fde3fff480a61f84388e3505ecdbab778f4bef5f8212c729 + checksum: 10c0/52a4e505bbfc7925ac8f4cd91fd8c4e096b6a89728b9f46861d3b405ac9a1ccf4dcbf8befb4e89a2e11370dacd0160918163885cbc669369590f2f31f4c58939 languageName: node linkType: hard @@ -8391,9 +7954,9 @@ __metadata: linkType: hard "reusify@npm:^1.0.4": - version: 1.0.4 - resolution: "reusify@npm:1.0.4" - checksum: 10c0/c19ef26e4e188f408922c46f7ff480d38e8dfc55d448310dfb518736b23ed2c4f547fb64a6ed5bdba92cd7e7ddc889d36ff78f794816d5e71498d645ef476107 + version: 1.1.0 + resolution: "reusify@npm:1.1.0" + checksum: 10c0/4eff0d4a5f9383566c7d7ec437b671cc51b25963bd61bf127c3f3d3f68e44a026d99b8d2f1ad344afff8d278a8fe70a8ea092650a716d22287e8bef7126bb2fa languageName: node linkType: hard @@ -8408,13 +7971,6 @@ __metadata: languageName: node linkType: hard -"rrweb-cssom@npm:^0.6.0": - version: 0.6.0 - resolution: "rrweb-cssom@npm:0.6.0" - checksum: 10c0/3d9d90d53c2349ea9c8509c2690df5a4ef930c9cf8242aeb9425d4046f09d712bb01047e00da0e1c1dab5db35740b3d78fd45c3e7272f75d3724a563f27c30a3 - languageName: node - linkType: hard - "rrweb-cssom@npm:^0.7.1": version: 0.7.1 resolution: "rrweb-cssom@npm:0.7.1" @@ -8438,27 +7994,16 @@ __metadata: languageName: node linkType: hard -"safe-array-concat@npm:^1.0.1": - version: 1.0.1 - resolution: "safe-array-concat@npm:1.0.1" - dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.2.1" - has-symbols: "npm:^1.0.3" - isarray: "npm:^2.0.5" - checksum: 10c0/4b15ce5fce5ce4d7e744a63592cded88d2f27806ed229eadb2e42629cbcd40e770f7478608e75f455e7fe341acd8c0a01bdcd7146b10645ea7411c5e3c1d1dd8 - languageName: node - linkType: hard - -"safe-array-concat@npm:^1.1.2": - version: 1.1.2 - resolution: "safe-array-concat@npm:1.1.2" +"safe-array-concat@npm:^1.1.3": + version: 1.1.3 + resolution: "safe-array-concat@npm:1.1.3" dependencies: - call-bind: "npm:^1.0.7" - get-intrinsic: "npm:^1.2.4" - has-symbols: "npm:^1.0.3" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.2" + get-intrinsic: "npm:^1.2.6" + has-symbols: "npm:^1.1.0" isarray: "npm:^2.0.5" - checksum: 10c0/12f9fdb01c8585e199a347eacc3bae7b5164ae805cdc8c6707199dbad5b9e30001a50a43c4ee24dc9ea32dbb7279397850e9208a7e217f4d8b1cf5d90129dec9 + checksum: 10c0/43c86ffdddc461fb17ff8a17c5324f392f4868f3c7dd2c6a5d9f5971713bc5fd755667212c80eab9567595f9a7509cc2f83e590ddaebd1bd19b780f9c79f9a8d languageName: node linkType: hard @@ -8476,25 +8021,24 @@ __metadata: languageName: node linkType: hard -"safe-regex-test@npm:^1.0.0": +"safe-push-apply@npm:^1.0.0": version: 1.0.0 - resolution: "safe-regex-test@npm:1.0.0" + resolution: "safe-push-apply@npm:1.0.0" dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.1.3" - is-regex: "npm:^1.1.4" - checksum: 10c0/14a81a7e683f97b2d6e9c8be61fddcf8ed7a02f4e64a825515f96bb1738eb007145359313741d2704d28b55b703a0f6300c749dde7c1dbc13952a2b85048ede2 + es-errors: "npm:^1.3.0" + isarray: "npm:^2.0.5" + checksum: 10c0/831f1c9aae7436429e7862c7e46f847dfe490afac20d0ee61bae06108dbf5c745a0de3568ada30ccdd3eeb0864ca8331b2eef703abd69bfea0745b21fd320750 languageName: node linkType: hard -"safe-regex-test@npm:^1.0.3": - version: 1.0.3 - resolution: "safe-regex-test@npm:1.0.3" +"safe-regex-test@npm:^1.1.0": + version: 1.1.0 + resolution: "safe-regex-test@npm:1.1.0" dependencies: - call-bind: "npm:^1.0.6" + call-bound: "npm:^1.0.2" es-errors: "npm:^1.3.0" - is-regex: "npm:^1.1.4" - checksum: 10c0/900bf7c98dc58f08d8523b7012b468e4eb757afa624f198902c0643d7008ba777b0bdc35810ba0b758671ce887617295fb742b3f3968991b178ceca54cb07603 + is-regex: "npm:^1.2.1" + checksum: 10c0/f2c25281bbe5d39cddbbce7f86fca5ea9b3ce3354ea6cd7c81c31b006a5a9fff4286acc5450a3b9122c56c33eba69c56b9131ad751457b2b4a585825e6a10665 languageName: node linkType: hard @@ -8538,7 +8082,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.5.4, semver@npm:^7.5.4": +"semver@npm:7.5.4": version: 7.5.4 resolution: "semver@npm:7.5.4" dependencies: @@ -8558,23 +8102,12 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.3.5": - version: 7.6.0 - resolution: "semver@npm:7.6.0" - dependencies: - lru-cache: "npm:^6.0.0" - bin: - semver: bin/semver.js - checksum: 10c0/fbfe717094ace0aa8d6332d7ef5ce727259815bd8d8815700853f4faf23aacbd7192522f0dc5af6df52ef4fa85a355ebd2f5d39f554bd028200d6cf481ab9b53 - languageName: node - linkType: hard - -"semver@npm:^7.6.3": - version: 7.6.3 - resolution: "semver@npm:7.6.3" +"semver@npm:^7.3.5, semver@npm:^7.5.4, semver@npm:^7.7.1": + version: 7.7.2 + resolution: "semver@npm:7.7.2" bin: semver: bin/semver.js - checksum: 10c0/88f33e148b210c153873cb08cfe1e281d518aaa9a666d4d148add6560db5cd3c582f3a08ccb91f38d5f379ead256da9931234ed122057f40bb5766e65e58adaf + checksum: 10c0/aca305edfbf2383c22571cb7714f48cadc7ac95371b4b52362fb8eeffdfbc0de0669368b82b2b15978f8848f01d7114da65697e56cd8c37b0dab8c58e543f9ea languageName: node linkType: hard @@ -8596,19 +8129,7 @@ __metadata: languageName: node linkType: hard -"set-function-length@npm:^1.1.1": - version: 1.1.1 - resolution: "set-function-length@npm:1.1.1" - dependencies: - define-data-property: "npm:^1.1.1" - get-intrinsic: "npm:^1.2.1" - gopd: "npm:^1.0.1" - has-property-descriptors: "npm:^1.0.0" - checksum: 10c0/a29e255c116c29e3323b851c4f46c58c91be9bb8b065f191e2ea1807cb2c839df56e3175732a498e0c6d54626ba6b6fef896bf699feb7ab70c42dc47eb247c95 - languageName: node - linkType: hard - -"set-function-length@npm:^1.2.1, set-function-length@npm:^1.2.2": +"set-function-length@npm:^1.2.2": version: 1.2.2 resolution: "set-function-length@npm:1.2.2" dependencies: @@ -8622,17 +8143,6 @@ __metadata: languageName: node linkType: hard -"set-function-name@npm:^2.0.0": - version: 2.0.1 - resolution: "set-function-name@npm:2.0.1" - dependencies: - define-data-property: "npm:^1.0.1" - functions-have-names: "npm:^1.2.3" - has-property-descriptors: "npm:^1.0.0" - checksum: 10c0/6be7d3e15be47f4db8a5a563a35c60b5e7c4af91cc900e8972ffad33d3aaa227900faa55f60121cdb04b85866a734bb7fe4cd91f654c632861cc86121a48312a - languageName: node - linkType: hard - "set-function-name@npm:^2.0.2": version: 2.0.2 resolution: "set-function-name@npm:2.0.2" @@ -8645,6 +8155,17 @@ __metadata: languageName: node linkType: hard +"set-proto@npm:^1.0.0": + version: 1.0.0 + resolution: "set-proto@npm:1.0.0" + dependencies: + dunder-proto: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/ca5c3ccbba479d07c30460e367e66337cec825560b11e8ba9c5ebe13a2a0d6021ae34eddf94ff3dfe17a3104dc1f191519cb6c48378b503e5c3f36393938776a + languageName: node + linkType: hard + "setimmediate@npm:^1.0.5": version: 1.0.5 resolution: "setimmediate@npm:1.0.5" @@ -8677,14 +8198,51 @@ __metadata: languageName: node linkType: hard -"side-channel@npm:^1.0.4": - version: 1.0.4 - resolution: "side-channel@npm:1.0.4" +"side-channel-list@npm:^1.0.0": + version: 1.0.0 + resolution: "side-channel-list@npm:1.0.0" + dependencies: + es-errors: "npm:^1.3.0" + object-inspect: "npm:^1.13.3" + checksum: 10c0/644f4ac893456c9490ff388bf78aea9d333d5e5bfc64cfb84be8f04bf31ddc111a8d4b83b85d7e7e8a7b845bc185a9ad02c052d20e086983cf59f0be517d9b3d + languageName: node + linkType: hard + +"side-channel-map@npm:^1.0.1": + version: 1.0.1 + resolution: "side-channel-map@npm:1.0.1" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.5" + object-inspect: "npm:^1.13.3" + checksum: 10c0/010584e6444dd8a20b85bc926d934424bd809e1a3af941cace229f7fdcb751aada0fb7164f60c2e22292b7fa3c0ff0bce237081fd4cdbc80de1dc68e95430672 + languageName: node + linkType: hard + +"side-channel-weakmap@npm:^1.0.2": + version: 1.0.2 + resolution: "side-channel-weakmap@npm:1.0.2" dependencies: - call-bind: "npm:^1.0.0" - get-intrinsic: "npm:^1.0.2" - object-inspect: "npm:^1.9.0" - checksum: 10c0/054a5d23ee35054b2c4609b9fd2a0587760737782b5d765a9c7852264710cc39c6dcb56a9bbd6c12cd84071648aea3edb2359d2f6e560677eedadce511ac1da5 + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.5" + object-inspect: "npm:^1.13.3" + side-channel-map: "npm:^1.0.1" + checksum: 10c0/71362709ac233e08807ccd980101c3e2d7efe849edc51455030327b059f6c4d292c237f94dc0685031dd11c07dd17a68afde235d6cf2102d949567f98ab58185 + languageName: node + linkType: hard + +"side-channel@npm:^1.0.4, side-channel@npm:^1.1.0": + version: 1.1.0 + resolution: "side-channel@npm:1.1.0" + dependencies: + es-errors: "npm:^1.3.0" + object-inspect: "npm:^1.13.3" + side-channel-list: "npm:^1.0.0" + side-channel-map: "npm:^1.0.1" + side-channel-weakmap: "npm:^1.0.2" + checksum: 10c0/cb20dad41eb032e6c24c0982e1e5a24963a28aa6122b4f05b3f3d6bf8ae7fd5474ef382c8f54a6a3ab86e0cac4d41a23bd64ede3970e5bfb50326ba02a7996e6 languageName: node linkType: hard @@ -8727,24 +8285,24 @@ __metadata: languageName: node linkType: hard -"socks-proxy-agent@npm:^8.0.1": - version: 8.0.2 - resolution: "socks-proxy-agent@npm:8.0.2" +"socks-proxy-agent@npm:^8.0.3": + version: 8.0.5 + resolution: "socks-proxy-agent@npm:8.0.5" dependencies: - agent-base: "npm:^7.0.2" + agent-base: "npm:^7.1.2" debug: "npm:^4.3.4" - socks: "npm:^2.7.1" - checksum: 10c0/a842402fc9b8848a31367f2811ca3cd14c4106588b39a0901cd7a69029998adfc6456b0203617c18ed090542ad0c24ee4e9d4c75a0c4b75071e214227c177eb7 + socks: "npm:^2.8.3" + checksum: 10c0/5d2c6cecba6821389aabf18728325730504bf9bb1d9e342e7987a5d13badd7a98838cc9a55b8ed3cb866ad37cc23e1086f09c4d72d93105ce9dfe76330e9d2a6 languageName: node linkType: hard -"socks@npm:^2.7.1": - version: 2.8.1 - resolution: "socks@npm:2.8.1" +"socks@npm:^2.8.3": + version: 2.8.4 + resolution: "socks@npm:2.8.4" dependencies: ip-address: "npm:^9.0.5" smart-buffer: "npm:^4.2.0" - checksum: 10c0/ac77b515c260473cc7c4452f09b20939e22510ce3ae48385c516d1d5784374d5cc75be3cb18ff66cc985a7f4f2ef8fef84e984c5ec70aad58355ed59241f40a8 + checksum: 10c0/00c3271e233ccf1fb83a3dd2060b94cc37817e0f797a93c560b9a7a86c4a0ec2961fb31263bdd24a3c28945e24868b5f063cd98744171d9e942c513454b50ae5 languageName: node linkType: hard @@ -8755,21 +8313,7 @@ __metadata: languageName: node linkType: hard -"source-map-js@npm:^1.0.1, source-map-js@npm:^1.0.2": - version: 1.0.2 - resolution: "source-map-js@npm:1.0.2" - checksum: 10c0/32f2dfd1e9b7168f9a9715eb1b4e21905850f3b50cf02cf476e47e4eebe8e6b762b63a64357896aa29b37e24922b4282df0f492e0d2ace572b43d15525976ff8 - languageName: node - linkType: hard - -"source-map-js@npm:^1.2.0": - version: 1.2.0 - resolution: "source-map-js@npm:1.2.0" - checksum: 10c0/7e5f896ac10a3a50fe2898e5009c58ff0dc102dcb056ed27a354623a0ece8954d4b2649e1a1b2b52ef2e161d26f8859c7710350930751640e71e374fe2d321a4 - languageName: node - linkType: hard - -"source-map-js@npm:^1.2.1": +"source-map-js@npm:^1.0.1, source-map-js@npm:^1.2.1": version: 1.2.1 resolution: "source-map-js@npm:1.2.1" checksum: 10c0/7bda1fc4c197e3c6ff17de1b8b2c20e60af81b63a52cb32ec5a5d67a20a7d42651e2cb34ebe93833c5a2a084377e17455854fee3e21e7925c64a51b6a52b0faf @@ -8800,12 +8344,12 @@ __metadata: languageName: node linkType: hard -"ssri@npm:^10.0.0": - version: 10.0.5 - resolution: "ssri@npm:10.0.5" +"ssri@npm:^12.0.0": + version: 12.0.0 + resolution: "ssri@npm:12.0.0" dependencies: minipass: "npm:^7.0.3" - checksum: 10c0/b091f2ae92474183c7ac5ed3f9811457e1df23df7a7e70c9476eaa9a0c4a0c8fc190fb45acefbf023ca9ee864dd6754237a697dc52a0fb182afe65d8e77443d8 + checksum: 10c0/caddd5f544b2006e88fa6b0124d8d7b28208b83c72d7672d5ade44d794525d23b540f3396108c4eb9280dcb7c01f0bef50682f5b4b2c34291f7c5e211fd1417d languageName: node linkType: hard @@ -8819,11 +8363,12 @@ __metadata: linkType: hard "stop-iteration-iterator@npm:^1.0.0": - version: 1.0.0 - resolution: "stop-iteration-iterator@npm:1.0.0" + version: 1.1.0 + resolution: "stop-iteration-iterator@npm:1.1.0" dependencies: - internal-slot: "npm:^1.0.4" - checksum: 10c0/c4158d6188aac510d9e92925b58709207bd94699e9c31186a040c80932a687f84a51356b5895e6dc72710aad83addb9411c22171832c9ae0e6e11b7d61b0dfb9 + es-errors: "npm:^1.3.0" + internal-slot: "npm:^1.1.0" + checksum: 10c0/de4e45706bb4c0354a4b1122a2b8cc45a639e86206807ce0baf390ee9218d3ef181923fa4d2b67443367c491aa255c5fbaa64bb74648e3c5b48299928af86c09 languageName: node linkType: hard @@ -8849,59 +8394,30 @@ __metadata: languageName: node linkType: hard -"string.prototype.trim@npm:^1.2.8": - version: 1.2.8 - resolution: "string.prototype.trim@npm:1.2.8" +"string.prototype.trim@npm:^1.2.10": + version: 1.2.10 + resolution: "string.prototype.trim@npm:1.2.10" dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - checksum: 10c0/4f76c583908bcde9a71208ddff38f67f24c9ec8093631601666a0df8b52fad44dad2368c78895ce83eb2ae8e7068294cc96a02fc971ab234e4d5c9bb61ea4e34 - languageName: node - linkType: hard - -"string.prototype.trim@npm:^1.2.9": - version: 1.2.9 - resolution: "string.prototype.trim@npm:1.2.9" - dependencies: - call-bind: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.2" + define-data-property: "npm:^1.1.4" define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.0" + es-abstract: "npm:^1.23.5" es-object-atoms: "npm:^1.0.0" - checksum: 10c0/dcef1a0fb61d255778155006b372dff8cc6c4394bc39869117e4241f41a2c52899c0d263ffc7738a1f9e61488c490b05c0427faa15151efad721e1a9fb2663c2 - languageName: node - linkType: hard - -"string.prototype.trimend@npm:^1.0.7": - version: 1.0.7 - resolution: "string.prototype.trimend@npm:1.0.7" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - checksum: 10c0/53c24911c7c4d8d65f5ef5322de23a3d5b6b4db73273e05871d5ab4571ae5638f38f7f19d71d09116578fb060e5a145cc6a208af2d248c8baf7a34f44d32ce57 + has-property-descriptors: "npm:^1.0.2" + checksum: 10c0/8a8854241c4b54a948e992eb7dd6b8b3a97185112deb0037a134f5ba57541d8248dd610c966311887b6c2fd1181a3877bffb14d873ce937a344535dabcc648f8 languageName: node linkType: hard -"string.prototype.trimend@npm:^1.0.8": - version: 1.0.8 - resolution: "string.prototype.trimend@npm:1.0.8" +"string.prototype.trimend@npm:^1.0.8, string.prototype.trimend@npm:^1.0.9": + version: 1.0.9 + resolution: "string.prototype.trimend@npm:1.0.9" dependencies: - call-bind: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.2" define-properties: "npm:^1.2.1" es-object-atoms: "npm:^1.0.0" - checksum: 10c0/0a0b54c17c070551b38e756ae271865ac6cc5f60dabf2e7e343cceae7d9b02e1a1120a824e090e79da1b041a74464e8477e2da43e2775c85392be30a6f60963c - languageName: node - linkType: hard - -"string.prototype.trimstart@npm:^1.0.7": - version: 1.0.7 - resolution: "string.prototype.trimstart@npm:1.0.7" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - checksum: 10c0/0bcf391b41ea16d4fda9c9953d0a7075171fe090d33b4cf64849af94944c50862995672ac03e0c5dba2940a213ad7f53515a668dac859ce22a0276289ae5cf4f + checksum: 10c0/59e1a70bf9414cb4c536a6e31bef5553c8ceb0cf44d8b4d0ed65c9653358d1c64dd0ec203b100df83d0413bbcde38b8c5d49e14bc4b86737d74adc593a0d35b6 languageName: node linkType: hard @@ -8975,53 +8491,53 @@ __metadata: languageName: node linkType: hard -"stylelint-config-recommended@npm:^14.0.1": - version: 14.0.1 - resolution: "stylelint-config-recommended@npm:14.0.1" +"stylelint-config-recommended@npm:^16.0.0": + version: 16.0.0 + resolution: "stylelint-config-recommended@npm:16.0.0" peerDependencies: - stylelint: ^16.1.0 - checksum: 10c0/a0a0ecd91f4d193bbe2cc3408228f8a2d8fcb2b2578d77233f86780c9247c796a04e16aad7a91d97cb918e2de34b6a8062bab66ee017c3835d855081d94f4828 + stylelint: ^16.16.0 + checksum: 10c0/b2b4ea2633a606a0f686521aa5e8908810c9dd21fd4525c86b34213de1e362b445fd5472b6e5ff251d46f999e2ca2c6c704f2efc1c08d5a532084427f4e1c9d8 languageName: node linkType: hard -"stylelint-config-standard@npm:^36.0.1": - version: 36.0.1 - resolution: "stylelint-config-standard@npm:36.0.1" +"stylelint-config-standard@npm:^38.0.0": + version: 38.0.0 + resolution: "stylelint-config-standard@npm:38.0.0" dependencies: - stylelint-config-recommended: "npm:^14.0.1" + stylelint-config-recommended: "npm:^16.0.0" peerDependencies: - stylelint: ^16.1.0 - checksum: 10c0/7f9b954694358e77be5110418f31335be579ce59dd952bc3c6a9449265297db3170ec520e0905769253b48b99c3109a95c71f5b985bf402e48fd6c89b5364cb2 + stylelint: ^16.18.0 + checksum: 10c0/8b52c7b7d6287c7495a8fe3a681e07ea9478374e7e66b28d61779072d46cd5b845530b2410df7496a008a8efafe834fb46cf07792f4cf57f996e39f24a801b90 languageName: node linkType: hard -"stylelint-order@npm:^6.0.4": - version: 6.0.4 - resolution: "stylelint-order@npm:6.0.4" +"stylelint-order@npm:^7.0.0": + version: 7.0.0 + resolution: "stylelint-order@npm:7.0.0" dependencies: - postcss: "npm:^8.4.32" - postcss-sorting: "npm:^8.0.2" + postcss: "npm:^8.5.3" + postcss-sorting: "npm:^9.1.0" peerDependencies: - stylelint: ^14.0.0 || ^15.0.0 || ^16.0.1 - checksum: 10c0/9a1f6ba7ab04855462bfae28fe36ad2a297fec56f42da2f588b57295b89b72e6f517d5e35ecbcefb11fcc373f3db40f0e6a8eefb41a4d267550ac6324f12a3ca + stylelint: ^16.18.0 + checksum: 10c0/202ea7f0ce44b272f0ee8745383e347520663ef3defb9478c2dae8f33378950e32138815d038228db49383cab7b111148b9b9521e409311a91047cfc4740d507 languageName: node linkType: hard -"stylelint-prettier@npm:^5.0.2": - version: 5.0.2 - resolution: "stylelint-prettier@npm:5.0.2" +"stylelint-prettier@npm:^5.0.3": + version: 5.0.3 + resolution: "stylelint-prettier@npm:5.0.3" dependencies: prettier-linter-helpers: "npm:^1.0.0" peerDependencies: prettier: ">=3.0.0" stylelint: ">=16.0.0" - checksum: 10c0/4755471cd8c8f3d308b25c3ad5db9eb1546dea6f6ba048ca0b83e9ca58169d29456deb50cfa13198a7f7178f9b7e64fddcbb7d0dd0c59669680f5bc6432c438b + checksum: 10c0/955e647131b96e088f3ea80ef409772aff8854d9f9831ac5826b76780fc9a49e0ad0f5aac1b5e6ed714848bea85068a7ba815585ed8b9f1e4da41a29b5666e4d languageName: node linkType: hard -"stylelint@npm:^16.11.0": - version: 16.11.0 - resolution: "stylelint@npm:16.11.0" +"stylelint@npm:^16.19.1": + version: 16.19.1 + resolution: "stylelint@npm:16.19.1" dependencies: "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" @@ -9032,38 +8548,38 @@ __metadata: colord: "npm:^2.9.3" cosmiconfig: "npm:^9.0.0" css-functions-list: "npm:^3.2.3" - css-tree: "npm:^3.0.1" + css-tree: "npm:^3.1.0" debug: "npm:^4.3.7" - fast-glob: "npm:^3.3.2" + fast-glob: "npm:^3.3.3" fastest-levenshtein: "npm:^1.0.16" - file-entry-cache: "npm:^9.1.0" + file-entry-cache: "npm:^10.0.8" global-modules: "npm:^2.0.0" globby: "npm:^11.1.0" globjoin: "npm:^0.1.4" html-tags: "npm:^3.3.1" - ignore: "npm:^6.0.2" + ignore: "npm:^7.0.3" imurmurhash: "npm:^0.1.4" is-plain-object: "npm:^5.0.0" - known-css-properties: "npm:^0.35.0" + known-css-properties: "npm:^0.36.0" mathml-tag-names: "npm:^2.1.3" meow: "npm:^13.2.0" micromatch: "npm:^4.0.8" normalize-path: "npm:^3.0.0" picocolors: "npm:^1.1.1" - postcss: "npm:^8.4.49" + postcss: "npm:^8.5.3" postcss-resolve-nested-selector: "npm:^0.1.6" postcss-safe-parser: "npm:^7.0.1" - postcss-selector-parser: "npm:^7.0.0" + postcss-selector-parser: "npm:^7.1.0" postcss-value-parser: "npm:^4.2.0" resolve-from: "npm:^5.0.0" string-width: "npm:^4.2.3" - supports-hyperlinks: "npm:^3.1.0" + supports-hyperlinks: "npm:^3.2.0" svg-tags: "npm:^1.0.0" - table: "npm:^6.8.2" + table: "npm:^6.9.0" write-file-atomic: "npm:^5.0.1" bin: stylelint: bin/stylelint.mjs - checksum: 10c0/65638247fb4e5eacb032e3a98412a13ad8b343d2d58e22d61b96ada72808b5b7e736c845937b3bcfde04c0bfa2120383b507e530afe876dafe824a93c337258f + checksum: 10c0/e633f323ff730e8f2ac982067e4caa9a6c98b81a519e7adff96fa7a7d047f68a24c0dd2d81f3511b0943d99c915f20f19da911d16d47336705ea70d46e960c89 languageName: node linkType: hard @@ -9076,15 +8592,6 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^5.3.0": - version: 5.5.0 - resolution: "supports-color@npm:5.5.0" - dependencies: - has-flag: "npm:^3.0.0" - checksum: 10c0/6ae5ff319bfbb021f8a86da8ea1f8db52fac8bd4d499492e30ec17095b58af11f0c55f8577390a749b1c4dde691b6a0315dab78f5f54c9b3d83f8fb5905c1c05 - languageName: node - linkType: hard - "supports-color@npm:^7.0.0, supports-color@npm:^7.1.0": version: 7.2.0 resolution: "supports-color@npm:7.2.0" @@ -9094,13 +8601,13 @@ __metadata: languageName: node linkType: hard -"supports-hyperlinks@npm:^3.1.0": - version: 3.1.0 - resolution: "supports-hyperlinks@npm:3.1.0" +"supports-hyperlinks@npm:^3.2.0": + version: 3.2.0 + resolution: "supports-hyperlinks@npm:3.2.0" dependencies: has-flag: "npm:^4.0.0" supports-color: "npm:^7.0.0" - checksum: 10c0/78cc3e17eb27e6846fa355a8ebf343befe36272899cd409e45317a06c1997e95c23ff99d91080a517bd8c96508d4fa456e6ceb338c02ba5d7544277dbec0f10f + checksum: 10c0/bca527f38d4c45bc95d6a24225944675746c515ddb91e2456d00ae0b5c537658e9dd8155b996b191941b0c19036195a098251304b9082bbe00cd1781f3cd838e languageName: node linkType: hard @@ -9125,13 +8632,12 @@ __metadata: languageName: node linkType: hard -"synckit@npm:^0.9.1": - version: 0.9.1 - resolution: "synckit@npm:0.9.1" +"synckit@npm:^0.11.0": + version: 0.11.6 + resolution: "synckit@npm:0.11.6" dependencies: - "@pkgr/core": "npm:^0.1.0" - tslib: "npm:^2.6.2" - checksum: 10c0/d8b89e1bf30ba3ffb469d8418c836ad9c0c062bf47028406b4d06548bc66af97155ea2303b96c93bf5c7c0f0d66153a6fbd6924c76521b434e6a9898982abc2e + "@pkgr/core": "npm:^0.2.4" + checksum: 10c0/51c0e41c025b90cc68a7b304fbfe873cc77b3ddc99e92ab33fbd42f4fbd1ee65fc7d9affd8eedcac43644658399244aa521e19fb18d7b4e66898d0e2c0cc8d9b languageName: node linkType: hard @@ -9142,23 +8648,23 @@ __metadata: languageName: node linkType: hard -"table@npm:^6.8.2": - version: 6.8.2 - resolution: "table@npm:6.8.2" +"table@npm:^6.9.0": + version: 6.9.0 + resolution: "table@npm:6.9.0" dependencies: ajv: "npm:^8.0.1" lodash.truncate: "npm:^4.4.2" slice-ansi: "npm:^4.0.0" string-width: "npm:^4.2.3" strip-ansi: "npm:^6.0.1" - checksum: 10c0/f8b348af38ee34e419d8ce7306ba00671ce6f20e861ccff22555f491ba264e8416086063ce278a8d81abfa8d23b736ec2cca7ac4029b5472f63daa4b4688b803 + checksum: 10c0/35646185712bb65985fbae5975dda46696325844b78735f95faefae83e86df0a265277819a3e67d189de6e858c509b54e66ca3958ffd51bde56ef1118d455bf4 languageName: node linkType: hard "tapable@npm:^2.1.1, tapable@npm:^2.2.0": - version: 2.2.1 - resolution: "tapable@npm:2.2.1" - checksum: 10c0/bc40e6efe1e554d075469cedaba69a30eeb373552aaf41caeaaa45bf56ffacc2674261b106245bd566b35d8f3329b52d838e851ee0a852120acae26e622925c9 + version: 2.2.2 + resolution: "tapable@npm:2.2.2" + checksum: 10c0/8ad130aa705cab6486ad89e42233569a1fb1ff21af115f59cebe9f2b45e9e7995efceaa9cc5062510cdb4ec673b527924b2ab812e3579c55ad659ae92117011e languageName: node linkType: hard @@ -9175,17 +8681,17 @@ __metadata: languageName: node linkType: hard -"tar@npm:^6.1.11, tar@npm:^6.1.2": - version: 6.2.1 - resolution: "tar@npm:6.2.1" +"tar@npm:^7.4.3": + version: 7.4.3 + resolution: "tar@npm:7.4.3" dependencies: - chownr: "npm:^2.0.0" - fs-minipass: "npm:^2.0.0" - minipass: "npm:^5.0.0" - minizlib: "npm:^2.1.1" - mkdirp: "npm:^1.0.3" - yallist: "npm:^4.0.0" - checksum: 10c0/a5eca3eb50bc11552d453488344e6507156b9193efd7635e98e867fab275d527af53d8866e2370cd09dfe74378a18111622ace35af6a608e5223a7d27fe99537 + "@isaacs/fs-minipass": "npm:^4.0.0" + chownr: "npm:^3.0.0" + minipass: "npm:^7.1.2" + minizlib: "npm:^3.0.1" + mkdirp: "npm:^3.0.1" + yallist: "npm:^5.0.0" + checksum: 10c0/d4679609bb2a9b48eeaf84632b6d844128d2412b95b6de07d53d8ee8baf4ca0857c9331dfa510390a0727b550fd543d4d1a10995ad86cdf078423fbb8d99831d languageName: node linkType: hard @@ -9212,16 +8718,16 @@ __metadata: linkType: hard "terser@npm:^5.31.1, terser@npm:^5.39.0": - version: 5.39.0 - resolution: "terser@npm:5.39.0" + version: 5.39.2 + resolution: "terser@npm:5.39.2" dependencies: "@jridgewell/source-map": "npm:^0.3.3" - acorn: "npm:^8.8.2" + acorn: "npm:^8.14.0" commander: "npm:^2.20.0" source-map-support: "npm:~0.5.20" bin: terser: bin/terser - checksum: 10c0/83326545ea1aecd6261030568b6191ccfa4cb6aa61d9ea41746a52479f50017a78b77e4725fbbc207c5df841ffa66a773c5ac33636e95c7ab94fe7e0379ae5c7 + checksum: 10c0/f70462feddecf458ad2441b16b2969e0024f81c6e47207717a096cfa1d60b85e0c60a129b42c80bcb258c28ae16e4e6d875db8bb9df9be9b5bc748807c2916ba languageName: node linkType: hard @@ -9232,31 +8738,31 @@ __metadata: languageName: node linkType: hard -"tinyglobby@npm:^0.2.10": - version: 0.2.10 - resolution: "tinyglobby@npm:0.2.10" +"tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.13": + version: 0.2.13 + resolution: "tinyglobby@npm:0.2.13" dependencies: - fdir: "npm:^6.4.2" + fdir: "npm:^6.4.4" picomatch: "npm:^4.0.2" - checksum: 10c0/ce946135d39b8c0e394e488ad59f4092e8c4ecd675ef1bcd4585c47de1b325e61ec6adfbfbe20c3c2bfa6fd674c5b06de2a2e65c433f752ae170aff11793e5ef + checksum: 10c0/ef07dfaa7b26936601d3f6d999f7928a4d1c6234c5eb36896bb88681947c0d459b7ebe797022400e555fe4b894db06e922b95d0ce60cb05fd827a0a66326b18c languageName: node linkType: hard -"tldts-core@npm:^6.1.66": - version: 6.1.66 - resolution: "tldts-core@npm:6.1.66" - checksum: 10c0/8bc781d8e209db1c776d5c3b816bdd14dade27078756ce616a71760f9cf3859ac3cb251afd6687163cda434047045077d6558cb7058adef53f525611ddde061c +"tldts-core@npm:^6.1.86": + version: 6.1.86 + resolution: "tldts-core@npm:6.1.86" + checksum: 10c0/8133c29375f3f99f88fce5f4d62f6ecb9532b106f31e5423b27c1eb1b6e711bd41875184a456819ceaed5c8b94f43911b1ad57e25c6eb86e1fc201228ff7e2af languageName: node linkType: hard "tldts@npm:^6.1.32": - version: 6.1.66 - resolution: "tldts@npm:6.1.66" + version: 6.1.86 + resolution: "tldts@npm:6.1.86" dependencies: - tldts-core: "npm:^6.1.66" + tldts-core: "npm:^6.1.86" bin: tldts: bin/cli.js - checksum: 10c0/2b195dcda6b309666d24b1157f88a92167cf4b5c1504a84838a495d02c4c11c672e149924ca4ef8b087132395b6df0e651daa7e031c087105c020bccfd5574ba + checksum: 10c0/27ae7526d9d78cb97b2de3f4d102e0b4321d1ccff0648a7bb0e039ed54acbce86bacdcd9cd3c14310e519b457854e7bafbef1f529f58a1e217a737ced63f0940 languageName: node linkType: hard @@ -9297,15 +8803,6 @@ __metadata: languageName: node linkType: hard -"tr46@npm:^5.0.0": - version: 5.0.0 - resolution: "tr46@npm:5.0.0" - dependencies: - punycode: "npm:^2.3.1" - checksum: 10c0/1521b6e7bbc8adc825c4561480f9fe48eb2276c81335eed9fa610aa4c44a48a3221f78b10e5f18b875769eb3413e30efbf209ed556a17a42aa8d690df44b7bee - languageName: node - linkType: hard - "tr46@npm:^5.1.0": version: 5.1.1 resolution: "tr46@npm:5.1.1" @@ -9339,13 +8836,6 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.6.2": - version: 2.6.2 - resolution: "tslib@npm:2.6.2" - checksum: 10c0/e03a8a4271152c8b26604ed45535954c0a45296e32445b4b87f8a5abdb2421f40b59b4ca437c4346af0f28179780d604094eb64546bee2019d903d01c6c19bdb - languageName: node - linkType: hard - "tua-body-scroll-lock@npm:^1.5.3": version: 1.5.3 resolution: "tua-body-scroll-lock@npm:1.5.3" @@ -9378,13 +8868,20 @@ __metadata: languageName: node linkType: hard -"type-detect@npm:4.0.8, type-detect@npm:^4.0.0": +"type-detect@npm:4.0.8": version: 4.0.8 resolution: "type-detect@npm:4.0.8" checksum: 10c0/8fb9a51d3f365a7de84ab7f73b653534b61b622aa6800aecdb0f1095a4a646d3f5eb295322127b6573db7982afcd40ab492d038cf825a42093a58b1e1353e0bd languageName: node linkType: hard +"type-detect@npm:^4.0.0": + version: 4.1.0 + resolution: "type-detect@npm:4.1.0" + checksum: 10c0/df8157ca3f5d311edc22885abc134e18ff8ffbc93d6a9848af5b682730ca6a5a44499259750197250479c5331a8a75b5537529df5ec410622041650a7f293e2a + languageName: node + linkType: hard + "type-fest@npm:^0.20.2": version: 0.20.2 resolution: "type-fest@npm:0.20.2" @@ -9399,93 +8896,46 @@ __metadata: languageName: node linkType: hard -"typed-array-buffer@npm:^1.0.0": - version: 1.0.0 - resolution: "typed-array-buffer@npm:1.0.0" - dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.2.1" - is-typed-array: "npm:^1.1.10" - checksum: 10c0/ebad66cdf00c96b1395dffc7873169cf09801fca5954507a484f41f253feb1388d815db297b0b3bb8ce7421eac6f7ff45e2ec68450a3d68408aa4ae02fcf3a6c - languageName: node - linkType: hard - -"typed-array-buffer@npm:^1.0.2": - version: 1.0.2 - resolution: "typed-array-buffer@npm:1.0.2" +"typed-array-buffer@npm:^1.0.3": + version: 1.0.3 + resolution: "typed-array-buffer@npm:1.0.3" dependencies: - call-bind: "npm:^1.0.7" + call-bound: "npm:^1.0.3" es-errors: "npm:^1.3.0" - is-typed-array: "npm:^1.1.13" - checksum: 10c0/9e043eb38e1b4df4ddf9dde1aa64919ae8bb909571c1cc4490ba777d55d23a0c74c7d73afcdd29ec98616d91bb3ae0f705fad4421ea147e1daf9528200b562da - languageName: node - linkType: hard - -"typed-array-byte-length@npm:^1.0.0": - version: 1.0.0 - resolution: "typed-array-byte-length@npm:1.0.0" - dependencies: - call-bind: "npm:^1.0.2" - for-each: "npm:^0.3.3" - has-proto: "npm:^1.0.1" - is-typed-array: "npm:^1.1.10" - checksum: 10c0/6696435d53ce0e704ff6760c57ccc35138aec5f87859e03eb2a3246336d546feae367952dbc918116f3f0dffbe669734e3cbd8960283c2fa79aac925db50d888 - languageName: node - linkType: hard - -"typed-array-byte-length@npm:^1.0.1": - version: 1.0.1 - resolution: "typed-array-byte-length@npm:1.0.1" - dependencies: - call-bind: "npm:^1.0.7" - for-each: "npm:^0.3.3" - gopd: "npm:^1.0.1" - has-proto: "npm:^1.0.3" - is-typed-array: "npm:^1.1.13" - checksum: 10c0/fcebeffb2436c9f355e91bd19e2368273b88c11d1acc0948a2a306792f1ab672bce4cfe524ab9f51a0505c9d7cd1c98eff4235c4f6bfef6a198f6cfc4ff3d4f3 - languageName: node - linkType: hard - -"typed-array-byte-offset@npm:^1.0.0": - version: 1.0.0 - resolution: "typed-array-byte-offset@npm:1.0.0" - dependencies: - available-typed-arrays: "npm:^1.0.5" - call-bind: "npm:^1.0.2" - for-each: "npm:^0.3.3" - has-proto: "npm:^1.0.1" - is-typed-array: "npm:^1.1.10" - checksum: 10c0/4036ce007ae9752931bed3dd61e0d6de2a3e5f6a5a85a05f3adb35388d2c0728f9b1a1e638d75579f168e49c289bfb5417f00e96d4ab081f38b647fc854ff7a5 + is-typed-array: "npm:^1.1.14" + checksum: 10c0/1105071756eb248774bc71646bfe45b682efcad93b55532c6ffa4518969fb6241354e4aa62af679ae83899ec296d69ef88f1f3763657cdb3a4d29321f7b83079 languageName: node linkType: hard -"typed-array-byte-offset@npm:^1.0.2": +"typed-array-byte-length@npm:^1.0.3": version: 1.0.3 - resolution: "typed-array-byte-offset@npm:1.0.3" + resolution: "typed-array-byte-length@npm:1.0.3" dependencies: - available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.7" + call-bind: "npm:^1.0.8" for-each: "npm:^0.3.3" - gopd: "npm:^1.0.1" - has-proto: "npm:^1.0.3" - is-typed-array: "npm:^1.1.13" - reflect.getprototypeof: "npm:^1.0.6" - checksum: 10c0/5da29585f96671c0521475226d3227000b3e01d1e99208b66bb05b75c7c8f4d0e9cc2e79920f3bfbc792a00102df1daa2608a2753e3f291b671d5a80245bde5b + gopd: "npm:^1.2.0" + has-proto: "npm:^1.2.0" + is-typed-array: "npm:^1.1.14" + checksum: 10c0/6ae083c6f0354f1fce18b90b243343b9982affd8d839c57bbd2c174a5d5dc71be9eb7019ffd12628a96a4815e7afa85d718d6f1e758615151d5f35df841ffb3e languageName: node linkType: hard -"typed-array-length@npm:^1.0.4": +"typed-array-byte-offset@npm:^1.0.4": version: 1.0.4 - resolution: "typed-array-length@npm:1.0.4" + resolution: "typed-array-byte-offset@npm:1.0.4" dependencies: - call-bind: "npm:^1.0.2" + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.8" for-each: "npm:^0.3.3" - is-typed-array: "npm:^1.1.9" - checksum: 10c0/c5163c0103d07fefc8a2ad0fc151f9ca9a1f6422098c00f695d55f9896e4d63614cd62cf8d8a031c6cee5f418e8980a533796597174da4edff075b3d275a7e23 + gopd: "npm:^1.2.0" + has-proto: "npm:^1.2.0" + is-typed-array: "npm:^1.1.15" + reflect.getprototypeof: "npm:^1.0.9" + checksum: 10c0/3d805b050c0c33b51719ee52de17c1cd8e6a571abdf0fffb110e45e8dd87a657e8b56eee94b776b13006d3d347a0c18a730b903cf05293ab6d92e99ff8f77e53 languageName: node linkType: hard -"typed-array-length@npm:^1.0.6": +"typed-array-length@npm:^1.0.7": version: 1.0.7 resolution: "typed-array-length@npm:1.0.7" dependencies: @@ -9499,54 +8949,47 @@ __metadata: languageName: node linkType: hard -"unbox-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "unbox-primitive@npm:1.0.2" +"unbox-primitive@npm:^1.1.0": + version: 1.1.0 + resolution: "unbox-primitive@npm:1.1.0" dependencies: - call-bind: "npm:^1.0.2" + call-bound: "npm:^1.0.3" has-bigints: "npm:^1.0.2" - has-symbols: "npm:^1.0.3" - which-boxed-primitive: "npm:^1.0.2" - checksum: 10c0/81ca2e81134167cc8f75fa79fbcc8a94379d6c61de67090986a2273850989dd3bae8440c163121b77434b68263e34787a675cbdcb34bb2f764c6b9c843a11b66 - languageName: node - linkType: hard - -"underscore@npm:>=1.8.3": - version: 1.13.6 - resolution: "underscore@npm:1.13.6" - checksum: 10c0/5f57047f47273044c045fddeb8b141dafa703aa487afd84b319c2495de2e685cecd0b74abec098292320d518b267c0c4598e45aa47d4c3628d0d4020966ba521 + has-symbols: "npm:^1.1.0" + which-boxed-primitive: "npm:^1.1.1" + checksum: 10c0/7dbd35ab02b0e05fe07136c72cb9355091242455473ec15057c11430129bab38b7b3624019b8778d02a881c13de44d63cd02d122ee782fb519e1de7775b5b982 languageName: node linkType: hard -"underscore@npm:~1.13.7": +"underscore@npm:>=1.8.3, underscore@npm:~1.13.7": version: 1.13.7 resolution: "underscore@npm:1.13.7" checksum: 10c0/fad2b4aac48847674aaf3c30558f383399d4fdafad6dd02dd60e4e1b8103b52c5a9e5937e0cc05dacfd26d6a0132ed0410ab4258241240757e4a4424507471cd languageName: node linkType: hard -"undici-types@npm:~5.26.4": - version: 5.26.5 - resolution: "undici-types@npm:5.26.5" - checksum: 10c0/bb673d7876c2d411b6eb6c560e0c571eef4a01c1c19925175d16e3a30c4c428181fb8d7ae802a261f283e4166a0ac435e2f505743aa9e45d893f9a3df017b501 +"undici-types@npm:~6.21.0": + version: 6.21.0 + resolution: "undici-types@npm:6.21.0" + checksum: 10c0/c01ed51829b10aa72fc3ce64b747f8e74ae9b60eafa19a7b46ef624403508a54c526ffab06a14a26b3120d055e1104d7abe7c9017e83ced038ea5cf52f8d5e04 languageName: node linkType: hard -"unique-filename@npm:^3.0.0": - version: 3.0.0 - resolution: "unique-filename@npm:3.0.0" +"unique-filename@npm:^4.0.0": + version: 4.0.0 + resolution: "unique-filename@npm:4.0.0" dependencies: - unique-slug: "npm:^4.0.0" - checksum: 10c0/6363e40b2fa758eb5ec5e21b3c7fb83e5da8dcfbd866cc0c199d5534c42f03b9ea9ab069769cc388e1d7ab93b4eeef28ef506ab5f18d910ef29617715101884f + unique-slug: "npm:^5.0.0" + checksum: 10c0/38ae681cceb1408ea0587b6b01e29b00eee3c84baee1e41fd5c16b9ed443b80fba90c40e0ba69627e30855570a34ba8b06702d4a35035d4b5e198bf5a64c9ddc languageName: node linkType: hard -"unique-slug@npm:^4.0.0": - version: 4.0.0 - resolution: "unique-slug@npm:4.0.0" +"unique-slug@npm:^5.0.0": + version: 5.0.0 + resolution: "unique-slug@npm:5.0.0" dependencies: imurmurhash: "npm:^0.1.4" - checksum: 10c0/cb811d9d54eb5821b81b18205750be84cb015c20a4a44280794e915f5a0a70223ce39066781a354e872df3572e8155c228f43ff0cce94c7cbf4da2cc7cbdd635 + checksum: 10c0/d324c5a44887bd7e105ce800fcf7533d43f29c48757ac410afd42975de82cc38ea2035c0483f4de82d186691bf3208ef35c644f73aa2b1b20b8e651be5afd293 languageName: node linkType: hard @@ -9564,45 +9007,17 @@ __metadata: languageName: node linkType: hard -"update-browserslist-db@npm:^1.0.13": - version: 1.0.13 - resolution: "update-browserslist-db@npm:1.0.13" - dependencies: - escalade: "npm:^3.1.1" - picocolors: "npm:^1.0.0" - peerDependencies: - browserslist: ">= 4.21.0" - bin: - update-browserslist-db: cli.js - checksum: 10c0/e52b8b521c78ce1e0c775f356cd16a9c22c70d25f3e01180839c407a5dc787fb05a13f67560cbaf316770d26fa99f78f1acd711b1b54a4f35d4820d4ea7136e6 - languageName: node - linkType: hard - -"update-browserslist-db@npm:^1.1.0": - version: 1.1.0 - resolution: "update-browserslist-db@npm:1.1.0" - dependencies: - escalade: "npm:^3.1.2" - picocolors: "npm:^1.0.1" - peerDependencies: - browserslist: ">= 4.21.0" - bin: - update-browserslist-db: cli.js - checksum: 10c0/a7452de47785842736fb71547651c5bbe5b4dc1e3722ccf48a704b7b34e4dcf633991eaa8e4a6a517ffb738b3252eede3773bef673ef9021baa26b056d63a5b9 - languageName: node - linkType: hard - -"update-browserslist-db@npm:^1.1.1": - version: 1.1.1 - resolution: "update-browserslist-db@npm:1.1.1" +"update-browserslist-db@npm:^1.1.3": + version: 1.1.3 + resolution: "update-browserslist-db@npm:1.1.3" dependencies: escalade: "npm:^3.2.0" - picocolors: "npm:^1.1.0" + picocolors: "npm:^1.1.1" peerDependencies: browserslist: ">= 4.21.0" bin: update-browserslist-db: cli.js - checksum: 10c0/536a2979adda2b4be81b07e311bd2f3ad5e978690987956bc5f514130ad50cac87cd22c710b686d79731e00fbee8ef43efe5fcd72baa241045209195d43dcc80 + checksum: 10c0/682e8ecbf9de474a626f6462aa85927936cdd256fe584c6df2508b0df9f7362c44c957e9970df55dfe44d3623807d26316ea2c7d26b80bb76a16c56c37233c32 languageName: node linkType: hard @@ -9655,10 +9070,10 @@ __metadata: languageName: node linkType: hard -"vscode-uri@npm:^3.0.8": - version: 3.0.8 - resolution: "vscode-uri@npm:3.0.8" - checksum: 10c0/f7f217f526bf109589969fe6e66b71e70b937de1385a1d7bb577ca3ee7c5e820d3856a86e9ff2fa9b7a0bc56a3dd8c3a9a557d3fedd7df414bc618d5e6b567f9 +"vscode-uri@npm:^3.1.0": + version: 3.1.0 + resolution: "vscode-uri@npm:3.1.0" + checksum: 10c0/5f6c9c10fd9b1664d71fab4e9fbbae6be93c7f75bb3a1d9d74399a88ab8649e99691223fd7cef4644376cac6e94fa2c086d802521b9a8e31c5af3e60f0f35624 languageName: node linkType: hard @@ -9672,12 +9087,12 @@ __metadata: linkType: hard "watchpack@npm:^2.4.1": - version: 2.4.1 - resolution: "watchpack@npm:2.4.1" + version: 2.4.4 + resolution: "watchpack@npm:2.4.4" dependencies: glob-to-regexp: "npm:^0.4.1" graceful-fs: "npm:^4.1.2" - checksum: 10c0/c694de0a61004e587a8a0fdc9cfec20ee692c52032d9ab2c2e99969a37fdab9e6e1bd3164ed506f9a13f7c83e65563d563e0d6b87358470cdb7309b83db78683 + checksum: 10c0/6c0901f75ce245d33991225af915eea1c5ae4ba087f3aee2b70dd377d4cacb34bef02a48daf109da9d59b2d31ec6463d924a0d72f8618ae1643dd07b95de5275 languageName: node linkType: hard @@ -9746,8 +9161,8 @@ __metadata: linkType: hard "webpack@npm:^5.99.8": - version: 5.99.8 - resolution: "webpack@npm:5.99.8" + version: 5.99.9 + resolution: "webpack@npm:5.99.9" dependencies: "@types/eslint-scope": "npm:^3.7.7" "@types/estree": "npm:^1.0.6" @@ -9778,7 +9193,7 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: 10c0/c4852c3b795ed3fba799d2925802a4e259b2de7c2c597f0aaf0e228acfdc6755389ed8c29f1dad86610a9c6ad968c0b57c702b93891d60f09d302af63b2debe0 + checksum: 10c0/34ec3f19b50bccaf27929e5e5b901b25047f2d414acba7d0967dc98eb4f404d107fb1a4b63095edbca2b006ff5815f1720b131e10b20664b074dfc86b7ffa717 languageName: node linkType: hard @@ -9798,17 +9213,7 @@ __metadata: languageName: node linkType: hard -"whatwg-url@npm:^14.0.0": - version: 14.0.0 - resolution: "whatwg-url@npm:14.0.0" - dependencies: - tr46: "npm:^5.0.0" - webidl-conversions: "npm:^7.0.0" - checksum: 10c0/ac32e9ba9d08744605519bbe9e1371174d36229689ecc099157b6ba102d4251a95e81d81f3d80271eb8da182eccfa65653f07f0ab43ea66a6934e643fd091ba9 - languageName: node - linkType: hard - -"whatwg-url@npm:^14.1.1": +"whatwg-url@npm:^14.0.0, whatwg-url@npm:^14.1.1": version: 14.2.0 resolution: "whatwg-url@npm:14.2.0" dependencies: @@ -9818,37 +9223,37 @@ __metadata: languageName: node linkType: hard -"which-boxed-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "which-boxed-primitive@npm:1.0.2" +"which-boxed-primitive@npm:^1.0.2, which-boxed-primitive@npm:^1.1.0, which-boxed-primitive@npm:^1.1.1": + version: 1.1.1 + resolution: "which-boxed-primitive@npm:1.1.1" dependencies: - is-bigint: "npm:^1.0.1" - is-boolean-object: "npm:^1.1.0" - is-number-object: "npm:^1.0.4" - is-string: "npm:^1.0.5" - is-symbol: "npm:^1.0.3" - checksum: 10c0/0a62a03c00c91dd4fb1035b2f0733c341d805753b027eebd3a304b9cb70e8ce33e25317add2fe9b5fea6f53a175c0633ae701ff812e604410ddd049777cd435e + is-bigint: "npm:^1.1.0" + is-boolean-object: "npm:^1.2.1" + is-number-object: "npm:^1.1.1" + is-string: "npm:^1.1.1" + is-symbol: "npm:^1.1.1" + checksum: 10c0/aceea8ede3b08dede7dce168f3883323f7c62272b49801716e8332ff750e7ae59a511ae088840bc6874f16c1b7fd296c05c949b0e5b357bfe3c431b98c417abe languageName: node linkType: hard -"which-builtin-type@npm:^1.2.0": - version: 1.2.0 - resolution: "which-builtin-type@npm:1.2.0" +"which-builtin-type@npm:^1.2.1": + version: 1.2.1 + resolution: "which-builtin-type@npm:1.2.1" dependencies: - call-bind: "npm:^1.0.7" + call-bound: "npm:^1.0.2" function.prototype.name: "npm:^1.1.6" has-tostringtag: "npm:^1.0.2" is-async-function: "npm:^2.0.0" - is-date-object: "npm:^1.0.5" + is-date-object: "npm:^1.1.0" is-finalizationregistry: "npm:^1.1.0" is-generator-function: "npm:^1.0.10" - is-regex: "npm:^1.1.4" + is-regex: "npm:^1.2.1" is-weakref: "npm:^1.0.2" isarray: "npm:^2.0.5" - which-boxed-primitive: "npm:^1.0.2" + which-boxed-primitive: "npm:^1.1.0" which-collection: "npm:^1.0.2" - which-typed-array: "npm:^1.1.15" - checksum: 10c0/7cd4a8ccfa6a3cb7c2296c716e7266b9f31a66f3e131fe7b185232c16d3ad21442046ec1798c4ec1e19dce7eb99c7751377192e5e734dc07042d14ec0f09b332 + which-typed-array: "npm:^1.1.16" + checksum: 10c0/8dcf323c45e5c27887800df42fbe0431d0b66b1163849bb7d46b5a730ad6a96ee8bfe827d078303f825537844ebf20c02459de41239a0a9805e2fcb3cae0d471 languageName: node linkType: hard @@ -9864,29 +9269,18 @@ __metadata: languageName: node linkType: hard -"which-typed-array@npm:^1.1.11, which-typed-array@npm:^1.1.13": - version: 1.1.13 - resolution: "which-typed-array@npm:1.1.13" - dependencies: - available-typed-arrays: "npm:^1.0.5" - call-bind: "npm:^1.0.4" - for-each: "npm:^0.3.3" - gopd: "npm:^1.0.1" - has-tostringtag: "npm:^1.0.0" - checksum: 10c0/9f5f1c42918df3d5b91c4315ed0051d5d874370998bf095c9ae0df374f0881f85094e3c384b8fb08ab7b4d4f54ba81c0aff75da6226e7c0589b83dfbec1cd4c9 - languageName: node - linkType: hard - -"which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15": - version: 1.1.16 - resolution: "which-typed-array@npm:1.1.16" +"which-typed-array@npm:^1.1.13, which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.18": + version: 1.1.19 + resolution: "which-typed-array@npm:1.1.19" dependencies: available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.7" - for-each: "npm:^0.3.3" - gopd: "npm:^1.0.1" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.4" + for-each: "npm:^0.3.5" + get-proto: "npm:^1.0.1" + gopd: "npm:^1.2.0" has-tostringtag: "npm:^1.0.2" - checksum: 10c0/a9075293200db4fbce7c24d52731843542c5a19edfc66e31aa2cbefa788b5caa7ef05008f6e60d2c38d8198add6b92d0ddc2937918c5c308be398b1ebd8721af + checksum: 10c0/702b5dc878addafe6c6300c3d0af5983b175c75fcb4f2a72dfc3dd38d93cf9e89581e4b29c854b16ea37e50a7d7fca5ae42ece5c273d8060dcd603b2404bbb3f languageName: node linkType: hard @@ -9912,14 +9306,14 @@ __metadata: languageName: node linkType: hard -"which@npm:^4.0.0": - version: 4.0.0 - resolution: "which@npm:4.0.0" +"which@npm:^5.0.0": + version: 5.0.0 + resolution: "which@npm:5.0.0" dependencies: isexe: "npm:^3.1.1" bin: node-which: bin/which.js - checksum: 10c0/449fa5c44ed120ccecfe18c433296a4978a7583bf2391c50abce13f76878d2476defde04d0f79db8165bdf432853c1f8389d0485ca6e8ebce3bbcded513d5e6a + checksum: 10c0/e556e4cd8b7dbf5df52408c9a9dd5ac6518c8c5267c8953f5b0564073c66ed5bf9503b14d876d0e9c7844d4db9725fb0dcf45d6e911e17e26ab363dc3965ae7b languageName: node linkType: hard @@ -9939,6 +9333,13 @@ __metadata: languageName: node linkType: hard +"word-wrap@npm:^1.2.5": + version: 1.2.5 + resolution: "word-wrap@npm:1.2.5" + checksum: 10c0/e0e4a1ca27599c92a6ca4c32260e8a92e8a44f4ef6ef93f803f8ed823f486e0889fc0b93be4db59c8d51b3064951d25e43d434e95dc8c960cc3a63d65d00ba20 + languageName: node + linkType: hard + "workerpool@npm:6.2.1": version: 6.2.1 resolution: "workerpool@npm:6.2.1" @@ -9986,8 +9387,8 @@ __metadata: linkType: hard "ws@npm:^8.18.0": - version: 8.18.0 - resolution: "ws@npm:8.18.0" + version: 8.18.2 + resolution: "ws@npm:8.18.2" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -9996,7 +9397,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 10c0/25eb33aff17edcb90721ed6b0eb250976328533ad3cd1a28a274bd263682e7296a6591ff1436d6cbc50fa67463158b062f9d1122013b361cec99a05f84680e06 + checksum: 10c0/4b50f67931b8c6943c893f59c524f0e4905bbd183016cfb0f2b8653aa7f28dad4e456b9d99d285bbb67cca4fedd9ce90dfdfaa82b898a11414ebd66ee99141e4 languageName: node linkType: hard @@ -10044,30 +9445,29 @@ __metadata: languageName: node linkType: hard +"yallist@npm:^5.0.0": + version: 5.0.0 + resolution: "yallist@npm:5.0.0" + checksum: 10c0/a499c81ce6d4a1d260d4ea0f6d49ab4da09681e32c3f0472dee16667ed69d01dae63a3b81745a24bd78476ec4fcf856114cb4896ace738e01da34b2c42235416 + languageName: node + linkType: hard + "yaml-eslint-parser@npm:^1.2.1": - version: 1.2.2 - resolution: "yaml-eslint-parser@npm:1.2.2" + version: 1.3.0 + resolution: "yaml-eslint-parser@npm:1.3.0" dependencies: eslint-visitor-keys: "npm:^3.0.0" - lodash: "npm:^4.17.21" yaml: "npm:^2.0.0" - checksum: 10c0/cd3908a2715626cf15d9a76e8d6192133e3a321cae4c396b36c366641b9b5b3cb8e6d426efbc0db1319aa0b16f1f512f23763e9709bc94ae63d1eb88103ae242 - languageName: node - linkType: hard - -"yaml@npm:^2.0.0": - version: 2.3.4 - resolution: "yaml@npm:2.3.4" - checksum: 10c0/cf03b68f8fef5e8516b0f0b54edaf2459f1648317fc6210391cf606d247e678b449382f4bd01f77392538429e306c7cba8ff46ff6b37cac4de9a76aff33bd9e1 + checksum: 10c0/160a8dcb97e65e08de85069898379fbecad85838384797df9695f4cb51e48a195e57b3f3fc5abb35eec7c8d1329c3b7b92b12999f5f20c314d9a7d8d549de105 languageName: node linkType: hard -"yaml@npm:^2.6.1": - version: 2.6.1 - resolution: "yaml@npm:2.6.1" +"yaml@npm:^2.0.0, yaml@npm:^2.7.1": + version: 2.8.0 + resolution: "yaml@npm:2.8.0" bin: yaml: bin.mjs - checksum: 10c0/aebf07f61c72b38c74d2b60c3a3ccf89ee4da45bcd94b2bfb7899ba07a5257625a7c9f717c65a6fc511563d48001e01deb1d9e55f0133f3e2edf86039c8c1be7 + checksum: 10c0/f6f7310cf7264a8107e72c1376f4de37389945d2fb4656f8060eca83f01d2d703f9d1b925dd8f39852a57034fafefde6225409ddd9f22aebfda16c6141b71858 languageName: node linkType: hard |