Merge branch 'QA_5_2'

Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
This commit is contained in:
Maurício Meneghini Fauth 2022-03-11 14:26:19 -03:00
commit c0941401c1
No known key found for this signature in database
GPG Key ID: 6A16FD38AFC89CC8
17 changed files with 284 additions and 87 deletions

View File

@ -38,6 +38,9 @@ phpMyAdmin - ChangeLog
- issue #16769 Fix create index form accepting too many columns
- issue #16816 Disable editing to system schemas
- issue #16853 Add better error handling when IndexedDB is not working
- issue Fixed incorrect escaping of special MySQL characters on some pages
- issue #17188 Fix GIS visualization with an edited query
- issue #17418 Remove the use of the deprecated `strftime` function in OpenDocument exports
5.1.3 (2022-02-10)
- issue #17308 Fix broken pagination links in the navigation sidebar

View File

@ -93,7 +93,7 @@
"php-webdriver/webdriver": "^1.11",
"phpmyadmin/coding-standard": "^3.0.0",
"phpstan/extension-installer": "^1.1",
"phpstan/phpstan": "^1.4.5",
"phpstan/phpstan": "^1.4.8",
"phpstan/phpstan-phpunit": "^1.0",
"phpstan/phpstan-webmozart-assert": "^1.0",
"phpunit/phpunit": "^8.5 || ^9.5",
@ -102,7 +102,7 @@
"roave/security-advisories": "dev-latest",
"symfony/console": "^5.2.3",
"tecnickcom/tcpdf": "^6.4.4",
"vimeo/psalm": "^4.19"
"vimeo/psalm": "^4.22"
},
"extra": {
"branch-alias": {
@ -110,19 +110,22 @@
}
},
"scripts": {
"phpcbf": "phpcbf",
"phpcs": "phpcs",
"phpstan": "phpstan analyse",
"psalm": "psalm --no-diff",
"phpunit": "phpunit --color=always",
"phpcbf": "@php phpcbf",
"phpcs": "@php phpcs",
"phpstan": "@php phpstan analyse",
"psalm": "@php psalm --no-diff",
"phpunit": "@php phpunit --color=always",
"test": [
"@phpcs",
"@phpstan",
"@psalm",
"@phpunit"
],
"update:baselines": "phpstan analyse --generate-baseline && psalm --set-baseline=psalm-baseline.xml",
"twig-lint": "php scripts/console lint:twig --ansi --show-deprecations"
"update:baselines": [
"@php phpstan analyse --generate-baseline",
"@php psalm --set-baseline=psalm-baseline.xml"
],
"twig-lint": "@php scripts/console lint:twig --ansi --show-deprecations"
},
"config":{
"sort-packages": true,

View File

@ -10,7 +10,6 @@ namespace PhpMyAdmin\Config;
use PhpMyAdmin\Sanitize;
use function __;
use function htmlspecialchars;
use function sprintf;
use function str_replace;
@ -653,10 +652,7 @@ class Descriptions
'DisplayServersList_name' => __('Display servers as a list'),
'DisableMultiTableMaintenance_name' => __('Disable multi table maintenance'),
'ExecTimeLimit_name' => __('Maximum execution time'),
'Export_lock_tables_name' => sprintf(
__('Use %s statement'),
htmlspecialchars('<code>LOCK TABLES</code>')
),
'Export_lock_tables_name' => __('Use [code]LOCK TABLES[/code] statement'),
'Export_asfile_name' => __('Save as file'),
'Export_charset_name' => __('Character set of the file'),
'Export_codegen_format_name' => __('Format'),

View File

@ -54,6 +54,7 @@ use function stripos;
use function strlen;
use function strtolower;
use function strtoupper;
use function strtr;
use function substr;
use function syslog;
use function trigger_error;
@ -505,9 +506,7 @@ class DatabaseInterface implements DbalInterface
) . '\')';
} else {
$sql .= " `Name` LIKE '"
. Util::escapeMysqlWildcards(
$this->escapeString($table, $link)
)
. $this->escapeMysqlLikeString($table, $link)
. "%'";
}
@ -904,7 +903,7 @@ class DatabaseInterface implements DbalInterface
$sql = QueryGenerator::getColumnsSql(
$database,
$table,
Util::escapeMysqlWildcards($this->escapeString($column)),
$this->escapeMysqlLikeString($column),
$full
);
/** @var array<string, array> $fields */
@ -2132,6 +2131,19 @@ class DatabaseInterface implements DbalInterface
return $this->extension->escapeString($this->links[$link], $str);
}
/**
* returns properly escaped string for use in MySQL LIKE clauses
*
* @param string $str string to be escaped
* @param int $link optional database link to use
*
* @return string a MySQL escaped LIKE string
*/
public function escapeMysqlLikeString(string $str, int $link = self::CONNECT_USER)
{
return $this->escapeString(strtr($str, ['\\' => '\\\\', '_' => '\\_', '%' => '\\%']), $link);
}
/**
* Checks if this database server is running on Amazon RDS.
*/

