diff --git a/.gitignore b/.gitignore
index 6bc1d21d..4b4e40b2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -61,7 +61,6 @@ doc/*
build/*
tests/_output/*
-.phpstorm.meta.php
composer.phar
.env
diff --git a/.phpstorm.meta.php b/.phpstorm.meta.php
new file mode 100644
index 00000000..eef24ddc
--- /dev/null
+++ b/.phpstorm.meta.php
@@ -0,0 +1,5 @@
+.
+ * along with sysPass. If not, see .
*/
define('APP_ROOT', __DIR__);
diff --git a/app/modules/cli/Commands/CommandBase.php b/app/modules/cli/Commands/CommandBase.php
index 15cfed0a..d841b433 100644
--- a/app/modules/cli/Commands/CommandBase.php
+++ b/app/modules/cli/Commands/CommandBase.php
@@ -1,4 +1,26 @@
.
+ */
namespace SP\Modules\Cli\Commands;
@@ -6,12 +28,11 @@ use Psr\Log\LoggerInterface;
use SP\Config\Config;
use SP\Config\ConfigData;
use Symfony\Component\Console\Command\Command;
-use Symfony\Component\Console\Style\SymfonyStyle;
/**
* Class CommandBase
*
- * @package SPDecrypter\Commands
+ * @package SP\Modules\Cli\Commands
*/
abstract class CommandBase extends Command
{
@@ -19,10 +40,7 @@ abstract class CommandBase extends Command
* @var LoggerInterface
*/
protected $logger;
- /**
- * @var SymfonyStyle
- */
- protected $io;
+
/**
* @var Config
*/
@@ -36,19 +54,17 @@ abstract class CommandBase extends Command
* CommandBase constructor.
*
* @param LoggerInterface $logger
- * @param SymfonyStyle $io
* @param Config $config
*/
public function __construct(
LoggerInterface $logger,
- SymfonyStyle $io,
- Config $config)
+ Config $config
+ )
{
- parent::__construct();
-
$this->logger = $logger;
- $this->io = $io;
$this->config = $config;
$this->configData = $this->config->getConfigData();
+
+ parent::__construct();
}
}
\ No newline at end of file
diff --git a/app/modules/cli/Commands/InstallCommand.php b/app/modules/cli/Commands/InstallCommand.php
index cf8ae025..65d024af 100644
--- a/app/modules/cli/Commands/InstallCommand.php
+++ b/app/modules/cli/Commands/InstallCommand.php
@@ -24,18 +24,22 @@
namespace SP\Modules\Cli\Commands;
+use Closure;
use Exception;
use Psr\Log\LoggerInterface;
use RuntimeException;
use SP\Config\Config;
+use SP\Core\Exceptions\InstallError;
use SP\Core\Exceptions\InvalidArgumentException;
use SP\Core\Language;
use SP\Services\Install\InstallData;
use SP\Services\Install\Installer;
+use SP\Util\Util;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Style\StyleInterface;
use Symfony\Component\Console\Style\SymfonyStyle;
/**
@@ -45,6 +49,25 @@ use Symfony\Component\Console\Style\SymfonyStyle;
*/
final class InstallCommand extends CommandBase
{
+ /**
+ * @var string[]
+ */
+ public static $envVarsMapping = [
+ 'adminLogin' => 'ADMIN_LOGIN',
+ 'adminPassword' => 'ADMIN_PASSWORD',
+ 'databaseHost' => 'DATABASE_HOST',
+ 'databaseName' => 'DATABASE_NAME',
+ 'databaseUser' => 'DATABASE_USER',
+ 'databasePassword' => 'DATABASE_PASSWORD',
+ 'masterPassword' => 'MASTER_PASSWORD',
+ 'hostingMode' => 'HOSTING_MODE',
+ 'language' => 'LANGUAGE',
+ 'forceInstall' => 'FORCE_INSTALL',
+ 'install' => 'INSTALL'
+ ];
+ /**
+ * @var string
+ */
protected static $defaultName = 'sp:install';
/**
* @var Installer
@@ -52,30 +75,29 @@ final class InstallCommand extends CommandBase
private $installer;
public function __construct(LoggerInterface $logger,
- SymfonyStyle $io,
- Config $config,
- Installer $installer)
+ Config $config,
+ Installer $installer)
{
- parent::__construct($logger, $io, $config);
+ parent::__construct($logger, $config);
$this->installer = $installer;
}
- protected function configure()
+ protected function configure(): void
{
- $this->setDescription(__('Install sysPass.'))
- ->setHelp(__('This command installs sysPass.'))
+ $this->setDescription(__('Install sysPass'))
+ ->setHelp(__('This command installs sysPass'))
->addArgument('adminLogin',
- InputArgument::REQUIRED,
+ InputArgument::OPTIONAL,
__('Admin user to log into the application'))
->addArgument('databaseHost',
- InputArgument::REQUIRED,
+ InputArgument::OPTIONAL,
__('Server name to install sysPass database'))
->addArgument('databaseName',
- InputArgument::REQUIRED,
+ InputArgument::OPTIONAL,
__('Application database name. eg. syspass'))
->addArgument('databaseUser',
- InputArgument::REQUIRED,
+ InputArgument::OPTIONAL,
__('An user with database administrative rights'))
->addOption('databasePassword',
null,
@@ -91,41 +113,79 @@ final class InstallCommand extends CommandBase
__('Master password to encrypt the passwords'))
->addOption('hostingMode',
null,
- InputOption::VALUE_OPTIONAL,
- __('It does not create or verify the user\'s permissions on the DB'),
- false)
+ InputOption::VALUE_NONE,
+ __('It does not create or verify the user\'s permissions on the DB'))
->addOption('language',
null,
InputOption::VALUE_OPTIONAL,
- __('Sets the global app language. You can set a per user language on preferences.'))
- ->addOption('force',
+ __('Sets the global app language. You can set a per user language on preferences'))
+ ->addOption('forceInstall',
null,
- InputOption::VALUE_OPTIONAL,
- __('Force sysPass installation.'),
- false);
+ InputOption::VALUE_NONE,
+ __('Force sysPass installation'))
+ ->addOption('install',
+ null,
+ InputOption::VALUE_NONE,
+ __('Skip asking to confirm the installation'));
}
/**
* @param InputInterface $input
* @param OutputInterface $output
*
- * @return int|void
+ * @return int
*/
- protected function execute(InputInterface $input, OutputInterface $output)
+ protected function execute(InputInterface $input, OutputInterface $output): int
{
- $force = (bool)$input->getOption('force');
+ $style = new SymfonyStyle($input, $output);
- if ($this->configData->isInstalled() && $force === false) {
- $this->logger->warning(__u('sysPass is already installed'));
+ try {
+ $installData = $this->getInstallData($input, $style);
- $this->io->warning(__('sysPass is already installed. Use \'--force\' to install it again.'));
+ $forceInstall = $this->getForceInstall($input);
- return self::FAILURE;
+ if (!$forceInstall || !$this->getInstall($input, $style)) {
+ $this->logger->debug(__u('Installation aborted'));
+ $style->info(__('Installation aborted'));
+
+ return self::FAILURE;
+ }
+
+ $this->installer->run($installData);
+
+ $this->logger->info(__('Installation finished'));
+
+ $style->success(__('Installation finished'));
+
+ return self::SUCCESS;
+ } catch (InstallError $e) {
+ $this->logger->error($e->getMessage());
+
+ $style->error(__($e->getMessage()));
+ } catch (InvalidArgumentException $e) {
+ $this->logger->warning($e->getMessage());
+
+ $style->warning(__($e->getMessage()));
+ } catch (Exception $e) {
+ $this->logger->error($e->getTraceAsString());
+ $this->logger->error($e->getMessage());
+
+ $style->error(__($e->getMessage()));
}
- $adminPassword = $input->getOption('adminPassword');
+ return self::FAILURE;
+ }
- $passNonEmptyValidator = function ($value) {
+ /**
+ * @param InputInterface $input
+ * @param StyleInterface $style
+ *
+ * @return InstallData
+ * @throws InstallError
+ */
+ private function getInstallData(InputInterface $input, StyleInterface $style): InstallData
+ {
+ $passNotEmptyValidator = function ($value) {
if (empty($value)) {
throw new RuntimeException(__('Password cannot be blank'));
}
@@ -133,83 +193,258 @@ final class InstallCommand extends CommandBase
return $value;
};
- if (empty($adminPassword)) {
+ $adminPassword = $this->getAdminPassword($input, $style, $passNotEmptyValidator);
+ $masterPassword = $this->getMasterPassword($input, $style, $passNotEmptyValidator);
+ $databasePassword = $this->getDatabasePassword($input, $style);
+ $language = $this->getLanguage($input, $style);
+ $hostingMode = $this->isHostingMode($input);
+ $adminLogin = self::getEnvVarOrArgument('adminLogin', $input);
+ $databaseUser = self::getEnvVarOrArgument('databaseUser', $input);
+ $databaseName = self::getEnvVarOrArgument('databaseName', $input);
+ $databaseHost = self::getEnvVarOrArgument('databaseHost', $input);
+
+ $installData = new InstallData();
+ $installData->setSiteLang($language);
+ $installData->setAdminLogin($adminLogin);
+ $installData->setAdminPass($adminPassword);
+ $installData->setMasterPassword($masterPassword);
+ $installData->setDbAdminUser($databaseUser);
+ $installData->setDbAdminPass($databasePassword);
+ $installData->setDbName($databaseName);
+ $installData->setDbHost($databaseHost);
+ $installData->setHostingMode($hostingMode);
+
+ return $installData;
+ }
+
+ /**
+ * @param InputInterface $input
+ * @param StyleInterface $style
+ * @param Closure $passNotEmptyValidator
+ *
+ * @return array|false|mixed|string
+ * @throws InstallError
+ */
+ private function getAdminPassword(
+ InputInterface $input,
+ StyleInterface $style,
+ Closure $passNotEmptyValidator
+ )
+ {
+ $option = 'adminPassword';
+
+ $password =
+ self::getEnvVarForOption($option)
+ ?: $input->getOption($option);
+
+ if (empty($password)) {
$this->logger->debug(__u('Ask for admin password'));
- $adminPassword = $this->io->askHidden(__('Please provide sysPass admin\'s password'), $passNonEmptyValidator);
- $adminPasswordRepeat = $this->io->askHidden(__('Please provide sysPass admin\'s password again'), $passNonEmptyValidator);
+ $password = $style->askHidden(
+ __('Please provide sysPass admin\'s password'),
+ $passNotEmptyValidator
+ );
- if ($adminPassword !== $adminPasswordRepeat) {
- $this->io->warning(__('Passwords do not match'));
+ $passwordRepeat = $style->askHidden(
+ __('Please provide sysPass admin\'s password again'),
+ $passNotEmptyValidator
+ );
- return self::FAILURE;
+ if ($password !== $passwordRepeat) {
+ throw new InstallError(__u('Passwords do not match'));
+ } elseif (null === $password || null === $passwordRepeat) {
+ throw new InstallError(sprintf(__u('%s cannot be blank'), 'Admin password'));
}
}
- $masterPassword = $input->getOption('masterPassword');
+ return $password;
+ }
- if (empty($masterPassword)) {
+ /**
+ * @param InputInterface $input
+ * @param StyleInterface $style
+ * @param Closure $passNotEmptyValidator
+ *
+ * @return array|false|mixed|string
+ * @throws InstallError
+ */
+ private function getMasterPassword(
+ InputInterface $input,
+ StyleInterface $style,
+ Closure $passNotEmptyValidator
+ )
+ {
+ $password = self::getEnvVarOrOption('masterPassword', $input);
+
+ if (empty($password)) {
$this->logger->debug(__u('Ask for master password'));
- $masterPassword = $this->io->askHidden(__('Please provide sysPass master password'), $passNonEmptyValidator);
- $masterPasswordRepeat = $this->io->askHidden(__('Please provide sysPass master password again'), $passNonEmptyValidator);
+ $password = $style->askHidden(
+ __('Please provide sysPass master password'),
+ $passNotEmptyValidator
+ );
+ $passwordRepeat = $style->askHidden(
+ __('Please provide sysPass master password again'),
+ $passNotEmptyValidator
+ );
- if ($masterPassword !== $masterPasswordRepeat) {
- $this->io->warning(__('Passwords do not match'));
-
- return self::FAILURE;
+ if ($password !== $passwordRepeat) {
+ throw new InstallError(__u('Passwords do not match'));
+ } elseif (null === $password || null === $passwordRepeat) {
+ throw new InstallError(sprintf(__u('%s cannot be blank'), 'Master password'));
}
}
- $databasePassword = $input->getOption('databasePassword');
+ return $password;
+ }
- if (empty($databasePassword)) {
+ /**
+ * @param string $option
+ * @param InputInterface $input
+ *
+ * @return array|false|mixed|string
+ */
+ private static function getEnvVarOrOption(
+ string $option,
+ InputInterface $input
+ )
+ {
+ return self::getEnvVarForOption($option)
+ ?: $input->getOption($option);
+ }
+
+ /**
+ * @param string $option
+ *
+ * @return string|false
+ */
+ public static function getEnvVarForOption(string $option)
+ {
+ return getenv(self::$envVarsMapping[$option]);
+ }
+
+ /**
+ * @param InputInterface $input
+ * @param StyleInterface $style
+ *
+ * @return array|false|mixed|string
+ */
+ private function getDatabasePassword(
+ InputInterface $input,
+ StyleInterface $style
+ )
+ {
+ $password = self::getEnvVarOrOption('databasePassword', $input);
+
+ if (empty($password)) {
$this->logger->debug(__u('Ask for database password'));
- $databasePassword = $this->io->askHidden(__('Please provide database admin password'));
+ $password = $style->askHidden(__('Please provide database admin password'));
}
- $language = $input->getOption('language');
+ return $password;
+ }
+
+ /**
+ * @param InputInterface $input
+ * @param StyleInterface $style
+ *
+ * @return array|false|mixed|string
+ */
+ private function getLanguage(
+ InputInterface $input,
+ StyleInterface $style
+ )
+ {
+ $language = self::getEnvVarOrOption('language', $input);
if (empty($language)) {
$this->logger->debug(__u('Ask for language'));
- $language = $this->io->choice(__('Language'), array_keys(Language::getAvailableLanguages()), 'en_US');
+ $language = $style->choice(
+ __('Language'),
+ array_keys(Language::getAvailableLanguages()),
+ 'en_US'
+ );
}
- $install = $this->io->confirm(__('Install sysPass?'), false);
+ return $language;
+ }
- if (!$install) {
- $this->logger->debug(__u('Installation aborted'));
+ /**
+ * @param InputInterface $input
+ *
+ * @return bool
+ */
+ private function isHostingMode(InputInterface $input): bool
+ {
+ $option = 'hostingMode';
- return self::SUCCESS;
+ $envHostingMode = self::getEnvVarForOption($option);
+
+ return $envHostingMode !== false
+ ? Util::boolval($envHostingMode)
+ : $input->getOption($option);
+ }
+
+ /**
+ * @param string $argument
+ * @param InputInterface $input
+ *
+ * @return array|false|mixed|string
+ */
+ private static function getEnvVarOrArgument(
+ string $argument,
+ InputInterface $input
+ )
+ {
+ return self::getEnvVarForOption($argument)
+ ?: $input->getArgument($argument);
+ }
+
+ /**
+ * @param InputInterface $input
+ *
+ * @return bool
+ * @throws InstallError
+ */
+ private function getForceInstall(InputInterface $input): bool
+ {
+ $option = 'forceInstall';
+
+ $envForceInstall = self::getEnvVarForOption($option);
+
+ $force = $envForceInstall !== false
+ ? Util::boolval($envForceInstall)
+ : $input->getOption($option);
+
+ if ($force === false && $this->configData->isInstalled()) {
+ throw new InstallError(__u('sysPass is already installed. Use \'--forceInstall\' to install it again.'));
}
- $installData = new InstallData();
- $installData->setSiteLang($language);
- $installData->setAdminLogin($input->getArgument('adminLogin'));
- $installData->setAdminPass($adminPassword);
- $installData->setMasterPassword($masterPassword);
- $installData->setDbAdminUser($input->getArgument('databaseUser'));
- $installData->setDbAdminPass($databasePassword);
- $installData->setDbName($input->getArgument('databaseName'));
- $installData->setDbHost($input->getArgument('databaseHost'));
- $installData->setHostingMode((bool)$input->getOption('hostingMode'));
+ return $force;
+ }
- try {
- $this->installer->run($installData);
+ /**
+ * @param InputInterface $input
+ * @param StyleInterface $style
+ *
+ * @return bool
+ */
+ private function getInstall(InputInterface $input, StyleInterface $style): bool
+ {
+ $option = 'install';
- $this->io->success(__('Installation finished'));
+ $envInstall = self::getEnvVarForOption($option);
- $this->logger->info(__u('Installation finished'));
- return self::SUCCESS;
- } catch (InvalidArgumentException $e) {
- $this->io->error(__($e->getMessage()));
- } catch (Exception $e) {
- $this->logger->error($e->getTraceAsString());
- $this->logger->error($e->getMessage());
+ $install = $envInstall !== false
+ ? Util::boolval($envInstall)
+ : $input->getOption($option);
+
+ if ($install === false) {
+ return $style->confirm(__('Install sysPass?'), false);
}
- return self::FAILURE;
+ return true;
}
}
\ No newline at end of file
diff --git a/app/modules/cli/Init.php b/app/modules/cli/Init.php
index c39c6c07..722f8e87 100644
--- a/app/modules/cli/Init.php
+++ b/app/modules/cli/Init.php
@@ -24,20 +24,15 @@
namespace SP\Modules\Cli;
-use Defuse\Crypto\Exception\EnvironmentIsBrokenException;
use DI\DependencyException;
use DI\NotFoundException;
+use Exception;
use Psr\Container\ContainerInterface;
use SP\Core\Context\ContextException;
use SP\Core\Context\StatelessContext;
-use SP\Core\Exceptions\InitializationException;
use SP\Core\Language;
use SP\Core\ModuleBase;
use SP\Modules\Cli\Commands\InstallCommand;
-use SP\Services\Upgrade\UpgradeAppService;
-use SP\Services\Upgrade\UpgradeDatabaseService;
-use SP\Services\Upgrade\UpgradeUtil;
-use SP\Storage\File\FileException;
use SP\Util\VersionUtil;
use Symfony\Component\Console\Application;
use Symfony\Component\Console\Input\InputInterface;
@@ -62,7 +57,7 @@ final class Init extends ModuleBase
*/
protected $language;
/**
- * @var mixed|Application
+ * @var Application
*/
protected $application;
@@ -106,8 +101,9 @@ final class Init extends ModuleBase
/**
* @throws DependencyException
* @throws NotFoundException
+ * @throws Exception
*/
- private function initCli()
+ private function initCli(): void
{
$this->application->setName('sysPass CLI');
$this->application->setVersion(implode('.', VersionUtil::getVersionArray()));
@@ -121,38 +117,4 @@ final class Init extends ModuleBase
$this->container->get(OutputInterface::class)
);
}
-
- /**
- * Comprueba que la aplicación esté instalada
- * Esta función comprueba si la aplicación está instalada. Si no lo está, redirige al instalador.
- *
- * @throws InitializationException
- */
- private function checkInstalled()
- {
- if (!$this->configData->isInstalled()) {
- throw new InitializationException('Not installed');
- }
- }
-
- /**
- * Comprobar si es necesario actualizar componentes
- *
- * @throws EnvironmentIsBrokenException
- * @throws FileException
- * @throws InitializationException
- */
- private function checkUpgrade()
- {
- UpgradeUtil::fixAppUpgrade($this->configData, $this->config);
-
- if ($this->configData->getUpgradeKey()
- || (UpgradeDatabaseService::needsUpgrade($this->configData->getDatabaseVersion()) ||
- UpgradeAppService::needsUpgrade($this->configData->getAppVersion()))
- ) {
- $this->config->generateUpgradeKey();
-
- throw new InitializationException(__u('Updating needed'));
- }
- }
}
\ No newline at end of file
diff --git a/app/modules/cli/definitions.php b/app/modules/cli/definitions.php
index 8aef1ed4..eadbb718 100644
--- a/app/modules/cli/definitions.php
+++ b/app/modules/cli/definitions.php
@@ -32,13 +32,11 @@ use Symfony\Component\Console\Input\ArgvInput;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\ConsoleOutput;
use Symfony\Component\Console\Output\OutputInterface;
-use Symfony\Component\Console\Style\SymfonyStyle;
use function DI\autowire;
use function DI\create;
-use function DI\factory;
return [
- LoggerInterface::class => function (ContainerInterface $c) {
+ LoggerInterface::class => static function (ContainerInterface $c) {
$logger = $c->get(Logger::class);
$logger->pushHandler(new StreamHandler(LOG_FILE));
@@ -46,13 +44,7 @@ return [
},
Application::class => create(Application::class),
OutputInterface::class => create(ConsoleOutput::class)
- ->constructor(ConsoleOutput::VERBOSITY_NORMAL, true),
+ ->constructor(OutputInterface::VERBOSITY_NORMAL, true),
InputInterface::class => create(ArgvInput::class),
- SymfonyStyle::class => factory(function (ContainerInterface $c) {
- return new SymfonyStyle(
- $c->get(InputInterface::class),
- $c->get(OutputInterface::class)
- );
- }),
InstallCommand::class => autowire()
];
diff --git a/composer.json b/composer.json
index 82a26f8e..1b9d5a8b 100644
--- a/composer.json
+++ b/composer.json
@@ -19,7 +19,7 @@
},
"require": {
"roave/security-advisories": "dev-master",
- "php": "~7.3 || ~7.4",
+ "php": "~7.3 || ~7.4 || ~8.0",
"defuse/php-encryption": "^2.1",
"phpmailer/phpmailer": "^6.0",
"ademarre/binary-to-text-php": "dev-master",
diff --git a/composer.lock b/composer.lock
index 74220f09..db76a2a8 100644
--- a/composer.lock
+++ b/composer.lock
@@ -58,26 +58,25 @@
},
{
"name": "defuse/php-encryption",
- "version": "v2.2.1",
+ "version": "v2.3.1",
"source": {
"type": "git",
"url": "https://github.com/defuse/php-encryption.git",
- "reference": "0f407c43b953d571421e0020ba92082ed5fb7620"
+ "reference": "77880488b9954b7884c25555c2a0ea9e7053f9d2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/defuse/php-encryption/zipball/0f407c43b953d571421e0020ba92082ed5fb7620",
- "reference": "0f407c43b953d571421e0020ba92082ed5fb7620",
+ "url": "https://api.github.com/repos/defuse/php-encryption/zipball/77880488b9954b7884c25555c2a0ea9e7053f9d2",
+ "reference": "77880488b9954b7884c25555c2a0ea9e7053f9d2",
"shasum": ""
},
"require": {
"ext-openssl": "*",
"paragonie/random_compat": ">= 2",
- "php": ">=5.4.0"
+ "php": ">=5.6.0"
},
"require-dev": {
- "nikic/php-parser": "^2.0|^3.0|^4.0",
- "phpunit/phpunit": "^4|^5"
+ "phpunit/phpunit": "^4|^5|^6|^7|^8|^9"
},
"bin": [
"bin/generate-defuse-key"
@@ -119,41 +118,38 @@
],
"support": {
"issues": "https://github.com/defuse/php-encryption/issues",
- "source": "https://github.com/defuse/php-encryption/tree/master"
+ "source": "https://github.com/defuse/php-encryption/tree/v2.3.1"
},
- "time": "2018-07-24T23:27:56+00:00"
+ "time": "2021-04-09T23:57:26+00:00"
},
{
"name": "doctrine/annotations",
- "version": "1.11.1",
+ "version": "1.13.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/annotations.git",
- "reference": "ce77a7ba1770462cd705a91a151b6c3746f9c6ad"
+ "reference": "5b668aef16090008790395c02c893b1ba13f7e08"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/annotations/zipball/ce77a7ba1770462cd705a91a151b6c3746f9c6ad",
- "reference": "ce77a7ba1770462cd705a91a151b6c3746f9c6ad",
+ "url": "https://api.github.com/repos/doctrine/annotations/zipball/5b668aef16090008790395c02c893b1ba13f7e08",
+ "reference": "5b668aef16090008790395c02c893b1ba13f7e08",
"shasum": ""
},
"require": {
"doctrine/lexer": "1.*",
"ext-tokenizer": "*",
- "php": "^7.1 || ^8.0"
+ "php": "^7.1 || ^8.0",
+ "psr/cache": "^1 || ^2 || ^3"
},
"require-dev": {
- "doctrine/cache": "1.*",
+ "doctrine/cache": "^1.11 || ^2.0",
"doctrine/coding-standard": "^6.0 || ^8.1",
"phpstan/phpstan": "^0.12.20",
- "phpunit/phpunit": "^7.5 || ^9.1.5"
+ "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5",
+ "symfony/cache": "^4.4 || ^5.2"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.11.x-dev"
- }
- },
"autoload": {
"psr-4": {
"Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations"
@@ -194,22 +190,22 @@
],
"support": {
"issues": "https://github.com/doctrine/annotations/issues",
- "source": "https://github.com/doctrine/annotations/tree/1.11.1"
+ "source": "https://github.com/doctrine/annotations/tree/1.13.2"
},
- "time": "2020-10-26T10:28:16+00:00"
+ "time": "2021-08-05T19:00:23+00:00"
},
{
"name": "doctrine/cache",
- "version": "1.10.2",
+ "version": "1.12.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/cache.git",
- "reference": "13e3381b25847283a91948d04640543941309727"
+ "reference": "4cf401d14df219fa6f38b671f5493449151c9ad8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/cache/zipball/13e3381b25847283a91948d04640543941309727",
- "reference": "13e3381b25847283a91948d04640543941309727",
+ "url": "https://api.github.com/repos/doctrine/cache/zipball/4cf401d14df219fa6f38b671f5493449151c9ad8",
+ "reference": "4cf401d14df219fa6f38b671f5493449151c9ad8",
"shasum": ""
},
"require": {
@@ -220,20 +216,19 @@
},
"require-dev": {
"alcaeus/mongo-php-adapter": "^1.1",
- "doctrine/coding-standard": "^6.0",
+ "cache/integration-tests": "dev-master",
+ "doctrine/coding-standard": "^8.0",
"mongodb/mongodb": "^1.1",
- "phpunit/phpunit": "^7.0",
- "predis/predis": "~1.0"
+ "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0",
+ "predis/predis": "~1.0",
+ "psr/cache": "^1.0 || ^2.0 || ^3.0",
+ "symfony/cache": "^4.4 || ^5.2 || ^6.0@dev",
+ "symfony/var-exporter": "^4.4 || ^5.2 || ^6.0@dev"
},
"suggest": {
"alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.9.x-dev"
- }
- },
"autoload": {
"psr-4": {
"Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
@@ -280,7 +275,7 @@
],
"support": {
"issues": "https://github.com/doctrine/cache/issues",
- "source": "https://github.com/doctrine/cache/tree/1.10.x"
+ "source": "https://github.com/doctrine/cache/tree/1.12.1"
},
"funding": [
{
@@ -296,30 +291,30 @@
"type": "tidelift"
}
],
- "time": "2020-07-07T18:54:01+00:00"
+ "time": "2021-07-17T14:39:21+00:00"
},
{
"name": "doctrine/collections",
- "version": "1.6.7",
+ "version": "1.6.8",
"source": {
"type": "git",
"url": "https://github.com/doctrine/collections.git",
- "reference": "55f8b799269a1a472457bd1a41b4f379d4cfba4a"
+ "reference": "1958a744696c6bb3bb0d28db2611dc11610e78af"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/collections/zipball/55f8b799269a1a472457bd1a41b4f379d4cfba4a",
- "reference": "55f8b799269a1a472457bd1a41b4f379d4cfba4a",
+ "url": "https://api.github.com/repos/doctrine/collections/zipball/1958a744696c6bb3bb0d28db2611dc11610e78af",
+ "reference": "1958a744696c6bb3bb0d28db2611dc11610e78af",
"shasum": ""
},
"require": {
"php": "^7.1.3 || ^8.0"
},
"require-dev": {
- "doctrine/coding-standard": "^6.0",
- "phpstan/phpstan-shim": "^0.9.2",
- "phpunit/phpunit": "^7.0",
- "vimeo/psalm": "^3.8.1"
+ "doctrine/coding-standard": "^9.0",
+ "phpstan/phpstan": "^0.12",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.1.5",
+ "vimeo/psalm": "^4.2.1"
},
"type": "library",
"autoload": {
@@ -363,9 +358,9 @@
],
"support": {
"issues": "https://github.com/doctrine/collections/issues",
- "source": "https://github.com/doctrine/collections/tree/1.6.7"
+ "source": "https://github.com/doctrine/collections/tree/1.6.8"
},
- "time": "2020-07-27T17:53:49+00:00"
+ "time": "2021-08-10T18:51:53+00:00"
},
{
"name": "doctrine/common",
@@ -564,26 +559,26 @@
},
{
"name": "doctrine/inflector",
- "version": "1.4.3",
+ "version": "1.4.4",
"source": {
"type": "git",
"url": "https://github.com/doctrine/inflector.git",
- "reference": "4650c8b30c753a76bf44fb2ed00117d6f367490c"
+ "reference": "4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/inflector/zipball/4650c8b30c753a76bf44fb2ed00117d6f367490c",
- "reference": "4650c8b30c753a76bf44fb2ed00117d6f367490c",
+ "url": "https://api.github.com/repos/doctrine/inflector/zipball/4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9",
+ "reference": "4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9",
"shasum": ""
},
"require": {
- "php": "^7.2 || ^8.0"
+ "php": "^7.1 || ^8.0"
},
"require-dev": {
- "doctrine/coding-standard": "^7.0",
- "phpstan/phpstan": "^0.11",
- "phpstan/phpstan-phpunit": "^0.11",
- "phpstan/phpstan-strict-rules": "^0.11",
+ "doctrine/coding-standard": "^8.0",
+ "phpstan/phpstan": "^0.12",
+ "phpstan/phpstan-phpunit": "^0.12",
+ "phpstan/phpstan-strict-rules": "^0.12",
"phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
},
"type": "library",
@@ -640,7 +635,7 @@
],
"support": {
"issues": "https://github.com/doctrine/inflector/issues",
- "source": "https://github.com/doctrine/inflector/tree/1.4.x"
+ "source": "https://github.com/doctrine/inflector/tree/1.4.4"
},
"funding": [
{
@@ -656,7 +651,7 @@
"type": "tidelift"
}
],
- "time": "2020-05-29T07:19:59+00:00"
+ "time": "2021-04-16T17:34:40+00:00"
},
{
"name": "doctrine/lexer",
@@ -996,16 +991,16 @@
},
{
"name": "guzzlehttp/promises",
- "version": "1.4.0",
+ "version": "1.4.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
- "reference": "60d379c243457e073cff02bc323a2a86cb355631"
+ "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/promises/zipball/60d379c243457e073cff02bc323a2a86cb355631",
- "reference": "60d379c243457e073cff02bc323a2a86cb355631",
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/8e7d04f1f6450fef59366c399cfad4b9383aa30d",
+ "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d",
"shasum": ""
},
"require": {
@@ -1045,22 +1040,22 @@
],
"support": {
"issues": "https://github.com/guzzle/promises/issues",
- "source": "https://github.com/guzzle/promises/tree/1.4.0"
+ "source": "https://github.com/guzzle/promises/tree/1.4.1"
},
- "time": "2020-09-30T07:37:28+00:00"
+ "time": "2021-03-07T09:25:29+00:00"
},
{
"name": "guzzlehttp/psr7",
- "version": "1.7.0",
+ "version": "1.8.2",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
- "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3"
+ "reference": "dc960a912984efb74d0a90222870c72c87f10c91"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3",
- "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/dc960a912984efb74d0a90222870c72c87f10c91",
+ "reference": "dc960a912984efb74d0a90222870c72c87f10c91",
"shasum": ""
},
"require": {
@@ -1120,9 +1115,9 @@
],
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
- "source": "https://github.com/guzzle/psr7/tree/1.7.0"
+ "source": "https://github.com/guzzle/psr7/tree/1.8.2"
},
- "time": "2020-09-30T07:37:11+00:00"
+ "time": "2021-04-26T09:17:50+00:00"
},
{
"name": "klein/klein",
@@ -1254,16 +1249,16 @@
},
{
"name": "monolog/monolog",
- "version": "1.26.0",
+ "version": "1.26.1",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
- "reference": "2209ddd84e7ef1256b7af205d0717fb62cfc9c33"
+ "reference": "c6b00f05152ae2c9b04a448f99c7590beb6042f5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Seldaek/monolog/zipball/2209ddd84e7ef1256b7af205d0717fb62cfc9c33",
- "reference": "2209ddd84e7ef1256b7af205d0717fb62cfc9c33",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c6b00f05152ae2c9b04a448f99c7590beb6042f5",
+ "reference": "c6b00f05152ae2c9b04a448f99c7590beb6042f5",
"shasum": ""
},
"require": {
@@ -1324,7 +1319,7 @@
],
"support": {
"issues": "https://github.com/Seldaek/monolog/issues",
- "source": "https://github.com/Seldaek/monolog/tree/1.26.0"
+ "source": "https://github.com/Seldaek/monolog/tree/1.26.1"
},
"funding": [
{
@@ -1336,20 +1331,20 @@
"type": "tidelift"
}
],
- "time": "2020-12-14T12:56:38+00:00"
+ "time": "2021-05-28T08:32:12+00:00"
},
{
"name": "opis/closure",
- "version": "3.6.1",
+ "version": "3.6.2",
"source": {
"type": "git",
"url": "https://github.com/opis/closure.git",
- "reference": "943b5d70cc5ae7483f6aff6ff43d7e34592ca0f5"
+ "reference": "06e2ebd25f2869e54a306dda991f7db58066f7f6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/opis/closure/zipball/943b5d70cc5ae7483f6aff6ff43d7e34592ca0f5",
- "reference": "943b5d70cc5ae7483f6aff6ff43d7e34592ca0f5",
+ "url": "https://api.github.com/repos/opis/closure/zipball/06e2ebd25f2869e54a306dda991f7db58066f7f6",
+ "reference": "06e2ebd25f2869e54a306dda991f7db58066f7f6",
"shasum": ""
},
"require": {
@@ -1399,9 +1394,9 @@
],
"support": {
"issues": "https://github.com/opis/closure/issues",
- "source": "https://github.com/opis/closure/tree/3.6.1"
+ "source": "https://github.com/opis/closure/tree/3.6.2"
},
- "time": "2020-11-07T02:01:34+00:00"
+ "time": "2021-04-09T13:42:10+00:00"
},
{
"name": "paragonie/random_compat",
@@ -1455,21 +1450,21 @@
},
{
"name": "php-di/invoker",
- "version": "2.3.0",
+ "version": "2.3.2",
"source": {
"type": "git",
"url": "https://github.com/PHP-DI/Invoker.git",
- "reference": "992fec6c56f2d1ad1ad5fee28267867c85bfb8f9"
+ "reference": "5214cbe5aad066022cd845dbf313f0e47aed928f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHP-DI/Invoker/zipball/992fec6c56f2d1ad1ad5fee28267867c85bfb8f9",
- "reference": "992fec6c56f2d1ad1ad5fee28267867c85bfb8f9",
+ "url": "https://api.github.com/repos/PHP-DI/Invoker/zipball/5214cbe5aad066022cd845dbf313f0e47aed928f",
+ "reference": "5214cbe5aad066022cd845dbf313f0e47aed928f",
"shasum": ""
},
"require": {
"php": ">=7.3",
- "psr/container": "~1.0"
+ "psr/container": "^1.0|^2.0"
},
"require-dev": {
"athletic/athletic": "~0.1.8",
@@ -1498,7 +1493,7 @@
],
"support": {
"issues": "https://github.com/PHP-DI/Invoker/issues",
- "source": "https://github.com/PHP-DI/Invoker/tree/2.3.0"
+ "source": "https://github.com/PHP-DI/Invoker/tree/2.3.2"
},
"funding": [
{
@@ -1506,20 +1501,20 @@
"type": "github"
}
],
- "time": "2021-01-15T10:25:40+00:00"
+ "time": "2021-07-30T15:05:32+00:00"
},
{
"name": "php-di/php-di",
- "version": "6.3.0",
+ "version": "6.3.4",
"source": {
"type": "git",
"url": "https://github.com/PHP-DI/PHP-DI.git",
- "reference": "955cacea6b0beaba07e8c11b8367f5b3d5abe89f"
+ "reference": "f53bcba06ab31b18e911b77c039377f4ccd1f7a5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHP-DI/PHP-DI/zipball/955cacea6b0beaba07e8c11b8367f5b3d5abe89f",
- "reference": "955cacea6b0beaba07e8c11b8367f5b3d5abe89f",
+ "url": "https://api.github.com/repos/PHP-DI/PHP-DI/zipball/f53bcba06ab31b18e911b77c039377f4ccd1f7a5",
+ "reference": "f53bcba06ab31b18e911b77c039377f4ccd1f7a5",
"shasum": ""
},
"require": {
@@ -1536,7 +1531,7 @@
"doctrine/annotations": "~1.2",
"friendsofphp/php-cs-fixer": "^2.4",
"mnapoli/phpunit-easymock": "^1.2",
- "ocramius/proxy-manager": "~2.0.2",
+ "ocramius/proxy-manager": "^2.0.2",
"phpstan/phpstan": "^0.12",
"phpunit/phpunit": "^8.5|^9.0"
},
@@ -1570,7 +1565,7 @@
],
"support": {
"issues": "https://github.com/PHP-DI/PHP-DI/issues",
- "source": "https://github.com/PHP-DI/PHP-DI/tree/6.3.0"
+ "source": "https://github.com/PHP-DI/PHP-DI/tree/6.3.4"
},
"funding": [
{
@@ -1582,7 +1577,7 @@
"type": "tidelift"
}
],
- "time": "2020-10-12T14:39:15+00:00"
+ "time": "2021-06-10T08:04:48+00:00"
},
{
"name": "php-di/phpdoc-reader",
@@ -1628,16 +1623,16 @@
},
{
"name": "phpmailer/phpmailer",
- "version": "v6.2.0",
+ "version": "v6.5.1",
"source": {
"type": "git",
"url": "https://github.com/PHPMailer/PHPMailer.git",
- "reference": "e38888a75c070304ca5514197d4847a59a5c853f"
+ "reference": "dd803df5ad7492e1b40637f7ebd258fee5ca7355"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/e38888a75c070304ca5514197d4847a59a5c853f",
- "reference": "e38888a75c070304ca5514197d4847a59a5c853f",
+ "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/dd803df5ad7492e1b40637f7ebd258fee5ca7355",
+ "reference": "dd803df5ad7492e1b40637f7ebd258fee5ca7355",
"shasum": ""
},
"require": {
@@ -1649,13 +1644,15 @@
"require-dev": {
"dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
"doctrine/annotations": "^1.2",
+ "php-parallel-lint/php-console-highlighter": "^0.5.0",
+ "php-parallel-lint/php-parallel-lint": "^1.3",
"phpcompatibility/php-compatibility": "^9.3.5",
"roave/security-advisories": "dev-latest",
- "squizlabs/php_codesniffer": "^3.5.6",
- "yoast/phpunit-polyfills": "^0.2.0"
+ "squizlabs/php_codesniffer": "^3.6.0",
+ "yoast/phpunit-polyfills": "^1.0.0"
},
"suggest": {
- "ext-mbstring": "Needed to send email in multibyte encoding charset",
+ "ext-mbstring": "Needed to send email in multibyte encoding charset or decode encoded addresses",
"hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication",
"league/oauth2-google": "Needed for Google XOAUTH2 authentication",
"psr/log": "For optional PSR-3 debug logging",
@@ -1692,7 +1689,7 @@
"description": "PHPMailer is a full-featured email creation and transfer class for PHP",
"support": {
"issues": "https://github.com/PHPMailer/PHPMailer/issues",
- "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.2.0"
+ "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.5.1"
},
"funding": [
{
@@ -1700,7 +1697,7 @@
"type": "github"
}
],
- "time": "2020-11-25T15:24:57+00:00"
+ "time": "2021-08-18T09:14:16+00:00"
},
{
"name": "phpoption/phpoption",
@@ -1773,16 +1770,16 @@
},
{
"name": "phpseclib/phpseclib",
- "version": "2.0.30",
+ "version": "2.0.33",
"source": {
"type": "git",
"url": "https://github.com/phpseclib/phpseclib.git",
- "reference": "136b9ca7eebef78be14abf90d65c5e57b6bc5d36"
+ "reference": "fb53b7889497ec7c1362c94e61d8127ac67ea094"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/136b9ca7eebef78be14abf90d65c5e57b6bc5d36",
- "reference": "136b9ca7eebef78be14abf90d65c5e57b6bc5d36",
+ "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/fb53b7889497ec7c1362c94e61d8127ac67ea094",
+ "reference": "fb53b7889497ec7c1362c94e61d8127ac67ea094",
"shasum": ""
},
"require": {
@@ -1862,7 +1859,7 @@
],
"support": {
"issues": "https://github.com/phpseclib/phpseclib/issues",
- "source": "https://github.com/phpseclib/phpseclib/tree/2.0.30"
+ "source": "https://github.com/phpseclib/phpseclib/tree/2.0.33"
},
"funding": [
{
@@ -1878,20 +1875,20 @@
"type": "tidelift"
}
],
- "time": "2020-12-17T05:42:04+00:00"
+ "time": "2021-08-16T04:20:12+00:00"
},
{
- "name": "psr/container",
- "version": "1.0.0",
+ "name": "psr/cache",
+ "version": "1.0.1",
"source": {
"type": "git",
- "url": "https://github.com/php-fig/container.git",
- "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
+ "url": "https://github.com/php-fig/cache.git",
+ "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
- "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8",
+ "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8",
"shasum": ""
},
"require": {
@@ -1905,7 +1902,7 @@
},
"autoload": {
"psr-4": {
- "Psr\\Container\\": "src/"
+ "Psr\\Cache\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1918,6 +1915,50 @@
"homepage": "http://www.php-fig.org/"
}
],
+ "description": "Common interface for caching libraries",
+ "keywords": [
+ "cache",
+ "psr",
+ "psr-6"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/cache/tree/master"
+ },
+ "time": "2016-08-06T20:24:11+00:00"
+ },
+ {
+ "name": "psr/container",
+ "version": "1.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf",
+ "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
"description": "Common Container Interface (PHP FIG PSR-11)",
"homepage": "https://github.com/php-fig/container",
"keywords": [
@@ -1929,9 +1970,9 @@
],
"support": {
"issues": "https://github.com/php-fig/container/issues",
- "source": "https://github.com/php-fig/container/tree/master"
+ "source": "https://github.com/php-fig/container/tree/1.1.1"
},
- "time": "2017-02-14T16:28:37+00:00"
+ "time": "2021-03-05T17:36:06+00:00"
},
{
"name": "psr/http-message",
@@ -1988,16 +2029,16 @@
},
{
"name": "psr/log",
- "version": "1.1.3",
+ "version": "1.1.4",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
- "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
+ "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
- "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
+ "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
"shasum": ""
},
"require": {
@@ -2021,7 +2062,7 @@
"authors": [
{
"name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
+ "homepage": "https://www.php-fig.org/"
}
],
"description": "Common interface for logging libraries",
@@ -2032,9 +2073,9 @@
"psr-3"
],
"support": {
- "source": "https://github.com/php-fig/log/tree/1.1.3"
+ "source": "https://github.com/php-fig/log/tree/1.1.4"
},
- "time": "2020-03-23T09:12:05+00:00"
+ "time": "2021-05-03T11:20:27+00:00"
},
{
"name": "ralouphie/getallheaders",
@@ -2086,18 +2127,19 @@
"source": {
"type": "git",
"url": "https://github.com/Roave/SecurityAdvisories.git",
- "reference": "8925516274a93151a553e6e30703dff0703a36e4"
+ "reference": "3c3cc12a9f163e589a12b9ea756c5a2dae9c59dd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/8925516274a93151a553e6e30703dff0703a36e4",
- "reference": "8925516274a93151a553e6e30703dff0703a36e4",
+ "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/3c3cc12a9f163e589a12b9ea756c5a2dae9c59dd",
+ "reference": "3c3cc12a9f163e589a12b9ea756c5a2dae9c59dd",
"shasum": ""
},
"conflict": {
"3f/pygmentize": "<1.2",
"adodb/adodb-php": "<5.20.12",
"alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1",
+ "amazing/media2click": ">=1,<1.3.3",
"amphp/artax": "<1.0.6|>=2,<2.0.6",
"amphp/http": "<1.0.1",
"amphp/http-client": ">=4,<4.4",
@@ -2107,25 +2149,30 @@
"bagisto/bagisto": "<0.1.5",
"barrelstrength/sprout-base-email": "<1.2.7",
"barrelstrength/sprout-forms": "<3.9",
- "baserproject/basercms": ">=4,<=4.3.6|>=4.4,<4.4.1",
- "bolt/bolt": "<3.7.1",
+ "baserproject/basercms": "<4.4.5",
+ "bk2k/bootstrap-package": ">=7.1,<7.1.2|>=8,<8.0.8|>=9,<9.0.4|>=9.1,<9.1.3|>=10,<10.0.10|>=11,<11.0.3",
+ "bolt/bolt": "<3.7.2",
+ "bolt/core": "<4.1.13",
"brightlocal/phpwhois": "<=4.2.5",
"buddypress/buddypress": "<5.1.2",
"bugsnag/bugsnag-laravel": ">=2,<2.0.2",
"cakephp/cakephp": ">=1.3,<1.3.18|>=2,<2.4.99|>=2.5,<2.5.99|>=2.6,<2.6.12|>=2.7,<2.7.6|>=3,<3.5.18|>=3.6,<3.6.15|>=3.7,<3.7.7",
"cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4",
"cartalyst/sentry": "<=2.1.6",
- "centreon/centreon": "<18.10.8|>=19,<19.4.5",
+ "centreon/centreon": "<20.10.7",
"cesnet/simplesamlphp-module-proxystatistics": "<3.1",
"codeigniter/framework": "<=3.0.6",
- "composer/composer": "<=1-alpha.11",
+ "composer/composer": "<1.10.22|>=2-alpha.1,<2.0.13",
"contao-components/mediaelement": ">=2.14.2,<2.21.1",
"contao/core": ">=2,<3.5.39",
- "contao/core-bundle": ">=4,<4.4.52|>=4.5,<4.9.6|= 4.10.0",
+ "contao/core-bundle": ">=4,<4.4.56|>=4.5,<4.9.18|>=4.10,<4.11.7|= 4.10.0",
"contao/listing-bundle": ">=4,<4.4.8",
+ "craftcms/cms": "<3.6.7",
+ "croogo/croogo": "<3.0.7",
"datadog/dd-trace": ">=0.30,<0.30.2",
"david-garcia/phpwhois": "<=4.3.1",
"derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1",
+ "directmailteam/direct-mail": "<5.2.4",
"doctrine/annotations": ">=1,<1.2.7",
"doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2",
"doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1",
@@ -2134,14 +2181,16 @@
"doctrine/doctrine-module": "<=0.7.1",
"doctrine/mongodb-odm": ">=1,<1.0.2",
"doctrine/mongodb-odm-bundle": ">=2,<3.0.1",
- "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1",
- "dolibarr/dolibarr": "<11.0.4",
+ "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4",
+ "dolibarr/dolibarr": "<14",
"dompdf/dompdf": ">=0.6,<0.6.2",
- "drupal/core": ">=7,<7.74|>=8,<8.8.11|>=8.9,<8.9.9|>=9,<9.0.8",
- "drupal/drupal": ">=7,<7.74|>=8,<8.8.11|>=8.9,<8.9.9|>=9,<9.0.8",
+ "drupal/core": ">=7,<7.80|>=8,<8.9.14|>=9,<9.0.12|>=9.1,<9.1.7",
+ "drupal/drupal": ">=7,<7.80|>=8,<8.9.14|>=9,<9.0.12|>=9.1,<9.1.7",
+ "dweeves/magmi": "<=0.7.24",
"endroid/qr-code-bundle": "<3.4.2",
"enshrined/svg-sanitize": "<0.13.1",
"erusev/parsedown": "<1.7.2",
+ "ether/logs": "<3.0.4",
"ezsystems/demobundle": ">=5.4,<5.4.6.1",
"ezsystems/ez-support-tools": ">=2.2,<2.2.3",
"ezsystems/ezdemo-ls-extension": ">=5.4,<5.4.2.1",
@@ -2149,116 +2198,152 @@
"ezsystems/ezplatform": ">=1.7,<1.7.9.1|>=1.13,<1.13.5.1|>=2.5,<2.5.4",
"ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6",
"ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1",
- "ezsystems/ezplatform-kernel": ">=1,<1.0.2.1",
+ "ezsystems/ezplatform-kernel": "<=1.2.5|>=1.3,<=1.3.1",
+ "ezsystems/ezplatform-rest": ">=1.2,<=1.2.2|>=1.3,<=1.3.1",
"ezsystems/ezplatform-user": ">=1,<1.0.1",
- "ezsystems/ezpublish-kernel": ">=5.3,<5.3.12.1|>=5.4,<5.4.14.2|>=6,<6.7.9.1|>=6.8,<6.13.6.3|>=7,<7.2.4.1|>=7.3,<7.3.2.1|>=7.5,<7.5.7.1",
+ "ezsystems/ezpublish-kernel": "<=6.13.8.1|>=7,<=7.5.15.1",
"ezsystems/ezpublish-legacy": ">=5.3,<5.3.12.6|>=5.4,<5.4.14.2|>=2011,<2017.12.7.3|>=2018.6,<2018.6.1.4|>=2018.9,<2018.9.1.3|>=2019.3,<2019.3.5.1",
"ezsystems/platform-ui-assets-bundle": ">=4.2,<4.2.3",
"ezsystems/repository-forms": ">=2.3,<2.3.2.1",
"ezyang/htmlpurifier": "<4.1.1",
+ "facade/ignition": "<1.16.14|>=2,<2.4.2|>=2.5,<2.5.2",
+ "feehi/cms": "<=2.1.1",
"firebase/php-jwt": "<2",
+ "flarum/core": ">=1,<=1.0.1",
+ "flarum/sticky": ">=0.1-beta.14,<=0.1-beta.15",
+ "flarum/tags": "<=0.1-beta.13",
+ "fluidtypo3/vhs": "<5.1.1",
"fooman/tcpdf": "<6.2.22",
+ "forkcms/forkcms": "<5.8.3",
"fossar/tcpdf-parser": "<6.2.22",
+ "francoisjacquet/rosariosis": "<6.5.1",
"friendsofsymfony/oauth2-php": "<1.3",
"friendsofsymfony/rest-bundle": ">=1.2,<1.2.2",
"friendsofsymfony/user-bundle": ">=1.2,<1.3.5",
"friendsoftypo3/mediace": ">=7.6.2,<7.6.5",
+ "froala/wysiwyg-editor": "<3.2.7",
"fuel/core": "<1.8.1",
- "getgrav/grav": "<1.7-beta.8",
- "getkirby/cms": ">=3,<3.4.5",
+ "getgrav/grav": "<=1.7.10",
+ "getkirby/cms": "<=3.5.6",
"getkirby/panel": "<2.5.14",
"gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3",
"gree/jose": "<=2.2",
"gregwar/rst": "<1.0.3",
+ "grumpydictator/firefly-iii": "<5.5.13",
"guzzlehttp/guzzle": ">=4-rc.2,<4.2.4|>=5,<5.3.1|>=6,<6.2.1",
"illuminate/auth": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.10",
"illuminate/cookie": ">=4,<=4.0.11|>=4.1,<=4.1.99999|>=4.2,<=4.2.99999|>=5,<=5.0.99999|>=5.1,<=5.1.99999|>=5.2,<=5.2.99999|>=5.3,<=5.3.99999|>=5.4,<=5.4.99999|>=5.5,<=5.5.49|>=5.6,<=5.6.99999|>=5.7,<=5.7.99999|>=5.8,<=5.8.99999|>=6,<6.18.31|>=7,<7.22.4",
- "illuminate/database": ">=4,<4.0.99|>=4.1,<4.1.29|>=5.5,<=5.5.44|>=6,<6.20.11|>=7,<7.30.2|>=8,<8.22.1",
+ "illuminate/database": "<6.20.26|>=7,<8.40",
"illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15",
"illuminate/view": ">=7,<7.1.2",
+ "impresscms/impresscms": "<=1.4.2",
+ "intelliants/subrion": "<=4.2.1",
"ivankristianto/phpwhois": "<=4.3",
"james-heinrich/getid3": "<1.9.9",
+ "joomla/archive": "<1.1.10",
"joomla/session": "<1.3.1",
"jsmitty12/phpwhois": "<5.1",
"kazist/phpwhois": "<=4.2.6",
"kitodo/presentation": "<3.1.2",
+ "klaviyo/magento2-extension": ">=1,<3",
"kreait/firebase-php": ">=3.2,<3.8.1",
"la-haute-societe/tcpdf": "<6.2.22",
- "laravel/framework": ">=4,<4.0.99|>=4.1,<=4.1.99999|>=4.2,<=4.2.99999|>=5,<=5.0.99999|>=5.1,<=5.1.99999|>=5.2,<=5.2.99999|>=5.3,<=5.3.99999|>=5.4,<=5.4.99999|>=5.5,<=5.5.49|>=5.6,<=5.6.99999|>=5.7,<=5.7.99999|>=5.8,<=5.8.99999|>=6,<6.20.11|>=7,<7.30.2|>=8,<8.22.1",
+ "laminas/laminas-http": "<2.14.2",
+ "laravel/framework": "<6.20.26|>=7,<8.40",
"laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10",
+ "lavalite/cms": "<=5.8",
"league/commonmark": "<0.18.3",
- "librenms/librenms": "<1.53",
+ "league/flysystem": "<1.1.4|>=2,<2.1.1",
+ "lexik/jwt-authentication-bundle": "<2.10.7|>=2.11,<2.11.3",
+ "librenms/librenms": "<21.1",
"livewire/livewire": ">2.2.4,<2.2.6",
+ "localizationteam/l10nmgr": "<7.4|>=8,<8.7|>=9,<9.2",
"magento/community-edition": ">=2,<2.2.10|>=2.3,<2.3.3",
"magento/magento1ce": "<1.9.4.3",
"magento/magento1ee": ">=1,<1.14.4.3",
"magento/product-community-edition": ">=2,<2.2.10|>=2.3,<2.3.2-p.2",
"marcwillmann/turn": "<0.3.3",
- "mautic/core": "<=3.2.3",
+ "mautic/core": "<3.3.2|= 2.13.1",
"mediawiki/core": ">=1.27,<1.27.6|>=1.29,<1.29.3|>=1.30,<1.30.2|>=1.31,<1.31.9|>=1.32,<1.32.6|>=1.32.99,<1.33.3|>=1.33.99,<1.34.3|>=1.34.99,<1.35",
"mittwald/typo3_forum": "<1.2.1",
"monolog/monolog": ">=1.8,<1.12",
+ "moodle/moodle": "<3.5.17|>=3.7,<3.7.9|>=3.8,<3.8.8|>=3.9,<3.9.5|>=3.10,<3.10.2",
"namshi/jose": "<2.2",
+ "neos/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6",
+ "neos/form": ">=1.2,<4.3.3|>=5,<5.0.9|>=5.1,<5.1.3",
+ "neos/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.9.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3",
+ "neos/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5",
"nette/application": ">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6",
"nette/nette": ">=2,<2.0.19|>=2.1,<2.1.13",
+ "nilsteampassnet/teampass": "<=2.1.27.36",
+ "nukeviet/nukeviet": "<4.3.4",
"nystudio107/craft-seomatic": "<3.3",
"nzo/url-encryptor-bundle": ">=4,<4.3.2|>=5,<5.0.1",
- "october/backend": ">=1.0.319,<1.0.470",
- "october/cms": "= 1.0.469|>=1.0.319,<1.0.469",
+ "october/backend": "<1.1.2",
+ "october/cms": "= 1.1.1|= 1.0.471|= 1.0.469|>=1.0.319,<1.0.469",
"october/october": ">=1.0.319,<1.0.466",
- "october/rain": ">=1.0.319,<1.0.468",
+ "october/rain": "<1.0.472|>=1.1,<1.1.2",
"onelogin/php-saml": "<2.10.4",
"oneup/uploader-bundle": "<1.9.3|>=2,<2.1.5",
+ "opencart/opencart": "<=3.0.3.2",
"openid/php-openid": "<2.3",
- "openmage/magento-lts": "<19.4.8|>=20,<20.0.4",
+ "openmage/magento-lts": "<=19.4.12|>=20,<=20.0.8",
"orchid/platform": ">=9,<9.4.4",
"oro/crm": ">=1.7,<1.7.4",
"oro/platform": ">=1.7,<1.7.4",
"padraic/humbug_get_contents": "<1.1.2",
"pagarme/pagarme-php": ">=0,<3",
+ "pagekit/pagekit": "<=1.0.18",
"paragonie/random_compat": "<2",
"passbolt/passbolt_api": "<2.11",
"paypal/merchant-sdk-php": "<3.12",
- "pear/archive_tar": "<1.4.11",
+ "pear/archive_tar": "<1.4.14",
"personnummer/personnummer": "<3.0.2",
+ "phanan/koel": "<5.1.4",
"phpfastcache/phpfastcache": ">=5,<5.0.13",
- "phpmailer/phpmailer": "<6.1.6",
+ "phpmailer/phpmailer": "<6.5",
"phpmussel/phpmussel": ">=1,<1.6",
"phpmyadmin/phpmyadmin": "<4.9.6|>=5,<5.0.3",
"phpoffice/phpexcel": "<1.8.2",
"phpoffice/phpspreadsheet": "<1.16",
+ "phpseclib/phpseclib": "<2.0.31|>=3,<3.0.7",
"phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3",
"phpwhois/phpwhois": "<=4.2.5",
"phpxmlrpc/extras": "<0.6.1",
- "pimcore/pimcore": "<6.3",
+ "pimcore/pimcore": "<10.0.7",
"pocketmine/pocketmine-mp": "<3.15.4",
+ "pressbooks/pressbooks": "<5.18",
"prestashop/autoupgrade": ">=4,<4.10.1",
"prestashop/contactform": ">1.0.1,<4.3",
"prestashop/gamification": "<2.3.2",
- "prestashop/productcomments": ">=4,<4.2",
+ "prestashop/productcomments": ">=4,<4.2.1",
+ "prestashop/ps_emailsubscription": "<2.6.1",
"prestashop/ps_facetedsearch": "<3.4.1",
"privatebin/privatebin": "<1.2.2|>=1.3,<1.3.2",
"propel/propel": ">=2-alpha.1,<=2-alpha.7",
"propel/propel1": ">=1,<=1.7.1",
"pterodactyl/panel": "<0.7.19|>=1-rc.0,<=1-rc.6",
"pusher/pusher-php-server": "<2.2.1",
+ "pwweb/laravel-core": "<=0.3.6-beta",
"rainlab/debugbar-plugin": "<3.1",
+ "rmccue/requests": ">=1.6,<1.8",
"robrichards/xmlseclibs": "<3.0.4",
"sabberworm/php-css-parser": ">=1,<1.0.1|>=2,<2.0.1|>=3,<3.0.1|>=4,<4.0.1|>=5,<5.0.9|>=5.1,<5.1.3|>=5.2,<5.2.1|>=6,<6.0.2|>=7,<7.0.4|>=8,<8.0.1|>=8.1,<8.1.1|>=8.2,<8.2.1|>=8.3,<8.3.1",
"sabre/dav": ">=1.6,<1.6.99|>=1.7,<1.7.11|>=1.8,<1.8.9",
"scheb/two-factor-bundle": ">=0,<3.26|>=4,<4.11",
"sensiolabs/connect": "<4.2.3",
"serluck/phpwhois": "<=4.2.6",
- "shopware/core": "<=6.3.4",
- "shopware/platform": "<=6.3.4",
- "shopware/shopware": "<5.6.9",
+ "shopware/core": "<=6.4.1",
+ "shopware/platform": "<=6.4.1",
+ "shopware/production": "<=6.3.5.2",
+ "shopware/shopware": "<=5.6.9",
"silverstripe/admin": ">=1.0.3,<1.0.4|>=1.1,<1.1.1",
"silverstripe/assets": ">=1,<1.4.7|>=1.5,<1.5.2",
"silverstripe/cms": "<4.3.6|>=4.4,<4.4.4",
"silverstripe/comments": ">=1.3,<1.9.99|>=2,<2.9.99|>=3,<3.1.1",
"silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3",
- "silverstripe/framework": "<4.4.7|>=4.5,<4.5.4",
- "silverstripe/graphql": ">=2,<2.0.5|>=3,<3.1.2|>=3.2,<3.2.4",
+ "silverstripe/framework": "<4.7.4",
+ "silverstripe/graphql": "<=3.5|>=4-alpha.1,<4-alpha.2",
"silverstripe/registry": ">=2.1,<2.1.2|>=2.2,<2.2.1",
"silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4",
"silverstripe/subsites": ">=2,<2.1.1",
@@ -2270,21 +2355,23 @@
"simplesamlphp/simplesamlphp-module-infocard": "<1.0.1",
"simplito/elliptic-php": "<1.0.6",
"slim/slim": "<2.6",
- "smarty/smarty": "<3.1.33",
+ "smarty/smarty": "<3.1.39",
"socalnick/scn-social-auth": "<1.15.2",
+ "socialiteproviders/steam": "<1.1",
"spoonity/tcpdf": "<6.2.22",
"squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1",
"ssddanbrown/bookstack": "<0.29.2",
"stormpath/sdk": ">=0,<9.9.99",
- "studio-42/elfinder": "<2.1.49",
- "sulu/sulu": "<1.6.34|>=2,<2.0.10|>=2.1,<2.1.1",
+ "studio-42/elfinder": "<2.1.59",
+ "sulu/sulu": "<1.6.41|>=2,<2.0.10|>=2.1,<2.1.1",
"swiftmailer/swiftmailer": ">=4,<5.4.5",
"sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2",
"sylius/grid": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1",
"sylius/grid-bundle": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1",
"sylius/resource-bundle": "<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4",
- "sylius/sylius": "<1.6.9|>=1.7,<1.7.9|>=1.8,<1.8.3",
+ "sylius/sylius": "<1.6.9|>=1.7,<1.7.9|>=1.8,<1.8.3|>=1.9,<1.9.5",
"symbiote/silverstripe-multivaluefield": ">=3,<3.0.99",
+ "symbiote/silverstripe-queuedjobs": ">=3,<3.0.2|>=3.1,<3.1.4|>=4,<4.0.7|>=4.1,<4.1.2|>=4.2,<4.2.4|>=4.3,<4.3.3|>=4.4,<4.4.3|>=4.5,<4.5.1|>=4.6,<4.6.4",
"symbiote/silverstripe-versionedfiles": "<=2.0.3",
"symfony/cache": ">=3.1,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8",
"symfony/dependency-injection": ">=2,<2.0.17|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
@@ -2294,44 +2381,55 @@
"symfony/http-foundation": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7",
"symfony/http-kernel": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.4.13|>=5,<5.1.5",
"symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13",
+ "symfony/maker-bundle": ">=1.27,<1.29.2|>=1.30,<1.31.1",
"symfony/mime": ">=4.3,<4.3.8",
"symfony/phpunit-bridge": ">=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
"symfony/polyfill": ">=1,<1.10",
"symfony/polyfill-php55": ">=1,<1.10",
"symfony/proxy-manager-bridge": ">=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
"symfony/routing": ">=2,<2.0.19",
- "symfony/security": ">=2,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=4.4,<4.4.7|>=5,<5.0.7",
+ "symfony/security": ">=2,<2.7.51|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.8",
"symfony/security-bundle": ">=2,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11",
- "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<2.8.37|>=3,<3.3.17|>=3.4,<3.4.7|>=4,<4.0.7",
+ "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.9",
"symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11",
- "symfony/security-guard": ">=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11",
- "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7",
+ "symfony/security-guard": ">=2.8,<3.4.48|>=4,<4.4.23|>=5,<5.2.8",
+ "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<3.4.48|>=4,<4.4.23|>=5,<5.2.8|>=5.3,<5.3.2",
"symfony/serializer": ">=2,<2.0.11",
- "symfony/symfony": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.4.13|>=5,<5.1.5",
+ "symfony/symfony": ">=2,<3.4.49|>=4,<4.4.24|>=5,<5.2.9|>=5.3,<5.3.2",
"symfony/translation": ">=2,<2.0.17",
"symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3",
"symfony/var-exporter": ">=4.2,<4.2.12|>=4.3,<4.3.8",
"symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4",
"symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7",
+ "t3/dce": ">=2.2,<2.6.2",
"t3g/svg-sanitizer": "<1.0.3",
"tecnickcom/tcpdf": "<6.2.22",
"thelia/backoffice-default-template": ">=2.1,<2.1.2",
"thelia/thelia": ">=2.1-beta.1,<2.1.3",
"theonedemon/phpwhois": "<=4.2.5",
"titon/framework": ">=0,<9.9.99",
+ "topthink/think": "<=6.0.9",
+ "tribalsystems/zenario": "<8.8.53370",
"truckersmp/phpwhois": "<=4.3.1",
"twig/twig": "<1.38|>=2,<2.7",
- "typo3/cms": ">=6.2,<6.2.30|>=7,<7.6.32|>=8,<8.7.38|>=9,<9.5.23|>=10,<10.4.10",
- "typo3/cms-core": ">=8,<8.7.38|>=9,<9.5.23|>=10,<10.4.10",
- "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.10|>=3.1,<3.1.7|>=3.2,<3.2.7|>=3.3,<3.3.5",
- "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4",
+ "typo3/cms": ">=6.2,<6.2.30|>=7,<7.6.32|>=8,<8.7.38|>=9,<9.5.29|>=10,<10.4.19|>=11,<11.3.2",
+ "typo3/cms-backend": ">=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1",
+ "typo3/cms-core": ">=6.2,<=6.2.56|>=7,<=7.6.52|>=8,<=8.7.41|>=9,<9.5.29|>=10,<10.4.19|>=11,<11.3.2",
+ "typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1",
+ "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6",
+ "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.3.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3",
"typo3/phar-stream-wrapper": ">=1,<2.1.1|>=3,<3.1.1",
+ "typo3/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5",
"typo3fluid/fluid": ">=2,<2.0.8|>=2.1,<2.1.7|>=2.2,<2.2.4|>=2.3,<2.3.7|>=2.4,<2.4.4|>=2.5,<2.5.11|>=2.6,<2.6.10",
"ua-parser/uap-php": "<3.8",
"usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2",
"verot/class.upload.php": "<=1.0.3|>=2,<=2.0.4",
+ "vrana/adminer": "<4.7.9",
"wallabag/tcpdf": "<6.2.22",
+ "wikimedia/parsoid": "<0.12.2",
"willdurand/js-translation-bundle": "<2.1.1",
+ "wp-cli/wp-cli": "<2.5",
+ "yidashi/yii2cmf": "<=2",
"yii2mod/yii2-cms": "<1.9.2",
"yiisoft/yii": ">=1.1.14,<1.1.15",
"yiisoft/yii2": "<2.0.38",
@@ -2341,7 +2439,9 @@
"yiisoft/yii2-gii": "<2.0.4",
"yiisoft/yii2-jui": "<2.0.4",
"yiisoft/yii2-redis": "<2.0.8",
+ "yoast-seo-for-typo3/yoast_seo": "<7.2.1",
"yourls/yourls": "<1.7.4",
+ "zendesk/zendesk_api_client_php": "<2.2.11",
"zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3",
"zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2",
"zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2",
@@ -2359,14 +2459,15 @@
"zendframework/zend-validator": ">=2.3,<2.3.6",
"zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1",
"zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6",
- "zendframework/zendframework": "<2.5.1",
+ "zendframework/zendframework": "<=3",
"zendframework/zendframework1": "<1.12.20",
"zendframework/zendopenid": ">=2,<2.0.2",
"zendframework/zendxml": ">=1,<1.0.1",
"zetacomponents/mail": "<1.8.2",
"zf-commons/zfc-user": "<1.2.2",
"zfcampus/zf-apigility-doctrine": ">=1,<1.0.3",
- "zfr/zfr-oauth2-server-module": "<0.1.2"
+ "zfr/zfr-oauth2-server-module": "<0.1.2",
+ "zoujingli/thinkadmin": "<6.0.22"
},
"type": "metapackage",
"notification-url": "https://packagist.org/downloads/",
@@ -2400,31 +2501,33 @@
"type": "tidelift"
}
],
- "time": "2021-01-18T10:34:42+00:00"
+ "time": "2021-08-19T16:07:21+00:00"
},
{
"name": "symfony/console",
- "version": "v5.2.1",
+ "version": "v5.3.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "47c02526c532fb381374dab26df05e7313978976"
+ "reference": "51b71afd6d2dc8f5063199357b9880cea8d8bfe2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/47c02526c532fb381374dab26df05e7313978976",
- "reference": "47c02526c532fb381374dab26df05e7313978976",
+ "url": "https://api.github.com/repos/symfony/console/zipball/51b71afd6d2dc8f5063199357b9880cea8d8bfe2",
+ "reference": "51b71afd6d2dc8f5063199357b9880cea8d8bfe2",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1",
"symfony/polyfill-mbstring": "~1.0",
"symfony/polyfill-php73": "^1.8",
- "symfony/polyfill-php80": "^1.15",
+ "symfony/polyfill-php80": "^1.16",
"symfony/service-contracts": "^1.1|^2",
"symfony/string": "^5.1"
},
"conflict": {
+ "psr/log": ">=3",
"symfony/dependency-injection": "<4.4",
"symfony/dotenv": "<5.1",
"symfony/event-dispatcher": "<4.4",
@@ -2432,10 +2535,10 @@
"symfony/process": "<4.4"
},
"provide": {
- "psr/log-implementation": "1.0"
+ "psr/log-implementation": "1.0|2.0"
},
"require-dev": {
- "psr/log": "~1.0",
+ "psr/log": "^1|^2",
"symfony/config": "^4.4|^5.0",
"symfony/dependency-injection": "^4.4|^5.0",
"symfony/event-dispatcher": "^4.4|^5.0",
@@ -2472,7 +2575,7 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony Console Component",
+ "description": "Eases the creation of beautiful and testable command line interfaces",
"homepage": "https://symfony.com",
"keywords": [
"cli",
@@ -2481,7 +2584,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v5.2.1"
+ "source": "https://github.com/symfony/console/tree/v5.3.6"
},
"funding": [
{
@@ -2497,7 +2600,7 @@
"type": "tidelift"
}
],
- "time": "2020-12-18T08:03:05+00:00"
+ "time": "2021-07-27T19:10:22+00:00"
},
{
"name": "symfony/debug",
@@ -2568,17 +2671,84 @@
"time": "2020-10-24T10:57:07+00:00"
},
{
- "name": "symfony/polyfill-ctype",
- "version": "v1.22.0",
+ "name": "symfony/deprecation-contracts",
+ "version": "v2.4.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "c6c942b1ac76c82448322025e084cadc56048b4e"
+ "url": "https://github.com/symfony/deprecation-contracts.git",
+ "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c6c942b1ac76c82448322025e084cadc56048b4e",
- "reference": "c6c942b1ac76c82448322025e084cadc56048b4e",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627",
+ "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "2.4-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "files": [
+ "function.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "A generic function and convention to trigger deprecation notices",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-03-23T23:28:01+00:00"
+ },
+ {
+ "name": "symfony/polyfill-ctype",
+ "version": "v1.23.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-ctype.git",
+ "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce",
+ "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce",
"shasum": ""
},
"require": {
@@ -2590,7 +2760,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.22-dev"
+ "dev-main": "1.23-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -2628,7 +2798,7 @@
"portable"
],
"support": {
- "source": "https://github.com/symfony/polyfill-ctype/tree/v1.22.0"
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0"
},
"funding": [
{
@@ -2644,20 +2814,20 @@
"type": "tidelift"
}
],
- "time": "2021-01-07T16:49:33+00:00"
+ "time": "2021-02-19T12:13:01+00:00"
},
{
"name": "symfony/polyfill-intl-grapheme",
- "version": "v1.22.0",
+ "version": "v1.23.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
- "reference": "267a9adeb8ecb8071040a740930e077cdfb987af"
+ "reference": "16880ba9c5ebe3642d1995ab866db29270b36535"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/267a9adeb8ecb8071040a740930e077cdfb987af",
- "reference": "267a9adeb8ecb8071040a740930e077cdfb987af",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/16880ba9c5ebe3642d1995ab866db29270b36535",
+ "reference": "16880ba9c5ebe3642d1995ab866db29270b36535",
"shasum": ""
},
"require": {
@@ -2669,7 +2839,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.22-dev"
+ "dev-main": "1.23-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -2709,7 +2879,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.22.0"
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.1"
},
"funding": [
{
@@ -2725,20 +2895,20 @@
"type": "tidelift"
}
],
- "time": "2021-01-07T16:49:33+00:00"
+ "time": "2021-05-27T12:26:48+00:00"
},
{
"name": "symfony/polyfill-intl-idn",
- "version": "v1.22.0",
+ "version": "v1.23.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
- "reference": "0eb8293dbbcd6ef6bf81404c9ce7d95bcdf34f44"
+ "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/0eb8293dbbcd6ef6bf81404c9ce7d95bcdf34f44",
- "reference": "0eb8293dbbcd6ef6bf81404c9ce7d95bcdf34f44",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/65bd267525e82759e7d8c4e8ceea44f398838e65",
+ "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65",
"shasum": ""
},
"require": {
@@ -2752,7 +2922,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.22-dev"
+ "dev-main": "1.23-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -2796,7 +2966,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.22.0"
+ "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.23.0"
},
"funding": [
{
@@ -2812,20 +2982,20 @@
"type": "tidelift"
}
],
- "time": "2021-01-07T16:49:33+00:00"
+ "time": "2021-05-27T09:27:20+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
- "version": "v1.22.0",
+ "version": "v1.23.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
- "reference": "6e971c891537eb617a00bb07a43d182a6915faba"
+ "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/6e971c891537eb617a00bb07a43d182a6915faba",
- "reference": "6e971c891537eb617a00bb07a43d182a6915faba",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8",
+ "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8",
"shasum": ""
},
"require": {
@@ -2837,7 +3007,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.22-dev"
+ "dev-main": "1.23-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -2880,7 +3050,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.22.0"
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0"
},
"funding": [
{
@@ -2896,20 +3066,20 @@
"type": "tidelift"
}
],
- "time": "2021-01-07T17:09:11+00:00"
+ "time": "2021-02-19T12:13:01+00:00"
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.22.0",
+ "version": "v1.23.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "f377a3dd1fde44d37b9831d68dc8dea3ffd28e13"
+ "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/f377a3dd1fde44d37b9831d68dc8dea3ffd28e13",
- "reference": "f377a3dd1fde44d37b9831d68dc8dea3ffd28e13",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6",
+ "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6",
"shasum": ""
},
"require": {
@@ -2921,7 +3091,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.22-dev"
+ "dev-main": "1.23-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -2960,7 +3130,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.22.0"
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1"
},
"funding": [
{
@@ -2976,20 +3146,20 @@
"type": "tidelift"
}
],
- "time": "2021-01-07T16:49:33+00:00"
+ "time": "2021-05-27T12:26:48+00:00"
},
{
"name": "symfony/polyfill-php72",
- "version": "v1.22.0",
+ "version": "v1.23.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php72.git",
- "reference": "cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9"
+ "reference": "9a142215a36a3888e30d0a9eeea9766764e96976"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9",
- "reference": "cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9",
+ "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976",
+ "reference": "9a142215a36a3888e30d0a9eeea9766764e96976",
"shasum": ""
},
"require": {
@@ -2998,7 +3168,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.22-dev"
+ "dev-main": "1.23-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -3036,7 +3206,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php72/tree/v1.22.0"
+ "source": "https://github.com/symfony/polyfill-php72/tree/v1.23.0"
},
"funding": [
{
@@ -3052,20 +3222,20 @@
"type": "tidelift"
}
],
- "time": "2021-01-07T16:49:33+00:00"
+ "time": "2021-05-27T09:17:38+00:00"
},
{
"name": "symfony/polyfill-php73",
- "version": "v1.22.0",
+ "version": "v1.23.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php73.git",
- "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2"
+ "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/a678b42e92f86eca04b7fa4c0f6f19d097fb69e2",
- "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2",
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010",
+ "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010",
"shasum": ""
},
"require": {
@@ -3074,7 +3244,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.22-dev"
+ "dev-main": "1.23-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -3115,7 +3285,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php73/tree/v1.22.0"
+ "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0"
},
"funding": [
{
@@ -3131,20 +3301,20 @@
"type": "tidelift"
}
],
- "time": "2021-01-07T16:49:33+00:00"
+ "time": "2021-02-19T12:13:01+00:00"
},
{
"name": "symfony/polyfill-php80",
- "version": "v1.22.0",
+ "version": "v1.23.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91"
+ "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dc3063ba22c2a1fd2f45ed856374d79114998f91",
- "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be",
+ "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be",
"shasum": ""
},
"require": {
@@ -3153,7 +3323,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.22-dev"
+ "dev-main": "1.23-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -3198,7 +3368,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php80/tree/v1.22.0"
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1"
},
"funding": [
{
@@ -3214,25 +3384,25 @@
"type": "tidelift"
}
],
- "time": "2021-01-07T16:49:33+00:00"
+ "time": "2021-07-28T13:41:28+00:00"
},
{
"name": "symfony/service-contracts",
- "version": "v2.2.0",
+ "version": "v2.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
- "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1"
+ "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1",
- "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb",
+ "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
- "psr/container": "^1.0"
+ "psr/container": "^1.1"
},
"suggest": {
"symfony/service-implementation": ""
@@ -3240,7 +3410,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.2-dev"
+ "dev-main": "2.4-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -3277,7 +3447,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/service-contracts/tree/master"
+ "source": "https://github.com/symfony/service-contracts/tree/v2.4.0"
},
"funding": [
{
@@ -3293,20 +3463,20 @@
"type": "tidelift"
}
],
- "time": "2020-09-07T11:33:47+00:00"
+ "time": "2021-04-01T10:43:52+00:00"
},
{
"name": "symfony/string",
- "version": "v5.2.1",
+ "version": "v5.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "5bd67751d2e3f7d6f770c9154b8fbcb2aa05f7ed"
+ "reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/5bd67751d2e3f7d6f770c9154b8fbcb2aa05f7ed",
- "reference": "5bd67751d2e3f7d6f770c9154b8fbcb2aa05f7ed",
+ "url": "https://api.github.com/repos/symfony/string/zipball/bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1",
+ "reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1",
"shasum": ""
},
"require": {
@@ -3349,7 +3519,7 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony String component",
+ "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way",
"homepage": "https://symfony.com",
"keywords": [
"grapheme",
@@ -3360,7 +3530,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v5.2.1"
+ "source": "https://github.com/symfony/string/tree/v5.3.3"
},
"funding": [
{
@@ -3376,20 +3546,20 @@
"type": "tidelift"
}
],
- "time": "2020-12-05T07:33:16+00:00"
+ "time": "2021-06-27T11:44:38+00:00"
},
{
"name": "vlucas/phpdotenv",
- "version": "v4.1.8",
+ "version": "v4.2.0",
"source": {
"type": "git",
"url": "https://github.com/vlucas/phpdotenv.git",
- "reference": "572af79d913627a9d70374d27a6f5d689a35de32"
+ "reference": "da64796370fc4eb03cc277088f6fede9fde88482"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/572af79d913627a9d70374d27a6f5d689a35de32",
- "reference": "572af79d913627a9d70374d27a6f5d689a35de32",
+ "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/da64796370fc4eb03cc277088f6fede9fde88482",
+ "reference": "da64796370fc4eb03cc277088f6fede9fde88482",
"shasum": ""
},
"require": {
@@ -3401,7 +3571,7 @@
"bamarni/composer-bin-plugin": "^1.4.1",
"ext-filter": "*",
"ext-pcre": "*",
- "phpunit/phpunit": "^4.8.35 || ^5.7.27 || ^6.5.6 || ^7.0"
+ "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20"
},
"suggest": {
"ext-filter": "Required to use the boolean validator.",
@@ -3442,7 +3612,7 @@
],
"support": {
"issues": "https://github.com/vlucas/phpdotenv/issues",
- "source": "https://github.com/vlucas/phpdotenv/tree/4.1"
+ "source": "https://github.com/vlucas/phpdotenv/tree/v4.2.0"
},
"funding": [
{
@@ -3454,7 +3624,7 @@
"type": "tidelift"
}
],
- "time": "2020-07-14T19:22:52+00:00"
+ "time": "2021-01-20T15:11:48+00:00"
}
],
"packages-dev": [
@@ -3701,16 +3871,16 @@
},
{
"name": "nikic/php-parser",
- "version": "v4.10.4",
+ "version": "v4.12.0",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e"
+ "reference": "6608f01670c3cc5079e18c1dab1104e002579143"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/c6d052fc58cb876152f89f532b95a8d7907e7f0e",
- "reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6608f01670c3cc5079e18c1dab1104e002579143",
+ "reference": "6608f01670c3cc5079e18c1dab1104e002579143",
"shasum": ""
},
"require": {
@@ -3751,22 +3921,22 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
- "source": "https://github.com/nikic/PHP-Parser/tree/v4.10.4"
+ "source": "https://github.com/nikic/PHP-Parser/tree/v4.12.0"
},
- "time": "2020-12-20T10:01:03+00:00"
+ "time": "2021-07-21T10:44:31+00:00"
},
{
"name": "phar-io/manifest",
- "version": "2.0.1",
+ "version": "2.0.3",
"source": {
"type": "git",
"url": "https://github.com/phar-io/manifest.git",
- "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133"
+ "reference": "97803eca37d319dfa7826cc2437fc020857acb53"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133",
- "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53",
+ "reference": "97803eca37d319dfa7826cc2437fc020857acb53",
"shasum": ""
},
"require": {
@@ -3811,22 +3981,22 @@
"description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
"support": {
"issues": "https://github.com/phar-io/manifest/issues",
- "source": "https://github.com/phar-io/manifest/tree/master"
+ "source": "https://github.com/phar-io/manifest/tree/2.0.3"
},
- "time": "2020-06-27T14:33:11+00:00"
+ "time": "2021-07-20T11:28:43+00:00"
},
{
"name": "phar-io/version",
- "version": "3.0.4",
+ "version": "3.1.0",
"source": {
"type": "git",
"url": "https://github.com/phar-io/version.git",
- "reference": "e4782611070e50613683d2b9a57730e9a3ba5451"
+ "reference": "bae7c545bef187884426f042434e561ab1ddb182"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phar-io/version/zipball/e4782611070e50613683d2b9a57730e9a3ba5451",
- "reference": "e4782611070e50613683d2b9a57730e9a3ba5451",
+ "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182",
+ "reference": "bae7c545bef187884426f042434e561ab1ddb182",
"shasum": ""
},
"require": {
@@ -3862,9 +4032,9 @@
"description": "Library for handling version information and constraints",
"support": {
"issues": "https://github.com/phar-io/version/issues",
- "source": "https://github.com/phar-io/version/tree/3.0.4"
+ "source": "https://github.com/phar-io/version/tree/3.1.0"
},
- "time": "2020-12-13T23:18:30+00:00"
+ "time": "2021-02-23T14:00:09+00:00"
},
{
"name": "phpdocumentor/reflection-common",
@@ -4026,16 +4196,16 @@
},
{
"name": "phpspec/prophecy",
- "version": "1.12.2",
+ "version": "1.13.0",
"source": {
"type": "git",
"url": "https://github.com/phpspec/prophecy.git",
- "reference": "245710e971a030f42e08f4912863805570f23d39"
+ "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/245710e971a030f42e08f4912863805570f23d39",
- "reference": "245710e971a030f42e08f4912863805570f23d39",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be1996ed8adc35c3fd795488a653f4b518be70ea",
+ "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea",
"shasum": ""
},
"require": {
@@ -4087,22 +4257,22 @@
],
"support": {
"issues": "https://github.com/phpspec/prophecy/issues",
- "source": "https://github.com/phpspec/prophecy/tree/1.12.2"
+ "source": "https://github.com/phpspec/prophecy/tree/1.13.0"
},
- "time": "2020-12-19T10:15:11+00:00"
+ "time": "2021-03-17T13:42:18+00:00"
},
{
"name": "phpunit/php-code-coverage",
- "version": "9.2.5",
+ "version": "9.2.6",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1"
+ "reference": "f6293e1b30a2354e8428e004689671b83871edde"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f3e026641cc91909d421802dd3ac7827ebfd97e1",
- "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f6293e1b30a2354e8428e004689671b83871edde",
+ "reference": "f6293e1b30a2354e8428e004689671b83871edde",
"shasum": ""
},
"require": {
@@ -4158,7 +4328,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
- "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.5"
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.6"
},
"funding": [
{
@@ -4166,7 +4336,7 @@
"type": "github"
}
],
- "time": "2020-11-28T06:44:49+00:00"
+ "time": "2021-03-28T07:26:59+00:00"
},
{
"name": "phpunit/php-file-iterator",
@@ -4411,16 +4581,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "9.5.1",
+ "version": "9.5.8",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "e7bdf4085de85a825f4424eae52c99a1cec2f360"
+ "reference": "191768ccd5c85513b4068bdbe99bb6390c7d54fb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e7bdf4085de85a825f4424eae52c99a1cec2f360",
- "reference": "e7bdf4085de85a825f4424eae52c99a1cec2f360",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/191768ccd5c85513b4068bdbe99bb6390c7d54fb",
+ "reference": "191768ccd5c85513b4068bdbe99bb6390c7d54fb",
"shasum": ""
},
"require": {
@@ -4432,7 +4602,7 @@
"ext-xml": "*",
"ext-xmlwriter": "*",
"myclabs/deep-copy": "^1.10.1",
- "phar-io/manifest": "^2.0.1",
+ "phar-io/manifest": "^2.0.3",
"phar-io/version": "^3.0.2",
"php": ">=7.3",
"phpspec/prophecy": "^1.12.1",
@@ -4450,7 +4620,7 @@
"sebastian/global-state": "^5.0.1",
"sebastian/object-enumerator": "^4.0.3",
"sebastian/resource-operations": "^3.0.3",
- "sebastian/type": "^2.3",
+ "sebastian/type": "^2.3.4",
"sebastian/version": "^3.0.2"
},
"require-dev": {
@@ -4498,7 +4668,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.1"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.8"
},
"funding": [
{
@@ -4510,7 +4680,7 @@
"type": "github"
}
],
- "time": "2021-01-17T07:42:25+00:00"
+ "time": "2021-07-31T15:17:34+00:00"
},
{
"name": "sebastian/cli-parser",
@@ -5018,16 +5188,16 @@
},
{
"name": "sebastian/global-state",
- "version": "5.0.2",
+ "version": "5.0.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/global-state.git",
- "reference": "a90ccbddffa067b51f574dea6eb25d5680839455"
+ "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/a90ccbddffa067b51f574dea6eb25d5680839455",
- "reference": "a90ccbddffa067b51f574dea6eb25d5680839455",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49",
+ "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49",
"shasum": ""
},
"require": {
@@ -5070,7 +5240,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/global-state/issues",
- "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.2"
+ "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3"
},
"funding": [
{
@@ -5078,7 +5248,7 @@
"type": "github"
}
],
- "time": "2020-10-26T15:55:19+00:00"
+ "time": "2021-06-11T13:31:12+00:00"
},
{
"name": "sebastian/lines-of-code",
@@ -5369,16 +5539,16 @@
},
{
"name": "sebastian/type",
- "version": "2.3.1",
+ "version": "2.3.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/type.git",
- "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2"
+ "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/81cd61ab7bbf2de744aba0ea61fae32f721df3d2",
- "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2",
+ "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914",
+ "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914",
"shasum": ""
},
"require": {
@@ -5413,7 +5583,7 @@
"homepage": "https://github.com/sebastianbergmann/type",
"support": {
"issues": "https://github.com/sebastianbergmann/type/issues",
- "source": "https://github.com/sebastianbergmann/type/tree/2.3.1"
+ "source": "https://github.com/sebastianbergmann/type/tree/2.3.4"
},
"funding": [
{
@@ -5421,7 +5591,7 @@
"type": "github"
}
],
- "time": "2020-10-26T13:18:59+00:00"
+ "time": "2021-06-15T12:49:02+00:00"
},
{
"name": "sebastian/version",
@@ -5478,21 +5648,22 @@
},
{
"name": "symfony/browser-kit",
- "version": "v5.2.1",
+ "version": "v5.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/browser-kit.git",
- "reference": "87d6f0a7436b03a57d4cf9a6a9cd0c83a355c49a"
+ "reference": "c1e3f64fcc631c96e2c5843b666db66679ced11c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/browser-kit/zipball/87d6f0a7436b03a57d4cf9a6a9cd0c83a355c49a",
- "reference": "87d6f0a7436b03a57d4cf9a6a9cd0c83a355c49a",
+ "url": "https://api.github.com/repos/symfony/browser-kit/zipball/c1e3f64fcc631c96e2c5843b666db66679ced11c",
+ "reference": "c1e3f64fcc631c96e2c5843b666db66679ced11c",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
- "symfony/dom-crawler": "^4.4|^5.0"
+ "symfony/dom-crawler": "^4.4|^5.0",
+ "symfony/polyfill-php80": "^1.16"
},
"require-dev": {
"symfony/css-selector": "^4.4|^5.0",
@@ -5526,10 +5697,10 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony BrowserKit Component",
+ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/browser-kit/tree/v5.2.1"
+ "source": "https://github.com/symfony/browser-kit/tree/v5.3.4"
},
"funding": [
{
@@ -5545,24 +5716,25 @@
"type": "tidelift"
}
],
- "time": "2020-12-18T08:03:05+00:00"
+ "time": "2021-07-21T12:40:44+00:00"
},
{
"name": "symfony/css-selector",
- "version": "v5.2.1",
+ "version": "v5.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
- "reference": "f789e7ead4c79e04ca9a6d6162fc629c89bd8054"
+ "reference": "7fb120adc7f600a59027775b224c13a33530dd90"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/f789e7ead4c79e04ca9a6d6162fc629c89bd8054",
- "reference": "f789e7ead4c79e04ca9a6d6162fc629c89bd8054",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/7fb120adc7f600a59027775b224c13a33530dd90",
+ "reference": "7fb120adc7f600a59027775b224c13a33530dd90",
"shasum": ""
},
"require": {
- "php": ">=7.2.5"
+ "php": ">=7.2.5",
+ "symfony/polyfill-php80": "^1.16"
},
"type": "library",
"autoload": {
@@ -5591,10 +5763,10 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony CssSelector Component",
+ "description": "Converts CSS selectors to XPath expressions",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/css-selector/tree/v5.2.1"
+ "source": "https://github.com/symfony/css-selector/tree/v5.3.4"
},
"funding": [
{
@@ -5610,27 +5782,28 @@
"type": "tidelift"
}
],
- "time": "2020-12-08T17:02:38+00:00"
+ "time": "2021-07-21T12:38:00+00:00"
},
{
"name": "symfony/dom-crawler",
- "version": "v5.2.1",
+ "version": "v5.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/dom-crawler.git",
- "reference": "ee7cf316fb0de786cfe5ae32ee79502b290c81ea"
+ "reference": "2dd8890bd01be59a5221999c05ccf0fcafcb354f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/ee7cf316fb0de786cfe5ae32ee79502b290c81ea",
- "reference": "ee7cf316fb0de786cfe5ae32ee79502b290c81ea",
+ "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/2dd8890bd01be59a5221999c05ccf0fcafcb354f",
+ "reference": "2dd8890bd01be59a5221999c05ccf0fcafcb354f",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php80": "^1.15"
+ "symfony/polyfill-php80": "^1.16"
},
"conflict": {
"masterminds/html5": "<2.6"
@@ -5665,10 +5838,10 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony DomCrawler Component",
+ "description": "Eases DOM navigation for HTML and XML documents",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/dom-crawler/tree/v5.2.1"
+ "source": "https://github.com/symfony/dom-crawler/tree/v5.3.4"
},
"funding": [
{
@@ -5684,20 +5857,20 @@
"type": "tidelift"
}
],
- "time": "2020-12-18T08:02:46+00:00"
+ "time": "2021-07-23T15:55:36+00:00"
},
{
"name": "theseer/tokenizer",
- "version": "1.2.0",
+ "version": "1.2.1",
"source": {
"type": "git",
"url": "https://github.com/theseer/tokenizer.git",
- "reference": "75a63c33a8577608444246075ea0af0d052e452a"
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a",
- "reference": "75a63c33a8577608444246075ea0af0d052e452a",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e",
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e",
"shasum": ""
},
"require": {
@@ -5726,7 +5899,7 @@
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
"support": {
"issues": "https://github.com/theseer/tokenizer/issues",
- "source": "https://github.com/theseer/tokenizer/tree/master"
+ "source": "https://github.com/theseer/tokenizer/tree/1.2.1"
},
"funding": [
{
@@ -5734,34 +5907,39 @@
"type": "github"
}
],
- "time": "2020-07-12T23:59:07+00:00"
+ "time": "2021-07-28T10:34:58+00:00"
},
{
"name": "webmozart/assert",
- "version": "1.9.1",
+ "version": "1.10.0",
"source": {
"type": "git",
- "url": "https://github.com/webmozart/assert.git",
- "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
+ "url": "https://github.com/webmozarts/assert.git",
+ "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
- "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
+ "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25",
+ "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25",
"shasum": ""
},
"require": {
- "php": "^5.3.3 || ^7.0 || ^8.0",
+ "php": "^7.2 || ^8.0",
"symfony/polyfill-ctype": "^1.8"
},
"conflict": {
"phpstan/phpstan": "<0.12.20",
- "vimeo/psalm": "<3.9.1"
+ "vimeo/psalm": "<4.6.1 || 4.6.2"
},
"require-dev": {
- "phpunit/phpunit": "^4.8.36 || ^7.5.13"
+ "phpunit/phpunit": "^8.5.13"
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.10-dev"
+ }
+ },
"autoload": {
"psr-4": {
"Webmozart\\Assert\\": "src/"
@@ -5784,10 +5962,10 @@
"validate"
],
"support": {
- "issues": "https://github.com/webmozart/assert/issues",
- "source": "https://github.com/webmozart/assert/tree/master"
+ "issues": "https://github.com/webmozarts/assert/issues",
+ "source": "https://github.com/webmozarts/assert/tree/1.10.0"
},
- "time": "2020-07-08T17:02:28+00:00"
+ "time": "2021-03-09T10:59:23+00:00"
}
],
"aliases": [],
diff --git a/lib/Definitions.php b/lib/Definitions.php
index 335e0fed..d056a8be 100644
--- a/lib/Definitions.php
+++ b/lib/Definitions.php
@@ -54,12 +54,11 @@ return [
Request::class => create(Request::class)
->constructor(\Klein\Request::createFromGlobals()),
ContextInterface::class => function (ContainerInterface $c) {
- switch (APP_MODULE) {
- case 'web':
- return $c->get(SessionContext::class);
- default:
- return $c->get(StatelessContext::class);
+ if (APP_MODULE === 'web') {
+ return $c->get(SessionContext::class);
}
+
+ return $c->get(StatelessContext::class);
},
Config::class => function (ContainerInterface $c) {
return new Config(
diff --git a/lib/SP/Config/Config.php b/lib/SP/Config/Config.php
index d19439e0..f30eb82f 100644
--- a/lib/SP/Config/Config.php
+++ b/lib/SP/Config/Config.php
@@ -46,7 +46,7 @@ final class Config
/**
* Cache file name
*/
- const CONFIG_CACHE_FILE = CACHE_PATH . DIRECTORY_SEPARATOR . 'config.cache';
+ public const CONFIG_CACHE_FILE = CACHE_PATH . DIRECTORY_SEPARATOR . 'config.cache';
/**
* @var int
*/
diff --git a/lib/SP/Core/Exceptions/InstallError.php b/lib/SP/Core/Exceptions/InstallError.php
new file mode 100644
index 00000000..06cbaf15
--- /dev/null
+++ b/lib/SP/Core/Exceptions/InstallError.php
@@ -0,0 +1,35 @@
+.
+ */
+
+namespace SP\Core\Exceptions;
+
+/**
+ * Class InstallError
+ *
+ * @package SP\Core\Exceptions
+ */
+final class InstallError extends SPException
+{
+
+}
\ No newline at end of file
diff --git a/lib/SP/DataModel/ItemPresetData.php b/lib/SP/DataModel/ItemPresetData.php
index c15f154b..b79e94ab 100644
--- a/lib/SP/DataModel/ItemPresetData.php
+++ b/lib/SP/DataModel/ItemPresetData.php
@@ -71,7 +71,7 @@ class ItemPresetData extends DataModelBase implements HydratableInterface
*/
public function getId(): int
{
- return $this->id !== null ? (int)$this->id : null;
+ return $this->id ?? 0;
}
/**
diff --git a/lib/SP/Services/Install/Installer.php b/lib/SP/Services/Install/Installer.php
index 0e97f53e..2bd429e4 100644
--- a/lib/SP/Services/Install/Installer.php
+++ b/lib/SP/Services/Install/Installer.php
@@ -25,7 +25,6 @@
namespace SP\Services\Install;
-use Defuse\Crypto\Exception\EnvironmentIsBrokenException;
use Exception;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
@@ -60,9 +59,9 @@ final class Installer extends Service
/**
* sysPass' version and build number
*/
- const VERSION = [3, 2, 0];
- const VERSION_TEXT = '3.2';
- const BUILD = 20062901;
+ public const VERSION = [3, 2, 0];
+ public const VERSION_TEXT = '3.2';
+ public const BUILD = 20062901;
/**
* @var DatabaseSetupInterface
@@ -203,7 +202,11 @@ final class Installer extends Service
*/
private function setupDbHost()
{
- if (preg_match('/^(?:(?P.*):(?P\d{1,5}))|^(?:unix:(?P.*))/', $this->installData->getDbHost(), $match)) {
+ if (preg_match(
+ '/^(?:(?P.*):(?P\d{1,5}))|^(?:unix:(?P.*))/',
+ $this->installData->getDbHost(),
+ $match)
+ ) {
if (!empty($match['socket'])) {
$this->installData->setDbSocket($match['socket']);
} else {
diff --git a/lib/SP/Storage/Database/MySQLHandler.php b/lib/SP/Storage/Database/MySQLHandler.php
index f5a9282a..fc5db618 100644
--- a/lib/SP/Storage/Database/MySQLHandler.php
+++ b/lib/SP/Storage/Database/MySQLHandler.php
@@ -26,6 +26,7 @@ namespace SP\Storage\Database;
use Exception;
use PDO;
+use SP\Core\Exceptions\SPException;
defined('APP_ROOT') || die();
@@ -36,9 +37,9 @@ defined('APP_ROOT') || die();
*/
final class MySQLHandler implements DBStorageInterface
{
- const STATUS_OK = 0;
- const STATUS_KO = 1;
- const PDO_OPTS = [
+ public const STATUS_OK = 0;
+ public const STATUS_KO = 1;
+ public const PDO_OPTS = [
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::MYSQL_ATTR_FOUND_ROWS => true,
@@ -97,7 +98,7 @@ final class MySQLHandler implements DBStorageInterface
) {
throw new DatabaseException(
__u('Unable to connect to DB'),
- DatabaseException::CRITICAL,
+ SPException::CRITICAL,
__u('Please, check the connection parameters'));
}
@@ -117,7 +118,7 @@ final class MySQLHandler implements DBStorageInterface
} catch (Exception $e) {
throw new DatabaseException(
__u('Unable to connect to DB'),
- DatabaseException::CRITICAL,
+ SPException::CRITICAL,
sprintf('Error %s: %s', $e->getCode(), $e->getMessage()),
$e->getCode(),
$e
@@ -161,22 +162,29 @@ final class MySQLHandler implements DBStorageInterface
public function getConnectionSimple(): PDO
{
if (!$this->db) {
- if (null === $this->connectionData->getDbHost() && null === $this->connectionData->getDbSocket()) {
+ if (null === $this->connectionData->getDbHost()
+ && null === $this->connectionData->getDbSocket()
+ ) {
throw new DatabaseException(
__u('Unable to connect to DB'),
- DatabaseException::CRITICAL,
+ SPException::CRITICAL,
__u('Please, check the connection parameters'));
}
try {
$opts = [PDO::ATTR_EMULATE_PREPARES => true, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION];
- $this->db = new PDO($this->getConnectionUri(), $this->connectionData->getDbUser(), $this->connectionData->getDbPass(), $opts);
+ $this->db = new PDO(
+ $this->getConnectionUri(),
+ $this->connectionData->getDbUser(),
+ $this->connectionData->getDbPass(),
+ $opts
+ );
$this->dbStatus = self::STATUS_OK;
} catch (Exception $e) {
throw new DatabaseException(
__u('Unable to connect to DB'),
- DatabaseException::CRITICAL,
+ SPException::CRITICAL,
sprintf('Error %s: %s', $e->getCode(), $e->getMessage()),
$e->getCode(),
$e
diff --git a/lib/SP/Util/Util.php b/lib/SP/Util/Util.php
index a9e9fad6..2c2980e9 100644
--- a/lib/SP/Util/Util.php
+++ b/lib/SP/Util/Util.php
@@ -139,7 +139,7 @@ final class Util
// not strict? let the regular php bool check figure it out (will
// largely default to true)
- return ($in ? true : false);
+ return (bool)$in;
}
/**
diff --git a/tests/SP/DatabaseTestCase.php b/tests/SP/DatabaseTestCase.php
index 56e6760e..716ede0a 100644
--- a/tests/SP/DatabaseTestCase.php
+++ b/tests/SP/DatabaseTestCase.php
@@ -1,10 +1,10 @@
.
+ * along with sysPass. If not, see .
*/
namespace SP\Tests;
diff --git a/tests/SP/DatabaseUtil.php b/tests/SP/DatabaseUtil.php
index 066a1367..58f960af 100644
--- a/tests/SP/DatabaseUtil.php
+++ b/tests/SP/DatabaseUtil.php
@@ -1,10 +1,10 @@
.
+ * along with sysPass. If not, see .
*/
namespace SP\Tests;
@@ -44,26 +44,31 @@ class DatabaseUtil
*
* @throws DatabaseException
*/
- public static function createUser($user, $pass, $database, $host)
+ public static function createUser(
+ string $user,
+ string $pass,
+ string $database,
+ string $host
+ ): void
{
$query = 'GRANT ALL PRIVILEGES ON `%s`.* TO \'%s\'@\'%s\' IDENTIFIED BY \'%s\'';
$conn = self::getConnection();
- $conn->query(sprintf($query, $database, $user, SELF_IP_ADDRESS, $pass));
+ $conn->exec(sprintf($query, $database, $user, SELF_IP_ADDRESS, $pass));
// Long hostname returned on Travis CI
if (getenv('TRAVIS') === false) {
- $conn->query(sprintf($query, $database, $user, SELF_HOSTNAME, $pass));
+ $conn->exec(sprintf($query, $database, $user, SELF_HOSTNAME, $pass));
}
- $conn->query(sprintf($query, $database, $user, $host, $pass));
+ $conn->exec(sprintf($query, $database, $user, $host, $pass));
}
/**
* @return PDO
* @throws DatabaseException
*/
- public static function getConnection()
+ public static function getConnection(): PDO
{
$data = (new DatabaseConnectionData())
->setDbHost(getenv('DB_SERVER'))
@@ -77,11 +82,11 @@ class DatabaseUtil
* @param string $user
* @param string $host
*/
- public static function dropUser($user, $host)
+ public static function dropUser(string $user, string $host): void
{
try {
self::getConnection()
- ->query(sprintf('DROP USER \'%s\'@\'%s\'', $user, $host));
+ ->exec(sprintf('DROP USER \'%s\'@\'%s\'', $user, $host));
} catch (Exception $e) {
processException($e);
}
@@ -92,10 +97,10 @@ class DatabaseUtil
*
* @throws DatabaseException
*/
- public static function dropDatabase($database)
+ public static function dropDatabase(string $database): void
{
self::getConnection()
- ->query(sprintf('DROP DATABASE IF EXISTS `%s`', $database));
+ ->exec(sprintf('DROP DATABASE IF EXISTS `%s`', $database));
}
/**
@@ -103,9 +108,9 @@ class DatabaseUtil
*
* @throws DatabaseException
*/
- public static function createDatabase($database)
+ public static function createDatabase(string $database): void
{
self::getConnection()
- ->query(sprintf('CREATE DATABASE `%s`', $database));
+ ->exec(sprintf('CREATE DATABASE `%s`', $database));
}
}
\ No newline at end of file
diff --git a/tests/SP/Modules/Api/ApiTest.php b/tests/SP/Modules/Api/ApiTest.php
index dc841a08..ac68293b 100644
--- a/tests/SP/Modules/Api/ApiTest.php
+++ b/tests/SP/Modules/Api/ApiTest.php
@@ -2,9 +2,9 @@
/**
* sysPass
*
- * @author nuxsmin
- * @link https://syspass.org
- * @copyright 2012-2018, Rubén Domínguez nuxsmin@$syspass.org
+ * @author nuxsmin
+ * @link https://syspass.org
+ * @copyright 2012-2021, Rubén Domínguez nuxsmin@$syspass.org
*
* This file is part of sysPass.
*
diff --git a/tests/SP/Modules/Api/Controllers/AccountControllerTest.php b/tests/SP/Modules/Api/Controllers/AccountControllerTest.php
index cbf228e6..584a0297 100644
--- a/tests/SP/Modules/Api/Controllers/AccountControllerTest.php
+++ b/tests/SP/Modules/Api/Controllers/AccountControllerTest.php
@@ -2,9 +2,9 @@
/**
* sysPass
*
- * @author nuxsmin
- * @link https://syspass.org
- * @copyright 2012-2018, Rubén Domínguez nuxsmin@$syspass.org
+ * @author nuxsmin
+ * @link https://syspass.org
+ * @copyright 2012-2021, Rubén Domínguez nuxsmin@$syspass.org
*
* This file is part of sysPass.
*
diff --git a/tests/SP/Modules/Cli/CliTestCase.php b/tests/SP/Modules/Cli/CliTestCase.php
new file mode 100644
index 00000000..85a91919
--- /dev/null
+++ b/tests/SP/Modules/Cli/CliTestCase.php
@@ -0,0 +1,61 @@
+.
+ */
+
+namespace SP\Tests\Modules\Cli;
+
+use DI\ContainerBuilder;
+use Exception;
+use PHPUnit\Framework\TestCase;
+use Psr\Container\ContainerInterface;
+
+/**
+ * Class CliTestCase
+ *
+ * @package SP\Tests\Modules\Cli
+ */
+abstract class CliTestCase extends TestCase
+{
+ /**
+ * @var ContainerInterface
+ */
+ protected static $dic;
+
+ /**
+ * This method is called before the first test of this test class is run.
+ *
+ * @throws Exception
+ */
+ public static function setUpBeforeClass(): void
+ {
+ parent::setUpBeforeClass();
+
+ $builder = new ContainerBuilder();
+ $builder->addDefinitions(
+ APP_ROOT . DIRECTORY_SEPARATOR . 'lib' . DIRECTORY_SEPARATOR . 'Definitions.php',
+ MODULES_PATH . DIRECTORY_SEPARATOR . 'cli' . DIRECTORY_SEPARATOR . 'definitions.php'
+ );
+
+ self::$dic = $builder->build();
+ }
+}
\ No newline at end of file
diff --git a/tests/SP/Modules/Cli/Commands/InstallCommandTest.php b/tests/SP/Modules/Cli/Commands/InstallCommandTest.php
new file mode 100644
index 00000000..df96c908
--- /dev/null
+++ b/tests/SP/Modules/Cli/Commands/InstallCommandTest.php
@@ -0,0 +1,382 @@
+.
+ */
+
+namespace SP\Tests\Modules\Cli\Commands;
+
+use DI\DependencyException;
+use DI\NotFoundException;
+use Exception;
+use SP\Config\Config;
+use SP\Modules\Cli\Commands\InstallCommand;
+use SP\Storage\Database\DatabaseException;
+use SP\Tests\DatabaseUtil;
+use SP\Tests\Modules\Cli\CliTestCase;
+use Symfony\Component\Console\Tester\CommandTester;
+use function SP\Tests\getResource;
+use function SP\Tests\recreateDir;
+use function SP\Tests\saveResource;
+
+/**
+ *
+ */
+class InstallCommandTest extends CliTestCase
+{
+ /**
+ * @var string
+ */
+ protected static $currentConfig;
+ /**
+ * @var string[]
+ */
+ private static $commandInputData = [
+ 'adminLogin' => 'Admin',
+ 'databaseHost' => 'localhost',
+ 'databaseName' => 'syspass-test-install',
+ 'databaseUser' => 'syspass_user',
+ '--databasePassword' => 'test123',
+ '--adminPassword' => 'admin123',
+ '--masterPassword' => '12345678900',
+ '--install' => null,
+ ];
+
+ /**
+ * This method is called before the first test of this test class is run.
+ *
+ * @throws Exception
+ */
+ public static function setUpBeforeClass(): void
+ {
+ // Backup current config file content in a variable
+ self::$currentConfig = getResource('config', 'config.xml');
+
+ parent::setUpBeforeClass();
+ }
+
+ /**
+ * This method is called after the last test of this test class is run.
+ */
+ public static function tearDownAfterClass(): void
+ {
+ // Replace config file with previously saved data
+ saveResource('config', 'config.xml', self::$currentConfig);
+ // Recreate cache directory to avoid unwanted behavior
+ recreateDir(CACHE_PATH);
+
+ parent::tearDownAfterClass();
+ }
+
+ /**
+ * @throws DependencyException
+ * @throws NotFoundException
+ */
+ public function testInstallationIsAborted(): void
+ {
+ $commandTester = $this->executeCommandTest();
+
+ // the output of the command in the console
+ $output = $commandTester->getDisplay();
+ $this->assertStringContainsString('Installation aborted', $output);
+ }
+
+ /**
+ * @param array|null $inputData
+ * @param bool $useInputData
+ *
+ * @return CommandTester
+ * @throws DependencyException
+ * @throws NotFoundException
+ */
+ private function executeCommandTest(
+ ?array $inputData = null,
+ bool $useInputData = true
+ ): CommandTester
+ {
+ $installCommand = self::$dic->get(InstallCommand::class);
+
+ if (null === $inputData && $useInputData) {
+ $inputData = self::$commandInputData;
+ }
+
+ $commandTester = new CommandTester($installCommand);
+ $commandTester->execute(
+ $inputData ?? [],
+ ['interactive' => false]
+ );
+
+ return $commandTester;
+ }
+
+ /**
+ * @throws DependencyException
+ * @throws NotFoundException
+ */
+ public function testNoDatabaseConnection(): void
+ {
+ $inputData = array_merge(
+ self::$commandInputData,
+ ['--forceInstall' => null]
+ );
+
+ $commandTester = $this->executeCommandTest($inputData);
+
+ // the output of the command in the console
+ $output = $commandTester->getDisplay();
+ $this->assertStringContainsString('Unable to connect to DB', $output);
+ }
+
+ /**
+ * @throws DependencyException
+ * @throws NotFoundException
+ */
+ public function testEmptyAdminPassword(): void
+ {
+ $inputData = array_merge(
+ self::$commandInputData,
+ ['--adminPassword' => '']
+ );
+
+ $commandTester = $this->executeCommandTest($inputData);
+
+ // the output of the command in the console
+ $output = $commandTester->getDisplay();
+ $this->assertStringContainsString('Admin password cannot be blank', $output);
+ }
+
+ /**
+ * @throws DependencyException
+ * @throws NotFoundException
+ */
+ public function testEmptyMasterPassword(): void
+ {
+ $inputData = array_merge(
+ self::$commandInputData,
+ ['--masterPassword' => '']
+ );
+
+ $commandTester = $this->executeCommandTest($inputData);
+
+ // the output of the command in the console
+ $output = $commandTester->getDisplay();
+ $this->assertStringContainsString('Master password cannot be blank', $output);
+ }
+
+ /**
+ * @throws DependencyException
+ * @throws NotFoundException
+ * @throws DatabaseException
+ */
+ public function testInstallIsSuccessful(): void
+ {
+ $inputData = array_merge(
+ self::$commandInputData,
+ [
+ 'databaseHost' => getenv('DB_SERVER'),
+ 'databaseUser' => getenv('DB_USER'),
+ '--databasePassword' => getenv('DB_PASS'),
+ '--forceInstall' => null
+ ]
+ );
+
+ $commandTester = $this->executeCommandTest($inputData);
+
+ // the output of the command in the console
+ $output = $commandTester->getDisplay();
+ $this->assertStringContainsString('Installation finished', $output);
+
+ $configData = self::$dic->get(Config::class)->getConfigData();
+
+ // Cleanup database
+ DatabaseUtil::dropDatabase(self::$commandInputData['databaseName']);
+ DatabaseUtil::dropUser($configData->getDbUser(), SELF_IP_ADDRESS);
+ }
+
+ /**
+ * @throws DependencyException
+ * @throws NotFoundException
+ * @throws DatabaseException
+ */
+ public function testInstallAndLanguageIsSet(): void
+ {
+ $inputData = array_merge(
+ self::$commandInputData,
+ [
+ 'databaseHost' => getenv('DB_SERVER'),
+ 'databaseUser' => getenv('DB_USER'),
+ '--databasePassword' => getenv('DB_PASS'),
+ '--language' => 'es_ES',
+ '--forceInstall' => null
+ ]
+ );
+
+ $commandTester = $this->executeCommandTest($inputData);
+
+ // the output of the command in the console
+ $output = $commandTester->getDisplay();
+ $this->assertStringContainsString('Installation finished', $output);
+
+ $configData = self::$dic->get(Config::class)->getConfigData();
+
+ $this->assertEquals($configData->getSiteLang(), $inputData['--language']);
+
+ // Cleanup database
+ DatabaseUtil::dropDatabase(self::$commandInputData['databaseName']);
+ DatabaseUtil::dropUser($configData->getDbUser(), SELF_IP_ADDRESS);
+ }
+
+ /**
+ * @throws DependencyException
+ * @throws NotFoundException
+ * @throws DatabaseException
+ */
+ public function testInstallAndHostingModeIsUsed(): void
+ {
+ $databaseUser = 'syspass';
+ $databasePassword = 'syspass123';
+
+ DatabaseUtil::createDatabase(self::$commandInputData['databaseName']);
+ DatabaseUtil::createUser(
+ $databaseUser,
+ $databasePassword,
+ self::$commandInputData['databaseName'],
+ getenv('DB_SERVER')
+ );
+
+ $inputData = array_merge(
+ self::$commandInputData,
+ [
+ 'databaseHost' => getenv('DB_SERVER'),
+ 'databaseUser' => $databaseUser,
+ '--databasePassword' => $databasePassword,
+ '--hostingMode' => null,
+ '--forceInstall' => null
+ ]
+ );
+
+ $commandTester = $this->executeCommandTest($inputData);
+
+ // the output of the command in the console
+ $output = $commandTester->getDisplay();
+ $this->assertStringContainsString('Installation finished', $output);
+
+ $configData = self::$dic->get(Config::class)->getConfigData();
+
+ $this->assertEquals($configData->getDbUser(), $databaseUser);
+ $this->assertEquals($configData->getDbPass(), $databasePassword);
+
+ // Cleanup database
+ DatabaseUtil::dropDatabase(self::$commandInputData['databaseName']);
+ }
+
+ /**
+ * @throws DependencyException
+ * @throws NotFoundException
+ */
+ public function testInstallFromEnvironmentVarIsAbort(): void
+ {
+ $this->setEnvironmentVariables();
+
+ $commandTester = $this->executeCommandTest(null, false);
+
+ // the output of the command in the console
+ $output = $commandTester->getDisplay();
+ $this->assertStringContainsString('Installation aborted', $output);
+ }
+
+ private function setEnvironmentVariables(): void
+ {
+ putenv(sprintf('%s=%s',
+ InstallCommand::$envVarsMapping['databaseHost'],
+ getenv('DB_SERVER'))
+ );
+ putenv(sprintf('%s=%s',
+ InstallCommand::$envVarsMapping['databaseUser'],
+ getenv('DB_USER'))
+ );
+ putenv(sprintf('%s=%s',
+ InstallCommand::$envVarsMapping['databasePassword'],
+ getenv('DB_PASS'))
+ );
+ putenv(sprintf('%s=%s',
+ InstallCommand::$envVarsMapping['databaseName'],
+ self::$commandInputData['databaseName'])
+ );
+ putenv(sprintf('%s=%s',
+ InstallCommand::$envVarsMapping['adminLogin'],
+ self::$commandInputData['adminLogin'])
+ );
+ putenv(sprintf('%s=%s',
+ InstallCommand::$envVarsMapping['adminPassword'],
+ self::$commandInputData['--adminPassword'])
+ );
+ putenv(sprintf('%s=%s',
+ InstallCommand::$envVarsMapping['masterPassword'],
+ self::$commandInputData['--masterPassword'])
+ );
+ }
+
+ /**
+ * @throws DependencyException
+ * @throws NotFoundException
+ */
+ public function testInstallFromEnvironmentVarIsAbortedWithForce(): void
+ {
+ putenv(sprintf('%s=true',
+ InstallCommand::$envVarsMapping['forceInstall'])
+ );
+
+ $this->setEnvironmentVariables();
+
+ $commandTester = $this->executeCommandTest(null, false);
+
+ // the output of the command in the console
+ $output = $commandTester->getDisplay();
+ $this->assertStringContainsString('Installation aborted', $output);
+ }
+
+ /**
+ * @throws DatabaseException
+ * @throws DependencyException
+ * @throws NotFoundException
+ */
+ public function testInstallFromEnvironmentVarIsSuccessful(): void
+ {
+ putenv(sprintf('%s=true',
+ InstallCommand::$envVarsMapping['forceInstall'])
+ );
+ putenv(sprintf('%s=true',
+ InstallCommand::$envVarsMapping['install'])
+ );
+
+ $this->setEnvironmentVariables();
+
+ $commandTester = $this->executeCommandTest(null, false);
+
+ // the output of the command in the console
+ $output = $commandTester->getDisplay();
+ $this->assertStringContainsString('Installation finished', $output);
+
+ // Cleanup database
+ DatabaseUtil::dropDatabase(self::$commandInputData['databaseName']);
+ }
+}
diff --git a/tests/SP/Services/Account/AccountFileServiceTest.php b/tests/SP/Services/Account/AccountFileServiceTest.php
index d24041d3..a9c6221e 100644
--- a/tests/SP/Services/Account/AccountFileServiceTest.php
+++ b/tests/SP/Services/Account/AccountFileServiceTest.php
@@ -74,7 +74,7 @@ class AccountFileServiceTest extends DatabaseTestCase
*/
public function testCreate()
{
- $file = RESOURCE_DIR . DIRECTORY_SEPARATOR . 'imgs' . DIRECTORY_SEPARATOR . 'add.png';
+ $file = RESOURCE_PATH . DIRECTORY_SEPARATOR . 'imgs' . DIRECTORY_SEPARATOR . 'add.png';
$image = file_get_contents($file);
$data = new FileData();
diff --git a/tests/SP/Services/Export/XmlVerifyServiceTest.php b/tests/SP/Services/Export/XmlVerifyServiceTest.php
index 7c40e005..921508a0 100644
--- a/tests/SP/Services/Export/XmlVerifyServiceTest.php
+++ b/tests/SP/Services/Export/XmlVerifyServiceTest.php
@@ -67,7 +67,7 @@ class XmlVerifyServiceTest extends TestCase
*/
public function testVerifyEncrypted()
{
- $file = RESOURCE_DIR . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'data_syspass_encrypted.xml';
+ $file = RESOURCE_PATH . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'data_syspass_encrypted.xml';
$result = self::$xmlVerifyService->verifyEncrypted($file, 'test_encrypt');
@@ -90,7 +90,7 @@ class XmlVerifyServiceTest extends TestCase
*/
public function testVerify()
{
- $file = RESOURCE_DIR . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'data_syspass.xml';
+ $file = RESOURCE_PATH . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'data_syspass.xml';
$result = self::$xmlVerifyService->verify($file);
@@ -109,17 +109,17 @@ class XmlVerifyServiceTest extends TestCase
public function testCheckXmlHash()
{
$dom = new DOMDocument();
- $dom->load(RESOURCE_DIR . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'data_syspass_encrypted.xml');
+ $dom->load(RESOURCE_PATH . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'data_syspass_encrypted.xml');
$this->assertTrue(XmlVerifyService::checkXmlHash($dom, 'test_encrypt'));
- $dom->load(RESOURCE_DIR . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'data_syspass_invalid.xml');
+ $dom->load(RESOURCE_PATH . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'data_syspass_invalid.xml');
$this->assertFalse(XmlVerifyService::checkXmlHash($dom, 'test_encrypt'));
$key = sha1('d5851082a3914a647a336d8910e24eb64b8f8adef24d27329040ebd0d4c1');
- $dom->load(RESOURCE_DIR . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'data_syspass_valid_hash.xml');
+ $dom->load(RESOURCE_PATH . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'data_syspass_valid_hash.xml');
$this->assertTrue(XmlVerifyService::checkXmlHash($dom, $key));
}
diff --git a/tests/SP/Services/Import/CsvImportTest.php b/tests/SP/Services/Import/CsvImportTest.php
index c5f9238d..4d96d508 100644
--- a/tests/SP/Services/Import/CsvImportTest.php
+++ b/tests/SP/Services/Import/CsvImportTest.php
@@ -78,7 +78,7 @@ class CsvImportTest extends DatabaseTestCase
*/
public function testDoImport()
{
- $file = RESOURCE_DIR . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'data.csv';
+ $file = RESOURCE_PATH . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'data.csv';
$params = new ImportParams();
$params->setDefaultUser(1);
@@ -170,7 +170,7 @@ class CsvImportTest extends DatabaseTestCase
*/
public function testDoImportInvalidData()
{
- $file = RESOURCE_DIR . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'data_invalid.csv';
+ $file = RESOURCE_PATH . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'data_invalid.csv';
$params = new ImportParams();
$params->setDefaultUser(1);
diff --git a/tests/SP/Services/Import/KeepassImportTest.php b/tests/SP/Services/Import/KeepassImportTest.php
index 0b661802..74d83f05 100644
--- a/tests/SP/Services/Import/KeepassImportTest.php
+++ b/tests/SP/Services/Import/KeepassImportTest.php
@@ -83,7 +83,7 @@ class KeepassImportTest extends DatabaseTestCase
*/
public function testDoImport()
{
- $file = RESOURCE_DIR . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'data_keepass.xml';
+ $file = RESOURCE_PATH . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'data_keepass.xml';
$params = new ImportParams();
$params->setDefaultUser(1);
diff --git a/tests/SP/Services/Import/SyspassImportTest.php b/tests/SP/Services/Import/SyspassImportTest.php
index 8194156d..19af6799 100644
--- a/tests/SP/Services/Import/SyspassImportTest.php
+++ b/tests/SP/Services/Import/SyspassImportTest.php
@@ -79,7 +79,7 @@ class SyspassImportTest extends DatabaseTestCase
*/
public function testDoImport()
{
- $file = RESOURCE_DIR . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'data_syspass.xml';
+ $file = RESOURCE_PATH . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'data_syspass.xml';
$params = new ImportParams();
$params->setDefaultUser(1);
diff --git a/tests/SP/Services/Import/XmlFileImportTest.php b/tests/SP/Services/Import/XmlFileImportTest.php
index da9ad9b4..40f1e8c9 100644
--- a/tests/SP/Services/Import/XmlFileImportTest.php
+++ b/tests/SP/Services/Import/XmlFileImportTest.php
@@ -44,13 +44,13 @@ class XmlFileImportTest extends TestCase
*/
public function testDetectXMLFormat()
{
- $file = RESOURCE_DIR . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'data_syspass.xml';
+ $file = RESOURCE_PATH . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'data_syspass.xml';
$import = new XmlFileImport(FileImport::fromFilesystem($file));
$this->assertEquals('syspass', $import->detectXMLFormat());
- $file = RESOURCE_DIR . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'data_keepass.xml';
+ $file = RESOURCE_PATH . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'data_keepass.xml';
$import = new XmlFileImport(FileImport::fromFilesystem($file));
@@ -63,7 +63,7 @@ class XmlFileImportTest extends TestCase
*/
public function testInvalidFile()
{
- $file = RESOURCE_DIR . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'data.csv';
+ $file = RESOURCE_PATH . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'data.csv';
$this->expectException(ImportException::class);
@@ -76,7 +76,7 @@ class XmlFileImportTest extends TestCase
*/
public function testEmptyFile()
{
- $file = RESOURCE_DIR . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'data_empty.xml';
+ $file = RESOURCE_PATH . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'data_empty.xml';
$import = new XmlFileImport(FileImport::fromFilesystem($file));
diff --git a/tests/SP/Services/Import/XmlImportTest.php b/tests/SP/Services/Import/XmlImportTest.php
index 39a98f55..7c0cf875 100644
--- a/tests/SP/Services/Import/XmlImportTest.php
+++ b/tests/SP/Services/Import/XmlImportTest.php
@@ -69,13 +69,13 @@ class XmlImportTest extends DatabaseTestCase
$params->setDefaultUser(1);
$params->setDefaultGroup(1);
- $file = RESOURCE_DIR . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'data_syspass.xml';
+ $file = RESOURCE_PATH . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'data_syspass.xml';
$import = new XmlImport(self::$dic, new XmlFileImport(FileImport::fromFilesystem($file)), $params);
$this->assertEquals(5, $import->doImport()->getCounter());
- $file = RESOURCE_DIR . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'data_keepass.xml';
+ $file = RESOURCE_PATH . DIRECTORY_SEPARATOR . 'import' . DIRECTORY_SEPARATOR . 'data_keepass.xml';
$import = new XmlImport(self::$dic, new XmlFileImport(FileImport::fromFilesystem($file)), $params);
diff --git a/tests/SP/Storage/ArchiveHandlerTest.php b/tests/SP/Storage/ArchiveHandlerTest.php
index 031f2b3e..f88e672f 100644
--- a/tests/SP/Storage/ArchiveHandlerTest.php
+++ b/tests/SP/Storage/ArchiveHandlerTest.php
@@ -50,7 +50,7 @@ class ArchiveHandlerTest extends TestCase
$archive = TMP_PATH . DIRECTORY_SEPARATOR . 'test_archive_file';
$handler = new ArchiveHandler($archive, new PhpExtensionChecker());
- $handler->compressFile(RESOURCE_DIR . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'config.xml');
+ $handler->compressFile(RESOURCE_PATH . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'config.xml');
$this->assertFileExists($archive . ArchiveHandler::COMPRESS_EXTENSION);
}
@@ -66,7 +66,7 @@ class ArchiveHandlerTest extends TestCase
$archive = TMP_PATH . DIRECTORY_SEPARATOR . 'test_archive_file';
$handler = new ArchiveHandler($archive, new PhpExtensionChecker());
- $handler->compressFile(RESOURCE_DIR . DIRECTORY_SEPARATOR . 'non_existant_file');
+ $handler->compressFile(RESOURCE_PATH . DIRECTORY_SEPARATOR . 'non_existant_file');
}
/**
@@ -78,7 +78,7 @@ class ArchiveHandlerTest extends TestCase
$archive = TMP_PATH . DIRECTORY_SEPARATOR . 'test_archive_dir';
$handler = new ArchiveHandler($archive, new PhpExtensionChecker());
- $handler->compressDirectory(RESOURCE_DIR);
+ $handler->compressDirectory(RESOURCE_PATH);
$this->assertFileExists($archive . ArchiveHandler::COMPRESS_EXTENSION);
}
@@ -94,7 +94,7 @@ class ArchiveHandlerTest extends TestCase
$archive = TMP_PATH . DIRECTORY_SEPARATOR . 'test_archive_dir';
$handler = new ArchiveHandler($archive, new PhpExtensionChecker());
- $handler->compressDirectory(RESOURCE_DIR . DIRECTORY_SEPARATOR . 'non_existant_dir');
+ $handler->compressDirectory(RESOURCE_PATH . DIRECTORY_SEPARATOR . 'non_existant_dir');
}
/**
diff --git a/tests/SP/Storage/FileHandlerTest.php b/tests/SP/Storage/FileHandlerTest.php
index d44271cc..2c4b4f97 100644
--- a/tests/SP/Storage/FileHandlerTest.php
+++ b/tests/SP/Storage/FileHandlerTest.php
@@ -40,15 +40,15 @@ class FileHandlerTest extends TestCase
/**
* @var string Archvivo de prueba válido
*/
- protected static $validFile = RESOURCE_DIR . DIRECTORY_SEPARATOR . 'valid_file.test';
+ protected static $validFile = RESOURCE_PATH . DIRECTORY_SEPARATOR . 'valid_file.test';
/**
* @var string Archvivo de prueba inmutable
*/
- protected static $immutableFile = RESOURCE_DIR . DIRECTORY_SEPARATOR . 'immutable_file.test';
+ protected static $immutableFile = RESOURCE_PATH . DIRECTORY_SEPARATOR . 'immutable_file.test';
/**
* @var string Archivo de prueba no existente
*/
- protected static $missingFile = RESOURCE_DIR . DIRECTORY_SEPARATOR . 'missing_file.test';
+ protected static $missingFile = RESOURCE_PATH . DIRECTORY_SEPARATOR . 'missing_file.test';
/**
* Comprobar la escritura de texto en un archivo
diff --git a/tests/SP/Storage/XmlHandlerTest.php b/tests/SP/Storage/XmlHandlerTest.php
index da8aa020..b70ce45b 100644
--- a/tests/SP/Storage/XmlHandlerTest.php
+++ b/tests/SP/Storage/XmlHandlerTest.php
@@ -55,7 +55,7 @@ class XmlHandlerTest extends TestCase
public static function setUpBeforeClass(): void
{
- $file = RESOURCE_DIR . DIRECTORY_SEPARATOR . 'config.xml';
+ $file = RESOURCE_PATH . DIRECTORY_SEPARATOR . 'config.xml';
self::$xmlHandler = new XmlHandler(new FileHandler($file));
self::$itemsData = new stdClass();
diff --git a/tests/SP/WebTestCase.php b/tests/SP/WebTestCase.php
index 7ab7adb8..5d37f462 100644
--- a/tests/SP/WebTestCase.php
+++ b/tests/SP/WebTestCase.php
@@ -1,10 +1,10 @@
.
+ * along with sysPass. If not, see .
*/
namespace SP\Tests;
diff --git a/tests/SP/bootstrap.php b/tests/SP/bootstrap.php
index 70cc51f1..24f98b90 100644
--- a/tests/SP/bootstrap.php
+++ b/tests/SP/bootstrap.php
@@ -1,10 +1,10 @@
.
+ * along with sysPass. If not, see .
*/
namespace SP\Tests;
@@ -41,21 +41,23 @@ define('APP_MODULE', 'tests');
define('APP_ROOT', dirname(__DIR__, 2));
define('TEST_ROOT', dirname(__DIR__));
-define('RESOURCE_DIR', TEST_ROOT . DIRECTORY_SEPARATOR . 'res');
-define('CONFIG_PATH', RESOURCE_DIR . DIRECTORY_SEPARATOR . 'config');
+define('RESOURCE_PATH', TEST_ROOT . DIRECTORY_SEPARATOR . 'res');
+define('CONFIG_PATH', RESOURCE_PATH . DIRECTORY_SEPARATOR . 'config');
define('CONFIG_FILE', CONFIG_PATH . DIRECTORY_SEPARATOR . 'config.xml');
define('ACTIONS_FILE', CONFIG_PATH . DIRECTORY_SEPARATOR . 'actions.xml');
+define('MODULES_PATH', APP_ROOT. DIRECTORY_SEPARATOR. 'app' . DIRECTORY_SEPARATOR . 'modules');
define('SQL_PATH', APP_ROOT . DIRECTORY_SEPARATOR . 'schemas');
-define('CACHE_PATH', RESOURCE_DIR . DIRECTORY_SEPARATOR . 'cache');
+define('CACHE_PATH', RESOURCE_PATH . DIRECTORY_SEPARATOR . 'cache');
define('TMP_PATH', TEST_ROOT . DIRECTORY_SEPARATOR . 'tmp');
+
define('XML_SCHEMA', APP_ROOT . DIRECTORY_SEPARATOR . 'schemas' . DIRECTORY_SEPARATOR . 'syspass.xsd');
define('LOG_FILE', TMP_PATH . DIRECTORY_SEPARATOR . 'test.log');
define('FIXTURE_FILES', [
- RESOURCE_DIR . DIRECTORY_SEPARATOR . 'datasets' . DIRECTORY_SEPARATOR . 'truncate.sql',
- RESOURCE_DIR . DIRECTORY_SEPARATOR . 'datasets' . DIRECTORY_SEPARATOR . 'syspass.sql'
+ RESOURCE_PATH . DIRECTORY_SEPARATOR . 'datasets' . DIRECTORY_SEPARATOR . 'truncate.sql',
+ RESOURCE_PATH . DIRECTORY_SEPARATOR . 'datasets' . DIRECTORY_SEPARATOR . 'syspass.sql'
]);
define('SELF_IP_ADDRESS', getRealIpAddress());
define('SELF_HOSTNAME', gethostbyaddr(SELF_IP_ADDRESS));
@@ -170,7 +172,7 @@ function getDbHandler(DatabaseConnectionData $connectionData = null): MySQLHandl
*/
function getResource($dir, $file): string
{
- return file_get_contents(RESOURCE_DIR . DIRECTORY_SEPARATOR . $dir . DIRECTORY_SEPARATOR . $file) ?: '';
+ return file_get_contents(RESOURCE_PATH . DIRECTORY_SEPARATOR . $dir . DIRECTORY_SEPARATOR . $file) ?: '';
}
/**
@@ -182,7 +184,7 @@ function getResource($dir, $file): string
*/
function saveResource($dir, $file, $data): string
{
- return file_put_contents(RESOURCE_DIR . DIRECTORY_SEPARATOR . $dir . DIRECTORY_SEPARATOR . $file, $data);
+ return file_put_contents(RESOURCE_PATH . DIRECTORY_SEPARATOR . $dir . DIRECTORY_SEPARATOR . $file, $data);
}
/**
@@ -193,7 +195,9 @@ function recreateDir($dir)
if (!is_dir($dir)) {
print 'Creating ' . $dir . PHP_EOL;
- mkdir($dir);
+ if (!mkdir($dir) && !is_dir($dir)) {
+ throw new \RuntimeException(sprintf('Directory "%s" was not created', $dir));
+ }
} else {
print 'Deleting ' . $dir . PHP_EOL;
diff --git a/tests/phpunit.xml b/tests/phpunit.xml
index 1f62c5ba..b4061106 100644
--- a/tests/phpunit.xml
+++ b/tests/phpunit.xml
@@ -16,6 +16,9 @@
./SP/Modules
+
+ ./SP/Modules/Cli
+