diff --git a/app/commands/DoctrineFixtures.php b/app/commands/DoctrineFixtures.php index 01c4d3f..8dd0df2 100644 --- a/app/commands/DoctrineFixtures.php +++ b/app/commands/DoctrineFixtures.php @@ -4,8 +4,8 @@ use Doctrine\DBAL; use Nette\Utils\Finder; -use Nette\Utils\Strings; -use SplFileInfo; +use Nette\Utils\FileInfo; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; @@ -18,10 +18,9 @@ * in add/fixtures directory. Also, 'db:fill' command is registered to provide * convenient usage of this function. */ +#[AsCommand(name: 'db:fill', description: 'Clear the database and fill it with initial data.')] class DoctrineFixtures extends Command { - protected static $defaultName = 'db:fill'; - /** * Loader of YAML files with database values * @var AliceLoaderInterface @@ -53,7 +52,6 @@ public function __construct( */ protected function configure() { - $this->setName('db:fill')->setDescription('Clear the database and fill it with initial data.'); $this->addOption( 'test', 't', @@ -70,7 +68,7 @@ protected function configure() * @param OutputInterface $output Console output for logging * @return int 0 on success, 1 on error */ - protected function execute(InputInterface $input, OutputInterface $output) + protected function execute(InputInterface $input, OutputInterface $output): int { $this->clearDatabase(); @@ -80,10 +78,10 @@ protected function execute(InputInterface $input, OutputInterface $output) foreach ($input->getArgument("groups") as $group) { $groupFiles = []; - /** @var SplFileInfo $file */ + /** @var FileInfo $file */ foreach ( Finder::findFiles("*.neon", "*.yml", "*.yaml", "*.json") - ->in($fixtureDir . "/" . $group) as $file + ->in($fixtureDir . "/" . $group) as $file ) { $groupFiles[] = $file->getRealPath(); } diff --git a/app/commands/Recodex/AddAdmin.php b/app/commands/Recodex/AddAdmin.php index 2864f27..297097d 100644 --- a/app/commands/Recodex/AddAdmin.php +++ b/app/commands/Recodex/AddAdmin.php @@ -4,6 +4,7 @@ use App\Helpers\RecodexApiHelper; use App\Model\Repository\Users; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputArgument; @@ -13,10 +14,9 @@ * Add admin into a group as a member. * This command is mainly designed for debugging ReCodEx API integration. */ +#[AsCommand(name: 'recodex:add-admin', description: 'Add admin into a group as a member.')] class RecodexAddAdmin extends BaseCommand { - protected static $defaultName = 'recodex:add-admin'; - /** * @var RecodexApiHelper */ @@ -43,7 +43,6 @@ public function __construct(RecodexApiHelper $recodexApi, Users $users) */ protected function configure() { - $this->setName(self::$defaultName)->setDescription('Add admin into a group as a member.'); $this->addArgument('groupId', InputArgument::REQUIRED, 'ID of the group to which the admin will be added.'); $this->addArgument('adminId', InputArgument::REQUIRED, 'ID of the admin to be added.'); } @@ -53,7 +52,7 @@ protected function configure() * @param OutputInterface $output Console output for logging * @return int 0 on success, 1 on error */ - protected function execute(InputInterface $input, OutputInterface $output) + protected function execute(InputInterface $input, OutputInterface $output): int { $this->input = $input; $this->output = $output; diff --git a/app/commands/Recodex/AddAttribute.php b/app/commands/Recodex/AddAttribute.php index a8c5714..a94e911 100644 --- a/app/commands/Recodex/AddAttribute.php +++ b/app/commands/Recodex/AddAttribute.php @@ -3,6 +3,7 @@ namespace App\Console; use App\Helpers\RecodexApiHelper; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputArgument; @@ -12,10 +13,9 @@ * Add external attribute to ReCodEx group. * This command is mainly designed for debugging ReCodEx API integration. */ +#[AsCommand(name: 'recodex:add-attribute', description: 'Add external attribute to ReCodEx group.')] class RecodexAddAttribute extends BaseCommand { - protected static $defaultName = 'recodex:add-attribute'; - /** * @var RecodexApiHelper */ @@ -35,7 +35,6 @@ public function __construct(RecodexApiHelper $recodexApi) */ protected function configure() { - $this->setName(self::$defaultName)->setDescription('Add external attribute to ReCodEx group.'); $this->addArgument('groupId', InputArgument::REQUIRED, 'ID of the group to which the attribute will be added.'); $this->addArgument('key', InputArgument::REQUIRED, 'The key of the attribute being added.'); $this->addArgument('value', InputArgument::REQUIRED, 'The value of the attribute being added.'); @@ -46,7 +45,7 @@ protected function configure() * @param OutputInterface $output Console output for logging * @return int 0 on success, 1 on error */ - protected function execute(InputInterface $input, OutputInterface $output) + protected function execute(InputInterface $input, OutputInterface $output): int { $this->input = $input; $this->output = $output; diff --git a/app/commands/Recodex/AddStudent.php b/app/commands/Recodex/AddStudent.php index 4320de0..163e566 100644 --- a/app/commands/Recodex/AddStudent.php +++ b/app/commands/Recodex/AddStudent.php @@ -4,6 +4,7 @@ use App\Helpers\RecodexApiHelper; use App\Model\Repository\Users; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputArgument; @@ -13,10 +14,9 @@ * Add student into a group as a member. * This command is mainly designed for debugging ReCodEx API integration. */ +#[AsCommand(name: 'recodex:add-student', description: 'Add student into a group as a member.')] class RecodexAddStudent extends BaseCommand { - protected static $defaultName = 'recodex:add-student'; - /** * @var RecodexApiHelper */ @@ -43,7 +43,6 @@ public function __construct(RecodexApiHelper $recodexApi, Users $users) */ protected function configure() { - $this->setName(self::$defaultName)->setDescription('Add student into a group as a member.'); $this->addArgument('groupId', InputArgument::REQUIRED, 'ID of the group to which the student will be added.'); $this->addArgument('studentId', InputArgument::REQUIRED, 'ID of the student to be added.'); } @@ -53,7 +52,7 @@ protected function configure() * @param OutputInterface $output Console output for logging * @return int 0 on success, 1 on error */ - protected function execute(InputInterface $input, OutputInterface $output) + protected function execute(InputInterface $input, OutputInterface $output): int { $this->input = $input; $this->output = $output; diff --git a/app/commands/Recodex/CreateGroup.php b/app/commands/Recodex/CreateGroup.php index d7f1a18..59fe0d1 100644 --- a/app/commands/Recodex/CreateGroup.php +++ b/app/commands/Recodex/CreateGroup.php @@ -5,6 +5,7 @@ use App\Helpers\RecodexApiHelper; use App\Model\Repository\SisScheduleEvents; use App\Model\Repository\Users; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputArgument; @@ -14,10 +15,9 @@ * Create a new group in ReCodEx form selected SIS event. * This command is mainly designed for debugging ReCodEx API integration. */ +#[AsCommand(name: 'recodex:create-group', description: 'Create a new group in ReCodEx.')] class RecodexCreateGroup extends BaseCommand { - protected static $defaultName = 'recodex:create-group'; - /** * @var RecodexApiHelper */ @@ -51,7 +51,6 @@ public function __construct(RecodexApiHelper $recodexApi, SisScheduleEvents $sis */ protected function configure() { - $this->setName(self::$defaultName)->setDescription('Create a new group in ReCodEx.'); $this->addArgument('eventId', InputArgument::REQUIRED, 'The SIS ID of the event associated with the group.'); $this->addArgument('parentId', InputArgument::REQUIRED, 'ReCodEx ID of the the parent group.'); $this->addArgument('adminId', InputArgument::REQUIRED, 'ReCodEx ID of the admin of the newly created group.'); @@ -62,7 +61,7 @@ protected function configure() * @param OutputInterface $output Console output for logging * @return int 0 on success, 1 on error */ - protected function execute(InputInterface $input, OutputInterface $output) + protected function execute(InputInterface $input, OutputInterface $output): int { $this->input = $input; $this->output = $output; diff --git a/app/commands/Recodex/Groups.php b/app/commands/Recodex/Groups.php index ad5db33..63dff53 100644 --- a/app/commands/Recodex/Groups.php +++ b/app/commands/Recodex/Groups.php @@ -7,6 +7,7 @@ use App\Model\Entity\SisAffiliation; use App\Model\Repository\SisScheduleEvents; use App\Model\Repository\Users; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputArgument; @@ -16,10 +17,9 @@ * Load groups from ReCodEx API for given user and print them out. * This command is mainly designed for debugging ReCodEx API integration. */ +#[AsCommand(name: 'recodex:groups', description: 'Load groups from ReCodEx API for given user.')] class RecodexGroups extends BaseCommand { - protected static $defaultName = 'recodex:groups'; - /** * @var RecodexApiHelper */ @@ -53,7 +53,6 @@ public function __construct(RecodexApiHelper $recodexApi, Users $users, SisSched */ protected function configure() { - $this->setName(self::$defaultName)->setDescription('Load groups from ReCodEx API for given user.'); $this->addArgument('ukco', InputArgument::REQUIRED, 'SIS ID of the user whose groups are being loaded.'); } @@ -95,7 +94,7 @@ private static function printGroups(OutputInterface $output, array $groups): voi * @param OutputInterface $output Console output for logging * @return int 0 on success, 1 on error */ - protected function execute(InputInterface $input, OutputInterface $output) + protected function execute(InputInterface $input, OutputInterface $output): int { $this->input = $input; $this->output = $output; diff --git a/app/commands/Recodex/RemoveAdmin.php b/app/commands/Recodex/RemoveAdmin.php index f65b974..7d018ef 100644 --- a/app/commands/Recodex/RemoveAdmin.php +++ b/app/commands/Recodex/RemoveAdmin.php @@ -4,6 +4,7 @@ use App\Helpers\RecodexApiHelper; use App\Model\Repository\Users; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputArgument; @@ -13,10 +14,9 @@ * Remove admin from a group. * This command is mainly designed for debugging ReCodEx API integration. */ +#[AsCommand(name: 'recodex:remove-admin', description: 'Remove admin from a group.')] class RecodexRemoveAdmin extends BaseCommand { - protected static $defaultName = 'recodex:remove-admin'; - /** * @var RecodexApiHelper */ @@ -43,7 +43,6 @@ public function __construct(RecodexApiHelper $recodexApi, Users $users) */ protected function configure() { - $this->setName(self::$defaultName)->setDescription('Remove admin from a group.'); $this->addArgument( 'groupId', InputArgument::REQUIRED, @@ -57,7 +56,7 @@ protected function configure() * @param OutputInterface $output Console output for logging * @return int 0 on success, 1 on error */ - protected function execute(InputInterface $input, OutputInterface $output) + protected function execute(InputInterface $input, OutputInterface $output): int { $this->input = $input; $this->output = $output; diff --git a/app/commands/Recodex/RemoveAttribute.php b/app/commands/Recodex/RemoveAttribute.php index 635b8ae..a2a4ae4 100644 --- a/app/commands/Recodex/RemoveAttribute.php +++ b/app/commands/Recodex/RemoveAttribute.php @@ -3,6 +3,7 @@ namespace App\Console; use App\Helpers\RecodexApiHelper; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputArgument; @@ -12,10 +13,9 @@ * Remove external attribute from ReCodEx group. * This command is mainly designed for debugging ReCodEx API integration. */ +#[AsCommand(name: 'recodex:remove-attribute', description: 'Remove external attribute from ReCodEx group.')] class RecodexRemoveAttribute extends BaseCommand { - protected static $defaultName = 'recodex:remove-attribute'; - /** * @var RecodexApiHelper */ @@ -35,7 +35,6 @@ public function __construct(RecodexApiHelper $recodexApi) */ protected function configure() { - $this->setName(self::$defaultName)->setDescription('Remove external attribute from ReCodEx group.'); $this->addArgument( 'groupId', InputArgument::REQUIRED, @@ -50,7 +49,7 @@ protected function configure() * @param OutputInterface $output Console output for logging * @return int 0 on success, 1 on error */ - protected function execute(InputInterface $input, OutputInterface $output) + protected function execute(InputInterface $input, OutputInterface $output): int { $this->input = $input; $this->output = $output; diff --git a/app/commands/Recodex/RemoveStudent.php b/app/commands/Recodex/RemoveStudent.php index 788dee6..d389a06 100644 --- a/app/commands/Recodex/RemoveStudent.php +++ b/app/commands/Recodex/RemoveStudent.php @@ -4,6 +4,7 @@ use App\Helpers\RecodexApiHelper; use App\Model\Repository\Users; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputArgument; @@ -13,10 +14,9 @@ * Remove student from a group. * This command is mainly designed for debugging ReCodEx API integration. */ +#[AsCommand(name: 'recodex:remove-student', description: 'Remove student from a group.')] class RecodexRemoveStudent extends BaseCommand { - protected static $defaultName = 'recodex:remove-student'; - /** * @var RecodexApiHelper */ @@ -43,7 +43,6 @@ public function __construct(RecodexApiHelper $recodexApi, Users $users) */ protected function configure() { - $this->setName(self::$defaultName)->setDescription('Remove student from a group.'); $this->addArgument( 'groupId', InputArgument::REQUIRED, @@ -57,7 +56,7 @@ protected function configure() * @param OutputInterface $output Console output for logging * @return int 0 on success, 1 on error */ - protected function execute(InputInterface $input, OutputInterface $output) + protected function execute(InputInterface $input, OutputInterface $output): int { $this->input = $input; $this->output = $output; diff --git a/app/commands/Recodex/Token.php b/app/commands/Recodex/Token.php index f8975ce..005d8ca 100644 --- a/app/commands/Recodex/Token.php +++ b/app/commands/Recodex/Token.php @@ -3,6 +3,7 @@ namespace App\Console; use App\Helpers\RecodexApiHelper; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; @@ -11,10 +12,9 @@ * Test the ReCodEx API by manually translating temp token into full token. * This command is mainly for debugging purposes. */ +#[AsCommand(name: 'recodex:token', description: 'Translate tmp token into full token and get user info.')] class RecodexToken extends BaseCommand { - protected static $defaultName = 'recodex:token'; - /** * @var RecodexApiHelper */ @@ -29,20 +29,12 @@ public function __construct(RecodexApiHelper $recodexApi) $this->recodexApi = $recodexApi; } - /** - * Register the command. - */ - protected function configure() - { - $this->setName(self::$defaultName)->setDescription('Translate tmp token into full token and get user info.'); - } - /** * @param InputInterface $input Console input, not used * @param OutputInterface $output Console output for logging * @return int 0 on success, 1 on error */ - protected function execute(InputInterface $input, OutputInterface $output) + protected function execute(InputInterface $input, OutputInterface $output): int { $this->input = $input; $this->output = $output; diff --git a/app/commands/SisGetCourse.php b/app/commands/SisGetCourse.php index e265c17..b65f6c8 100644 --- a/app/commands/SisGetCourse.php +++ b/app/commands/SisGetCourse.php @@ -8,6 +8,7 @@ use App\Model\Repository\SisScheduleEvents; use App\Model\Repository\SisTerms; use App\Model\Repository\Users; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputArgument; @@ -17,10 +18,9 @@ /** * Test SIS API by fetching all courses related to a user. */ +#[AsCommand(name: 'sis:course', description: 'Get courses from SIS related to given user.')] class SisGetCourse extends BaseCommand { - protected static $defaultName = 'sis:course'; - /** * @var SisHelper */ @@ -76,7 +76,6 @@ public function __construct( */ protected function configure() { - $this->setName(self::$defaultName)->setDescription('Get courses from SIS related to given user.'); $this->addArgument('ukco', InputArgument::REQUIRED, 'SIS ID of the user whose courses are being loaded.'); $this->addOption( 'year', @@ -100,7 +99,7 @@ protected function configure() * @param OutputInterface $output Console output for logging * @return int 0 on success, 1 on error */ - protected function execute(InputInterface $input, OutputInterface $output) + protected function execute(InputInterface $input, OutputInterface $output): int { $this->input = $input; $this->output = $output; diff --git a/app/commands/SisGetUser.php b/app/commands/SisGetUser.php index 18aa3b9..3fdf98d 100644 --- a/app/commands/SisGetUser.php +++ b/app/commands/SisGetUser.php @@ -3,10 +3,10 @@ namespace App\Console; use App\Helpers\SisHelper; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Tracy\Debugger; use Exception; @@ -14,10 +14,9 @@ /** * Test SIS API by fetching personal data of a user. */ +#[AsCommand(name: 'sis:user', description: 'Get personal data of a user from SIS.')] class SisGetUser extends BaseCommand { - protected static $defaultName = 'sis:user'; - /** * @var SisHelper */ @@ -37,7 +36,6 @@ public function __construct(SisHelper $sis) */ protected function configure() { - $this->setName(self::$defaultName)->setDescription('Get personal data of a user from SIS.'); $this->addArgument('ukco', InputArgument::REQUIRED, 'SIS ID of the user.'); } @@ -46,7 +44,7 @@ protected function configure() * @param OutputInterface $output Console output for logging * @return int 0 on success, 1 on error */ - protected function execute(InputInterface $input, OutputInterface $output) + protected function execute(InputInterface $input, OutputInterface $output): int { $this->input = $input; $this->output = $output; diff --git a/app/config/config.local.neon.example b/app/config/config.local.neon.example index ce14cfc..b7ed013 100644 --- a/app/config/config.local.neon.example +++ b/app/config/config.local.neon.example @@ -9,7 +9,6 @@ parameters: issuer: "%webapp.address%" audience: "%webapp.address%" expiration: 604800 # 7 days in seconds - invitationExpiration: 604800 # of an invitation token (7 days in seconds) verificationKey: "sis-ext-123" # this should be a really secret string recodex: @@ -22,12 +21,6 @@ parameters: secretRozvrhng: SECRET_TOKEN # for module 'rozvrhng' secretKdojekdo: SECRET_TOKEN # for module 'kdojekdo' - emails: # common configuration for sending email (addresses and template variables) - from: "SIS-CodEx " # sending email address - defaultAdminTo: "Administrator " # admin mail address - #debugMode: true # in debug mode, no messages are sent via SMTP (you should also active archiving) - #archivingDir: "%appDir%/../log/email-debug" # a directory where copies of all emails sent are stored (in text files) - # The most important part - a database system connection nettrine.dbal: connection: @@ -35,17 +28,3 @@ nettrine.dbal: user: "recodex-sis-ext" password: "someSecretPasswordYouNeedToSetYourself" dbname: "recodex-sis-ext" - -# configure mailing module -mail: - host: "your.smtp.forwarding.server" - clientHost: "your.sis-ext.domain" - port: 587 - username: "user" - password: "pass" - secure: "tls" - context: - ssl: - verify_peer: false - verify_peer_name: false - allow_self_signed: true diff --git a/app/config/config.neon b/app/config/config.neon index abb72c0..6b8df07 100644 --- a/app/config/config.neon +++ b/app/config/config.neon @@ -17,7 +17,6 @@ parameters: issuer: "%webapp.address%" audience: "%webapp.address%" expiration: 86400 # of regular auth tokens (seconds) - invitationExpiration: 86400 # of an invitation token (seconds) usedAlgorithm: HS256 verificationKey: "sis-ext-123" @@ -45,17 +44,6 @@ parameters: archivingDir: "" # a directory where copies of all emails sent are stored (in text files) defaultAdminTo: "Administrator " # admin mail address - linkTemplates: - assignmentUrl: "%webapp.address%/app/assignment/{id}" - exerciseUrl: "%webapp.address%/app/exercises/{id}" - shadowAssignmentUrl: "%webapp.address%/app/shadow-assignment/{id}" - solutionUrl: "%webapp.address%/app/assignment/{assignmentId}/solution/{solutionId}" - referenceSolutionUrl: "%webapp.address%/app/exercises/{exerciseId}/reference-solution/{solutionId}" - forgottenPasswordUrl: "%webapp.address%/forgotten-password/change?{token}" # URL of web application where the password can be changed - emailVerificationUrl: "%webapp.address%/email-verification?{token}" - invitationUrl: "%webapp.address%/accept-invitation?{token}" - solutionSourceFilesUrl: "%webapp.address%/app/assignment/{assignmentId}/solution/{solutionId}/sources" - application: errorPresenter: ApiError mapping: @@ -138,7 +126,6 @@ services: - App\Helpers\SisHelper(%sis%) - App\Helpers\UserActions - App\Helpers\UserUpdater - - App\Helpers\WebappLinks(%webapp.address%, %linkTemplates%) # emails - App\Helpers\Emails\EmailLocalizationHelper diff --git a/app/helpers/Pair.php b/app/helpers/Pair.php deleted file mode 100644 index 126e1b6..0000000 --- a/app/helpers/Pair.php +++ /dev/null @@ -1,16 +0,0 @@ -key = $key; - $this->value = $value; - } -} diff --git a/app/helpers/PermissionHints.php b/app/helpers/PermissionHints.php deleted file mode 100644 index 79137d2..0000000 --- a/app/helpers/PermissionHints.php +++ /dev/null @@ -1,84 +0,0 @@ -getParameters()[0]; - /** @var ?ReflectionNamedType $classObj */ - $classObj = $parameter->getType(); - $className = $classObj ? $classObj->getName() : null; - if ($className !== null && $subject instanceof $className) { - yield lcfirst(substr($method->getName(), 3)) => $method->invoke($aclModule, $subject); - } - } - } - - /** - * Get an array of permission hints for an ACL module and a resource object - * @param object $aclModule An ACL module - * @param object $subject The resource checked for permissions - * @return bool[] an associative array where keys are action names and values are boolean flags - */ - public static function get($aclModule, $subject) - { - return iterator_to_array(static::generate($aclModule, $subject)); - } - - /** - * Find single-parameter ACL check methods on an ACL module - i.e. public methods whose name starts with "can" and - * that do not have more than one required parameter. - * @param object $aclModule - * @return Generator - */ - protected static function generateAclMethods($aclModule) - { - $reflectionClass = new ReflectionClass($aclModule); - foreach ($reflectionClass->getMethods(ReflectionMethod::IS_PUBLIC) as $method) { - if (!str_starts_with($method->getName(), "can")) { - continue; - } - - if ($method->getNumberOfRequiredParameters() > 1 || $method->getNumberOfParameters() === 0) { - continue; - } - - yield $method; - } - } - - /** - * Get an array of ACL method reflections for an ACL module. The results are cached for better performance. - * @param object $aclModule - * @return ReflectionMethod[] - */ - protected static function getAclMethods($aclModule) - { - $class = get_class($aclModule); - - if (!array_key_exists($class, static::$methodCache)) { - static::$methodCache[$class] = iterator_to_array(static::generateAclMethods($aclModule)); - } - - return static::$methodCache[$class]; - } -} diff --git a/app/helpers/WebappLinks.php b/app/helpers/WebappLinks.php deleted file mode 100644 index 5ed5e6a..0000000 --- a/app/helpers/WebappLinks.php +++ /dev/null @@ -1,188 +0,0 @@ - $val) { - $link = Strings::replace($link, "/\{$var\}/", $val); - } - return $link; - } - - public function __construct(string $webappUrl, array $linkTemplates) - { - $this->assignmentUrl = Arrays::get($linkTemplates, ["assignmentUrl"], "$webappUrl/app/assignment/{id}"); - $this->exerciseUrl = Arrays::get($linkTemplates, ["exerciseUrl"], "$webappUrl/app/exercises/{id}"); - $this->shadowAssignmentUrl = Arrays::get( - $linkTemplates, - ["shadowAssignmentUrl"], - "$webappUrl/app/shadow-assignment/{id}" - ); - $this->solutionUrl = Arrays::get( - $linkTemplates, - ["solutionUrl"], - "$webappUrl/app/assignment/{assignmentId}/solution/{solutionId}" - ); - $this->referenceSolutionUrl = Arrays::get( - $linkTemplates, - ["referenceSolutionUrl"], - "$webappUrl/app/exercises/{exerciseId}/reference-solution/{solutionId}" - ); - $this->forgottenPasswordUrl = Arrays::get( - $linkTemplates, - ["forgottenPasswordUrl"], - "$webappUrl/forgotten-password/change?{token}" - ); - $this->emailVerificationUrl = Arrays::get( - $linkTemplates, - ["emailVerificationUrl"], - "$webappUrl/email-verification?{token}" - ); - $this->invitationUrl = Arrays::get( - $linkTemplates, - ["linkTemplates"], - "$webappUrl/accept-invitation?{token}" - ); - $this->solutionSourceFilesUrl = Arrays::get( - $linkTemplates, - ["solutionSourceFilesUrl"], - "$webappUrl/app/assignment/{assignmentId}/solution/{solutionId}/sources" - ); - } - - /** - * @param string $assignmentId - * @return string URL to the assignment page - */ - public function getAssignmentPageUrl(string $assignmentId): string - { - return self::getLink($this->assignmentUrl, ['id' => $assignmentId]); - } - - /** - * @param string $exerciseId - * @return string URL to the exercise page - */ - public function getExercisePageUrl(string $exerciseId): string - { - return self::getLink($this->exerciseUrl, ['id' => $exerciseId]); - } - - /** - * @param string $assignmentId (shadow assignment) - * @return string URL to the shadow assignment page - */ - public function getShadowAssignmentPageUrl(string $assignmentId): string - { - return self::getLink($this->shadowAssignmentUrl, ['id' => $assignmentId]); - } - - /** - * @param string $assignmentId - * @param string $solutionId - * @return string URL to the solution detail page - */ - public function getSolutionPageUrl(string $assignmentId, string $solutionId): string - { - return self::getLink($this->solutionUrl, ['assignmentId' => $assignmentId, 'solutionId' => $solutionId]); - } - - /** - * @param string $exerciseId - * @param string $solutionId - * @return string URL to the reference solution detail page - */ - public function getReferenceSolutionPageUrl(string $exerciseId, string $solutionId): string - { - return self::getLink( - $this->referenceSolutionUrl, - ['exerciseId' => $exerciseId, 'solutionId' => $solutionId] - ); - } - - /** - * @param string $token JWT used to reset the password - * @return string URL that can be used to reset the password - */ - public function getForgottenPasswordUrl(string $token): string - { - return self::getLink($this->forgottenPasswordUrl, ['token' => $token]); - } - - /** - * @param string $token JWT used to veify the email - * @return string URL that can be used to verify an email - */ - public function getEmailVerificationUrl(string $token): string - { - return self::getLink($this->emailVerificationUrl, ['token' => $token]); - } - - /** - * @param string $token JWT carrying invitation data - * @return string URL that can be used ti register user based on an invitation - */ - public function getInvitationUrl(string $token): string - { - return self::getLink($this->invitationUrl, ['token' => $token]); - } - - /** - * @param string $assignmentId - * @param string $solutionId - * @return string URL to the page with source files of given solution (and the possible code review) - */ - public function getSolutionSourceFilesUrl(string $assignmentId, string $solutionId) - { - return self::getLink( - $this->solutionSourceFilesUrl, - ['assignmentId' => $assignmentId, 'solutionId' => $solutionId] - ); - } -} diff --git a/app/helpers/Wildcards.php b/app/helpers/Wildcards.php deleted file mode 100644 index a55f971..0000000 --- a/app/helpers/Wildcards.php +++ /dev/null @@ -1,115 +0,0 @@ -from($path) as $file) { - /** @var SplFileInfo $file */ + /** @var FileInfo $file */ $files[] = $file->getPathname(); } return $files; diff --git a/app/model/entity/base/DeleteableEntity.php b/app/model/entity/base/DeletableEntity.php similarity index 92% rename from app/model/entity/base/DeleteableEntity.php rename to app/model/entity/base/DeletableEntity.php index d95f951..01a4827 100644 --- a/app/model/entity/base/DeleteableEntity.php +++ b/app/model/entity/base/DeletableEntity.php @@ -5,6 +5,7 @@ use DateTime; use Doctrine\ORM\Mapping as ORM; +// @phpstan-ignore trait.unused trait DeletableEntity { /** diff --git a/app/security/ACLModuleBuilder.php b/app/security/ACLModuleBuilder.php index 2a5b4d4..cbe943a 100644 --- a/app/security/ACLModuleBuilder.php +++ b/app/security/ACLModuleBuilder.php @@ -3,7 +3,7 @@ namespace App\Security; use Nette\PhpGenerator\ClassType; -use Nette\PhpGenerator\PhpLiteral; +use Nette\PhpGenerator\Literal; use Nette\Utils\Strings; use ReflectionClass; use ReflectionMethod; @@ -72,7 +72,7 @@ public function build($interfaceName, $name, $uniqueId): ClassType 'return $this->check(?, ?);', [ $action, - new PhpLiteral("[" . implode(", ", $contextStrings) . "]") + new Literal("[" . implode(", ", $contextStrings) . "]") ] ); } diff --git a/app/security/AccessManager.php b/app/security/AccessManager.php index 3ba5249..894520e 100644 --- a/app/security/AccessManager.php +++ b/app/security/AccessManager.php @@ -36,15 +36,11 @@ class AccessManager /** @var int Expiration time of newly issued tokens (in seconds) */ private $expiration; - /** @var int Expiration time of newly issued invitation tokens (in seconds) */ - private $invitationExpiration; - public function __construct(array $parameters, Users $users) { $this->users = $users; $this->verificationKey = Arrays::get($parameters, "verificationKey"); $this->expiration = Arrays::get($parameters, "expiration", 24 * 60 * 60); // one day in seconds - $this->invitationExpiration = Arrays::get($parameters, "invitationExpiration", 24 * 60 * 60); // one day in sec $this->issuer = Arrays::get($parameters, "issuer", ""); $this->audience = Arrays::get($parameters, "audience", ""); $this->usedAlgorithm = Arrays::get($parameters, "usedAlgorithm", "HS256"); @@ -80,26 +76,6 @@ public function decodeToken(string $token): AccessToken return new AccessToken($decodedToken); } - /** - * Parse and validate a JWT invitation token and extract the payload. - * @param string $token The potential JWT token - * @return InvitationToken The decoded payload wrapped in token class - * @throws ForbiddenRequestException - * @throws InvalidAccessTokenException - */ - public function decodeInvitationToken(string $token): InvitationToken - { - try { - $decodedToken = JWT::decode($token, new Key($this->verificationKey, $this->usedAlgorithm)); - } catch (DomainException $e) { - throw new InvalidAccessTokenException($token, $e); - } catch (UnexpectedValueException $e) { - throw new InvalidAccessTokenException($token, $e); - } - - return new InvitationToken((array)$decodedToken); - } - /** * @param AccessToken $token Valid JWT payload * @return User @@ -171,42 +147,6 @@ public function issueRefreshedToken(AccessToken $token): string ); } - /** - * Create an invitation for a specific user pre-filling the basic user data and optionally - * allowing the user to join selected groups. - * @param string $instanceId - * @param string $email - * @param string $firstName - * @param string $lastName - * @param string $titlesBefore - * @param string $titlesAfter - * @param string[] $groupsIds list of IDs where the user is added after registration - * @param int|null $invitationExpiration token expiration duration override (for testing purposes only) - * @throws InvalidAccessTokenException if the data are not correct - */ - public function issueInvitationToken( - string $instanceId, - string $email, - string $firstName, - string $lastName, - string $titlesBefore = "", - string $titlesAfter = "", - array $groupsIds = [], - int $invitationExpiration = null, - ): string { - $token = InvitationToken::create( - $invitationExpiration ?? $this->invitationExpiration, - $instanceId, - $email, - $firstName, - $lastName, - $titlesBefore, - $titlesAfter, - $groupsIds, - ); - return $token->encode($this->verificationKey, $this->usedAlgorithm); - } - /** * Extract the access token from the request. * @return string|null The access token parsed from the HTTP request, or null if there is no access token. diff --git a/app/security/AuthorizatorBuilder.php b/app/security/AuthorizatorBuilder.php index 690c65d..f180291 100644 --- a/app/security/AuthorizatorBuilder.php +++ b/app/security/AuthorizatorBuilder.php @@ -5,9 +5,7 @@ use LogicException; use Nette\PhpGenerator\ClassType; use Nette\PhpGenerator\Dumper; -use Nette\PhpGenerator\PhpLiteral; -use Nette\PhpGenerator\Helpers; -use Nette\Security\Permission; +use Nette\PhpGenerator\Literal; use Nette\Utils\Arrays; use ReflectionClass; use ReflectionException; @@ -48,7 +46,7 @@ public function build($aclInterfaces, array $permissions, $uniqueId): ClassType $allow = Arrays::get($rule, "allow", true); $role = Arrays::get($rule, "role", null); $resource = Arrays::get($rule, "resource", null); - $interface = $resource !== null ? new ReflectionClass(Arrays::get($aclInterfaces, $resource)) : null; + $interface = $resource !== null ? new ReflectionClass(Arrays::get($aclInterfaces, $resource) ?? '') : null; $actions = (array)Arrays::get($rule, "actions", []); $assertion = null; @@ -61,10 +59,10 @@ public function build($aclInterfaces, array $permissions, $uniqueId): ClassType $condition = $this->loadConditionClauses($conditions, $interface, $actions, $checkVariables); foreach ($checkVariables as $variableName => $variableValue) { - $assertion->addBody("? = ?;", [new PhpLiteral($variableName), new PhpLiteral($variableValue)]); + $assertion->addBody("? = ?;", [new Literal($variableName), new Literal($variableValue)]); } - $assertion->addBody("return ?;", [new PhpLiteral($condition)]); + $assertion->addBody("return ?;", [new Literal($condition)]); } $actionsString = '"' . implode('", "', $actions) . '"'; @@ -72,10 +70,10 @@ public function build($aclInterfaces, array $permissions, $uniqueId): ClassType $check->addBody( 'if (? && ? && ? && ?) {', [ - $role !== null ? new PhpLiteral(sprintf('$this->isInRole($role, "%s")', $role)) : true, - $resource !== null ? new PhpLiteral(sprintf('$resource === "%s"', $resource)) : true, - count($actions) > 0 ? new PhpLiteral(sprintf('in_array($privilege, [%s])', $actionsString)) : true, - $assertion !== null ? new PhpLiteral(sprintf('$this->%s()', $assertion->getName())) : true + $role !== null ? new Literal(sprintf('$this->isInRole($role, "%s")', $role)) : true, + $resource !== null ? new Literal(sprintf('$resource === "%s"', $resource)) : true, + count($actions) > 0 ? new Literal(sprintf('in_array($privilege, [%s])', $actionsString)) : true, + $assertion !== null ? new Literal(sprintf('$this->%s()', $assertion->getName())) : true ] ); $check->addBody('return ?;', [$allow]); @@ -108,7 +106,7 @@ private function loadConditionClauses($conditions, $interface, &$actions, array $checkVariable = "\$check_" . $this->checkCounter++; $checkValues[$checkVariable] = $this->dumper->format( '$this->policy->check(?, ?, $this->queriedIdentity)', - $conditionTarget ? new PhpLiteral(sprintf('$this->queriedContext["%s"]', $conditionTarget)) : null, + $conditionTarget ? new Literal(sprintf('$this->queriedContext["%s"]', $conditionTarget)) : null, $condition ); @@ -136,11 +134,11 @@ private function loadConditionClauses($conditions, $interface, &$actions, array } if ($type === "and") { - return $this->dumper->format("(?)", new PhpLiteral(join(" && ", $children))); - } elseif ($type === "or") { - return $this->dumper->format("(?)", new PhpLiteral(join(" || ", $children))); + return $this->dumper->format("(?)", new Literal(join(" && ", $children))); + } /* @phpstan-ignore identical.alwaysTrue */ elseif ($type === "or") { + return $this->dumper->format("(?)", new Literal(join(" || ", $children))); } else { - return new PhpLiteral("true"); + return new Literal("true"); } } diff --git a/app/security/InvitationToken.php b/app/security/InvitationToken.php deleted file mode 100644 index a81ee74..0000000 --- a/app/security/InvitationToken.php +++ /dev/null @@ -1,152 +0,0 @@ - $instanceId, - "eml" => $email, - "iat" => time(), - "exp" => time() + $expirationTime, - "usr" => [ $titlesBefore, $firstName, $lastName, $titlesAfter ], - "grp" => $groupsIds, - ]); - } - - /** - * Create token from JWT payload. - * @param array $payload The decoded/constructed payload of the token - * @throws InvalidAccessTokenException if validation fails - */ - public function __construct(array $payload) - { - $props = [ "iid" => "string", "eml" => "string", "iat" => "integer", "exp" => "integer", "usr" => "array"]; - foreach ($props as $name => $type) { - if (!array_key_exists($name, $payload) || gettype($payload[$name]) !== $type) { - throw new InvalidAccessTokenException( - "Invitation token payload property '$name' is missing or of a wrong type." - ); - } - } - - foreach ($payload["usr"] as $value) { - if (!is_string($value)) { - throw new InvalidAccessTokenException( - "Invitation token payload property 'usr' must be an array of strings." - ); - } - } - - if (count($payload["usr"]) !== 4) { - throw new InvalidAccessTokenException( - "Invitation token payload property 'usr' must have exactly four parts." - ); - } - - if (array_key_exists("grp", $payload)) { - if (!is_array($payload["grp"])) { - throw new InvalidAccessTokenException("Invitation token payload property 'grp' is not an array."); - } - - foreach ($payload["grp"] as $id) { - if (!is_string($id)) { - throw new InvalidAccessTokenException( - "Invitation token payload property 'grp' must be an array of group IDs." - ); - } - } - } - - $this->payload = $payload; - } - - /** - * Return ID of the instance where the user is being invited. - * @return string - */ - public function getInstanceId(): string - { - return $this->payload["iid"]; - } - - public function getUserName(): string - { - list($_, $firstName, $lastName) = $this->payload["usr"]; - return "$firstName $lastName"; - } - - public function getEmail(): string - { - return $this->payload["eml"]; - } - - /** - * Get data needed for constructing the user entity. - * @return array [ email, first name, last name, titles before, titles after ] - */ - public function getUserData(): array - { - list($titlesBefore, $firstName, $lastName, $titlesAfter) = $this->payload["usr"]; - return [ $this->payload["eml"], $firstName, $lastName, $titlesBefore, $titlesAfter ]; - } - - /** - * Return a list of groups to which the user is being invited. - * @return string[] - */ - public function getGroupsIds(): array - { - return $this->payload["grp"] ?? []; - } - - public function getIssuedAt(): int - { - return $this->payload["iat"]; - } - - public function getExpireAt(): DateTime - { - return new DateTime('@' . $this->payload["exp"]); - } - - public function hasExpired(): bool - { - return $this->payload["exp"] < time(); - } - - public function encode(string $verificationKey, string $usedAlgorithm): string - { - return JWT::encode($this->payload, $verificationKey, $usedAlgorithm); - } -} diff --git a/app/security/UserStorage.php b/app/security/UserStorage.php index 7005e51..b1fc889 100644 --- a/app/security/UserStorage.php +++ b/app/security/UserStorage.php @@ -42,7 +42,7 @@ public function setExpiration(?string $expire, bool $clearIdentity): void /** * @inheritDoc */ - public function saveAuthentication(IIdentity $identity): void + public function saveAuthentication(?IIdentity $identity): void { if ($identity !== null && !($identity instanceof Identity)) { throw new InvalidArgumentException("Wrong identity class"); diff --git a/composer.json b/composer.json index a1f2a02..b795385 100644 --- a/composer.json +++ b/composer.json @@ -27,9 +27,16 @@ }, "require": { "php": ">=8.2", + "contributte/console": "^0.10.0", "ext-yaml": ">=2.0", "ext-json": ">=1.7", "ext-zip": ">=1.15", + "firebase/php-jwt": "^6.11", + "guzzlehttp/guzzle": "^7.10", + "latte/latte": "^3.0", + "league/commonmark": "^2.3", + "limenet/git-version": "v0.1.6", + "nelmio/alice": "^3.14", "nette/application": "^3.1", "nette/bootstrap": "^3.1", "nette/caching": "^3.1", @@ -39,36 +46,25 @@ "nette/forms": "^3.1", "nette/http": "^3.1", "nette/mail": "^4.0", + "nette/neon": "^3.2", "nette/robot-loader": "^4.0", "nette/safe-stream": "^3.0", "nette/security": "^3.1", "nette/utils": "^4.0", - "nette/neon": "^3.2", - "latte/latte": "^3.0", - "tracy/tracy": "^2.8", - "dg/adminer-custom": "^2.0", - "contributte/console": "^0.10.0", - "nettrine/orm": "^0.8.3", - "nettrine/dbal": "^0.8.0", - "nettrine/migrations": "^0.9.0", + "nettrine/dbal": "^0.9.0", "nettrine/extensions-atlantic18": "^0.6.0", - "guzzlehttp/guzzle": "~7.4", - "symfony/process": "^7.1", - "firebase/php-jwt": "^6.3", - "mrdm-nl/ldap": "^1.1", - "bjeavons/zxcvbn-php": "^1.2", - "limenet/git-version": "v0.1.6", - "nelmio/alice": "^3.8", + "nettrine/orm": "^0.9.0", + "nettrine/migrations": "^0.9.0", "ramsey/uuid-doctrine": "^2.0", - "eluceo/ical": "^2.7", - "league/commonmark": "^2.3" + "tracy/tracy": "^2.8" }, "require-dev": { "mockery/mockery": "@stable", "mikey179/vfsstream": "@stable", "nette/tester": "^2.4", - "phpstan/phpstan": "^1.11", - "phpstan/phpstan-nette": "^1.3" + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-nette": "^2.0", + "symfony/process": "^7.1" }, "minimum-stability": "dev", "prefer-stable": true diff --git a/composer.lock b/composer.lock index 8b48bf7..ddb3839 100644 --- a/composer.lock +++ b/composer.lock @@ -4,133 +4,29 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "e291a6441a13f5ee3087b3c9fb9766f5", + "content-hash": "a296a0413c1f7c833396390b249c5bce", "packages": [ - { - "name": "behat/transliterator", - "version": "v1.5.0", - "source": { - "type": "git", - "url": "https://github.com/Behat/Transliterator.git", - "reference": "baac5873bac3749887d28ab68e2f74db3a4408af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Behat/Transliterator/zipball/baac5873bac3749887d28ab68e2f74db3a4408af", - "reference": "baac5873bac3749887d28ab68e2f74db3a4408af", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "require-dev": { - "chuyskywalker/rolling-curl": "^3.1", - "php-yaoi/php-yaoi": "^1.0", - "phpunit/phpunit": "^8.5.25 || ^9.5.19" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Behat\\Transliterator\\": "src/Behat/Transliterator" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Artistic-1.0" - ], - "description": "String transliterator", - "keywords": [ - "i18n", - "slug", - "transliterator" - ], - "support": { - "issues": "https://github.com/Behat/Transliterator/issues", - "source": "https://github.com/Behat/Transliterator/tree/v1.5.0" - }, - "time": "2022-03-30T09:27:43+00:00" - }, - { - "name": "bjeavons/zxcvbn-php", - "version": "1.3.1", - "source": { - "type": "git", - "url": "https://github.com/bjeavons/zxcvbn-php.git", - "reference": "994928ae5b17ecff8baa2406832d37bdf01116c0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bjeavons/zxcvbn-php/zipball/994928ae5b17ecff8baa2406832d37bdf01116c0", - "reference": "994928ae5b17ecff8baa2406832d37bdf01116c0", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.2 | ^8.0 | ^8.1", - "symfony/polyfill-mbstring": ">=1.3.1" - }, - "require-dev": { - "php-coveralls/php-coveralls": "*", - "phpunit/phpunit": "^8.5", - "squizlabs/php_codesniffer": "3.*" - }, - "suggest": { - "ext-gmp": "Required for optimized binomial calculations (also requires PHP >= 7.3)" - }, - "type": "library", - "autoload": { - "psr-4": { - "ZxcvbnPhp\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "See contributors", - "homepage": "https://github.com/bjeavons/zxcvbn-php" - } - ], - "description": "Realistic password strength estimation PHP library based on Zxcvbn JS", - "homepage": "https://github.com/bjeavons/zxcvbn-php", - "keywords": [ - "password", - "zxcvbn" - ], - "support": { - "issues": "https://github.com/bjeavons/zxcvbn-php/issues", - "source": "https://github.com/bjeavons/zxcvbn-php/tree/1.3.1" - }, - "time": "2021-12-21T18:37:02+00:00" - }, { "name": "brick/math", - "version": "0.12.1", + "version": "0.14.0", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "f510c0a40911935b77b86859eb5223d58d660df1" + "reference": "113a8ee2656b882d4c3164fa31aa6e12cbb7aaa2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/f510c0a40911935b77b86859eb5223d58d660df1", - "reference": "f510c0a40911935b77b86859eb5223d58d660df1", + "url": "https://api.github.com/repos/brick/math/zipball/113a8ee2656b882d4c3164fa31aa6e12cbb7aaa2", + "reference": "113a8ee2656b882d4c3164fa31aa6e12cbb7aaa2", "shasum": "" }, "require": { - "php": "^8.1" + "php": "^8.2" }, "require-dev": { "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^10.1", - "vimeo/psalm": "5.16.0" + "phpstan/phpstan": "2.1.22", + "phpunit/phpunit": "^11.5" }, "type": "library", "autoload": { @@ -160,7 +56,7 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.12.1" + "source": "https://github.com/brick/math/tree/0.14.0" }, "funding": [ { @@ -168,7 +64,7 @@ "type": "github" } ], - "time": "2023-11-29T23:19:16+00:00" + "time": "2025-08-29T12:40:03+00:00" }, { "name": "contributte/console", @@ -241,82 +137,6 @@ ], "time": "2024-01-04T20:10:58+00:00" }, - { - "name": "contributte/di", - "version": "v0.5.6", - "source": { - "type": "git", - "url": "https://github.com/contributte/di.git", - "reference": "49d6b93d46f57be319b1e811cd983bfed0c90979" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/contributte/di/zipball/49d6b93d46f57be319b1e811cd983bfed0c90979", - "reference": "49d6b93d46f57be319b1e811cd983bfed0c90979", - "shasum": "" - }, - "require": { - "nette/di": "^3.1.0", - "nette/utils": "^3.2.8 || ^4.0", - "php": ">=7.2" - }, - "conflict": { - "nette/schema": "<1.1.0" - }, - "require-dev": { - "nette/bootstrap": "^3.1.4", - "nette/robot-loader": "^3.4.2 || ^4.0", - "ninjify/nunjuck": "^0.4", - "ninjify/qa": "^0.13", - "phpstan/phpstan": "^1.9.11", - "phpstan/phpstan-deprecation-rules": "^1.1.1", - "phpstan/phpstan-nette": "^1.2.0", - "phpstan/phpstan-strict-rules": "^1.4.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.6.x-dev" - } - }, - "autoload": { - "psr-4": { - "Contributte\\DI\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Milan Felix Šulc", - "homepage": "https://f3l1x.io" - } - ], - "description": "Extra contrib to nette/di", - "homepage": "https://github.com/contributte/di", - "keywords": [ - "dependency", - "inject", - "nette" - ], - "support": { - "issues": "https://github.com/contributte/di/issues", - "source": "https://github.com/contributte/di/tree/v0.5.6" - }, - "funding": [ - { - "url": "https://contributte.org/partners.html", - "type": "custom" - }, - { - "url": "https://github.com/f3l1x", - "type": "github" - } - ], - "time": "2023-09-05T08:23:55+00:00" - }, { "name": "dflydev/dot-access-data", "version": "v3.0.3", @@ -392,50 +212,18 @@ }, "time": "2024-07-08T12:26:09+00:00" }, - { - "name": "dg/adminer-custom", - "version": "v2.0.0", - "source": { - "type": "git", - "url": "https://github.com/dg/adminer.git", - "reference": "95a992cd99f9425b5d810923bc84371b06779dfb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dg/adminer/zipball/95a992cd99f9425b5d810923bc84371b06779dfb", - "reference": "95a992cd99f9425b5d810923bc84371b06779dfb", - "shasum": "" - }, - "type": "library", - "notification-url": "https://packagist.org/downloads/", - "description": "Customization for Adminer, the best database management tool written in PHP.", - "keywords": [ - "database", - "elasticsearch", - "mongodb", - "mssql", - "mysql", - "oracle", - "postgresql", - "sqlite" - ], - "support": { - "source": "https://github.com/dg/adminer/tree/v2.0.0" - }, - "time": "2024-06-04T14:12:15+00:00" - }, { "name": "doctrine/annotations", - "version": "1.14.3", + "version": "1.14.4", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af" + "reference": "253dca476f70808a5aeed3a47cc2cc88c5cab915" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", - "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/253dca476f70808a5aeed3a47cc2cc88c5cab915", + "reference": "253dca476f70808a5aeed3a47cc2cc88c5cab915", "shasum": "" }, "require": { @@ -446,11 +234,11 @@ }, "require-dev": { "doctrine/cache": "^1.11 || ^2.0", - "doctrine/coding-standard": "^9 || ^10", - "phpstan/phpstan": "~1.4.10 || ^1.8.0", + "doctrine/coding-standard": "^9 || ^12", + "phpstan/phpstan": "~1.4.10 || ^1.10.28", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "symfony/cache": "^4.4 || ^5.4 || ^6", - "vimeo/psalm": "^4.10" + "symfony/cache": "^4.4 || ^5.4 || ^6.4 || ^7", + "vimeo/psalm": "^4.30 || ^5.14" }, "suggest": { "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" @@ -496,22 +284,23 @@ ], "support": { "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.14.3" + "source": "https://github.com/doctrine/annotations/tree/1.14.4" }, - "time": "2023-02-01T09:20:38+00:00" + "abandoned": true, + "time": "2024-09-05T10:15:52+00:00" }, { "name": "doctrine/cache", - "version": "1.13.0", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/cache.git", - "reference": "56cd022adb5514472cb144c087393c1821911d09" + "reference": "1ca8f21980e770095a31456042471a57bc4c68fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/56cd022adb5514472cb144c087393c1821911d09", - "reference": "56cd022adb5514472cb144c087393c1821911d09", + "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb", + "reference": "1ca8f21980e770095a31456042471a57bc4c68fb", "shasum": "" }, "require": { @@ -521,19 +310,13 @@ "doctrine/common": ">2.2,<2.4" }, "require-dev": { - "alcaeus/mongo-php-adapter": "^1.1", "cache/integration-tests": "dev-master", "doctrine/coding-standard": "^9", - "mongodb/mongodb": "^1.1", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "predis/predis": "~1.0", "psr/cache": "^1.0 || ^2.0 || ^3.0", "symfony/cache": "^4.4 || ^5.4 || ^6", "symfony/var-exporter": "^4.4 || ^5.4 || ^6" }, - "suggest": { - "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" - }, "type": "library", "autoload": { "psr-4": { @@ -581,7 +364,7 @@ ], "support": { "issues": "https://github.com/doctrine/cache/issues", - "source": "https://github.com/doctrine/cache/tree/1.13.0" + "source": "https://github.com/doctrine/cache/tree/2.2.0" }, "funding": [ { @@ -597,33 +380,34 @@ "type": "tidelift" } ], - "time": "2022-05-20T20:06:54+00:00" + "abandoned": true, + "time": "2022-05-20T20:07:39+00:00" }, { "name": "doctrine/collections", - "version": "2.2.2", + "version": "2.4.0", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "d8af7f248c74f195f7347424600fd9e17b57af59" + "reference": "9acfeea2e8666536edff3d77c531261c63680160" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/d8af7f248c74f195f7347424600fd9e17b57af59", - "reference": "d8af7f248c74f195f7347424600fd9e17b57af59", + "url": "https://api.github.com/repos/doctrine/collections/zipball/9acfeea2e8666536edff3d77c531261c63680160", + "reference": "9acfeea2e8666536edff3d77c531261c63680160", "shasum": "" }, "require": { "doctrine/deprecations": "^1", - "php": "^8.1" + "php": "^8.1", + "symfony/polyfill-php84": "^1.30" }, "require-dev": { - "doctrine/coding-standard": "^12", + "doctrine/coding-standard": "^14", "ext-json": "*", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^10.5", - "vimeo/psalm": "^5.11" + "phpstan/phpstan": "^2.1.30", + "phpstan/phpstan-phpunit": "^2.0.7", + "phpunit/phpunit": "^10.5.58 || ^11.5.42 || ^12.4" }, "type": "library", "autoload": { @@ -667,7 +451,7 @@ ], "support": { "issues": "https://github.com/doctrine/collections/issues", - "source": "https://github.com/doctrine/collections/tree/2.2.2" + "source": "https://github.com/doctrine/collections/tree/2.4.0" }, "funding": [ { @@ -683,24 +467,24 @@ "type": "tidelift" } ], - "time": "2024-04-18T06:56:21+00:00" + "time": "2025-10-25T09:18:13+00:00" }, { "name": "doctrine/common", - "version": "3.4.4", + "version": "3.5.0", "source": { "type": "git", "url": "https://github.com/doctrine/common.git", - "reference": "0aad4b7ab7ce8c6602dfbb1e1a24581275fb9d1a" + "reference": "d9ea4a54ca2586db781f0265d36bea731ac66ec5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/common/zipball/0aad4b7ab7ce8c6602dfbb1e1a24581275fb9d1a", - "reference": "0aad4b7ab7ce8c6602dfbb1e1a24581275fb9d1a", + "url": "https://api.github.com/repos/doctrine/common/zipball/d9ea4a54ca2586db781f0265d36bea731ac66ec5", + "reference": "d9ea4a54ca2586db781f0265d36bea731ac66ec5", "shasum": "" }, "require": { - "doctrine/persistence": "^2.0 || ^3.0", + "doctrine/persistence": "^2.0 || ^3.0 || ^4.0", "php": "^7.1 || ^8.0" }, "require-dev": { @@ -758,7 +542,7 @@ ], "support": { "issues": "https://github.com/doctrine/common/issues", - "source": "https://github.com/doctrine/common/tree/3.4.4" + "source": "https://github.com/doctrine/common/tree/3.5.0" }, "funding": [ { @@ -774,44 +558,45 @@ "type": "tidelift" } ], - "time": "2024-04-16T13:35:33+00:00" + "time": "2025-01-01T22:12:03+00:00" }, { "name": "doctrine/dbal", - "version": "3.9.1", + "version": "3.10.3", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "d7dc08f98cba352b2bab5d32c5e58f7e745c11a7" + "reference": "65edaca19a752730f290ec2fb89d593cb40afb43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/d7dc08f98cba352b2bab5d32c5e58f7e745c11a7", - "reference": "d7dc08f98cba352b2bab5d32c5e58f7e745c11a7", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/65edaca19a752730f290ec2fb89d593cb40afb43", + "reference": "65edaca19a752730f290ec2fb89d593cb40afb43", "shasum": "" }, "require": { "composer-runtime-api": "^2", - "doctrine/cache": "^1.11|^2.0", "doctrine/deprecations": "^0.5.3|^1", "doctrine/event-manager": "^1|^2", "php": "^7.4 || ^8.0", "psr/cache": "^1|^2|^3", "psr/log": "^1|^2|^3" }, + "conflict": { + "doctrine/cache": "< 1.11" + }, "require-dev": { - "doctrine/coding-standard": "12.0.0", + "doctrine/cache": "^1.11|^2.0", + "doctrine/coding-standard": "14.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.12.0", - "phpstan/phpstan-strict-rules": "^1.6", - "phpunit/phpunit": "9.6.20", - "psalm/plugin-phpunit": "0.18.4", - "slevomat/coding-standard": "8.13.1", - "squizlabs/php_codesniffer": "3.10.2", + "phpstan/phpstan": "2.1.30", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "9.6.29", + "slevomat/coding-standard": "8.24.0", + "squizlabs/php_codesniffer": "4.0.0", "symfony/cache": "^5.4|^6.0|^7.0", - "symfony/console": "^4.4|^5.4|^6.0|^7.0", - "vimeo/psalm": "4.30.0" + "symfony/console": "^4.4|^5.4|^6.0|^7.0" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -871,7 +656,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.9.1" + "source": "https://github.com/doctrine/dbal/tree/3.10.3" }, "funding": [ { @@ -887,33 +672,34 @@ "type": "tidelift" } ], - "time": "2024-09-01T13:49:23+00:00" + "time": "2025-10-09T09:05:12+00:00" }, { "name": "doctrine/deprecations", - "version": "1.1.3", + "version": "1.1.5", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" + "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", - "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", + "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, + "conflict": { + "phpunit/phpunit": "<=7.5 || >=13" + }, "require-dev": { - "doctrine/coding-standard": "^9", - "phpstan/phpstan": "1.4.10 || 1.10.15", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psalm/plugin-phpunit": "0.18.4", - "psr/log": "^1 || ^2 || ^3", - "vimeo/psalm": "4.30.0 || 5.12.0" + "doctrine/coding-standard": "^9 || ^12 || ^13", + "phpstan/phpstan": "1.4.10 || 2.1.11", + "phpstan/phpstan-phpunit": "^1.0 || ^2", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12", + "psr/log": "^1 || ^2 || ^3" }, "suggest": { "psr/log": "Allows logging deprecations via PSR-3 logger implementation" @@ -921,7 +707,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + "Doctrine\\Deprecations\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -932,9 +718,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.3" + "source": "https://github.com/doctrine/deprecations/tree/1.1.5" }, - "time": "2024-01-30T19:34:25+00:00" + "time": "2025-04-07T20:06:18+00:00" }, { "name": "doctrine/event-manager", @@ -1029,33 +815,32 @@ }, { "name": "doctrine/inflector", - "version": "2.0.10", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", - "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/6d6c96277ea252fc1304627204c3d5e6e15faa3b", + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^11.0", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.3", - "phpunit/phpunit": "^8.5 || ^9.5", - "vimeo/psalm": "^4.25 || ^5.4" + "doctrine/coding-standard": "^12.0 || ^13.0", + "phpstan/phpstan": "^1.12 || ^2.0", + "phpstan/phpstan-phpunit": "^1.4 || ^2.0", + "phpstan/phpstan-strict-rules": "^1.6 || ^2.0", + "phpunit/phpunit": "^8.5 || ^12.2" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + "Doctrine\\Inflector\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1100,7 +885,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.10" + "source": "https://github.com/doctrine/inflector/tree/2.1.0" }, "funding": [ { @@ -1116,7 +901,7 @@ "type": "tidelift" } ], - "time": "2024-02-18T20:23:39+00:00" + "time": "2025-08-10T19:31:58+00:00" }, { "name": "doctrine/instantiator", @@ -1268,16 +1053,16 @@ }, { "name": "doctrine/migrations", - "version": "3.8.1", + "version": "3.9.4", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "7760fbd0b7cb58bfb50415505a7bab821adf0877" + "reference": "1b88fcb812f2cd6e77c83d16db60e3cf1e35c66c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/7760fbd0b7cb58bfb50415505a7bab821adf0877", - "reference": "7760fbd0b7cb58bfb50415505a7bab821adf0877", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/1b88fcb812f2cd6e77c83d16db60e3cf1e35c66c", + "reference": "1b88fcb812f2cd6e77c83d16db60e3cf1e35c66c", "shasum": "" }, "require": { @@ -1295,18 +1080,18 @@ "doctrine/orm": "<2.12 || >=4" }, "require-dev": { - "doctrine/coding-standard": "^12", + "doctrine/coding-standard": "^13", "doctrine/orm": "^2.13 || ^3", - "doctrine/persistence": "^2 || ^3", + "doctrine/persistence": "^2 || ^3 || ^4", "doctrine/sql-formatter": "^1.0", "ext-pdo_sqlite": "*", "fig/log-test": "^1", - "phpstan/phpstan": "^1.10", - "phpstan/phpstan-deprecation-rules": "^1.1", - "phpstan/phpstan-phpunit": "^1.3", - "phpstan/phpstan-strict-rules": "^1.4", - "phpstan/phpstan-symfony": "^1.3", - "phpunit/phpunit": "^10.3", + "phpstan/phpstan": "^2", + "phpstan/phpstan-deprecation-rules": "^2", + "phpstan/phpstan-phpunit": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpstan/phpstan-symfony": "^2", + "phpunit/phpunit": "^10.3 || ^11.0 || ^12.0", "symfony/cache": "^5.4 || ^6.0 || ^7.0", "symfony/process": "^5.4 || ^6.0 || ^7.0", "symfony/yaml": "^5.4 || ^6.0 || ^7.0" @@ -1351,7 +1136,7 @@ ], "support": { "issues": "https://github.com/doctrine/migrations/issues", - "source": "https://github.com/doctrine/migrations/tree/3.8.1" + "source": "https://github.com/doctrine/migrations/tree/3.9.4" }, "funding": [ { @@ -1367,20 +1152,20 @@ "type": "tidelift" } ], - "time": "2024-08-28T13:17:28+00:00" + "time": "2025-08-19T06:41:07+00:00" }, { "name": "doctrine/orm", - "version": "2.19.7", + "version": "2.20.7", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "168ac31084226f94d42e7461a40ff5607a56bd35" + "reference": "59938cae57c88b386cb79c81685426c83d27a120" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/168ac31084226f94d42e7461a40ff5607a56bd35", - "reference": "168ac31084226f94d42e7461a40ff5607a56bd35", + "url": "https://api.github.com/repos/doctrine/orm/zipball/59938cae57c88b386cb79c81685426c83d27a120", + "reference": "59938cae57c88b386cb79c81685426c83d27a120", "shasum": "" }, "require": { @@ -1407,16 +1192,16 @@ }, "require-dev": { "doctrine/annotations": "^1.13 || ^2", - "doctrine/coding-standard": "^9.0.2 || ^12.0", + "doctrine/coding-standard": "^9.0.2 || ^14.0", "phpbench/phpbench": "^0.16.10 || ^1.0", - "phpstan/phpstan": "~1.4.10 || 1.11.1", + "phpstan/extension-installer": "~1.1.0 || ^1.4", + "phpstan/phpstan": "~1.4.10 || 2.1.22", + "phpstan/phpstan-deprecation-rules": "^1 || ^2", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", "psr/log": "^1 || ^2 || ^3", - "squizlabs/php_codesniffer": "3.7.2", "symfony/cache": "^4.4 || ^5.4 || ^6.4 || ^7.0", "symfony/var-exporter": "^4.4 || ^5.4 || ^6.2 || ^7.0", - "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0 || ^7.0", - "vimeo/psalm": "4.30.0 || 5.24.0" + "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0 || ^7.0" }, "suggest": { "ext-dom": "Provides support for XSD validation for XML mapping files", @@ -1466,22 +1251,22 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.19.7" + "source": "https://github.com/doctrine/orm/tree/2.20.7" }, - "time": "2024-08-23T06:54:57+00:00" + "time": "2025-10-27T21:19:59+00:00" }, { "name": "doctrine/persistence", - "version": "3.3.3", + "version": "3.4.3", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "b337726451f5d530df338fc7f68dee8781b49779" + "reference": "d59e6ef7caffe6a30f4b6f9e9079a75f52c64ae0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/b337726451f5d530df338fc7f68dee8781b49779", - "reference": "b337726451f5d530df338fc7f68dee8781b49779", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/d59e6ef7caffe6a30f4b6f9e9079a75f52c64ae0", + "reference": "d59e6ef7caffe6a30f4b6f9e9079a75f52c64ae0", "shasum": "" }, "require": { @@ -1493,14 +1278,13 @@ "doctrine/common": "<2.10" }, "require-dev": { - "doctrine/coding-standard": "^12", + "doctrine/coding-standard": "^12 || ^14", "doctrine/common": "^3.0", - "phpstan/phpstan": "1.11.1", - "phpstan/phpstan-phpunit": "^1", - "phpstan/phpstan-strict-rules": "^1.1", - "phpunit/phpunit": "^8.5 || ^9.5", - "symfony/cache": "^4.4 || ^5.4 || ^6.0", - "vimeo/psalm": "4.30.0 || 5.24.0" + "phpstan/phpstan": "^1 || 2.1.30", + "phpstan/phpstan-phpunit": "^1 || ^2", + "phpstan/phpstan-strict-rules": "^1 || ^2", + "phpunit/phpunit": "^8.5.38 || ^9.5", + "symfony/cache": "^4.4 || ^5.4 || ^6.0 || ^7.0" }, "type": "library", "autoload": { @@ -1549,7 +1333,7 @@ ], "support": { "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/3.3.3" + "source": "https://github.com/doctrine/persistence/tree/3.4.3" }, "funding": [ { @@ -1565,84 +1349,20 @@ "type": "tidelift" } ], - "time": "2024-06-20T10:14:30+00:00" - }, - { - "name": "eluceo/ical", - "version": "2.14.0", - "source": { - "type": "git", - "url": "https://github.com/markuspoerschke/iCal.git", - "reference": "3123533f7ff0af015da1d788476204f936d18135" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/markuspoerschke/iCal/zipball/3123533f7ff0af015da1d788476204f936d18135", - "reference": "3123533f7ff0af015da1d788476204f936d18135", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": ">=7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", - "symfony/deprecation-contracts": "^2.1 || ^3.0" - }, - "conflict": { - "php": "7.4.6" - }, - "require-dev": { - "ergebnis/composer-normalize": "^2.23.1", - "friendsofphp/php-cs-fixer": "^3.4", - "infection/infection": "^0.23 || ^0.26 || ^0.27", - "phpmd/phpmd": "^2.13", - "phpunit/phpunit": "^9.5", - "vimeo/psalm": "^4.8 || ^5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Eluceo\\iCal\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Markus Poerschke", - "email": "markus@poerschke.nrw", - "role": "Developer" - } - ], - "description": "The eluceo/iCal package offers an abstraction layer for creating iCalendars. You can easily create iCal files by using PHP objects instead of typing your *.ics file by hand. The output will follow RFC 5545 as best as possible.", - "homepage": "https://github.com/markuspoerschke/iCal", - "keywords": [ - "calendar", - "iCalendar", - "ical", - "ics", - "php calendar" - ], - "support": { - "docs": "https://ical.poerschke.nrw", - "forum": "https://github.com/markuspoerschke/iCal/discussions", - "issues": "https://github.com/markuspoerschke/iCal/issues", - "source": "https://github.com/markuspoerschke/iCal" - }, - "time": "2024-07-11T22:33:13+00:00" + "time": "2025-10-21T15:21:39+00:00" }, { "name": "fakerphp/faker", - "version": "v1.23.1", + "version": "v1.24.1", "source": { "type": "git", "url": "https://github.com/FakerPHP/Faker.git", - "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b" + "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/bfb4fe148adbf78eff521199619b93a52ae3554b", - "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", + "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", "shasum": "" }, "require": { @@ -1690,22 +1410,22 @@ ], "support": { "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.23.1" + "source": "https://github.com/FakerPHP/Faker/tree/v1.24.1" }, - "time": "2024-01-02T13:46:09+00:00" + "time": "2024-11-21T13:46:39+00:00" }, { "name": "firebase/php-jwt", - "version": "v6.10.1", + "version": "v6.11.1", "source": { "type": "git", "url": "https://github.com/firebase/php-jwt.git", - "reference": "500501c2ce893c824c801da135d02661199f60c5" + "reference": "d1e91ecf8c598d073d0995afa8cd5c75c6e19e66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/firebase/php-jwt/zipball/500501c2ce893c824c801da135d02661199f60c5", - "reference": "500501c2ce893c824c801da135d02661199f60c5", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/d1e91ecf8c598d073d0995afa8cd5c75c6e19e66", + "reference": "d1e91ecf8c598d073d0995afa8cd5c75c6e19e66", "shasum": "" }, "require": { @@ -1753,109 +1473,62 @@ ], "support": { "issues": "https://github.com/firebase/php-jwt/issues", - "source": "https://github.com/firebase/php-jwt/tree/v6.10.1" + "source": "https://github.com/firebase/php-jwt/tree/v6.11.1" }, - "time": "2024-05-18T18:05:11+00:00" - }, - { - "name": "forxer/gravatar", - "version": "5.0.0", - "source": { - "type": "git", - "url": "https://github.com/forxer/gravatar.git", - "reference": "0fbc0993b83be7edd5b85daafb4f3b7ee299e0c6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/forxer/gravatar/zipball/0fbc0993b83be7edd5b85daafb4f3b7ee299e0c6", - "reference": "0fbc0993b83be7edd5b85daafb4f3b7ee299e0c6", - "shasum": "" - }, - "require": { - "php": "^8.2" - }, - "require-dev": { - "laravel/pint": "^1.16.0", - "rector/rector": "^1.1.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Gravatar\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Vincent Garnier", - "email": "forxer@gmail.org" - } - ], - "description": "A library providing easy gravatar integration.", - "homepage": "https://github.com/forxer/gravatar", - "keywords": [ - "gravatar", - "php" - ], - "support": { - "email": "forxer@gmail.com", - "issues": "https://github.com/forxer/gravatar/issues", - "source": "https://github.com/forxer/gravatar/tree/5.0.0" - }, - "time": "2024-05-26T21:45:17+00:00" + "time": "2025-04-09T20:32:01+00:00" }, { "name": "gedmo/doctrine-extensions", - "version": "v3.16.1", + "version": "v3.21.0", "source": { "type": "git", "url": "https://github.com/doctrine-extensions/DoctrineExtensions.git", - "reference": "e85560ed96f977b8c29428a99222cb2ef2f0e80d" + "reference": "eb53dfcb2b592327b76ac5226fbb003d32aea37e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine-extensions/DoctrineExtensions/zipball/e85560ed96f977b8c29428a99222cb2ef2f0e80d", - "reference": "e85560ed96f977b8c29428a99222cb2ef2f0e80d", + "url": "https://api.github.com/repos/doctrine-extensions/DoctrineExtensions/zipball/eb53dfcb2b592327b76ac5226fbb003d32aea37e", + "reference": "eb53dfcb2b592327b76ac5226fbb003d32aea37e", "shasum": "" }, "require": { - "behat/transliterator": "^1.2", "doctrine/collections": "^1.2 || ^2.0", - "doctrine/common": "^2.13 || ^3.0", "doctrine/deprecations": "^1.0", "doctrine/event-manager": "^1.2 || ^2.0", - "doctrine/persistence": "^2.2 || ^3.0", + "doctrine/persistence": "^2.2 || ^3.0 || ^4.0", "php": "^7.4 || ^8.0", "psr/cache": "^1 || ^2 || ^3", "psr/clock": "^1", - "symfony/cache": "^5.4 || ^6.0 || ^7.0" + "symfony/cache": "^5.4 || ^6.0 || ^7.0", + "symfony/string": "^5.4 || ^6.0 || ^7.0" }, "conflict": { + "behat/transliterator": "<1.2 || >=2.0", "doctrine/annotations": "<1.13 || >=3.0", - "doctrine/dbal": "<3.2 || >=4.0", + "doctrine/common": "<2.13 || >=4.0", + "doctrine/dbal": "<3.7 || >=5.0", "doctrine/mongodb-odm": "<2.3 || >=3.0", - "doctrine/orm": "<2.14.0 || 2.16.0 || 2.16.1 || >=4.0" + "doctrine/orm": "<2.20 || >=3.0 <3.3 || >=4.0" }, "require-dev": { + "behat/transliterator": "^1.2", "doctrine/annotations": "^1.13 || ^2.0", "doctrine/cache": "^1.11 || ^2.0", - "doctrine/dbal": "^3.2", + "doctrine/common": "^2.13 || ^3.0", + "doctrine/dbal": "^3.7 || ^4.0", "doctrine/doctrine-bundle": "^2.3", "doctrine/mongodb-odm": "^2.3", - "doctrine/orm": "^2.14.0 || ^3.0", - "friendsofphp/php-cs-fixer": "^3.14.0", + "doctrine/orm": "^2.20 || ^3.3", + "friendsofphp/php-cs-fixer": "^3.70", "nesbot/carbon": "^2.71 || ^3.0", - "phpstan/phpstan": "^1.11", - "phpstan/phpstan-doctrine": "^1.4", - "phpstan/phpstan-phpunit": "^1.4", + "phpstan/phpstan": "^2.1.1", + "phpstan/phpstan-doctrine": "^2.0.1", + "phpstan/phpstan-phpunit": "^2.0.3", "phpunit/phpunit": "^9.6", - "rector/rector": "^1.1", + "rector/rector": "^2.0.6", "symfony/console": "^5.4 || ^6.0 || ^7.0", "symfony/doctrine-bridge": "^5.4 || ^6.0 || ^7.0", - "symfony/phpunit-bridge": "^6.0 || ^7.0", + "symfony/phpunit-bridge": "^6.4 || ^7.0", "symfony/uid": "^5.4 || ^6.0 || ^7.0", "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, @@ -1912,10 +1585,9 @@ "uploadable" ], "support": { - "email": "gediminas.morkevicius@gmail.com", + "docs": "https://github.com/doctrine-extensions/DoctrineExtensions/tree/main/doc", "issues": "https://github.com/doctrine-extensions/DoctrineExtensions/issues", - "source": "https://github.com/doctrine-extensions/DoctrineExtensions/tree/v3.16.1", - "wiki": "https://github.com/Atlantic18/DoctrineExtensions/tree/main/doc" + "source": "https://github.com/doctrine-extensions/DoctrineExtensions/tree/v3.21.0" }, "funding": [ { @@ -1935,26 +1607,26 @@ "type": "github" } ], - "time": "2024-06-25T16:22:14+00:00" + "time": "2025-09-22T17:04:34+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.9.2", + "version": "7.10.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "d281ed313b989f213357e3be1a179f02196ac99b" + "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/d281ed313b989f213357e3be1a179f02196ac99b", - "reference": "d281ed313b989f213357e3be1a179f02196ac99b", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", + "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0.3", - "guzzlehttp/psr7": "^2.7.0", + "guzzlehttp/promises": "^2.3", + "guzzlehttp/psr7": "^2.8", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -2045,7 +1717,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.9.2" + "source": "https://github.com/guzzle/guzzle/tree/7.10.0" }, "funding": [ { @@ -2061,20 +1733,20 @@ "type": "tidelift" } ], - "time": "2024-07-24T11:22:20+00:00" + "time": "2025-08-23T22:36:01+00:00" }, { "name": "guzzlehttp/promises", - "version": "2.0.3", + "version": "2.3.0", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8" + "reference": "481557b130ef3790cf82b713667b43030dc9c957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8", - "reference": "6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8", + "url": "https://api.github.com/repos/guzzle/promises/zipball/481557b130ef3790cf82b713667b43030dc9c957", + "reference": "481557b130ef3790cf82b713667b43030dc9c957", "shasum": "" }, "require": { @@ -2082,7 +1754,7 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.39 || ^9.6.20" + "phpunit/phpunit": "^8.5.44 || ^9.6.25" }, "type": "library", "extra": { @@ -2128,7 +1800,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.3" + "source": "https://github.com/guzzle/promises/tree/2.3.0" }, "funding": [ { @@ -2144,20 +1816,20 @@ "type": "tidelift" } ], - "time": "2024-07-18T10:29:17+00:00" + "time": "2025-08-22T14:34:08+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.7.0", + "version": "2.8.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201" + "reference": "21dc724a0583619cd1652f673303492272778051" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/a70f5c95fb43bc83f07c9c948baa0dc1829bf201", - "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/21dc724a0583619cd1652f673303492272778051", + "reference": "21dc724a0583619cd1652f673303492272778051", "shasum": "" }, "require": { @@ -2173,7 +1845,7 @@ "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", "http-interop/http-factory-tests": "0.9.0", - "phpunit/phpunit": "^8.5.39 || ^9.6.20" + "phpunit/phpunit": "^8.5.44 || ^9.6.25" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" @@ -2244,7 +1916,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.7.0" + "source": "https://github.com/guzzle/psr7/tree/2.8.0" }, "funding": [ { @@ -2260,26 +1932,26 @@ "type": "tidelift" } ], - "time": "2024-07-18T11:15:46+00:00" + "time": "2025-08-23T21:21:41+00:00" }, { "name": "latte/latte", - "version": "v3.0.18", + "version": "v3.0.24", "source": { "type": "git", "url": "https://github.com/nette/latte.git", - "reference": "fca0a3eddd70213201b3b3abec0cb8dde7bbc259" + "reference": "2ec95b542197d82a4837ba5949bd823d0ca7d170" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/latte/zipball/fca0a3eddd70213201b3b3abec0cb8dde7bbc259", - "reference": "fca0a3eddd70213201b3b3abec0cb8dde7bbc259", + "url": "https://api.github.com/repos/nette/latte/zipball/2ec95b542197d82a4837ba5949bd823d0ca7d170", + "reference": "2ec95b542197d82a4837ba5949bd823d0ca7d170", "shasum": "" }, "require": { "ext-json": "*", "ext-tokenizer": "*", - "php": "8.0 - 8.4" + "php": "8.0 - 8.5" }, "conflict": { "nette/application": "<3.1.7", @@ -2289,7 +1961,7 @@ "nette/php-generator": "^4.0", "nette/tester": "^2.5", "nette/utils": "^4.0", - "phpstan/phpstan": "^1", + "phpstan/phpstan-nette": "^2.0@stable", "tracy/tracy": "^2.10" }, "suggest": { @@ -2310,6 +1982,9 @@ } }, "autoload": { + "psr-4": { + "Latte\\": "src/Latte" + }, "classmap": [ "src/" ] @@ -2344,22 +2019,22 @@ ], "support": { "issues": "https://github.com/nette/latte/issues", - "source": "https://github.com/nette/latte/tree/v3.0.18" + "source": "https://github.com/nette/latte/tree/v3.0.24" }, - "time": "2024-08-06T07:58:55+00:00" + "time": "2025-10-31T00:53:04+00:00" }, { "name": "league/commonmark", - "version": "2.5.3", + "version": "2.7.1", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "b650144166dfa7703e62a22e493b853b58d874b0" + "reference": "10732241927d3971d28e7ea7b5712721fa2296ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/b650144166dfa7703e62a22e493b853b58d874b0", - "reference": "b650144166dfa7703e62a22e493b853b58d874b0", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/10732241927d3971d28e7ea7b5712721fa2296ca", + "reference": "10732241927d3971d28e7ea7b5712721fa2296ca", "shasum": "" }, "require": { @@ -2384,10 +2059,11 @@ "phpstan/phpstan": "^1.8.2", "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0", "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3 | ^6.0 || ^7.0", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 || ^7.0", + "symfony/finder": "^5.3 | ^6.0 | ^7.0", + "symfony/process": "^5.4 | ^6.0 | ^7.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 | ^7.0", "unleashedtech/php-coding-standard": "^3.1.1", - "vimeo/psalm": "^4.24.0 || ^5.0.0" + "vimeo/psalm": "^4.24.0 || ^5.0.0 || ^6.0.0" }, "suggest": { "symfony/yaml": "v2.3+ required if using the Front Matter extension" @@ -2395,7 +2071,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.6-dev" + "dev-main": "2.8-dev" } }, "autoload": { @@ -2452,7 +2128,7 @@ "type": "tidelift" } ], - "time": "2024-08-16T11:46:16+00:00" + "time": "2025-07-20T12:47:49+00:00" }, { "name": "league/config", @@ -3076,12 +2752,12 @@ "type": "library", "extra": { "laravel": { - "providers": [ - "limenet\\GitVersion\\Laravel\\ServiceProvider" - ], "aliases": { "GitVersion": "limenet\\GitVersion\\Laravel\\Facade" - } + }, + "providers": [ + "limenet\\GitVersion\\Laravel\\ServiceProvider" + ] } }, "autoload": { @@ -3104,68 +2780,21 @@ "issues": "https://github.com/limenet/git-version/issues", "source": "https://github.com/limenet/git-version/tree/master" }, + "abandoned": true, "time": "2018-11-01T09:47:34+00:00" }, - { - "name": "mrdm-nl/ldap", - "version": "1.1.1", - "target-dir": "Toyota/Component/Ldap", - "source": { - "type": "git", - "url": "https://github.com/mrdm-nl/ldap.git", - "reference": "b1ad191098c92b12b68f89c42cb624db19294e11" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mrdm-nl/ldap/zipball/b1ad191098c92b12b68f89c42cb624db19294e11", - "reference": "b1ad191098c92b12b68f89c42cb624db19294e11", - "shasum": "" - }, - "require": { - "ext-ldap": "*", - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": ">=3.7.13" - }, - "type": "library", - "autoload": { - "psr-0": { - "Toyota\\Component\\Ldap\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Cyril Cottet", - "email": "cyril.cottet@gmail.com" - } - ], - "description": "LDAP made easy & practical to use in PHP", - "homepage": "https://github.com/mrdm-nl/ldap", - "keywords": [ - "ldap" - ], - "support": { - "source": "https://github.com/mrdm-nl/ldap/tree/1.1.1" - }, - "time": "2013-12-23T16:31:55+00:00" - }, { "name": "myclabs/deep-copy", - "version": "1.12.0", + "version": "1.13.4", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c" + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", - "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a", "shasum": "" }, "require": { @@ -3204,7 +2833,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.12.0" + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.4" }, "funding": [ { @@ -3212,27 +2841,28 @@ "type": "tidelift" } ], - "time": "2024-06-12T14:39:25+00:00" + "time": "2025-08-01T08:46:24+00:00" }, { "name": "nelmio/alice", - "version": "3.13.6", + "version": "3.14.2", "source": { "type": "git", "url": "https://github.com/nelmio/alice.git", - "reference": "76caab8675c68956d56a2dd03f66384251e0aa7c" + "reference": "f353866956ac4760514e24e8d51902d261d50489" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nelmio/alice/zipball/76caab8675c68956d56a2dd03f66384251e0aa7c", - "reference": "76caab8675c68956d56a2dd03f66384251e0aa7c", + "url": "https://api.github.com/repos/nelmio/alice/zipball/f353866956ac4760514e24e8d51902d261d50489", + "reference": "f353866956ac4760514e24e8d51902d261d50489", "shasum": "" }, "require": { "fakerphp/faker": "^1.10", "myclabs/deep-copy": "^1.10", "php": "^8.1", - "sebastian/comparator": "^3.0 || ^4.0 || ^5.0 || ^6.0", + "sebastian/comparator": "^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0", + "symfony/polyfill-php84": "^1.31", "symfony/property-access": "^6.4 || ^7.0", "symfony/yaml": "^6.0 || ^7.0" }, @@ -3299,7 +2929,7 @@ ], "support": { "issues": "https://github.com/nelmio/alice/issues", - "source": "https://github.com/nelmio/alice/tree/3.13.6" + "source": "https://github.com/nelmio/alice/tree/3.14.2" }, "funding": [ { @@ -3307,31 +2937,31 @@ "type": "github" } ], - "time": "2024-07-03T17:54:12+00:00" + "time": "2025-02-26T09:01:07+00:00" }, { "name": "nette/application", - "version": "v3.2.5", + "version": "v3.2.7", "source": { "type": "git", "url": "https://github.com/nette/application.git", - "reference": "1e868966c3de55a087e5ec938189ec34a1648b04" + "reference": "262f16bc2adab6f489a715efd854f1e2c909c702" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/application/zipball/1e868966c3de55a087e5ec938189ec34a1648b04", - "reference": "1e868966c3de55a087e5ec938189ec34a1648b04", + "url": "https://api.github.com/repos/nette/application/zipball/262f16bc2adab6f489a715efd854f1e2c909c702", + "reference": "262f16bc2adab6f489a715efd854f1e2c909c702", "shasum": "" }, "require": { "nette/component-model": "^3.1", - "nette/http": "^3.3", + "nette/http": "^3.3.2", "nette/routing": "^3.1", "nette/utils": "^4.0", - "php": "8.1 - 8.3" + "php": "8.1 - 8.4" }, "conflict": { - "latte/latte": "<2.7.1 || >=3.0.0 <3.0.12 || >=3.1", + "latte/latte": "<2.7.1 || >=3.0.0 <3.0.18 || >=3.2", "nette/caching": "<3.2", "nette/di": "<3.2", "nette/forms": "<3.2", @@ -3339,15 +2969,15 @@ "tracy/tracy": "<2.9" }, "require-dev": { - "jetbrains/phpstorm-attributes": "dev-master", - "latte/latte": "^2.10.2 || ^3.0.12", - "mockery/mockery": "^2.0", + "jetbrains/phpstorm-attributes": "^1.2", + "latte/latte": "^2.10.2 || ^3.0.18", + "mockery/mockery": "^1.6@stable", "nette/di": "^3.2", "nette/forms": "^3.2", "nette/robot-loader": "^4.0", "nette/security": "^3.2", - "nette/tester": "^2.5", - "phpstan/phpstan-nette": "^1.0", + "nette/tester": "^2.5.2", + "phpstan/phpstan-nette": "^2.0@stable", "tracy/tracy": "^2.9" }, "suggest": { @@ -3361,6 +2991,9 @@ } }, "autoload": { + "psr-4": { + "Nette\\": "src" + }, "classmap": [ "src/" ] @@ -3397,28 +3030,28 @@ ], "support": { "issues": "https://github.com/nette/application/issues", - "source": "https://github.com/nette/application/tree/v3.2.5" + "source": "https://github.com/nette/application/tree/v3.2.7" }, - "time": "2024-05-13T09:10:31+00:00" + "time": "2025-07-17T22:41:57+00:00" }, { "name": "nette/bootstrap", - "version": "v3.2.4", + "version": "v3.2.7", "source": { "type": "git", "url": "https://github.com/nette/bootstrap.git", - "reference": "4876d25955b4164d714bc17c265f664f6594685b" + "reference": "10fdb1cb05497da39396f2ce1785cea67c8aa439" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/bootstrap/zipball/4876d25955b4164d714bc17c265f664f6594685b", - "reference": "4876d25955b4164d714bc17c265f664f6594685b", + "url": "https://api.github.com/repos/nette/bootstrap/zipball/10fdb1cb05497da39396f2ce1785cea67c8aa439", + "reference": "10fdb1cb05497da39396f2ce1785cea67c8aa439", "shasum": "" }, "require": { "nette/di": "^3.1", "nette/utils": "^3.2.1 || ^4.0", - "php": "8.0 - 8.4" + "php": "8.0 - 8.5" }, "conflict": { "tracy/tracy": "<2.6" @@ -3435,7 +3068,7 @@ "nette/safe-stream": "^2.2", "nette/security": "^3.0", "nette/tester": "^2.4", - "phpstan/phpstan-nette": "^1.0", + "phpstan/phpstan-nette": "^2.0@stable", "tracy/tracy": "^2.9" }, "suggest": { @@ -3449,6 +3082,9 @@ } }, "autoload": { + "psr-4": { + "Nette\\": "src" + }, "classmap": [ "src/" ] @@ -3478,36 +3114,36 @@ ], "support": { "issues": "https://github.com/nette/bootstrap/issues", - "source": "https://github.com/nette/bootstrap/tree/v3.2.4" + "source": "https://github.com/nette/bootstrap/tree/v3.2.7" }, - "time": "2024-06-18T22:13:57+00:00" + "time": "2025-08-01T02:02:03+00:00" }, { "name": "nette/caching", - "version": "v3.3.1", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/nette/caching.git", - "reference": "b37d2c9647b41a9d04f099f10300dc5496c4eb77" + "reference": "a1c13221b350d0db0a2bd4a77c1e7b65e0aa065d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/caching/zipball/b37d2c9647b41a9d04f099f10300dc5496c4eb77", - "reference": "b37d2c9647b41a9d04f099f10300dc5496c4eb77", + "url": "https://api.github.com/repos/nette/caching/zipball/a1c13221b350d0db0a2bd4a77c1e7b65e0aa065d", + "reference": "a1c13221b350d0db0a2bd4a77c1e7b65e0aa065d", "shasum": "" }, "require": { "nette/utils": "^4.0", - "php": "8.0 - 8.4" + "php": "8.1 - 8.5" }, "conflict": { - "latte/latte": ">=3.0.0 <3.0.12" + "latte/latte": "<3.0.12" }, "require-dev": { - "latte/latte": "^2.11 || ^3.0.12", + "latte/latte": "^3.0.12", "nette/di": "^3.1 || ^4.0", "nette/tester": "^2.4", - "phpstan/phpstan": "^1.0", + "phpstan/phpstan-nette": "^2.0@stable", "psr/simple-cache": "^2.0 || ^3.0", "tracy/tracy": "^2.9" }, @@ -3517,10 +3153,13 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "3.4-dev" } }, "autoload": { + "psr-4": { + "Nette\\": "src" + }, "classmap": [ "src/" ] @@ -3552,31 +3191,31 @@ ], "support": { "issues": "https://github.com/nette/caching/issues", - "source": "https://github.com/nette/caching/tree/v3.3.1" + "source": "https://github.com/nette/caching/tree/v3.4.0" }, - "time": "2024-08-07T00:01:58+00:00" + "time": "2025-08-06T23:05:08+00:00" }, { "name": "nette/component-model", - "version": "v3.1.0", + "version": "v3.1.2", "source": { "type": "git", "url": "https://github.com/nette/component-model.git", - "reference": "4e0946a788b4ac42ea903b761c693ec7dd083a69" + "reference": "f8debd4867117e969478a7142047c7c3c389d085" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/component-model/zipball/4e0946a788b4ac42ea903b761c693ec7dd083a69", - "reference": "4e0946a788b4ac42ea903b761c693ec7dd083a69", + "url": "https://api.github.com/repos/nette/component-model/zipball/f8debd4867117e969478a7142047c7c3c389d085", + "reference": "f8debd4867117e969478a7142047c7c3c389d085", "shasum": "" }, "require": { "nette/utils": "^4.0", - "php": "8.1 - 8.3" + "php": "8.1 - 8.5" }, "require-dev": { "nette/tester": "^2.5", - "phpstan/phpstan": "^1.0", + "phpstan/phpstan-nette": "^2.0@stable", "tracy/tracy": "^2.9" }, "type": "library", @@ -3586,6 +3225,9 @@ } }, "autoload": { + "psr-4": { + "Nette\\": "src" + }, "classmap": [ "src/" ] @@ -3614,36 +3256,36 @@ ], "support": { "issues": "https://github.com/nette/component-model/issues", - "source": "https://github.com/nette/component-model/tree/v3.1.0" + "source": "https://github.com/nette/component-model/tree/v3.1.2" }, - "time": "2024-02-08T20:25:40+00:00" + "time": "2025-08-06T22:45:03+00:00" }, { "name": "nette/database", - "version": "v3.2.4", + "version": "v3.2.8", "source": { "type": "git", "url": "https://github.com/nette/database.git", - "reference": "8e9a427d98ec0929102ee037016bb47eb7e8b75c" + "reference": "1a84d3e61aa33461a3d6415235b25a7cd8b3f442" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/database/zipball/8e9a427d98ec0929102ee037016bb47eb7e8b75c", - "reference": "8e9a427d98ec0929102ee037016bb47eb7e8b75c", + "url": "https://api.github.com/repos/nette/database/zipball/1a84d3e61aa33461a3d6415235b25a7cd8b3f442", + "reference": "1a84d3e61aa33461a3d6415235b25a7cd8b3f442", "shasum": "" }, "require": { "ext-pdo": "*", "nette/caching": "^3.2", "nette/utils": "^4.0", - "php": "8.1 - 8.4" + "php": "8.1 - 8.5" }, "require-dev": { - "jetbrains/phpstorm-attributes": "^1.0", - "mockery/mockery": "^1.6", + "jetbrains/phpstorm-attributes": "^1.2", + "mockery/mockery": "^1.6@stable", "nette/di": "^3.1", "nette/tester": "^2.5", - "phpstan/phpstan-nette": "^1.0", + "phpstan/phpstan-nette": "^2.0@stable", "tracy/tracy": "^2.9" }, "type": "library", @@ -3653,6 +3295,9 @@ } }, "autoload": { + "psr-4": { + "Nette\\": "src" + }, "classmap": [ "src/" ] @@ -3689,37 +3334,37 @@ ], "support": { "issues": "https://github.com/nette/database/issues", - "source": "https://github.com/nette/database/tree/v3.2.4" + "source": "https://github.com/nette/database/tree/v3.2.8" }, - "time": "2024-08-28T01:03:21+00:00" + "time": "2025-10-30T22:06:23+00:00" }, { "name": "nette/di", - "version": "v3.2.2", + "version": "v3.2.5", "source": { "type": "git", "url": "https://github.com/nette/di.git", - "reference": "50beb3271322a7c9a7b9f76d991476c9ae5c82d6" + "reference": "5708c328ce7658a73c96b14dd6da7b8b27bf220f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/di/zipball/50beb3271322a7c9a7b9f76d991476c9ae5c82d6", - "reference": "50beb3271322a7c9a7b9f76d991476c9ae5c82d6", + "url": "https://api.github.com/repos/nette/di/zipball/5708c328ce7658a73c96b14dd6da7b8b27bf220f", + "reference": "5708c328ce7658a73c96b14dd6da7b8b27bf220f", "shasum": "" }, "require": { "ext-ctype": "*", "ext-tokenizer": "*", - "nette/neon": "^3.3 || ^4.0", - "nette/php-generator": "^4.1.3", + "nette/neon": "^3.3", + "nette/php-generator": "^4.1.6", "nette/robot-loader": "^4.0", "nette/schema": "^1.2.5", "nette/utils": "^4.0", - "php": "8.1 - 8.3" + "php": "8.1 - 8.5" }, "require-dev": { "nette/tester": "^2.5.2", - "phpstan/phpstan": "^1.0", + "phpstan/phpstan-nette": "^2.0@stable", "tracy/tracy": "^2.9" }, "type": "library", @@ -3729,6 +3374,9 @@ } }, "autoload": { + "psr-4": { + "Nette\\": "src" + }, "classmap": [ "src/" ] @@ -3762,9 +3410,9 @@ ], "support": { "issues": "https://github.com/nette/di/issues", - "source": "https://github.com/nette/di/tree/v3.2.2" + "source": "https://github.com/nette/di/tree/v3.2.5" }, - "time": "2024-05-16T13:30:24+00:00" + "time": "2025-08-14T22:59:46+00:00" }, { "name": "nette/finder", @@ -3821,16 +3469,16 @@ }, { "name": "nette/forms", - "version": "v3.2.4", + "version": "v3.2.7", "source": { "type": "git", "url": "https://github.com/nette/forms.git", - "reference": "e61535036669a78bcafb061dcfa46da827fcf377" + "reference": "cedc41fe0eff7568f8875d6e4347e95bc4f0cf7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/forms/zipball/e61535036669a78bcafb061dcfa46da827fcf377", - "reference": "e61535036669a78bcafb061dcfa46da827fcf377", + "url": "https://api.github.com/repos/nette/forms/zipball/cedc41fe0eff7568f8875d6e4347e95bc4f0cf7a", + "reference": "cedc41fe0eff7568f8875d6e4347e95bc4f0cf7a", "shasum": "" }, "require": { @@ -3840,14 +3488,14 @@ "php": "8.1 - 8.4" }, "conflict": { - "latte/latte": ">=3.0.0 <3.0.12 || >=3.1" + "latte/latte": ">=3.0.0 <3.0.12 || >=3.2" }, "require-dev": { "latte/latte": "^2.10.2 || ^3.0.12", "nette/application": "^3.0", "nette/di": "^3.0", "nette/tester": "^2.5.2", - "phpstan/phpstan-nette": "^1", + "phpstan/phpstan-nette": "^2.0@stable", "tracy/tracy": "^2.9" }, "suggest": { @@ -3860,6 +3508,9 @@ } }, "autoload": { + "psr-4": { + "Nette\\": "src" + }, "classmap": [ "src/" ] @@ -3892,27 +3543,27 @@ ], "support": { "issues": "https://github.com/nette/forms/issues", - "source": "https://github.com/nette/forms/tree/v3.2.4" + "source": "https://github.com/nette/forms/tree/v3.2.7" }, - "time": "2024-08-05T23:11:27+00:00" + "time": "2025-07-17T22:54:05+00:00" }, { "name": "nette/http", - "version": "v3.3.0", + "version": "v3.3.3", "source": { "type": "git", "url": "https://github.com/nette/http.git", - "reference": "c779293fb79e6d2a16d474cd19dce866615f3b9c" + "reference": "c557f21c8cedd621dbfd7990752b1d55ef353f1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/http/zipball/c779293fb79e6d2a16d474cd19dce866615f3b9c", - "reference": "c779293fb79e6d2a16d474cd19dce866615f3b9c", + "url": "https://api.github.com/repos/nette/http/zipball/c557f21c8cedd621dbfd7990752b1d55ef353f1d", + "reference": "c557f21c8cedd621dbfd7990752b1d55ef353f1d", "shasum": "" }, "require": { "nette/utils": "^4.0.4", - "php": "8.1 - 8.3" + "php": "8.1 - 8.5" }, "conflict": { "nette/di": "<3.0.3", @@ -3922,7 +3573,7 @@ "nette/di": "^3.0", "nette/security": "^3.0", "nette/tester": "^2.4", - "phpstan/phpstan": "^1.0", + "phpstan/phpstan-nette": "^2.0@stable", "tracy/tracy": "^2.8" }, "suggest": { @@ -3938,6 +3589,9 @@ } }, "autoload": { + "psr-4": { + "Nette\\": "src" + }, "classmap": [ "src/" ] @@ -3973,33 +3627,33 @@ ], "support": { "issues": "https://github.com/nette/http/issues", - "source": "https://github.com/nette/http/tree/v3.3.0" + "source": "https://github.com/nette/http/tree/v3.3.3" }, - "time": "2024-01-30T18:16:20+00:00" + "time": "2025-10-30T22:32:24+00:00" }, { "name": "nette/mail", - "version": "v4.0.2", + "version": "v4.0.4", "source": { "type": "git", "url": "https://github.com/nette/mail.git", - "reference": "c0b81124284bee573ee968de98fe3dcf2c2a9b5e" + "reference": "5f16f76ed14a32f34580811d1a07ac357352bbc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/mail/zipball/c0b81124284bee573ee968de98fe3dcf2c2a9b5e", - "reference": "c0b81124284bee573ee968de98fe3dcf2c2a9b5e", + "url": "https://api.github.com/repos/nette/mail/zipball/5f16f76ed14a32f34580811d1a07ac357352bbc4", + "reference": "5f16f76ed14a32f34580811d1a07ac357352bbc4", "shasum": "" }, "require": { "ext-iconv": "*", "nette/utils": "^4.0", - "php": "8.0 - 8.3" + "php": "8.0 - 8.5" }, "require-dev": { "nette/di": "^3.1 || ^4.0", "nette/tester": "^2.4", - "phpstan/phpstan-nette": "^1.0", + "phpstan/phpstan-nette": "^2.0@stable", "tracy/tracy": "^2.8" }, "suggest": { @@ -4013,6 +3667,9 @@ } }, "autoload": { + "psr-4": { + "Nette\\": "src" + }, "classmap": [ "src/" ] @@ -4033,7 +3690,7 @@ "homepage": "https://nette.org/contributors" } ], - "description": "📧 Nette Mail: handy email creation and transfer library for PHP with both text and MIME-compliant support.", + "description": "📧 Nette Mail: A handy library for creating and sending emails in PHP.", "homepage": "https://nette.org", "keywords": [ "mail", @@ -4044,31 +3701,31 @@ ], "support": { "issues": "https://github.com/nette/mail/issues", - "source": "https://github.com/nette/mail/tree/v4.0.2" + "source": "https://github.com/nette/mail/tree/v4.0.4" }, - "time": "2023-10-02T20:59:33+00:00" + "time": "2025-08-01T02:09:42+00:00" }, { "name": "nette/neon", - "version": "v3.4.3", + "version": "v3.4.5", "source": { "type": "git", "url": "https://github.com/nette/neon.git", - "reference": "c8481c104431c8d94cc88424a1e21f47f8c93280" + "reference": "0b14d95a19c4ca0666339170d3a7fcf83a32fd6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/neon/zipball/c8481c104431c8d94cc88424a1e21f47f8c93280", - "reference": "c8481c104431c8d94cc88424a1e21f47f8c93280", + "url": "https://api.github.com/repos/nette/neon/zipball/0b14d95a19c4ca0666339170d3a7fcf83a32fd6b", + "reference": "0b14d95a19c4ca0666339170d3a7fcf83a32fd6b", "shasum": "" }, "require": { "ext-json": "*", - "php": "8.0 - 8.3" + "php": "8.0 - 8.5" }, "require-dev": { "nette/tester": "^2.4", - "phpstan/phpstan": "^1.0", + "phpstan/phpstan-nette": "^2.0@stable", "tracy/tracy": "^2.7" }, "bin": [ @@ -4081,6 +3738,9 @@ } }, "autoload": { + "psr-4": { + "Nette\\": "src" + }, "classmap": [ "src/" ] @@ -4102,7 +3762,7 @@ } ], "description": "🍸 Nette NEON: encodes and decodes NEON file format.", - "homepage": "https://ne-on.org", + "homepage": "https://neon.nette.org", "keywords": [ "export", "import", @@ -4112,33 +3772,33 @@ ], "support": { "issues": "https://github.com/nette/neon/issues", - "source": "https://github.com/nette/neon/tree/v3.4.3" + "source": "https://github.com/nette/neon/tree/v3.4.5" }, - "time": "2024-06-26T14:53:59+00:00" + "time": "2025-10-30T22:42:06+00:00" }, { "name": "nette/php-generator", - "version": "v4.1.5", + "version": "v4.2.0", "source": { "type": "git", "url": "https://github.com/nette/php-generator.git", - "reference": "690b00d81d42d5633e4457c43ef9754573b6f9d6" + "reference": "4707546a1f11badd72f5d82af4f8a6bc64bd56ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/php-generator/zipball/690b00d81d42d5633e4457c43ef9754573b6f9d6", - "reference": "690b00d81d42d5633e4457c43ef9754573b6f9d6", + "url": "https://api.github.com/repos/nette/php-generator/zipball/4707546a1f11badd72f5d82af4f8a6bc64bd56ac", + "reference": "4707546a1f11badd72f5d82af4f8a6bc64bd56ac", "shasum": "" }, "require": { - "nette/utils": "^3.2.9 || ^4.0", - "php": "8.0 - 8.3" + "nette/utils": "^4.0.6", + "php": "8.1 - 8.5" }, "require-dev": { - "jetbrains/phpstorm-attributes": "dev-master", + "jetbrains/phpstorm-attributes": "^1.2", "nette/tester": "^2.4", - "nikic/php-parser": "^4.18 || ^5.0", - "phpstan/phpstan": "^1.0", + "nikic/php-parser": "^5.0", + "phpstan/phpstan-nette": "^2.0@stable", "tracy/tracy": "^2.8" }, "suggest": { @@ -4147,10 +3807,13 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.1-dev" + "dev-master": "4.2-dev" } }, "autoload": { + "psr-4": { + "Nette\\": "src" + }, "classmap": [ "src/" ] @@ -4171,7 +3834,7 @@ "homepage": "https://nette.org/contributors" } ], - "description": "🐘 Nette PHP Generator: generates neat PHP code for you. Supports new PHP 8.3 features.", + "description": "🐘 Nette PHP Generator: generates neat PHP code for you. Supports new PHP 8.5 features.", "homepage": "https://nette.org", "keywords": [ "code", @@ -4181,41 +3844,44 @@ ], "support": { "issues": "https://github.com/nette/php-generator/issues", - "source": "https://github.com/nette/php-generator/tree/v4.1.5" + "source": "https://github.com/nette/php-generator/tree/v4.2.0" }, - "time": "2024-05-12T17:31:02+00:00" + "time": "2025-08-06T18:24:31+00:00" }, { "name": "nette/robot-loader", - "version": "v4.0.2", + "version": "v4.1.0", "source": { "type": "git", "url": "https://github.com/nette/robot-loader.git", - "reference": "6a921e88345fc7263b89ed878c927efc7c5e6092" + "reference": "805fb81376c24755d50bdb8bc69ca4db3def71d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/robot-loader/zipball/6a921e88345fc7263b89ed878c927efc7c5e6092", - "reference": "6a921e88345fc7263b89ed878c927efc7c5e6092", + "url": "https://api.github.com/repos/nette/robot-loader/zipball/805fb81376c24755d50bdb8bc69ca4db3def71d1", + "reference": "805fb81376c24755d50bdb8bc69ca4db3def71d1", "shasum": "" }, "require": { "ext-tokenizer": "*", "nette/utils": "^4.0", - "php": "8.0 - 8.3" + "php": "8.1 - 8.5" }, "require-dev": { "nette/tester": "^2.4", - "phpstan/phpstan": "^1.0", + "phpstan/phpstan-nette": "^2.0@stable", "tracy/tracy": "^2.9" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "4.1-dev" } }, "autoload": { + "psr-4": { + "Nette\\": "src" + }, "classmap": [ "src/" ] @@ -4247,32 +3913,32 @@ ], "support": { "issues": "https://github.com/nette/robot-loader/issues", - "source": "https://github.com/nette/robot-loader/tree/v4.0.2" + "source": "https://github.com/nette/robot-loader/tree/v4.1.0" }, - "time": "2024-06-18T20:19:22+00:00" + "time": "2025-08-06T18:34:21+00:00" }, { "name": "nette/routing", - "version": "v3.1.0", + "version": "v3.1.2", "source": { "type": "git", "url": "https://github.com/nette/routing.git", - "reference": "f7419bc147164106cb03b3d331c85aff6cb81fc3" + "reference": "14c466f3383add0d4f78a82074d3c9841f8edf47" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/routing/zipball/f7419bc147164106cb03b3d331c85aff6cb81fc3", - "reference": "f7419bc147164106cb03b3d331c85aff6cb81fc3", + "url": "https://api.github.com/repos/nette/routing/zipball/14c466f3383add0d4f78a82074d3c9841f8edf47", + "reference": "14c466f3383add0d4f78a82074d3c9841f8edf47", "shasum": "" }, "require": { "nette/http": "^3.2 || ~4.0.0", "nette/utils": "^4.0", - "php": "8.1 - 8.3" + "php": "8.1 - 8.5" }, "require-dev": { "nette/tester": "^2.5", - "phpstan/phpstan": "^1", + "phpstan/phpstan-nette": "^2.0@stable", "tracy/tracy": "^2.9" }, "type": "library", @@ -4282,6 +3948,9 @@ } }, "autoload": { + "psr-4": { + "Nette\\": "src" + }, "classmap": [ "src/" ] @@ -4309,30 +3978,30 @@ ], "support": { "issues": "https://github.com/nette/routing/issues", - "source": "https://github.com/nette/routing/tree/v3.1.0" + "source": "https://github.com/nette/routing/tree/v3.1.2" }, - "time": "2024-01-21T21:13:45+00:00" + "time": "2025-10-31T00:55:27+00:00" }, { "name": "nette/safe-stream", - "version": "v3.0.1", + "version": "v3.0.3", "source": { "type": "git", "url": "https://github.com/nette/safe-stream.git", - "reference": "b9a275f7f2517cacac6ab4360a73722340478bce" + "reference": "1c26efc4f09117d4ac6b8e56c97c8b61d1f5427a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/safe-stream/zipball/b9a275f7f2517cacac6ab4360a73722340478bce", - "reference": "b9a275f7f2517cacac6ab4360a73722340478bce", + "url": "https://api.github.com/repos/nette/safe-stream/zipball/1c26efc4f09117d4ac6b8e56c97c8b61d1f5427a", + "reference": "1c26efc4f09117d4ac6b8e56c97c8b61d1f5427a", "shasum": "" }, "require": { - "php": "8.0 - 8.3" + "php": "8.0 - 8.5" }, "require-dev": { "nette/tester": "^2.4", - "phpstan/phpstan": "^0.12", + "phpstan/phpstan-nette": "^2.0@stable", "tracy/tracy": "^2.8" }, "type": "library", @@ -4377,31 +4046,31 @@ ], "support": { "issues": "https://github.com/nette/safe-stream/issues", - "source": "https://github.com/nette/safe-stream/tree/v3.0.1" + "source": "https://github.com/nette/safe-stream/tree/v3.0.3" }, - "time": "2023-08-05T18:54:54+00:00" + "time": "2025-08-01T02:24:13+00:00" }, { "name": "nette/schema", - "version": "v1.3.0", + "version": "v1.3.3", "source": { "type": "git", "url": "https://github.com/nette/schema.git", - "reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188" + "reference": "2befc2f42d7c715fd9d95efc31b1081e5d765004" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/a6d3a6d1f545f01ef38e60f375d1cf1f4de98188", - "reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188", + "url": "https://api.github.com/repos/nette/schema/zipball/2befc2f42d7c715fd9d95efc31b1081e5d765004", + "reference": "2befc2f42d7c715fd9d95efc31b1081e5d765004", "shasum": "" }, "require": { "nette/utils": "^4.0", - "php": "8.1 - 8.3" + "php": "8.1 - 8.5" }, "require-dev": { - "nette/tester": "^2.4", - "phpstan/phpstan-nette": "^1.0", + "nette/tester": "^2.5.2", + "phpstan/phpstan-nette": "^2.0@stable", "tracy/tracy": "^2.8" }, "type": "library", @@ -4411,6 +4080,9 @@ } }, "autoload": { + "psr-4": { + "Nette\\": "src" + }, "classmap": [ "src/" ] @@ -4439,38 +4111,38 @@ ], "support": { "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.3.0" + "source": "https://github.com/nette/schema/tree/v1.3.3" }, - "time": "2023-12-11T11:54:22+00:00" + "time": "2025-10-30T22:57:59+00:00" }, { "name": "nette/security", - "version": "v3.2.0", + "version": "v3.2.2", "source": { "type": "git", "url": "https://github.com/nette/security.git", - "reference": "fe89d52697036fb2e14835dfb46b696d28a9ebf6" + "reference": "beca6757457281ebc9428743bec7960809f40d49" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/security/zipball/fe89d52697036fb2e14835dfb46b696d28a9ebf6", - "reference": "fe89d52697036fb2e14835dfb46b696d28a9ebf6", + "url": "https://api.github.com/repos/nette/security/zipball/beca6757457281ebc9428743bec7960809f40d49", + "reference": "beca6757457281ebc9428743bec7960809f40d49", "shasum": "" }, "require": { "nette/utils": "^4.0", - "php": "8.1 - 8.3" + "php": "8.1 - 8.5" }, "conflict": { "nette/di": "<3.0-stable", "nette/http": "<3.1.3" }, "require-dev": { - "mockery/mockery": "^1.5", + "mockery/mockery": "^1.6@stable", "nette/di": "^3.1", "nette/http": "^3.2", "nette/tester": "^2.5", - "phpstan/phpstan-nette": "^1.0", + "phpstan/phpstan-nette": "^2.0@stable", "tracy/tracy": "^2.9" }, "type": "library", @@ -4480,6 +4152,9 @@ } }, "autoload": { + "psr-4": { + "Nette\\": "src" + }, "classmap": [ "src/" ] @@ -4510,35 +4185,35 @@ ], "support": { "issues": "https://github.com/nette/security/issues", - "source": "https://github.com/nette/security/tree/v3.2.0" + "source": "https://github.com/nette/security/tree/v3.2.2" }, - "time": "2024-01-21T21:33:53+00:00" + "time": "2025-08-01T02:15:08+00:00" }, { "name": "nette/utils", - "version": "v4.0.5", + "version": "v4.0.8", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96" + "reference": "c930ca4e3cf4f17dcfb03037703679d2396d2ede" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/736c567e257dbe0fcf6ce81b4d6dbe05c6899f96", - "reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96", + "url": "https://api.github.com/repos/nette/utils/zipball/c930ca4e3cf4f17dcfb03037703679d2396d2ede", + "reference": "c930ca4e3cf4f17dcfb03037703679d2396d2ede", "shasum": "" }, "require": { - "php": "8.0 - 8.4" + "php": "8.0 - 8.5" }, "conflict": { "nette/finder": "<3", "nette/schema": "<1.2.2" }, "require-dev": { - "jetbrains/phpstorm-attributes": "dev-master", + "jetbrains/phpstorm-attributes": "^1.2", "nette/tester": "^2.5", - "phpstan/phpstan": "^1.0", + "phpstan/phpstan-nette": "^2.0@stable", "tracy/tracy": "^2.9" }, "suggest": { @@ -4556,6 +4231,9 @@ } }, "autoload": { + "psr-4": { + "Nette\\": "src" + }, "classmap": [ "src/" ] @@ -4596,43 +4274,39 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.5" + "source": "https://github.com/nette/utils/tree/v4.0.8" }, - "time": "2024-08-07T15:39:19+00:00" + "time": "2025-08-06T21:43:34+00:00" }, { "name": "nettrine/annotations", - "version": "v0.7.0", + "version": "v0.8.1", "source": { "type": "git", "url": "https://github.com/contributte/doctrine-annotations.git", - "reference": "fbb06d156a4edcbf37e4154e5b4ede079136388b" + "reference": "d284d9108f335ca2c9a9ee2ec16bebfbaabf0b35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/contributte/doctrine-annotations/zipball/fbb06d156a4edcbf37e4154e5b4ede079136388b", - "reference": "fbb06d156a4edcbf37e4154e5b4ede079136388b", + "url": "https://api.github.com/repos/contributte/doctrine-annotations/zipball/d284d9108f335ca2c9a9ee2ec16bebfbaabf0b35", + "reference": "d284d9108f335ca2c9a9ee2ec16bebfbaabf0b35", "shasum": "" }, "require": { - "contributte/di": "^0.5.0", "doctrine/annotations": "^1.6.1", - "nettrine/cache": "^0.3.0", - "php": ">=7.2" + "nette/di": "^3.1.2", + "nettrine/cache": "^0.4.0 || ^0.5.0", + "php": ">=8.1" }, "require-dev": { - "ninjify/qa": "^0.10.0", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan-deprecation-rules": "^0.11.0", - "phpstan/phpstan-nette": "^0.11.0", - "phpstan/phpstan-shim": "^0.11.5", - "phpstan/phpstan-strict-rules": "^0.11.0", - "phpunit/phpunit": "^8.1.0" + "contributte/phpstan": "^0.1", + "contributte/qa": "^0.4", + "contributte/tester": "^0.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "0.8.x-dev" + "dev-master": "0.9.x-dev" } }, "autoload": { @@ -4648,14 +4322,10 @@ { "name": "Milan Felix Šulc", "homepage": "https://f3l1x.io" - }, - { - "name": "Marek Bartoš", - "homepage": "https://github.com/mabar" } ], "description": "Doctrine Annotations for Nette Framework", - "homepage": "https://github.com/nettrine/annotations", + "homepage": "https://github.com/contributte/doctrine-annotations", "keywords": [ "annotations", "doctrine", @@ -4664,7 +4334,7 @@ ], "support": { "issues": "https://github.com/contributte/doctrine-annotations/issues", - "source": "https://github.com/contributte/doctrine-annotations/tree/v0.7.0" + "source": "https://github.com/contributte/doctrine-annotations/tree/v0.8.1" }, "funding": [ { @@ -4676,40 +4346,38 @@ "type": "github" } ], - "time": "2020-12-10T18:01:50+00:00" + "time": "2023-07-03T16:12:16+00:00" }, { "name": "nettrine/cache", - "version": "v0.3.0", + "version": "v0.5.0", "source": { "type": "git", "url": "https://github.com/contributte/doctrine-cache.git", - "reference": "8a58596de24cdd61e45866ef8f35788675f6d2bc" + "reference": "85223ef25e1dd4e35471405aed254e9da983e4a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/contributte/doctrine-cache/zipball/8a58596de24cdd61e45866ef8f35788675f6d2bc", - "reference": "8a58596de24cdd61e45866ef8f35788675f6d2bc", + "url": "https://api.github.com/repos/contributte/doctrine-cache/zipball/85223ef25e1dd4e35471405aed254e9da983e4a3", + "reference": "85223ef25e1dd4e35471405aed254e9da983e4a3", "shasum": "" }, "require": { - "contributte/di": "^0.5.0", - "doctrine/cache": "^1.8.0", - "php": ">=7.2" + "doctrine/cache": "^2.2.0", + "nette/di": "^3.2.4", + "php": ">=8.2", + "symfony/cache": "^7.2.1" }, "require-dev": { - "ninjify/qa": "^0.9.0", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan-deprecation-rules": "^0.11.0", - "phpstan/phpstan-nette": "^0.11.0", - "phpstan/phpstan-shim": "^0.11.5", - "phpstan/phpstan-strict-rules": "^0.11.0", - "phpunit/phpunit": "^8.1.0" + "contributte/phpstan": "^0.2", + "contributte/qa": "^0.4", + "contributte/tester": "^0.3", + "tracy/tracy": "^2.10.9" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "0.3.x-dev" + "dev-master": "0.6.x-dev" } }, "autoload": { @@ -4719,16 +4387,16 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MPL-2.0" + "MIT" ], "authors": [ { - "name": "Marek Bartoš", - "homepage": "https://github.com/mabar" + "name": "Milan Felix Šulc", + "homepage": "https://f3l1x.io" } ], "description": "Doctrine Cache for Nette Framework", - "homepage": "https://github.com/nettrine/cache", + "homepage": "https://github.com/contributte/doctrine-cache", "keywords": [ "cache", "doctrine", @@ -4737,7 +4405,7 @@ ], "support": { "issues": "https://github.com/contributte/doctrine-cache/issues", - "source": "https://github.com/contributte/doctrine-cache/tree/v0.3.0" + "source": "https://github.com/contributte/doctrine-cache/tree/v0.5.0" }, "funding": [ { @@ -4749,43 +4417,43 @@ "type": "github" } ], - "time": "2020-12-10T17:56:32+00:00" + "time": "2025-01-10T17:33:34+00:00" }, { "name": "nettrine/dbal", - "version": "v0.8.2", + "version": "v0.9.0", "source": { "type": "git", "url": "https://github.com/contributte/doctrine-dbal.git", - "reference": "e5d38af256c05617c1387ecba8f04ec58c32447a" + "reference": "15bd7770b098edb6c47909990506bdd7f6449d49" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/contributte/doctrine-dbal/zipball/e5d38af256c05617c1387ecba8f04ec58c32447a", - "reference": "e5d38af256c05617c1387ecba8f04ec58c32447a", + "url": "https://api.github.com/repos/contributte/doctrine-dbal/zipball/15bd7770b098edb6c47909990506bdd7f6449d49", + "reference": "15bd7770b098edb6c47909990506bdd7f6449d49", "shasum": "" }, "require": { - "contributte/di": "^0.5.0", - "doctrine/dbal": "^3.5.3", - "nettrine/cache": "^0.3.0", - "php": ">=7.4" + "doctrine/dbal": "^3.6.7", + "nette/di": "^3.2.2", + "nettrine/cache": "^0.4.0 || ^0.5.0", + "php": ">=8.1" }, "conflict": { + "doctrine/event-manager": "<2.0.0", "nette/di": "<3.0.6", "nette/schema": "<1.1.0" }, "require-dev": { - "contributte/console": "^0.9.1", + "contributte/console": "^0.10.1", + "contributte/phpstan": "^0.1", + "contributte/qa": "^0.4", + "contributte/tester": "^0.3", + "ext-pdo": "*", "mockery/mockery": "^1.3.5", - "ninjify/nunjuck": "^0.4", - "ninjify/qa": "^0.13", - "phpstan/phpstan": "^1.2.0", - "phpstan/phpstan-deprecation-rules": "^1.0.0", - "phpstan/phpstan-nette": "^1.0.0", - "phpstan/phpstan-strict-rules": "^1.1.0", - "psr/log": "^1.1 || ^2.0 || ^3.0", - "tracy/tracy": "^2.6.2" + "nettrine/orm": "^0.9.0", + "psr/log": "^3.0", + "tracy/tracy": "^2.10.3" }, "type": "library", "extra": { @@ -4821,7 +4489,7 @@ ], "support": { "issues": "https://github.com/contributte/doctrine-dbal/issues", - "source": "https://github.com/contributte/doctrine-dbal/tree/v0.8.2" + "source": "https://github.com/contributte/doctrine-dbal/tree/v0.9.0" }, "funding": [ { @@ -4833,7 +4501,7 @@ "type": "github" } ], - "time": "2023-01-13T16:26:05+00:00" + "time": "2024-07-22T07:03:27+00:00" }, { "name": "nettrine/extensions-atlantic18", @@ -4912,16 +4580,16 @@ }, { "name": "nettrine/migrations", - "version": "v0.9.1", + "version": "v0.9.3", "source": { "type": "git", "url": "https://github.com/contributte/doctrine-migrations.git", - "reference": "a201572c58184e912b96e7fa96d656e6bd1bd09f" + "reference": "41331ae024edd53a7ea7c96b6ae154c3c2e6ac8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/contributte/doctrine-migrations/zipball/a201572c58184e912b96e7fa96d656e6bd1bd09f", - "reference": "a201572c58184e912b96e7fa96d656e6bd1bd09f", + "url": "https://api.github.com/repos/contributte/doctrine-migrations/zipball/41331ae024edd53a7ea7c96b6ae154c3c2e6ac8c", + "reference": "41331ae024edd53a7ea7c96b6ae154c3c2e6ac8c", "shasum": "" }, "require": { @@ -4971,7 +4639,7 @@ ], "support": { "issues": "https://github.com/contributte/doctrine-migrations/issues", - "source": "https://github.com/contributte/doctrine-migrations/tree/v0.9.1" + "source": "https://github.com/contributte/doctrine-migrations/tree/v0.9.3" }, "funding": [ { @@ -4983,49 +4651,48 @@ "type": "github" } ], - "time": "2023-07-03T16:24:04+00:00" + "time": "2025-01-10T15:58:01+00:00" }, { "name": "nettrine/orm", - "version": "v0.8.4", + "version": "v0.9.0", "source": { "type": "git", "url": "https://github.com/contributte/doctrine-orm.git", - "reference": "d253e200217293ede49a4c4ca76c6e0d43b57242" + "reference": "f3afa2cf045259e1f4c996a693643510656ff95c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/contributte/doctrine-orm/zipball/d253e200217293ede49a4c4ca76c6e0d43b57242", - "reference": "d253e200217293ede49a4c4ca76c6e0d43b57242", + "url": "https://api.github.com/repos/contributte/doctrine-orm/zipball/f3afa2cf045259e1f4c996a693643510656ff95c", + "reference": "f3afa2cf045259e1f4c996a693643510656ff95c", "shasum": "" }, "require": { - "contributte/di": "^0.5.0", - "doctrine/common": "^2.13.1 || ^3.0.0", - "doctrine/orm": "^2.6.3", - "nettrine/annotations": "^0.7.0 || ^0.8.0", - "nettrine/cache": "^0.3.0 || ^0.4.0", - "nettrine/dbal": "^0.7.0 || ^0.8.0", - "php": ">=7.2", - "symfony/console": "^4.2.5|^5.0.0|^6.0.0" + "doctrine/common": "^3.4.3", + "doctrine/orm": "^2.14.0", + "nette/di": "^3.1.2", + "nettrine/annotations": "^0.8.0 || ^0.9.0", + "nettrine/cache": "^0.4.0 || ^0.5.0", + "nettrine/dbal": "^0.8.0 || ^0.9.0", + "php": ">=8.1", + "symfony/console": "^5.3.0 || ^6.2.0 || ^7.0.0 " }, "conflict": { + "doctrine/persistence": "<3.0.0", "nette/di": "<3.0.6", "nette/schema": "<1.1.0" }, "require-dev": { + "contributte/phpstan": "^0.1", + "contributte/qa": "^0.4", + "contributte/tester": "^0.3", "mockery/mockery": "^1.3.1", - "ninjify/nunjuck": "^0.4", - "ninjify/qa": "^0.12", - "phpstan/phpstan": "^1.4.0", - "phpstan/phpstan-deprecation-rules": "^1.0.0", - "phpstan/phpstan-nette": "^1.0.0", - "phpstan/phpstan-strict-rules": "^1.0.0" + "tracy/tracy": "^2.10.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "0.8.x-dev" + "dev-master": "0.9.x-dev" } }, "autoload": { @@ -5053,7 +4720,7 @@ ], "support": { "issues": "https://github.com/contributte/doctrine-orm/issues", - "source": "https://github.com/contributte/doctrine-orm/tree/v0.8.4" + "source": "https://github.com/contributte/doctrine-orm/tree/v0.9.0" }, "funding": [ { @@ -5065,7 +4732,7 @@ "type": "github" } ], - "time": "2022-12-27T18:27:01+00:00" + "time": "2024-08-20T09:11:52+00:00" }, { "name": "psr/cache", @@ -5429,16 +5096,16 @@ }, { "name": "psr/log", - "version": "3.0.1", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "79dff0b268932c640297f5208d6298f71855c03e" + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/79dff0b268932c640297f5208d6298f71855c03e", - "reference": "79dff0b268932c640297f5208d6298f71855c03e", + "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", "shasum": "" }, "require": { @@ -5473,9 +5140,9 @@ "psr-3" ], "support": { - "source": "https://github.com/php-fig/log/tree/3.0.1" + "source": "https://github.com/php-fig/log/tree/3.0.2" }, - "time": "2024-08-21T13:31:24+00:00" + "time": "2024-09-11T13:17:53+00:00" }, { "name": "psr/simple-cache", @@ -5574,16 +5241,16 @@ }, { "name": "ramsey/collection", - "version": "2.0.0", + "version": "2.1.1", "source": { "type": "git", "url": "https://github.com/ramsey/collection.git", - "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", - "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "url": "https://api.github.com/repos/ramsey/collection/zipball/344572933ad0181accbf4ba763e85a0306a8c5e2", + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2", "shasum": "" }, "require": { @@ -5591,25 +5258,22 @@ }, "require-dev": { "captainhook/plugin-composer": "^5.3", - "ergebnis/composer-normalize": "^2.28.3", - "fakerphp/faker": "^1.21", + "ergebnis/composer-normalize": "^2.45", + "fakerphp/faker": "^1.24", "hamcrest/hamcrest-php": "^2.0", - "jangregor/phpstan-prophecy": "^1.0", - "mockery/mockery": "^1.5", + "jangregor/phpstan-prophecy": "^2.1", + "mockery/mockery": "^1.6", "php-parallel-lint/php-console-highlighter": "^1.0", - "php-parallel-lint/php-parallel-lint": "^1.3", - "phpcsstandards/phpcsutils": "^1.0.0-rc1", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1.2", - "phpstan/phpstan": "^1.9", - "phpstan/phpstan-mockery": "^1.1", - "phpstan/phpstan-phpunit": "^1.3", - "phpunit/phpunit": "^9.5", - "psalm/plugin-mockery": "^1.1", - "psalm/plugin-phpunit": "^0.18.4", - "ramsey/coding-standard": "^2.0.3", - "ramsey/conventional-commits": "^1.3", - "vimeo/psalm": "^5.4" + "php-parallel-lint/php-parallel-lint": "^1.4", + "phpspec/prophecy-phpunit": "^2.3", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^10.5", + "ramsey/coding-standard": "^2.3", + "ramsey/conventional-commits": "^1.6", + "roave/security-advisories": "dev-latest" }, "type": "library", "extra": { @@ -5647,37 +5311,26 @@ ], "support": { "issues": "https://github.com/ramsey/collection/issues", - "source": "https://github.com/ramsey/collection/tree/2.0.0" + "source": "https://github.com/ramsey/collection/tree/2.1.1" }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2022-12-31T21:50:55+00:00" + "time": "2025-03-22T05:38:12+00:00" }, { "name": "ramsey/uuid", - "version": "4.7.6", + "version": "4.9.1", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "91039bc1faa45ba123c4328958e620d382ec7088" + "reference": "81f941f6f729b1e3ceea61d9d014f8b6c6800440" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/91039bc1faa45ba123c4328958e620d382ec7088", - "reference": "91039bc1faa45ba123c4328958e620d382ec7088", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/81f941f6f729b1e3ceea61d9d014f8b6c6800440", + "reference": "81f941f6f729b1e3ceea61d9d014f8b6c6800440", "shasum": "" }, "require": { - "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12", - "ext-json": "*", + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14", "php": "^8.0", "ramsey/collection": "^1.2 || ^2.0" }, @@ -5685,26 +5338,23 @@ "rhumsaa/uuid": "self.version" }, "require-dev": { - "captainhook/captainhook": "^5.10", + "captainhook/captainhook": "^5.25", "captainhook/plugin-composer": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "doctrine/annotations": "^1.8", - "ergebnis/composer-normalize": "^2.15", - "mockery/mockery": "^1.3", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", + "ergebnis/composer-normalize": "^2.47", + "mockery/mockery": "^1.6", "paragonie/random-lib": "^2", - "php-mock/php-mock": "^2.2", - "php-mock/php-mock-mockery": "^1.3", - "php-parallel-lint/php-parallel-lint": "^1.1", - "phpbench/phpbench": "^1.0", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-mockery": "^1.1", - "phpstan/phpstan-phpunit": "^1.1", - "phpunit/phpunit": "^8.5 || ^9", - "ramsey/composer-repl": "^1.4", - "slevomat/coding-standard": "^8.4", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" + "php-mock/php-mock": "^2.6", + "php-mock/php-mock-mockery": "^1.5", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpbench/phpbench": "^1.2.14", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^9.6", + "slevomat/coding-standard": "^8.18", + "squizlabs/php_codesniffer": "^3.13" }, "suggest": { "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", @@ -5739,19 +5389,9 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.7.6" + "source": "https://github.com/ramsey/uuid/tree/4.9.1" }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2024-04-27T21:32:50+00:00" + "time": "2025-09-04T20:59:21+00:00" }, { "name": "ramsey/uuid-doctrine", @@ -5839,16 +5479,16 @@ }, { "name": "sebastian/comparator", - "version": "6.0.2", + "version": "6.3.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "450d8f237bd611c45b5acf0733ce43e6bb280f81" + "reference": "85c77556683e6eee4323e4c5468641ca0237e2e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/450d8f237bd611c45b5acf0733ce43e6bb280f81", - "reference": "450d8f237bd611c45b5acf0733ce43e6bb280f81", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/85c77556683e6eee4323e4c5468641ca0237e2e8", + "reference": "85c77556683e6eee4323e4c5468641ca0237e2e8", "shasum": "" }, "require": { @@ -5859,12 +5499,15 @@ "sebastian/exporter": "^6.0" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^11.4" + }, + "suggest": { + "ext-bcmath": "For comparing BcMath\\Number objects" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-main": "6.3-dev" } }, "autoload": { @@ -5904,15 +5547,27 @@ "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/6.0.2" + "source": "https://github.com/sebastianbergmann/comparator/tree/6.3.2" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", + "type": "tidelift" } ], - "time": "2024-08-12T06:07:25+00:00" + "time": "2025-08-10T08:07:46+00:00" }, { "name": "sebastian/diff", @@ -5983,16 +5638,16 @@ }, { "name": "sebastian/exporter", - "version": "6.1.3", + "version": "6.3.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "c414673eee9a8f9d51bbf8d61fc9e3ef1e85b20e" + "reference": "70a298763b40b213ec087c51c739efcaa90bcd74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/c414673eee9a8f9d51bbf8d61fc9e3ef1e85b20e", - "reference": "c414673eee9a8f9d51bbf8d61fc9e3ef1e85b20e", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/70a298763b40b213ec087c51c739efcaa90bcd74", + "reference": "70a298763b40b213ec087c51c739efcaa90bcd74", "shasum": "" }, "require": { @@ -6001,12 +5656,12 @@ "sebastian/recursion-context": "^6.0" }, "require-dev": { - "phpunit/phpunit": "^11.2" + "phpunit/phpunit": "^11.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.1-dev" + "dev-main": "6.3-dev" } }, "autoload": { @@ -6049,35 +5704,47 @@ "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", "security": "https://github.com/sebastianbergmann/exporter/security/policy", - "source": "https://github.com/sebastianbergmann/exporter/tree/6.1.3" + "source": "https://github.com/sebastianbergmann/exporter/tree/6.3.2" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter", + "type": "tidelift" } ], - "time": "2024-07-03T04:56:19+00:00" + "time": "2025-09-24T06:12:51+00:00" }, { "name": "sebastian/recursion-context", - "version": "6.0.2", + "version": "6.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "694d156164372abbd149a4b85ccda2e4670c0e16" + "reference": "f6458abbf32a6c8174f8f26261475dc133b3d9dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/694d156164372abbd149a4b85ccda2e4670c0e16", - "reference": "694d156164372abbd149a4b85ccda2e4670c0e16", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/f6458abbf32a6c8174f8f26261475dc133b3d9dc", + "reference": "f6458abbf32a6c8174f8f26261475dc133b3d9dc", "shasum": "" }, "require": { "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^11.3" }, "type": "library", "extra": { @@ -6113,15 +5780,27 @@ "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/6.0.2" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/6.0.3" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", + "type": "tidelift" } ], - "time": "2024-07-03T05:10:34+00:00" + "time": "2025-08-13T04:42:22+00:00" }, { "name": "spatie/regex", @@ -6188,23 +5867,23 @@ }, { "name": "symfony/cache", - "version": "v7.1.4", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "b61e464d7687bb7e8f677d5031c632bf3820df18" + "reference": "4a55feb59664f49042a0824c0f955e2f4c1412ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/b61e464d7687bb7e8f677d5031c632bf3820df18", - "reference": "b61e464d7687bb7e8f677d5031c632bf3820df18", + "url": "https://api.github.com/repos/symfony/cache/zipball/4a55feb59664f49042a0824c0f955e2f4c1412ad", + "reference": "4a55feb59664f49042a0824c0f955e2f4c1412ad", "shasum": "" }, "require": { "php": ">=8.2", "psr/cache": "^2.0|^3.0", "psr/log": "^1.1|^2|^3", - "symfony/cache-contracts": "^2.5|^3", + "symfony/cache-contracts": "^3.6", "symfony/deprecation-contracts": "^2.5|^3.0", "symfony/service-contracts": "^2.5|^3", "symfony/var-exporter": "^6.4|^7.0" @@ -6225,6 +5904,7 @@ "doctrine/dbal": "^3.6|^4", "predis/predis": "^1.1|^2.0", "psr/simple-cache": "^1.0|^2.0|^3.0", + "symfony/clock": "^6.4|^7.0", "symfony/config": "^6.4|^7.0", "symfony/dependency-injection": "^6.4|^7.0", "symfony/filesystem": "^6.4|^7.0", @@ -6265,7 +5945,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v7.1.4" + "source": "https://github.com/symfony/cache/tree/v7.3.5" }, "funding": [ { @@ -6276,25 +5956,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-08-12T09:59:40+00:00" + "time": "2025-10-16T13:55:38+00:00" }, { "name": "symfony/cache-contracts", - "version": "v3.5.0", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197" + "reference": "5d68a57d66910405e5c0b63d6f0af941e66fc868" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/df6a1a44c890faded49a5fca33c2d5c5fd3c2197", - "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/5d68a57d66910405e5c0b63d6f0af941e66fc868", + "reference": "5d68a57d66910405e5c0b63d6f0af941e66fc868", "shasum": "" }, "require": { @@ -6303,12 +5987,12 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" } }, "autoload": { @@ -6341,7 +6025,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/cache-contracts/tree/v3.6.0" }, "funding": [ { @@ -6357,20 +6041,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2025-03-13T15:25:07+00:00" }, { "name": "symfony/console", - "version": "v6.4.11", + "version": "v6.4.27", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "42686880adaacdad1835ee8fc2a9ec5b7bd63998" + "reference": "13d3176cf8ad8ced24202844e9f95af11e2959fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/42686880adaacdad1835ee8fc2a9ec5b7bd63998", - "reference": "42686880adaacdad1835ee8fc2a9ec5b7bd63998", + "url": "https://api.github.com/repos/symfony/console/zipball/13d3176cf8ad8ced24202844e9f95af11e2959fc", + "reference": "13d3176cf8ad8ced24202844e9f95af11e2959fc", "shasum": "" }, "require": { @@ -6435,7 +6119,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.11" + "source": "https://github.com/symfony/console/tree/v6.4.27" }, "funding": [ { @@ -6446,25 +6130,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-08-15T22:48:29+00:00" + "time": "2025-10-06T10:25:16+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.5.0", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", "shasum": "" }, "require": { @@ -6472,12 +6160,12 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" } }, "autoload": { @@ -6502,7 +6190,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" }, "funding": [ { @@ -6518,24 +6206,24 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.30.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "0424dff1c58f028c451efff2045f5d92410bd540" + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/0424dff1c58f028c451efff2045f5d92410bd540", - "reference": "0424dff1c58f028c451efff2045f5d92410bd540", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-ctype": "*" @@ -6546,8 +6234,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -6581,7 +6269,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0" }, "funding": [ { @@ -6592,29 +6280,33 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-05-31T15:07:36+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.30.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a" + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/64647a7c30b2283f5d49b874d84a18fc22054b7a", - "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70", + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" @@ -6622,8 +6314,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -6659,7 +6351,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0" }, "funding": [ { @@ -6670,29 +6362,33 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-05-31T15:07:36+00:00" + "time": "2025-06-27T09:58:17+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.30.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb" + "reference": "3833d7255cc303546435cb650316bff708a1c75c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/a95281b0be0d9ab48050ebd988b967875cdb9fdb", - "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" @@ -6700,8 +6396,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -6740,7 +6436,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.0" }, "funding": [ { @@ -6751,29 +6447,34 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-05-31T15:07:36+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.30.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c" + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fd22ab50000ef01661e2a31d850ebaa297f8e03c", - "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", "shasum": "" }, "require": { - "php": ">=7.1" + "ext-iconv": "*", + "php": ">=7.2" }, "provide": { "ext-mbstring": "*" @@ -6784,8 +6485,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -6820,7 +6521,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0" }, "funding": [ { @@ -6831,43 +6532,39 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-06-19T12:30:46+00:00" + "time": "2024-12-23T08:48:59+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.30.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "10112722600777e02d2745716b70c5db4ca70442" + "reference": "fa2ae56c44f03bed91a39bfc9822e31e7c5c38ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/10112722600777e02d2745716b70c5db4ca70442", - "reference": "10112722600777e02d2745716b70c5db4ca70442", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/fa2ae56c44f03bed91a39bfc9822e31e7c5c38ce", + "reference": "fa2ae56c44f03bed91a39bfc9822e31e7c5c38ce", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, - "type": "library", + "type": "metapackage", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "notification-url": "https://packagist.org/downloads/", @@ -6893,7 +6590,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.31.0" }, "funding": [ { @@ -6909,30 +6606,30 @@ "type": "tidelift" } ], - "time": "2024-06-19T12:30:46+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.30.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "77fa7995ac1b21ab60769b7323d600a991a90433" + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/77fa7995ac1b21ab60769b7323d600a991a90433", - "reference": "77fa7995ac1b21ab60769b7323d600a991a90433", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -6973,7 +6670,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0" }, "funding": [ { @@ -6984,37 +6681,50 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-05-31T15:07:36+00:00" + "time": "2025-01-02T08:10:11+00:00" }, { - "name": "symfony/process", - "version": "v7.1.3", + "name": "symfony/polyfill-php84", + "version": "v1.33.0", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "7f2f542c668ad6c313dc4a5e9c3321f733197eca" + "url": "https://github.com/symfony/polyfill-php84.git", + "reference": "d8ced4d875142b6a7426000426b8abc631d6b191" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/7f2f542c668ad6c313dc4a5e9c3321f733197eca", - "reference": "7f2f542c668ad6c313dc4a5e9c3321f733197eca", + "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/d8ced4d875142b6a7426000426b8abc631d6b191", + "reference": "d8ced4d875142b6a7426000426b8abc631d6b191", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=7.2" }, "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\Process\\": "" + "Symfony\\Polyfill\\Php84\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -7023,18 +6733,24 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Executes commands in sub-processes", + "description": "Symfony polyfill backporting some PHP 8.4+ features to lower PHP versions", "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/process/tree/v7.1.3" + "source": "https://github.com/symfony/polyfill-php84/tree/v1.33.0" }, "funding": [ { @@ -7045,25 +6761,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-07-26T12:44:47+00:00" + "time": "2025-06-24T13:30:11+00:00" }, { "name": "symfony/property-access", - "version": "v7.1.4", + "version": "v7.3.3", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "6c709f97103355016e5782d0622437ae381012ad" + "reference": "4a4389e5c8bd1d0320d80a23caa6a1ac71cb81a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/6c709f97103355016e5782d0622437ae381012ad", - "reference": "6c709f97103355016e5782d0622437ae381012ad", + "url": "https://api.github.com/repos/symfony/property-access/zipball/4a4389e5c8bd1d0320d80a23caa6a1ac71cb81a7", + "reference": "4a4389e5c8bd1d0320d80a23caa6a1ac71cb81a7", "shasum": "" }, "require": { @@ -7110,7 +6830,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v7.1.4" + "source": "https://github.com/symfony/property-access/tree/v7.3.3" }, "funding": [ { @@ -7121,41 +6841,47 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-08-30T16:12:47+00:00" + "time": "2025-08-04T15:15:28+00:00" }, { "name": "symfony/property-info", - "version": "v7.1.3", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "88a279df2db5b7919cac6f35d6a5d1d7147e6a9b" + "reference": "0b346ed259dc5da43535caf243005fe7d4b0f051" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/88a279df2db5b7919cac6f35d6a5d1d7147e6a9b", - "reference": "88a279df2db5b7919cac6f35d6a5d1d7147e6a9b", + "url": "https://api.github.com/repos/symfony/property-info/zipball/0b346ed259dc5da43535caf243005fe7d4b0f051", + "reference": "0b346ed259dc5da43535caf243005fe7d4b0f051", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/string": "^6.4|^7.0", - "symfony/type-info": "^7.1" + "symfony/type-info": "^7.3.5" }, "conflict": { "phpdocumentor/reflection-docblock": "<5.2", "phpdocumentor/type-resolver": "<1.5.1", + "symfony/cache": "<6.4", "symfony/dependency-injection": "<6.4", "symfony/serializer": "<6.4" }, "require-dev": { "phpdocumentor/reflection-docblock": "^5.2", - "phpstan/phpdoc-parser": "^1.0", + "phpstan/phpdoc-parser": "^1.0|^2.0", "symfony/cache": "^6.4|^7.0", "symfony/dependency-injection": "^6.4|^7.0", "symfony/serializer": "^6.4|^7.0" @@ -7194,7 +6920,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v7.1.3" + "source": "https://github.com/symfony/property-info/tree/v7.3.5" }, "funding": [ { @@ -7205,25 +6931,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-07-26T07:36:36+00:00" + "time": "2025-10-05T22:12:41+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.5.0", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" + "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4", + "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4", "shasum": "" }, "require": { @@ -7236,12 +6966,12 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" } }, "autoload": { @@ -7277,7 +7007,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.6.0" }, "funding": [ { @@ -7293,20 +7023,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2025-04-25T09:37:31+00:00" }, { "name": "symfony/stopwatch", - "version": "v7.1.1", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "5b75bb1ac2ba1b9d05c47fc4b3046a625377d23d" + "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5b75bb1ac2ba1b9d05c47fc4b3046a625377d23d", - "reference": "5b75bb1ac2ba1b9d05c47fc4b3046a625377d23d", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", + "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", "shasum": "" }, "require": { @@ -7339,7 +7069,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v7.1.1" + "source": "https://github.com/symfony/stopwatch/tree/v7.3.0" }, "funding": [ { @@ -7355,20 +7085,20 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:57:53+00:00" + "time": "2025-02-24T10:49:57+00:00" }, { "name": "symfony/string", - "version": "v7.1.4", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "6cd670a6d968eaeb1c77c2e76091c45c56bc367b" + "reference": "f96476035142921000338bad71e5247fbc138872" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/6cd670a6d968eaeb1c77c2e76091c45c56bc367b", - "reference": "6cd670a6d968eaeb1c77c2e76091c45c56bc367b", + "url": "https://api.github.com/repos/symfony/string/zipball/f96476035142921000338bad71e5247fbc138872", + "reference": "f96476035142921000338bad71e5247fbc138872", "shasum": "" }, "require": { @@ -7383,7 +7113,6 @@ }, "require-dev": { "symfony/emoji": "^7.1", - "symfony/error-handler": "^6.4|^7.0", "symfony/http-client": "^6.4|^7.0", "symfony/intl": "^6.4|^7.0", "symfony/translation-contracts": "^2.5|^3.0", @@ -7426,7 +7155,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.1.4" + "source": "https://github.com/symfony/string/tree/v7.3.4" }, "funding": [ { @@ -7437,40 +7166,41 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-08-12T09:59:40+00:00" + "time": "2025-09-11T14:36:48+00:00" }, { "name": "symfony/type-info", - "version": "v7.1.1", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/type-info.git", - "reference": "60b28eb733f1453287f1263ed305b96091e0d1dc" + "reference": "8b36f41421160db56914f897b57eaa6a830758b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/type-info/zipball/60b28eb733f1453287f1263ed305b96091e0d1dc", - "reference": "60b28eb733f1453287f1263ed305b96091e0d1dc", + "url": "https://api.github.com/repos/symfony/type-info/zipball/8b36f41421160db56914f897b57eaa6a830758b3", + "reference": "8b36f41421160db56914f897b57eaa6a830758b3", "shasum": "" }, "require": { "php": ">=8.2", - "psr/container": "^1.1|^2.0" + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { - "phpstan/phpdoc-parser": "<1.0", - "symfony/dependency-injection": "<6.4", - "symfony/property-info": "<6.4" + "phpstan/phpdoc-parser": "<1.30" }, "require-dev": { - "phpstan/phpdoc-parser": "^1.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/property-info": "^6.4|^7.0" + "phpstan/phpdoc-parser": "^1.30|^2.0" }, "type": "library", "autoload": { @@ -7508,7 +7238,7 @@ "type" ], "support": { - "source": "https://github.com/symfony/type-info/tree/v7.1.1" + "source": "https://github.com/symfony/type-info/tree/v7.3.5" }, "funding": [ { @@ -7519,29 +7249,34 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-05-31T14:59:31+00:00" + "time": "2025-10-16T12:30:12+00:00" }, { "name": "symfony/var-exporter", - "version": "v7.1.2", + "version": "v7.3.4", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "b80a669a2264609f07f1667f891dbfca25eba44c" + "reference": "0f020b544a30a7fe8ba972e53ee48a74c0bc87f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/b80a669a2264609f07f1667f891dbfca25eba44c", - "reference": "b80a669a2264609f07f1667f891dbfca25eba44c", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/0f020b544a30a7fe8ba972e53ee48a74c0bc87f4", + "reference": "0f020b544a30a7fe8ba972e53ee48a74c0bc87f4", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" }, "require-dev": { "symfony/property-access": "^6.4|^7.0", @@ -7584,7 +7319,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v7.1.2" + "source": "https://github.com/symfony/var-exporter/tree/v7.3.4" }, "funding": [ { @@ -7595,29 +7330,34 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-06-28T08:00:31+00:00" + "time": "2025-09-11T10:12:26+00:00" }, { "name": "symfony/yaml", - "version": "v7.1.4", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "92e080b851c1c655c786a2da77f188f2dccd0f4b" + "reference": "90208e2fc6f68f613eae7ca25a2458a931b1bacc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/92e080b851c1c655c786a2da77f188f2dccd0f4b", - "reference": "92e080b851c1c655c786a2da77f188f2dccd0f4b", + "url": "https://api.github.com/repos/symfony/yaml/zipball/90208e2fc6f68f613eae7ca25a2458a931b1bacc", + "reference": "90208e2fc6f68f613eae7ca25a2458a931b1bacc", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { @@ -7655,7 +7395,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.1.4" + "source": "https://github.com/symfony/yaml/tree/v7.3.5" }, "funding": [ { @@ -7666,31 +7406,35 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-08-12T09:59:40+00:00" + "time": "2025-09-27T09:00:46+00:00" }, { "name": "tracy/tracy", - "version": "v2.10.8", + "version": "v2.11.0", "source": { "type": "git", "url": "https://github.com/nette/tracy.git", - "reference": "0e0f3312708fb9c179a92072ebacc24aeee7e2e8" + "reference": "eec57bcf2ff11d79f519a19da9d7ae1e2c63c42e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/tracy/zipball/0e0f3312708fb9c179a92072ebacc24aeee7e2e8", - "reference": "0e0f3312708fb9c179a92072ebacc24aeee7e2e8", + "url": "https://api.github.com/repos/nette/tracy/zipball/eec57bcf2ff11d79f519a19da9d7ae1e2c63c42e", + "reference": "eec57bcf2ff11d79f519a19da9d7ae1e2c63c42e", "shasum": "" }, "require": { "ext-json": "*", "ext-session": "*", - "php": "8.0 - 8.4" + "php": "8.2 - 8.5" }, "conflict": { "nette/di": "<3.0" @@ -7702,19 +7446,22 @@ "nette/mail": "^3.0 || ^4.0", "nette/tester": "^2.2", "nette/utils": "^3.0 || ^4.0", - "phpstan/phpstan": "^1.0", + "phpstan/phpstan-nette": "^2.0@stable", "psr/log": "^1.0 || ^2.0 || ^3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.10-dev" + "dev-master": "2.11-dev" } }, "autoload": { "files": [ "src/Tracy/functions.php" ], + "psr-4": { + "Tracy\\": "src" + }, "classmap": [ "src" ] @@ -7744,28 +7491,28 @@ ], "support": { "issues": "https://github.com/nette/tracy/issues", - "source": "https://github.com/nette/tracy/tree/v2.10.8" + "source": "https://github.com/nette/tracy/tree/v2.11.0" }, - "time": "2024-08-07T02:04:53+00:00" + "time": "2025-10-31T00:12:50+00:00" } ], "packages-dev": [ { "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", + "version": "v2.1.1", "source": { "type": "git", "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" + "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487", + "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487", "shasum": "" }, "require": { - "php": "^5.3|^7.0|^8.0" + "php": "^7.4|^8.0" }, "replace": { "cordoval/hamcrest-php": "*", @@ -7773,8 +7520,8 @@ "kodova/hamcrest-php": "*" }, "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" + "phpunit/php-file-iterator": "^1.4 || ^2.0 || ^3.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0 || ^8.0 || ^9.0" }, "type": "library", "extra": { @@ -7797,9 +7544,9 @@ ], "support": { "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.1.1" }, - "time": "2020-07-09T08:09:16+00:00" + "time": "2025-04-30T06:54:44+00:00" }, { "name": "mikey179/vfsstream", @@ -7938,24 +7685,24 @@ }, { "name": "nette/tester", - "version": "v2.5.3", + "version": "v2.5.6", "source": { "type": "git", "url": "https://github.com/nette/tester.git", - "reference": "ee0a4b8402a8c1831db547ec0a56d18196906b51" + "reference": "f7328f743d06df233bbc9b68da9f4941f73ad661" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/tester/zipball/ee0a4b8402a8c1831db547ec0a56d18196906b51", - "reference": "ee0a4b8402a8c1831db547ec0a56d18196906b51", + "url": "https://api.github.com/repos/nette/tester/zipball/f7328f743d06df233bbc9b68da9f4941f73ad661", + "reference": "f7328f743d06df233bbc9b68da9f4941f73ad661", "shasum": "" }, "require": { - "php": "8.0 - 8.3" + "php": "8.0 - 8.5" }, "require-dev": { "ext-simplexml": "*", - "phpstan/phpstan": "^1.0" + "phpstan/phpstan-nette": "^2.0@stable" }, "bin": [ "src/tester" @@ -7967,6 +7714,9 @@ } }, "autoload": { + "psr-4": { + "Tester\\": "src" + }, "classmap": [ "src/" ] @@ -8007,26 +7757,21 @@ ], "support": { "issues": "https://github.com/nette/tester/issues", - "source": "https://github.com/nette/tester/tree/v2.5.3" + "source": "https://github.com/nette/tester/tree/v2.5.6" }, - "time": "2024-06-18T18:44:12+00:00" + "time": "2025-08-07T00:28:58+00:00" }, { "name": "phpstan/phpstan", - "version": "1.12.1", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "d8ed7fffa66de1db0d2972267d8ed1d8fa0fe5a2" - }, + "version": "2.1.31", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/d8ed7fffa66de1db0d2972267d8ed1d8fa0fe5a2", - "reference": "d8ed7fffa66de1db0d2972267d8ed1d8fa0fe5a2", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/ead89849d879fe203ce9292c6ef5e7e76f867b96", + "reference": "ead89849d879fe203ce9292c6ef5e7e76f867b96", "shasum": "" }, "require": { - "php": "^7.2|^8.0" + "php": "^7.4|^8.0" }, "conflict": { "phpstan/phpstan-shim": "*" @@ -8067,25 +7812,25 @@ "type": "github" } ], - "time": "2024-09-03T19:55:22+00:00" + "time": "2025-10-10T14:14:11+00:00" }, { "name": "phpstan/phpstan-nette", - "version": "1.3.8", + "version": "2.0.6", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-nette.git", - "reference": "bc74b8b208b47f163fe55708fcf1a0333247fa79" + "reference": "aa6c413df9587c355a744c3a84ecf9736987b607" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-nette/zipball/bc74b8b208b47f163fe55708fcf1a0333247fa79", - "reference": "bc74b8b208b47f163fe55708fcf1a0333247fa79", + "url": "https://api.github.com/repos/phpstan/phpstan-nette/zipball/aa6c413df9587c355a744c3a84ecf9736987b607", + "reference": "aa6c413df9587c355a744c3a84ecf9736987b607", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.11.11" + "php": "^7.4 || ^8.0", + "phpstan/phpstan": "^2.1.12" }, "conflict": { "nette/application": "<2.3.0", @@ -8097,13 +7842,14 @@ }, "require-dev": { "nette/application": "^3.0", + "nette/di": "^3.1.10", "nette/forms": "^3.0", "nette/utils": "^2.3.0 || ^3.0.0", - "nikic/php-parser": "^4.13.2", "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/phpstan-phpunit": "^1.0", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "~9.5.28" + "phpstan/phpstan-deprecation-rules": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^9.6" }, "type": "phpstan-extension", "extra": { @@ -8126,9 +7872,74 @@ "description": "Nette Framework class reflection extension for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-nette/issues", - "source": "https://github.com/phpstan/phpstan-nette/tree/1.3.8" + "source": "https://github.com/phpstan/phpstan-nette/tree/2.0.6" + }, + "time": "2025-09-19T19:54:10+00:00" + }, + { + "name": "symfony/process", + "version": "v7.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/f24f8f316367b30810810d4eb30c543d7003ff3b", + "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v7.3.4" }, - "time": "2024-08-25T12:11:12+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-09-11T10:12:26+00:00" } ], "aliases": [], diff --git a/tests/base/MockeryTrait.php b/tests/base/MockeryTrait.php index 0011745..01ca721 100644 --- a/tests/base/MockeryTrait.php +++ b/tests/base/MockeryTrait.php @@ -1,5 +1,6 @@ "pdo_sqlite", "path" => $dbPath], $configuration, $eventManager @@ -98,7 +98,7 @@ public static function fillDatabase(Container $container) $originalEm->getConfiguration(), $originalEm->getEventManager() ); - static::replaceService($container, $schemaEm, EntityManagerDecorator::class); + static::replaceService($container, $schemaEm, SimpleEntityManagerDecorator::class); $schemaTool = new Doctrine\ORM\Tools\SchemaTool($schemaEm); $schemaTool->dropSchema($schemaEm->getMetadataFactory()->getAllMetadata()); @@ -126,7 +126,7 @@ public static function fillDatabase(Container $container) file_put_contents($dumpPath, $sqliteProcess->getOutput()); // Replace the temporary entity manager with the original one - static::replaceService($container, $originalEm, EntityManagerDecorator::class); + static::replaceService($container, $originalEm, SimpleEntityManagerDecorator::class); } flock($lockHandle, LOCK_UN); diff --git a/tests/helpers/PermissionHints.phpt b/tests/helpers/PermissionHints.phpt deleted file mode 100644 index 3fc9ad5..0000000 --- a/tests/helpers/PermissionHints.phpt +++ /dev/null @@ -1,46 +0,0 @@ - true, "action2" => false], $result); - } - - public function testNotMatching() - { - $result = PermissionHints::get(new FakeAclModule(), new stdClass()); - Assert::equal([], $result); - } -} - -(new TestPermissionHints())->run(); diff --git a/tests/helpers/Wildcards.phpt b/tests/helpers/Wildcards.phpt deleted file mode 100644 index a2448f3..0000000 --- a/tests/helpers/Wildcards.phpt +++ /dev/null @@ -1,39 +0,0 @@ -