View File

@ -634,6 +634,16 @@ interface DbalInterface
*/
public function escapeString(string $str, $link = DatabaseInterface::CONNECT_USER);
/**
* returns properly escaped string for use in MySQL LIKE clauses
*
* @param string $str string to be escaped
* @param int $link optional database link to use
*
* @return string a MySQL escaped LIKE string
*/
public function escapeMysqlLikeString(string $str, int $link = DatabaseInterface::CONNECT_USER);
/**
* Checks if this database server is running on Amazon RDS.
*/

View File

@ -25,6 +25,7 @@ use function mb_strtolower;
use function mb_substr;
use function ob_get_clean;
use function ob_start;
use function rtrim;
use const PNG_ALL_FILTERS;
@ -220,7 +221,7 @@ class GisVisualization
. ') AS ' . Util::backquote('srid') . ' ';
// Append the original query as the inner query
$modified_query .= 'FROM (' . $sql_query . ') AS '
$modified_query .= 'FROM (' . rtrim($sql_query, ';') . ') AS '
. Util::backquote('temp_gis');
// LIMIT clause

View File

@ -7,10 +7,12 @@ declare(strict_types=1);
namespace PhpMyAdmin;
use function date;
use DateTime;
use const DATE_W3C;
/**
* Simplfied OpenDocument creator class
* Simplified OpenDocument creator class
*/
class OpenDocument
{
@ -33,6 +35,9 @@ EOT;
*/
public static function create($mime, $data)
{
// Use the same date method as other PHP libs
// https://github.com/PHPOffice/PhpSpreadsheet/blob/1.22.0/src/PhpSpreadsheet/Writer/Ods/Meta.php#L49
$dateTimeCreation = (new DateTime())->format(DATE_W3C);
$data = [
$mime,
$data,
@ -45,7 +50,7 @@ EOT;
. '<meta:generator>phpMyAdmin ' . Version::VERSION . '</meta:generator>'
. '<meta:initial-creator>phpMyAdmin ' . Version::VERSION
. '</meta:initial-creator>'
. '<meta:creation-date>' . date('Y-m-d\TH:i:s')
. '<meta:creation-date>' . $dateTimeCreation
. '</meta:creation-date>'
. '</office:meta>'
. '</office:document-meta>',

View File

@ -3348,9 +3348,7 @@ class Privileges
if ($createDb1) {
// Create database with same name and grant all privileges
$query = 'CREATE DATABASE IF NOT EXISTS '
. Util::backquote(
$this->dbi->escapeString($username)
) . ';';
. Util::backquote($username) . ';';
$sqlQuery .= $query;
if (! $this->dbi->tryQuery($query)) {
$message = Message::rawError($this->dbi->getError());
@ -3364,9 +3362,7 @@ class Privileges
$query = 'GRANT ALL PRIVILEGES ON '
. Util::backquote(
Util::escapeMysqlWildcards(
$this->dbi->escapeString($username)
)
Util::escapeMysqlWildcards($username)
) . '.* TO \''
. $this->dbi->escapeString($username)
. '\'@\'' . $this->dbi->escapeString($hostname) . '\';';
@ -3380,9 +3376,7 @@ class Privileges
// Grant all privileges on wildcard name (username\_%)
$query = 'GRANT ALL PRIVILEGES ON '
. Util::backquote(
Util::escapeMysqlWildcards(
$this->dbi->escapeString($username)
) . '\_%'
Util::escapeMysqlWildcards($username) . '\_%'
) . '.* TO \''
. $this->dbi->escapeString($username)
. '\'@\'' . $this->dbi->escapeString($hostname) . '\';';

View File

@ -2274,8 +2274,8 @@ class Util
&& is_scalar($_REQUEST['tbl_group'])
&& strlen((string) $_REQUEST['tbl_group']) > 0
) {
$group = self::escapeMysqlWildcards((string) $_REQUEST['tbl_group']);
$groupWithSeparator = self::escapeMysqlWildcards(
$group = $GLOBALS['dbi']->escapeMysqlLikeString((string) $_REQUEST['tbl_group']);
$groupWithSeparator = $GLOBALS['dbi']->escapeMysqlLikeString(
$_REQUEST['tbl_group']
. $GLOBALS['cfg']['NavigationTreeTableSeparator']
);

View File

@ -18,6 +18,7 @@
<exclude-pattern>*/tmp/*</exclude-pattern>
<exclude-pattern>*/twig-templates/*</exclude-pattern>
<exclude-pattern>*/vendor/*</exclude-pattern>
<exclude-pattern>*/.git/*</exclude-pattern>
<rule ref="PhpMyAdmin"/>

View File

@ -2590,6 +2590,11 @@ parameters:
count: 2
path: libraries/classes/DatabaseInterface.php
-
message: "#^Parameter \\#2 \\$link of method PhpMyAdmin\\\\DatabaseInterface\\:\\:escapeMysqlLikeString\\(\\) expects int, mixed given\\.$#"
count: 1
path: libraries/classes/DatabaseInterface.php
-
message: "#^Parameter \\#2 \\$table of method PhpMyAdmin\\\\Query\\\\Cache\\:\\:cacheTableData\\(\\) expects bool\\|string, array\\|string given\\.$#"
count: 1

View File

@ -5763,7 +5763,7 @@
<InvalidReturnType occurrences="1">
<code>int|bool</code>
</InvalidReturnType>
<MixedArgument occurrences="50">
<MixedArgument occurrences="51">
<code>$_SERVER['SCRIPT_NAME']</code>
<code>$a</code>
<code>$arrayKeys</code>
@ -5786,6 +5786,7 @@
<code>$link</code>
<code>$link</code>
<code>$link</code>
<code>$link</code>
<code>$oneDatabaseTables</code>
<code>$oneDatabaseTables</code>
<code>$oneTableName</code>
@ -15689,12 +15690,16 @@
</NonInvariantDocblockPropertyType>
</file>
<file src="test/classes/Gis/GisVisualizationTest.php">
<MixedAssignment occurrences="5">
<MixedAssignment occurrences="9">
<code>$dataSet</code>
<code>$queryString</code>
<code>$queryString</code>
<code>$queryString</code>
<code>$queryString</code>
<code>$queryString</code>
<code>$queryString</code>
<code>$queryString</code>
<code>$queryString</code>
</MixedAssignment>
</file>
<file src="test/classes/GitTest.php">
@ -16003,6 +16008,14 @@
<code>assertIsArray</code>
</RedundantConditionGivenDocblockType>
</file>
<file src="test/classes/OpenDocumentTest.php">
<MixedArgument occurrences="1">
<code>$zipExtension-&gt;getContents($tmpFile, '/meta\.xml/')['data']</code>
</MixedArgument>
<RedundantConditionGivenDocblockType occurrences="1">
<code>assertNotFalse</code>
</RedundantConditionGivenDocblockType>
</file>
<file src="test/classes/PdfTest.php">
<MixedArgument occurrences="3">
<code>$arr-&gt;getPDFData()</code>

View File

@ -188,6 +188,7 @@ cleanup_composer_vendors() {
vendor/twig/twig/.editorconfig \
vendor/twig/twig/.php_cs.dist \
vendor/twig/twig/drupal_test.sh \
vendor/twig/twig/.php-cs-fixer.dist.php \
vendor/webmozart/assert/.editorconfig \
vendor/webmozart/assert/.github/ \
vendor/webmozart/assert/.php_cs \

View File

@ -131,6 +131,106 @@ class GisVisualizationTest extends AbstractTestCase
);
}
/**
* Modify the query for an MySQL 8.0 version and trim the SQL end character
*/
public function testModifyQueryTrimSqlEnd(): void
{
$queryString = $this->callFunction(
GisVisualization::getByData([], [
'mysqlVersion' => 80000,
'spatialColumn' => 'abc',
'isMariaDB' => false,
]),
GisVisualization::class,
'modifySqlQuery',
[
'SELECT 1 FROM foo;',
0,
0,
]
);
$this->assertEquals(
'SELECT ST_ASTEXT(`abc`) AS `abc`, ST_SRID(`abc`) AS `srid` FROM (SELECT 1 FROM foo) AS `temp_gis`',
$queryString
);
}
/**
* Modify the query for an MySQL 8.0 version using a label column
*/
public function testModifyQueryLabelColumn(): void
{
$queryString = $this->callFunction(
GisVisualization::getByData([], [
'mysqlVersion' => 80000,
'spatialColumn' => 'country_geom',
'labelColumn' => 'country name',
'isMariaDB' => false,
]),
GisVisualization::class,
'modifySqlQuery',
[
'',
0,
0,
]
);
$this->assertEquals(
'SELECT `country name`, ST_ASTEXT(`country_geom`) AS `country_geom`,'
. ' ST_SRID(`country_geom`) AS `srid` FROM () AS `temp_gis`',
$queryString
);
}
/**
* Modify the query for an MySQL 8.0 version adding a LIMIT statement
*/
public function testModifyQueryWithLimit(): void
{
$queryString = $this->callFunction(
GisVisualization::getByData([], [
'mysqlVersion' => 80000,
'spatialColumn' => 'abc',
'isMariaDB' => false,
]),
GisVisualization::class,
'modifySqlQuery',
[
'',
10,// 10 rows
0,
]
);
$this->assertEquals(
'SELECT ST_ASTEXT(`abc`) AS `abc`, ST_SRID(`abc`) AS `srid` FROM () AS `temp_gis` LIMIT 0, 10',
$queryString
);
$queryString = $this->callFunction(
GisVisualization::getByData([], [
'mysqlVersion' => 80000,
'spatialColumn' => 'abc',
'isMariaDB' => false,
]),
GisVisualization::class,
'modifySqlQuery',
[
'',
15,// 15 rows
10,// position 10
]
);
$this->assertEquals(
'SELECT ST_ASTEXT(`abc`) AS `abc`, ST_SRID(`abc`) AS `srid` FROM () AS `temp_gis` LIMIT 10, 15',
$queryString
);
}
/**
* Modify the query for an MySQL 8.0.1 version
*/

View File

@ -0,0 +1,53 @@
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Tests;
use DateTime;
use PhpMyAdmin\OpenDocument;
use PhpMyAdmin\ZipExtension;
use ZipArchive;
use function file_put_contents;
use function tempnam;
use function unlink;
/**
* @requires extension zip
*/
class OpenDocumentTest extends AbstractTestCase
{
public function testCreateDocument(): void
{
$document = OpenDocument::create(
'application/vnd.oasis.opendocument.text',
'<data>'
);
$this->assertNotFalse($document);
$tmpFile = (string) tempnam('./', 'open-document-test');
$this->assertNotFalse(file_put_contents($tmpFile, $document), 'The temp file should be written');
$zipExtension = new ZipExtension(new ZipArchive());
$this->assertSame([
'error' => '',
'data' => 'application/vnd.oasis.opendocument.text',
], $zipExtension->getContents($tmpFile));
$this->assertSame([
'error' => '',
'data' => '<data>',
], $zipExtension->getContents($tmpFile, '/content\.xml/'));
$dateTimeCreation = (new DateTime())->format('Y-m-d\TH:i');
$this->assertStringContainsString(
// Do not use a full version or seconds could be out of sync and cause flaky test failures
'<meta:creation-date>' . $dateTimeCreation,
$zipExtension->getContents($tmpFile, '/meta\.xml/')['data']
);
$this->assertSame(5, $zipExtension->getNumberOfFiles($tmpFile));
$this->assertTrue(unlink($tmpFile));
}
}

View File

@ -1766,7 +1766,7 @@ class DbiDummy implements DbiExtension
'result' => [],
],
[
'query' => "SHOW TABLE STATUS FROM `my_dataset` WHERE `Name` LIKE 'company\_users%'",
'query' => "SHOW TABLE STATUS FROM `my_dataset` WHERE `Name` LIKE 'company\\\\_users%'",
'result' => [],
],
[
@ -2387,7 +2387,7 @@ class DbiDummy implements DbiExtension
'result' => [['1']],
],
[
'query' => 'SHOW TABLE STATUS FROM `PMA_db` WHERE `Name` LIKE \'PMA\_table%\'',
'query' => 'SHOW TABLE STATUS FROM `PMA_db` WHERE `Name` LIKE \'PMA\\\\_table%\'',
'columns' => ['Name', 'Engine'],
'result' => [['PMA_table', 'InnoDB']],
],
@ -2441,7 +2441,7 @@ class DbiDummy implements DbiExtension
],
],
[
'query' => 'SHOW FULL COLUMNS FROM `testdb`.`mytable` LIKE \'\_id\'',
'query' => 'SHOW FULL COLUMNS FROM `testdb`.`mytable` LIKE \'\\\\_id\'',
'columns' => ['Field', 'Type', 'Collation', 'Null', 'Key', 'Default', 'Extra', 'Privileges', 'Comment'],
'result' => [
[
@ -2546,7 +2546,7 @@ class DbiDummy implements DbiExtension
],
],
[
'query' => 'SHOW TABLE STATUS FROM `test_db` WHERE `Name` LIKE \'test\_table%\'',
'query' => 'SHOW TABLE STATUS FROM `test_db` WHERE `Name` LIKE \'test\\\\_table%\'',
'columns' => ['Name', 'Engine', 'Rows'],
'result' => [['test_table', 'InnoDB', '3']],
],
@ -2711,7 +2711,7 @@ class DbiDummy implements DbiExtension
'result' => [],
],
[
'query' => 'SHOW TABLE STATUS FROM `my_db` WHERE `Name` LIKE \'test\_tbl%\'',
'query' => 'SHOW TABLE STATUS FROM `my_db` WHERE `Name` LIKE \'test\\\\_tbl%\'',
'result' => [],
],
[

View File

@ -946,9 +946,9 @@
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
"@discoveryjs/json-ext@^0.5.0":
version "0.5.6"
resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz#d5e0706cf8c6acd8c6032f8d54070af261bbbb2f"
integrity sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==
version "0.5.7"
resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70"
integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==
"@eslint/eslintrc@^0.4.3":
version "0.4.3"
@ -1243,9 +1243,9 @@
fastq "^1.6.0"
"@petamoriken/float16@^3.4.7":
version "3.6.2"
resolved "https://registry.yarnpkg.com/@petamoriken/float16/-/float16-3.6.2.tgz#a4c986305718d22d0f92f0b89722f6ef6b3fc18e"
integrity sha512-zZnksXtFBqvONcXWuAtSWrl3YXaDbU2ArRCCuzM42mP0GBJclD6e0GC3zEemmrjiMSOHcLPyRC4vOnAsnomJIw==
version "3.6.3"
resolved "https://registry.yarnpkg.com/@petamoriken/float16/-/float16-3.6.3.tgz#7ed8f2ae05ea4096f0ccdf2c2655d04aca545d33"
integrity sha512-Yx6Z93kmz3JVPYoPPRFJXnt2/G4kfaxRROcZVVHsE4zOClJXvkOVidv/JfvP6hWn16lykbKYKVzUsId6mqXdGg==
"@popperjs/core@^2.10.2":
version "2.11.2"
@ -1440,9 +1440,9 @@
integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==
"@types/yargs-parser@*":
version "20.2.1"
resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129"
integrity sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==
version "21.0.0"
resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b"
integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==
"@types/yargs@^16.0.0":
version "16.0.4"
@ -1976,12 +1976,12 @@ browser-process-hrtime@^1.0.0:
integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==
browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.8, browserslist@^4.17.5, browserslist@^4.19.1:
version "4.19.3"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.3.tgz#29b7caad327ecf2859485f696f9604214bedd383"
integrity sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg==
version "4.20.0"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.0.tgz#35951e3541078c125d36df76056e94738a52ebe9"
integrity sha512-bnpOoa+DownbciXj0jVGENf8VYQnE2LNWomhYuCsMmmx9Jd9lwq0WXODuwpSsp8AVdKM2/HorrzxAfbKvWTByQ==
dependencies:
caniuse-lite "^1.0.30001312"
electron-to-chromium "^1.4.71"
caniuse-lite "^1.0.30001313"
electron-to-chromium "^1.4.76"
escalade "^3.1.1"
node-releases "^2.0.2"
picocolors "^1.0.0"
@ -2059,10 +2059,10 @@ caniuse-api@^3.0.0:
lodash.memoize "^4.1.2"
lodash.uniq "^4.5.0"
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001251, caniuse-lite@^1.0.30001297, caniuse-lite@^1.0.30001312:
version "1.0.30001312"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz#e11eba4b87e24d22697dae05455d5aea28550d5f"
integrity sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ==
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001251, caniuse-lite@^1.0.30001297, caniuse-lite@^1.0.30001313:
version "1.0.30001314"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001314.tgz#65c7f9fb7e4594fca0a333bec1d8939662377596"
integrity sha512-0zaSO+TnCHtHJIbpLroX7nsD+vYuOVjl3uzFbJO1wMVbuveJA0RK2WcQA9ZUIOiO0/ArMiMgHJLxfEZhQiC0kw==
chalk@^1.1.3:
version "1.1.3"
@ -2354,12 +2354,12 @@ css-declaration-sorter@^4.0.1:
timsort "^0.3.0"
css-loader@^6.6.0:
version "6.6.0"
resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.6.0.tgz#c792ad5510bd1712618b49381bd0310574fafbd3"
integrity sha512-FK7H2lisOixPT406s5gZM1S3l8GrfhEBT3ZiL2UX1Ng1XWs0y2GPllz/OTyvbaHe12VgQrIXIzuEGVlbUhodqg==
version "6.7.1"
resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.1.tgz#e98106f154f6e1baf3fc3bc455cb9981c1d5fd2e"
integrity sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==
dependencies:
icss-utils "^5.1.0"
postcss "^8.4.5"
postcss "^8.4.7"
postcss-modules-extract-imports "^3.0.0"
postcss-modules-local-by-default "^4.0.0"
postcss-modules-scope "^3.0.0"
@ -2642,10 +2642,10 @@ dot-prop@^5.2.0:
dependencies:
is-obj "^2.0.0"
electron-to-chromium@^1.4.71:
version "1.4.75"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.75.tgz#d1ad9bb46f2f1bf432118c2be21d27ffeae82fdd"
integrity sha512-LxgUNeu3BVU7sXaKjUDD9xivocQLxFtq6wgERrutdY/yIOps3ODOZExK1jg8DTEg4U8TUCb5MLGeWFOYuxjF3Q==
electron-to-chromium@^1.4.76:
version "1.4.81"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.81.tgz#a9ce8997232fb9fb0ec53de8931a85b18c0a7383"
integrity sha512-Gs7xVpIZ7tYYSDA+WgpzwpPvfGwUk3KSIjJ0akuj5XQHFdyQnsUoM76EA4CIHXNLPiVwTwOFay9RMb0ChG3OBw==
emittery@^0.8.1:
version "0.8.1"
@ -2662,10 +2662,10 @@ emojis-list@^3.0.0:
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
enhanced-resolve@^5.8.3:
version "5.9.1"
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.1.tgz#e898cea44d9199fd92137496cff5691b910fb43e"
integrity sha512-jdyZMwCQ5Oj4c5+BTnkxPgDZO/BJzh/ADDmKebayyzNwjVX1AFCeGkOfxNx0mHi2+8BKC5VxUYiw3TIvoT7vhw==
enhanced-resolve@^5.9.2:
version "5.9.2"
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz#0224dcd6a43389ebfb2d55efee517e5466772dd9"
integrity sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==
dependencies:
graceful-fs "^4.2.4"
tapable "^2.2.0"
@ -3071,9 +3071,9 @@ form-data@^3.0.0:
mime-types "^2.1.12"
fraction.js@^4.1.2:
version "4.1.3"
resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.1.3.tgz#be65b0f20762ef27e1e793860bc2dfb716e99e65"
integrity sha512-pUHWWt6vHzZZiQJcM6S/0PXfS+g6FM4BF5rj9wZyreivhQPdsh5PpE25VtSNxq80wHS5RfY51Ii+8Z0Zl/pmzg==
version "4.2.0"
resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950"
integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==
fs-extra@^10.0.0:
version "10.0.1"
@ -3316,9 +3316,9 @@ has-flag@^4.0.0:
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
has-symbols@^1.0.1, has-symbols@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423"
integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==
version "1.0.3"
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
has-tostringtag@^1.0.0:
version "1.0.0"
@ -4659,9 +4659,9 @@ min-indent@^1.0.0:
integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==
mini-css-extract-plugin@^2.5.3:
version "2.5.3"
resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.5.3.tgz#c5c79f9b22ce9b4f164e9492267358dbe35376d9"
integrity sha512-YseMB8cs8U/KCaAGQoqYmfUuhhGW0a9p9XvWXrxVOkE3/IiISTLw4ALNt7JR5B2eYauFM+PQGSbXMDmVbR7Tfw==
version "2.6.0"
resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz#578aebc7fc14d32c0ad304c2c34f08af44673f5e"
integrity sha512-ndG8nxCEnAemsg4FSgS+yNyHKgkTB4nPKqCOgh65j3/30qqC5RaSQQXMm++Y6sb6E1zRSxPkztj9fqxhS1Eo6w==
dependencies:
schema-utils "^4.0.0"
@ -5464,10 +5464,10 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.21
picocolors "^0.2.1"
source-map "^0.6.1"
postcss@^8.3.11, postcss@^8.3.8, postcss@^8.4.5:
version "8.4.7"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.7.tgz#f99862069ec4541de386bf57f5660a6c7a0875a8"
integrity sha512-L9Ye3r6hkkCeOETQX6iOaWZgjp3LL6Lpqm6EtgbKrgqGGteRMNb9vzBfRL96YOSu8o7x3MfIH9Mo5cPJFGrW6A==
postcss@^8.3.11, postcss@^8.3.8, postcss@^8.4.7:
version "8.4.8"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.8.tgz#dad963a76e82c081a0657d3a2f3602ce10c2e032"
integrity sha512-2tXEqGxrjvAO6U+CJzDL2Fk2kPHTv1jQsYkSoMeOis2SsYaXRO2COxTdQp99cYvif9JTXaAk9lYGc3VhJt7JPQ==
dependencies:
nanoid "^3.3.1"
picocolors "^1.0.0"
@ -6822,9 +6822,9 @@ webpack-sources@^3.2.3:
integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
webpack@^5.68.0:
version "5.69.1"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.69.1.tgz#8cfd92c192c6a52c99ab00529b5a0d33aa848dc5"
integrity sha512-+VyvOSJXZMT2V5vLzOnDuMz5GxEqLk7hKWQ56YxPW/PQRUuKimPqmEIJOx8jHYeyo65pKbapbW464mvsKbaj4A==
version "5.70.0"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.70.0.tgz#3461e6287a72b5e6e2f4872700bc8de0d7500e6d"
integrity sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==
dependencies:
"@types/eslint-scope" "^3.7.3"
"@types/estree" "^0.0.51"
@ -6835,7 +6835,7 @@ webpack@^5.68.0:
acorn-import-assertions "^1.7.6"
browserslist "^4.14.5"
chrome-trace-event "^1.0.2"
enhanced-resolve "^5.8.3"
enhanced-resolve "^5.9.2"
es-module-lexer "^0.9.0"
eslint-scope "5.1.1"
events "^3.2.0"