diff --git a/composer.json b/composer.json
index 96abe0bed..2f232a488 100644
--- a/composer.json
+++ b/composer.json
@@ -17,7 +17,7 @@
"cs:fix": "php-cs-fixer fix",
"psalm": "psalm --threads=$(nproc) --no-cache",
"psalm:update-baseline": "psalm --threads=$(nproc) --no-cache --update-baseline",
- "psalm:fix": "psalm --no-cache --alter --issues=InvalidReturnType,InvalidNullableReturnType,MissingParamType,InvalidFalsableReturnType",
+ "psalm:fix": "psalm --no-cache --alter --issues=InvalidReturnType,InvalidNullableReturnType,MissingParamType,InvalidFalsableReturnType,MissingOverrideAttribute",
"test:unit": "phpunit -c tests/phpunit.xml",
"test:unit:coverage": "XDEBUG_MODE=coverage phpunit -c tests/phpunit.xml",
"rector": "rector && composer cs:fix",
diff --git a/lib/ACL/ACLCacheWrapper.php b/lib/ACL/ACLCacheWrapper.php
index 88753736a..4fc35c31e 100644
--- a/lib/ACL/ACLCacheWrapper.php
+++ b/lib/ACL/ACLCacheWrapper.php
@@ -43,6 +43,7 @@ private function getACLPermissionsForPath(string $path, array $rules = []): int
return $canRead ? $permissions : 0;
}
+ #[\Override]
protected function formatCacheEntry($entry, array $rules = []): ICacheEntry|false {
if (isset($entry['permissions'])) {
$entry['scan_permissions'] ??= $entry['permissions'];
@@ -55,6 +56,7 @@ protected function formatCacheEntry($entry, array $rules = []): ICacheEntry|fals
return $entry;
}
+ #[\Override]
public function getFolderContentsById($fileId): array {
$results = $this->getCache()->getFolderContentsById($fileId);
$rules = $this->preloadEntries($results);
@@ -62,6 +64,7 @@ public function getFolderContentsById($fileId): array {
return array_filter(array_map(fn (ICacheEntry $entry): ICacheEntry|false => $this->formatCacheEntry($entry, $rules), $results));
}
+ #[\Override]
public function search($pattern): array {
$results = $this->getCache()->search($pattern);
$this->preloadEntries($results);
@@ -69,6 +72,7 @@ public function search($pattern): array {
return array_filter(array_map($this->formatCacheEntry(...), $results));
}
+ #[\Override]
public function searchByMime($mimetype): array {
$results = $this->getCache()->searchByMime($mimetype);
$this->preloadEntries($results);
@@ -76,6 +80,7 @@ public function searchByMime($mimetype): array {
return array_filter(array_map($this->formatCacheEntry(...), $results));
}
+ #[\Override]
public function searchQuery(ISearchQuery $query): array {
$results = $this->getCache()->searchQuery($query);
$this->preloadEntries($results);
diff --git a/lib/ACL/ACLStorageWrapper.php b/lib/ACL/ACLStorageWrapper.php
index 976fca1f7..525303e1a 100644
--- a/lib/ACL/ACLStorageWrapper.php
+++ b/lib/ACL/ACLStorageWrapper.php
@@ -47,32 +47,39 @@ private function checkPermissions(string $path, int $permissions): bool {
return ($this->getACLPermissionsForPath($path) & $permissions) === $permissions;
}
+ #[\Override]
public function isReadable(string $path): bool {
return $this->checkPermissions($path, Constants::PERMISSION_READ) && parent::isReadable($path);
}
+ #[\Override]
public function isUpdatable(string $path): bool {
return $this->checkPermissions($path, Constants::PERMISSION_UPDATE) && parent::isUpdatable($path);
}
+ #[\Override]
public function isCreatable(string $path): bool {
return $this->checkPermissions($path, Constants::PERMISSION_CREATE) && parent::isCreatable($path);
}
+ #[\Override]
public function isDeletable(string $path): bool {
return $this->checkPermissions($path, Constants::PERMISSION_DELETE)
&& $this->canDeleteTree($path)
&& parent::isDeletable($path);
}
+ #[\Override]
public function isSharable(string $path): bool {
return $this->checkPermissions($path, Constants::PERMISSION_SHARE) && parent::isSharable($path);
}
+ #[\Override]
public function getPermissions(string $path): int {
return $this->storage->getPermissions($path) & $this->getACLPermissionsForPath($path);
}
+ #[\Override]
public function rename(string $source, string $target): bool {
if (str_starts_with($source, $target)) {
$part = substr($source, strlen($target));
@@ -100,6 +107,7 @@ public function rename(string $source, string $target): bool {
&& parent::rename($source, $target);
}
+ #[\Override]
public function opendir(string $path) {
if (!$this->checkPermissions($path, Constants::PERMISSION_READ)) {
return false;
@@ -122,6 +130,7 @@ public function opendir(string $path) {
return IteratorDirectory::wrap($items);
}
+ #[\Override]
public function copy(string $source, string $target): bool {
$permissions = $this->file_exists($target) ? Constants::PERMISSION_UPDATE : Constants::PERMISSION_CREATE;
return $this->checkPermissions($target, $permissions)
@@ -129,21 +138,25 @@ public function copy(string $source, string $target): bool {
&& parent::copy($source, $target);
}
+ #[\Override]
public function touch(string $path, ?int $mtime = null): bool {
$permissions = $this->file_exists($path) ? Constants::PERMISSION_UPDATE : Constants::PERMISSION_CREATE;
return $this->checkPermissions($path, $permissions) && parent::touch($path, $mtime);
}
+ #[\Override]
public function mkdir(string $path): bool {
return $this->checkPermissions($path, Constants::PERMISSION_CREATE) && parent::mkdir($path);
}
+ #[\Override]
public function rmdir(string $path): bool {
return $this->checkPermissions($path, Constants::PERMISSION_DELETE)
&& $this->canDeleteTree($path)
&& parent::rmdir($path);
}
+ #[\Override]
public function unlink(string $path): bool {
return $this->checkPermissions($path, Constants::PERMISSION_DELETE)
&& $this->canDeleteTree($path)
@@ -158,11 +171,13 @@ private function canDeleteTree(string $path): int {
return $this->aclManager->getPermissionsForTree($this->folderId, $this->storageId, $path) & Constants::PERMISSION_DELETE;
}
+ #[\Override]
public function file_put_contents(string $path, mixed $data): int|float|false {
$permissions = $this->file_exists($path) ? Constants::PERMISSION_UPDATE : Constants::PERMISSION_CREATE;
return $this->checkPermissions($path, $permissions) ? parent::file_put_contents($path, $data) : false;
}
+ #[\Override]
public function fopen(string $path, string $mode) {
if ($mode === 'r' or $mode === 'rb') {
$permissions = Constants::PERMISSION_READ;
@@ -173,6 +188,7 @@ public function fopen(string $path, string $mode) {
return $this->checkPermissions($path, $permissions) ? parent::fopen($path, $mode) : false;
}
+ #[\Override]
public function writeStream(string $path, $stream, ?int $size = null): int {
$permissions = $this->file_exists($path) ? Constants::PERMISSION_UPDATE : Constants::PERMISSION_CREATE;
return $this->checkPermissions($path, $permissions) ? parent::writeStream($path, $stream, $size) : 0;
@@ -181,6 +197,7 @@ public function writeStream(string $path, $stream, ?int $size = null): int {
/**
* @inheritDoc
*/
+ #[\Override]
public function getCache(string $path = '', ?IStorage $storage = null): ICache {
if (!$storage) {
$storage = $this;
@@ -191,6 +208,7 @@ public function getCache(string $path = '', ?IStorage $storage = null): ICache {
return new ACLCacheWrapper($sourceCache, $this->aclManager, $this->folderId, $this->inShare);
}
+ #[\Override]
public function getMetaData(string $path): ?array {
$data = parent::getMetaData($path);
@@ -205,6 +223,7 @@ public function getMetaData(string $path): ?array {
/**
* @inheritDoc
*/
+ #[\Override]
public function getScanner(string $path = '', ?IStorage $storage = null): IScanner {
if (!$storage) {
$storage = $this->storage;
@@ -213,16 +232,19 @@ public function getScanner(string $path = '', ?IStorage $storage = null): IScann
return parent::getScanner($path, $storage);
}
+ #[\Override]
public function is_dir(string $path): bool {
return $this->checkPermissions($path, Constants::PERMISSION_READ)
&& parent::is_dir($path);
}
+ #[\Override]
public function is_file(string $path): bool {
return $this->checkPermissions($path, Constants::PERMISSION_READ)
&& parent::is_file($path);
}
+ #[\Override]
public function stat(string $path): array|false {
if (!$this->checkPermissions($path, Constants::PERMISSION_READ)) {
return false;
@@ -231,6 +253,7 @@ public function stat(string $path): array|false {
return parent::stat($path);
}
+ #[\Override]
public function filetype(string $path): string|false {
if (!$this->checkPermissions($path, Constants::PERMISSION_READ)) {
return false;
@@ -239,6 +262,7 @@ public function filetype(string $path): string|false {
return parent::filetype($path);
}
+ #[\Override]
public function filesize(string $path): false|int|float {
if (!$this->checkPermissions($path, Constants::PERMISSION_READ)) {
return false;
@@ -247,11 +271,13 @@ public function filesize(string $path): false|int|float {
return parent::filesize($path);
}
+ #[\Override]
public function file_exists(string $path): bool {
return $this->checkPermissions($path, Constants::PERMISSION_READ)
&& parent::file_exists($path);
}
+ #[\Override]
public function filemtime(string $path): int|false {
if (!$this->checkPermissions($path, Constants::PERMISSION_READ)) {
return false;
@@ -260,6 +286,7 @@ public function filemtime(string $path): int|false {
return parent::filemtime($path);
}
+ #[\Override]
public function file_get_contents(string $path): string|false {
if (!$this->checkPermissions($path, Constants::PERMISSION_READ)) {
return false;
@@ -268,6 +295,7 @@ public function file_get_contents(string $path): string|false {
return parent::file_get_contents($path);
}
+ #[\Override]
public function getMimeType(string $path): string|false {
if (!$this->checkPermissions($path, Constants::PERMISSION_READ)) {
return false;
@@ -276,6 +304,7 @@ public function getMimeType(string $path): string|false {
return parent::getMimeType($path);
}
+ #[\Override]
public function hash(string $type, string $path, bool $raw = false): string|false {
if (!$this->checkPermissions($path, Constants::PERMISSION_READ)) {
return false;
@@ -284,6 +313,7 @@ public function hash(string $type, string $path, bool $raw = false): string|fals
return parent::hash($type, $path, $raw);
}
+ #[\Override]
public function getETag(string $path): string|false {
if (!$this->checkPermissions($path, Constants::PERMISSION_READ)) {
return false;
@@ -292,6 +322,7 @@ public function getETag(string $path): string|false {
return parent::getETag($path);
}
+ #[\Override]
public function getDirectDownload(string $path): array|false {
if (!$this->checkPermissions($path, Constants::PERMISSION_READ)) {
return false;
@@ -300,6 +331,7 @@ public function getDirectDownload(string $path): array|false {
return parent::getDirectDownload($path);
}
+ #[\Override]
public function getDirectoryContent(string $directory): \Traversable {
$content = $this->getWrapperStorage()->getDirectoryContent($directory);
foreach ($content as $data) {
diff --git a/lib/ACL/Rule.php b/lib/ACL/Rule.php
index 528151e5c..c82613466 100644
--- a/lib/ACL/Rule.php
+++ b/lib/ACL/Rule.php
@@ -95,6 +95,7 @@ public function applyDenyPermissions(int $permissions): int {
return $permissions & $denyMask;
}
+ #[\Override]
public function xmlSerialize(Writer $writer): void {
$data = [
self::ACL => [
@@ -108,6 +109,7 @@ public function xmlSerialize(Writer $writer): void {
$writer->write($data);
}
+ #[\Override]
public function jsonSerialize(): array {
return [
'mapping' => [
@@ -119,6 +121,7 @@ public function jsonSerialize(): array {
];
}
+ #[\Override]
public static function xmlDeserialize(Reader $reader): Rule {
$elements = \Sabre\Xml\Deserializer\keyValue($reader);
diff --git a/lib/ACL/UserMapping/UserMapping.php b/lib/ACL/UserMapping/UserMapping.php
index 74858b110..2c6f632bb 100644
--- a/lib/ACL/UserMapping/UserMapping.php
+++ b/lib/ACL/UserMapping/UserMapping.php
@@ -22,18 +22,22 @@ public function __construct(
$this->displayName = $displayName ?? $id;
}
+ #[\Override]
public function getType(): string {
return $this->type;
}
+ #[\Override]
public function getId(): string {
return $this->id;
}
+ #[\Override]
public function getDisplayName(): string {
return $this->displayName;
}
+ #[\Override]
public function getKey(): string {
return $this->getType() . ':' . $this->getId();
}
diff --git a/lib/ACL/UserMapping/UserMappingManager.php b/lib/ACL/UserMapping/UserMappingManager.php
index b2cc2bbaa..22cfc1294 100644
--- a/lib/ACL/UserMapping/UserMappingManager.php
+++ b/lib/ACL/UserMapping/UserMappingManager.php
@@ -29,6 +29,7 @@ public function __construct(
) {
}
+ #[\Override]
public function getMappingsForUser(IUser $user, bool $userAssignable = true): array {
$groupMappings = array_values(array_map(fn (IGroup $group): UserMapping => new UserMapping('group', $group->getGID(), $group->getDisplayName()), $this->groupManager->getUserGroups($user)));
$circleMappings = array_values(array_map(fn (Circle $circle): UserMapping => new UserMapping('circle', $circle->getSingleId(), $circle->getDisplayName()), $this->getUserCircles($user->getUID())));
@@ -38,6 +39,7 @@ public function getMappingsForUser(IUser $user, bool $userAssignable = true): ar
], $groupMappings, $circleMappings);
}
+ #[\Override]
public function mappingFromId(string $type, string $id): ?IUserMapping {
switch ($type) {
case 'group':
@@ -115,6 +117,7 @@ public function getCirclesManager(): ?CirclesManager {
}
}
+ #[\Override]
public function userInMappings(IUser $user, array $mappings): bool {
foreach ($mappings as $mapping) {
if ($mapping->getType() === 'user' && $mapping->getId() === $user->getUID()) {
diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php
index e2a10e475..d963acb7b 100644
--- a/lib/AppInfo/Application.php
+++ b/lib/AppInfo/Application.php
@@ -68,6 +68,7 @@ public function __construct(array $urlParams = []) {
'workspace'
];
+ #[\Override]
public function register(IRegistrationContext $context): void {
/** Register $principalBackend for the DAV collection */
$context->registerServiceAlias('principalBackend', Principal::class);
@@ -184,6 +185,7 @@ public function register(IRegistrationContext $context): void {
$context->registerMiddleware(AuthorizedAdminSettingMiddleware::class);
}
+ #[\Override]
public function boot(IBootContext $context): void {
$context->injectFn(function (IMountProviderCollection $mountProviderCollection, CacheListener $cacheListener, IEventDispatcher $eventDispatcher): void {
$mountProviderCollection->registerProvider(Server::get(MountProvider::class));
diff --git a/lib/AppInfo/Capabilities.php b/lib/AppInfo/Capabilities.php
index 6369e58cd..d4bdacda9 100644
--- a/lib/AppInfo/Capabilities.php
+++ b/lib/AppInfo/Capabilities.php
@@ -29,6 +29,7 @@ public function __construct(
* },
* }
*/
+ #[\Override]
public function getCapabilities(): array {
$user = $this->userSession->getUser();
if (!$user) {
diff --git a/lib/AuthorizedAdminSettingMiddleware.php b/lib/AuthorizedAdminSettingMiddleware.php
index 751de7682..30464e726 100644
--- a/lib/AuthorizedAdminSettingMiddleware.php
+++ b/lib/AuthorizedAdminSettingMiddleware.php
@@ -30,6 +30,7 @@ public function __construct(
/**
* Throws an error when the user is not allowed to use the app's APIs
*/
+ #[\Override]
public function beforeController(Controller $controller, string $methodName): void {
$method = new ReflectionMethod($controller, $methodName);
if ($method->getAttributes(RequireGroupFolderAdmin::class) !== [] && !$this->delegatedService->hasApiAccess()) {
@@ -37,6 +38,7 @@ public function beforeController(Controller $controller, string $methodName): vo
}
}
+ #[\Override]
public function afterException(Controller $controller, string $methodName, Exception $exception): Response {
/** @var Http::STATUS_* $code */
$code = $exception->getCode();
diff --git a/lib/BackgroundJob/ExpireGroupPlaceholder.php b/lib/BackgroundJob/ExpireGroupPlaceholder.php
index 907a54af5..1031a8cbf 100644
--- a/lib/BackgroundJob/ExpireGroupPlaceholder.php
+++ b/lib/BackgroundJob/ExpireGroupPlaceholder.php
@@ -18,6 +18,7 @@ public function __construct(ITimeFactory $timeFactory) {
$this->setInterval(60 * 60 * 99999999);
}
+ #[\Override]
protected function run(mixed $argument): void {
// noop
}
diff --git a/lib/BackgroundJob/ExpireGroupTrash.php b/lib/BackgroundJob/ExpireGroupTrash.php
index 8d7732fcc..b03e4fe47 100644
--- a/lib/BackgroundJob/ExpireGroupTrash.php
+++ b/lib/BackgroundJob/ExpireGroupTrash.php
@@ -26,6 +26,7 @@ public function __construct(
$this->setInterval(60 * 60);
}
+ #[\Override]
protected function run(mixed $argument): void {
$backgroundJob = $this->config->getValueString('files_trashbin', 'background_job_expire_trash', 'yes');
if ($backgroundJob === 'no') {
diff --git a/lib/BackgroundJob/ExpireGroupVersions.php b/lib/BackgroundJob/ExpireGroupVersions.php
index 304e58497..7a75e5d7b 100644
--- a/lib/BackgroundJob/ExpireGroupVersions.php
+++ b/lib/BackgroundJob/ExpireGroupVersions.php
@@ -38,6 +38,7 @@ public function __construct(
* Expiring groupfolder versions can be quite expensive.
* We need to limit the amount of folders we expire per run.
*/
+ #[\Override]
protected function run(mixed $argument): void {
$lastFolder = $this->appConfig->getValueInt(Application::APP_ID, 'cron_last_folder_index', 0);
$folders = $this->folderManager->getAllFoldersWithSize();
diff --git a/lib/CacheListener.php b/lib/CacheListener.php
index 04d5d6394..a9fa0e081 100644
--- a/lib/CacheListener.php
+++ b/lib/CacheListener.php
@@ -33,7 +33,9 @@ public function onCacheEvent(ICacheEvent $event): void {
if (!$storage->instanceOfStorage(Jail::class)) {
return;
}
- if ($path = $storage->getJailedPath($event->getPath())) {
+ /** @var Jail $storage */
+ $path = $storage->getJailedPath($event->getPath());
+ if ($path !== null) {
$event->setPath($path);
}
}
diff --git a/lib/Command/Create.php b/lib/Command/Create.php
index 8d88a7420..b941e09bd 100644
--- a/lib/Command/Create.php
+++ b/lib/Command/Create.php
@@ -22,6 +22,7 @@ public function __construct(
parent::__construct();
}
+ #[\Override]
protected function configure(): void {
$this
->setName('groupfolders:create')
@@ -32,6 +33,7 @@ protected function configure(): void {
parent::configure();
}
+ #[\Override]
protected function execute(InputInterface $input, OutputInterface $output): int {
$name = trim((string)$input->getArgument('name'));
diff --git a/lib/Command/ExpireGroup/ExpireGroupBase.php b/lib/Command/ExpireGroup/ExpireGroupBase.php
index caad5f2bf..1abd9aacc 100644
--- a/lib/Command/ExpireGroup/ExpireGroupBase.php
+++ b/lib/Command/ExpireGroup/ExpireGroupBase.php
@@ -20,6 +20,7 @@ public function __construct() {
parent::__construct();
}
+ #[\Override]
protected function configure(): void {
$this
->setName('groupfolders:expire')
@@ -27,6 +28,7 @@ protected function configure(): void {
parent::configure();
}
+ #[\Override]
protected function execute(InputInterface $input, OutputInterface $output): int {
$output->writeln('groupfolder expiration handling is currently disabled because there is nothing to expire. Enable the "Delete Files" or/and "Versions" app to enable this feature.');
return 0;
diff --git a/lib/Command/ExpireGroupVersionsPlaceholder.php b/lib/Command/ExpireGroupVersionsPlaceholder.php
index ec9eea4b6..51022254f 100644
--- a/lib/Command/ExpireGroupVersionsPlaceholder.php
+++ b/lib/Command/ExpireGroupVersionsPlaceholder.php
@@ -13,6 +13,7 @@
use Symfony\Component\Console\Output\OutputInterface;
class ExpireGroupVersionsPlaceholder extends Base {
+ #[\Override]
protected function configure(): void {
$this
->setName('groupfolders:expire')
@@ -20,6 +21,7 @@ protected function configure(): void {
parent::configure();
}
+ #[\Override]
protected function execute(InputInterface $input, OutputInterface $output): int {
$output->writeln('Team folder version handling is only supported with Nextcloud 15 and up');
return 0;
diff --git a/lib/Command/ListCommand.php b/lib/Command/ListCommand.php
index 2250975bb..d24bdf3c9 100644
--- a/lib/Command/ListCommand.php
+++ b/lib/Command/ListCommand.php
@@ -38,6 +38,7 @@ public function __construct(
parent::__construct();
}
+ #[\Override]
protected function configure(): void {
$this
->setName('groupfolders:list')
@@ -46,6 +47,7 @@ protected function configure(): void {
parent::configure();
}
+ #[\Override]
protected function execute(InputInterface $input, OutputInterface $output): int {
$userId = $input->getOption('user');
$groups = $this->groupManager->search('');
diff --git a/lib/Command/Trashbin/Cleanup.php b/lib/Command/Trashbin/Cleanup.php
index 108b0360e..3ba3c936d 100644
--- a/lib/Command/Trashbin/Cleanup.php
+++ b/lib/Command/Trashbin/Cleanup.php
@@ -35,6 +35,7 @@ public function __construct(
}
}
+ #[\Override]
protected function configure(): void {
$this
->setName('groupfolders:trashbin:cleanup')
@@ -44,6 +45,7 @@ protected function configure(): void {
parent::configure();
}
+ #[\Override]
protected function execute(InputInterface $input, OutputInterface $output): int {
if (!$this->trashBackend) {
$output->writeln('files_trashbin is disabled: Team folders trashbin is not available');
diff --git a/lib/DAV/ACLPlugin.php b/lib/DAV/ACLPlugin.php
index 0fa0851bc..da5f1f6d4 100644
--- a/lib/DAV/ACLPlugin.php
+++ b/lib/DAV/ACLPlugin.php
@@ -62,6 +62,7 @@ private function isAdmin(IUser $user, string $path): bool {
return $this->canManageACL[$folderId];
}
+ #[\Override]
public function initialize(Server $server): void {
$this->server = $server;
$this->user = $this->userSession->getUser();
diff --git a/lib/DAV/GroupFoldersHome.php b/lib/DAV/GroupFoldersHome.php
index 72c92e1f9..63b80f1f0 100644
--- a/lib/DAV/GroupFoldersHome.php
+++ b/lib/DAV/GroupFoldersHome.php
@@ -27,23 +27,28 @@ public function __construct(
) {
}
+ #[\Override]
public function delete(): never {
throw new Forbidden();
}
+ #[\Override]
public function getName(): string {
[, $name] = \Sabre\Uri\split($this->principalInfo['uri']);
return $name;
}
+ #[\Override]
public function setName($name): never {
throw new Forbidden('Permission denied to rename this folder');
}
+ #[\Override]
public function createFile($name, $data = null): never {
throw new Forbidden('Not allowed to create files in this folder');
}
+ #[\Override]
public function createDirectory($name): never {
throw new Forbidden('Permission denied to create folders in this folder');
}
@@ -76,6 +81,7 @@ private function getDirectoryForFolder(FolderDefinition $folder): GroupFolderNod
return new GroupFolderNode($view, $node, $folder->id);
}
+ #[\Override]
public function getChild($name): GroupFolderNode {
$folder = $this->getFolder($name);
if ($folder) {
@@ -88,6 +94,7 @@ public function getChild($name): GroupFolderNode {
/**
* @return GroupFolderNode[]
*/
+ #[\Override]
public function getChildren(): array {
$storageId = $this->rootFolder->getMountPoint()->getNumericStorageId();
if ($storageId === null) {
@@ -102,10 +109,12 @@ public function getChildren(): array {
return array_map($this->getDirectoryForFolder(...), $folders);
}
+ #[\Override]
public function childExists($name): bool {
return $this->getFolder($name) !== null;
}
+ #[\Override]
public function getLastModified(): int {
return 0;
}
diff --git a/lib/DAV/PropFindPlugin.php b/lib/DAV/PropFindPlugin.php
index 630a848ac..0444bc6f4 100644
--- a/lib/DAV/PropFindPlugin.php
+++ b/lib/DAV/PropFindPlugin.php
@@ -32,10 +32,12 @@ public function __construct(IRootFolder $rootFolder, IUserSession $userSession)
}
+ #[\Override]
public function getPluginName(): string {
return 'groupFoldersDavPlugin';
}
+ #[\Override]
public function initialize(Server $server): void {
$server->on('propFind', $this->propFind(...));
}
diff --git a/lib/DAV/RootCollection.php b/lib/DAV/RootCollection.php
index 1861870a0..6b814c5d9 100644
--- a/lib/DAV/RootCollection.php
+++ b/lib/DAV/RootCollection.php
@@ -31,6 +31,7 @@ public function __construct(
* at least contain a uri item. Other properties may or may not be
* supplied by the authentication backend.
*/
+ #[\Override]
public function getChildForPrincipal(array $principalInfo): GroupFoldersHome {
[, $name] = \Sabre\Uri\split($principalInfo['uri']);
$user = $this->userSession->getUser();
@@ -41,6 +42,7 @@ public function getChildForPrincipal(array $principalInfo): GroupFoldersHome {
return new GroupFoldersHome($principalInfo, $this->folderManager, $this->rootFolder, $user);
}
+ #[\Override]
public function getName(): string {
return 'groupfolders';
}
diff --git a/lib/Folder/FolderWithMappingsAndCache.php b/lib/Folder/FolderWithMappingsAndCache.php
index 90a2eba88..025f6206f 100644
--- a/lib/Folder/FolderWithMappingsAndCache.php
+++ b/lib/Folder/FolderWithMappingsAndCache.php
@@ -56,6 +56,7 @@ public static function fromFolderWithMapping(FolderDefinitionWithMappings $folde
);
}
+ #[\Override]
public function toArray(): array {
return [
'id' => $this->id,
diff --git a/lib/Listeners/CircleDestroyedEventListener.php b/lib/Listeners/CircleDestroyedEventListener.php
index f1ae1a660..88c9236bd 100644
--- a/lib/Listeners/CircleDestroyedEventListener.php
+++ b/lib/Listeners/CircleDestroyedEventListener.php
@@ -24,6 +24,7 @@ public function __construct(
}
+ #[\Override]
public function handle(Event $event): void {
if (!$event instanceof CircleDestroyedEvent) {
return;
diff --git a/lib/Listeners/LoadAdditionalScriptsListener.php b/lib/Listeners/LoadAdditionalScriptsListener.php
index f79dd18a5..b96e6b7ae 100644
--- a/lib/Listeners/LoadAdditionalScriptsListener.php
+++ b/lib/Listeners/LoadAdditionalScriptsListener.php
@@ -18,6 +18,7 @@
* @template-implements IEventListener
*/
class LoadAdditionalScriptsListener implements IEventListener {
+ #[\Override]
public function handle(Event $event): void {
if (!$event instanceof LoadAdditionalScriptsEvent && !$event instanceof BeforeTemplateRenderedEvent) {
return;
diff --git a/lib/Listeners/NodeRenamedListener.php b/lib/Listeners/NodeRenamedListener.php
index c692d1f20..7727c50f8 100644
--- a/lib/Listeners/NodeRenamedListener.php
+++ b/lib/Listeners/NodeRenamedListener.php
@@ -25,6 +25,7 @@ public function __construct(
) {
}
+ #[\Override]
public function handle(Event $event): void {
if (!$event instanceof NodeRenamedEvent) {
return;
diff --git a/lib/Migration/Version1000000Date20210216085047.php b/lib/Migration/Version1000000Date20210216085047.php
index a919c07d9..76f9a47bd 100644
--- a/lib/Migration/Version1000000Date20210216085047.php
+++ b/lib/Migration/Version1000000Date20210216085047.php
@@ -13,6 +13,7 @@
use OCP\Migration\SimpleMigrationStep;
class Version1000000Date20210216085047 extends SimpleMigrationStep {
+ #[\Override]
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
/** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
diff --git a/lib/Migration/Version102020Date20180806161449.php b/lib/Migration/Version102020Date20180806161449.php
index 0b9933505..9804184d1 100644
--- a/lib/Migration/Version102020Date20180806161449.php
+++ b/lib/Migration/Version102020Date20180806161449.php
@@ -14,6 +14,7 @@
use OCP\Migration\SimpleMigrationStep;
class Version102020Date20180806161449 extends SimpleMigrationStep {
+ #[\Override]
public function changeSchema(IOutput $output, \Closure $schemaClosure, array $options): ?ISchemaWrapper {
/** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
diff --git a/lib/Migration/Version103000Date20180806161724.php b/lib/Migration/Version103000Date20180806161724.php
index cd772bd5c..7221ff465 100644
--- a/lib/Migration/Version103000Date20180806161724.php
+++ b/lib/Migration/Version103000Date20180806161724.php
@@ -21,6 +21,7 @@ public function __construct(
) {
}
+ #[\Override]
public function preSchemaChange(IOutput $output, \Closure $schemaClosure, array $options): void {
/** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
@@ -35,6 +36,7 @@ public function preSchemaChange(IOutput $output, \Closure $schemaClosure, array
}
}
+ #[\Override]
public function changeSchema(IOutput $output, \Closure $schemaClosure, array $options): ?ISchemaWrapper {
/** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
@@ -71,6 +73,7 @@ public function changeSchema(IOutput $output, \Closure $schemaClosure, array $op
return $schema;
}
+ #[\Override]
public function postSchemaChange(IOutput $output, \Closure $schemaClosure, array $options): void {
if (count($this->applicableData)) {
$query = $this->connection->getQueryBuilder();
diff --git a/lib/Migration/Version104000Date20180918132853.php b/lib/Migration/Version104000Date20180918132853.php
index 0c772bbab..69784cf2e 100644
--- a/lib/Migration/Version104000Date20180918132853.php
+++ b/lib/Migration/Version104000Date20180918132853.php
@@ -13,14 +13,17 @@
use OCP\Migration\SimpleMigrationStep;
class Version104000Date20180918132853 extends SimpleMigrationStep {
+ #[\Override]
public function name(): string {
return 'Add group_folders_trash table';
}
+ #[\Override]
public function description(): string {
return 'Adds table to store trashbin information for Team folders';
}
+ #[\Override]
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
/** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
diff --git a/lib/Migration/Version1401000Date20230426112001.php b/lib/Migration/Version1401000Date20230426112001.php
index dfd3bb574..99b86ab9e 100644
--- a/lib/Migration/Version1401000Date20230426112001.php
+++ b/lib/Migration/Version1401000Date20230426112001.php
@@ -14,6 +14,7 @@
use OCP\Migration\SimpleMigrationStep;
class Version1401000Date20230426112001 extends SimpleMigrationStep {
+ #[\Override]
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
/** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
diff --git a/lib/Migration/Version1401000Date20230426112002.php b/lib/Migration/Version1401000Date20230426112002.php
index cac09b4f0..2d4aa129b 100644
--- a/lib/Migration/Version1401000Date20230426112002.php
+++ b/lib/Migration/Version1401000Date20230426112002.php
@@ -13,6 +13,7 @@
use OCP\Migration\SimpleMigrationStep;
class Version1401000Date20230426112002 extends SimpleMigrationStep {
+ #[\Override]
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
/** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
diff --git a/lib/Migration/Version16000Date20230821085801.php b/lib/Migration/Version16000Date20230821085801.php
index 9af0e940c..c652456aa 100644
--- a/lib/Migration/Version16000Date20230821085801.php
+++ b/lib/Migration/Version16000Date20230821085801.php
@@ -16,6 +16,7 @@
use OCP\Migration\SimpleMigrationStep;
class Version16000Date20230821085801 extends SimpleMigrationStep {
+ #[\Override]
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
/** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
diff --git a/lib/Migration/Version19000Date20240903062631.php b/lib/Migration/Version19000Date20240903062631.php
index 0e397385d..d1e69a9de 100644
--- a/lib/Migration/Version19000Date20240903062631.php
+++ b/lib/Migration/Version19000Date20240903062631.php
@@ -15,6 +15,7 @@
use OCP\Migration\SimpleMigrationStep;
class Version19000Date20240903062631 extends SimpleMigrationStep {
+ #[\Override]
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
/** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
diff --git a/lib/Migration/Version19000Date20241029123147.php b/lib/Migration/Version19000Date20241029123147.php
index 00348cea0..ca7e49546 100644
--- a/lib/Migration/Version19000Date20241029123147.php
+++ b/lib/Migration/Version19000Date20241029123147.php
@@ -18,6 +18,7 @@ class Version19000Date20241029123147 extends SimpleMigrationStep {
/**
* @param Closure(): ISchemaWrapper $schemaClosure
*/
+ #[\Override]
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
/** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
diff --git a/lib/Migration/Version2000000Date20250128110101.php b/lib/Migration/Version2000000Date20250128110101.php
index 3d46ca898..94c7bd696 100644
--- a/lib/Migration/Version2000000Date20250128110101.php
+++ b/lib/Migration/Version2000000Date20250128110101.php
@@ -16,6 +16,7 @@
#[AddIndex('group_folders_groups', IndexType::INDEX, 'adding index on single circle id for better select')]
class Version2000000Date20250128110101 extends SimpleMigrationStep {
+ #[\Override]
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
/** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
diff --git a/lib/Migration/Version201000Date20190111132839.php b/lib/Migration/Version201000Date20190111132839.php
index e148b37df..080c933b1 100644
--- a/lib/Migration/Version201000Date20190111132839.php
+++ b/lib/Migration/Version201000Date20190111132839.php
@@ -13,14 +13,17 @@
use OCP\Migration\SimpleMigrationStep;
class Version201000Date20190111132839 extends SimpleMigrationStep {
+ #[\Override]
public function name(): string {
return 'Add groupfolder_acl table';
}
+ #[\Override]
public function description(): string {
return 'Adds table to store ACL information for Team folders';
}
+ #[\Override]
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
/** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
diff --git a/lib/Migration/Version201000Date20190212150323.php b/lib/Migration/Version201000Date20190212150323.php
index 41fdb7e3e..6cefccfc2 100644
--- a/lib/Migration/Version201000Date20190212150323.php
+++ b/lib/Migration/Version201000Date20190212150323.php
@@ -13,6 +13,7 @@
use OCP\Migration\SimpleMigrationStep;
class Version201000Date20190212150323 extends SimpleMigrationStep {
+ #[\Override]
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
/** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
diff --git a/lib/Migration/Version300000Date20240905185515.php b/lib/Migration/Version300000Date20240905185515.php
index e1cb6e42d..e1b9c259f 100644
--- a/lib/Migration/Version300000Date20240905185515.php
+++ b/lib/Migration/Version300000Date20240905185515.php
@@ -19,6 +19,7 @@
* Adds the delete_by column to the group_folders_trash table
*/
class Version300000Date20240905185515 extends SimpleMigrationStep {
+ #[\Override]
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
/** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
diff --git a/lib/Migration/Version401001Date20190715092137.php b/lib/Migration/Version401001Date20190715092137.php
index 7d5ee7166..eb71d647c 100644
--- a/lib/Migration/Version401001Date20190715092137.php
+++ b/lib/Migration/Version401001Date20190715092137.php
@@ -13,6 +13,7 @@
use OCP\Migration\SimpleMigrationStep;
class Version401001Date20190715092137 extends SimpleMigrationStep {
+ #[\Override]
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
/** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
diff --git a/lib/Migration/Version501000Date20190927102434.php b/lib/Migration/Version501000Date20190927102434.php
index a5c09cefe..7bdd77348 100644
--- a/lib/Migration/Version501000Date20190927102434.php
+++ b/lib/Migration/Version501000Date20190927102434.php
@@ -13,6 +13,7 @@
use OCP\Migration\SimpleMigrationStep;
class Version501000Date20190927102434 extends SimpleMigrationStep {
+ #[\Override]
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
/** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
diff --git a/lib/Migration/Version501000Date20191218182434.php b/lib/Migration/Version501000Date20191218182434.php
index 0fbe3a33b..88c38fdee 100644
--- a/lib/Migration/Version501000Date20191218182434.php
+++ b/lib/Migration/Version501000Date20191218182434.php
@@ -13,6 +13,7 @@
use OCP\Migration\SimpleMigrationStep;
class Version501000Date20191218182434 extends SimpleMigrationStep {
+ #[\Override]
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
/** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
diff --git a/lib/Migration/Version802000Date20201119112624.php b/lib/Migration/Version802000Date20201119112624.php
index 95105b54f..4d4b1d407 100644
--- a/lib/Migration/Version802000Date20201119112624.php
+++ b/lib/Migration/Version802000Date20201119112624.php
@@ -13,6 +13,7 @@
use OCP\Migration\SimpleMigrationStep;
class Version802000Date20201119112624 extends SimpleMigrationStep {
+ #[\Override]
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
/** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
diff --git a/lib/Migration/WrongDefaultQuotaRepairStep.php b/lib/Migration/WrongDefaultQuotaRepairStep.php
index 1048eef63..97e9ad787 100644
--- a/lib/Migration/WrongDefaultQuotaRepairStep.php
+++ b/lib/Migration/WrongDefaultQuotaRepairStep.php
@@ -21,6 +21,7 @@ public function __construct(
}
+ #[\Override]
public function getName(): string {
return 'Adjust Groupfolders with wrong default quotas';
}
@@ -28,6 +29,7 @@ public function getName(): string {
/**
* @throws Exception
*/
+ #[\Override]
public function run(IOutput $output): void {
foreach ($this->manager->getAllFolders() as $id => $folder) {
$quota = $folder->quota;
diff --git a/lib/Mount/CacheRootPermissionsMask.php b/lib/Mount/CacheRootPermissionsMask.php
index c85f2d30a..3d0fc95d4 100644
--- a/lib/Mount/CacheRootPermissionsMask.php
+++ b/lib/Mount/CacheRootPermissionsMask.php
@@ -21,6 +21,7 @@ public function __construct(
parent::__construct($cache);
}
+ #[\Override]
protected function formatCacheEntry($entry): ICacheEntry|false {
$isRoot = $entry->getId() === $this->rootId;
if (isset($entry['permissions']) && $isRoot) {
diff --git a/lib/Mount/GroupFolderEncryptionJail.php b/lib/Mount/GroupFolderEncryptionJail.php
index 295bb6cf3..96e7a24a3 100644
--- a/lib/Mount/GroupFolderEncryptionJail.php
+++ b/lib/Mount/GroupFolderEncryptionJail.php
@@ -23,6 +23,7 @@ class GroupFolderEncryptionJail extends Jail {
* @param string $path
* @param ?IStorage $storage
*/
+ #[\Override]
public function getCache($path = '', $storage = null): ICache {
if (!$storage) {
$storage = $this->getWrapperStorage();
diff --git a/lib/Mount/GroupFolderStorage.php b/lib/Mount/GroupFolderStorage.php
index 5c5b28a56..b84690ae6 100644
--- a/lib/Mount/GroupFolderStorage.php
+++ b/lib/Mount/GroupFolderStorage.php
@@ -45,6 +45,7 @@ public function getFolder(): FolderDefinition {
return $this->folder;
}
+ #[\Override]
public function getOwner(string $path): string|false {
if ($this->mountOwner !== null) {
return $this->mountOwner->getUID();
@@ -65,6 +66,7 @@ public function getUser(): ?IUser {
/**
* @inheritDoc
*/
+ #[\Override]
public function getCache(string $path = '', ?IStorage $storage = null): ICache {
if ($this->cache) {
return $this->cache;
@@ -88,6 +90,7 @@ public function getCache(string $path = '', ?IStorage $storage = null): ICache {
* @param string $path
* @param ?IStorage $storage
*/
+ #[\Override]
public function getScanner($path = '', $storage = null): IScanner {
/** @var ?\OC\Files\Storage\Wrapper\Wrapper $storage */
if (!$storage) {
@@ -103,6 +106,7 @@ public function getScanner($path = '', $storage = null): IScanner {
return $storage->scanner;
}
+ #[\Override]
protected function shouldApplyQuota(string $path): bool {
return true;
}
diff --git a/lib/Mount/GroupMountPoint.php b/lib/Mount/GroupMountPoint.php
index fc98ded24..b27d15eff 100644
--- a/lib/Mount/GroupMountPoint.php
+++ b/lib/Mount/GroupMountPoint.php
@@ -33,6 +33,7 @@ public function __construct(
$this->rootId = $rootId;
}
+ #[\Override]
public function getMountType(): string {
return 'group';
}
diff --git a/lib/Mount/MountProvider.php b/lib/Mount/MountProvider.php
index 10c186168..82c62b77f 100644
--- a/lib/Mount/MountProvider.php
+++ b/lib/Mount/MountProvider.php
@@ -48,6 +48,7 @@ public function getFoldersForUser(IUser $user): array {
return $this->folderManager->getFoldersForUser($user);
}
+ #[\Override]
public function getMountsForUser(IUser $user, IStorageFactory $loader): array {
$folders = $this->getFoldersForUser($user);
diff --git a/lib/Mount/RootEntryCache.php b/lib/Mount/RootEntryCache.php
index 9a83d6aba..675d291f2 100644
--- a/lib/Mount/RootEntryCache.php
+++ b/lib/Mount/RootEntryCache.php
@@ -20,6 +20,7 @@ public function __construct(
parent::__construct($cache);
}
+ #[\Override]
public function get($file): ICacheEntry|false {
if ($file === '' && $this->rootEntry) {
return $this->rootEntry;
@@ -28,6 +29,7 @@ public function get($file): ICacheEntry|false {
return parent::get($file);
}
+ #[\Override]
public function getId($file): int {
if ($file === '' && $this->rootEntry) {
return $this->rootEntry->getId();
@@ -36,11 +38,13 @@ public function getId($file): int {
return parent::getId($file);
}
+ #[\Override]
public function update($id, array $data): void {
$this->rootEntry = null;
parent::update($id, $data);
}
+ #[\Override]
public function insert($file, array $data): int {
$this->rootEntry = null;
return parent::insert($file, $data);
diff --git a/lib/Mount/RootPermissionsMask.php b/lib/Mount/RootPermissionsMask.php
index f01a3603a..7c3d9aae7 100644
--- a/lib/Mount/RootPermissionsMask.php
+++ b/lib/Mount/RootPermissionsMask.php
@@ -40,6 +40,7 @@ private function checkMask(int $permissions): bool {
return ($this->mask & $permissions) === $permissions;
}
+ #[\Override]
public function isUpdatable(string $path): bool {
if ($path === '') {
return $this->checkMask(Constants::PERMISSION_UPDATE) and parent::isUpdatable($path);
@@ -48,6 +49,7 @@ public function isUpdatable(string $path): bool {
}
}
+ #[\Override]
public function isCreatable(string $path): bool {
if ($path === '') {
return $this->checkMask(Constants::PERMISSION_CREATE) and parent::isCreatable($path);
@@ -56,6 +58,7 @@ public function isCreatable(string $path): bool {
}
}
+ #[\Override]
public function isDeletable(string $path): bool {
if ($path === '') {
return $this->checkMask(Constants::PERMISSION_DELETE) and parent::isDeletable($path);
@@ -64,6 +67,7 @@ public function isDeletable(string $path): bool {
}
}
+ #[\Override]
public function isSharable(string $path): bool {
if ($path === '') {
return $this->checkMask(Constants::PERMISSION_SHARE) and parent::isSharable($path);
@@ -72,6 +76,7 @@ public function isSharable(string $path): bool {
}
}
+ #[\Override]
public function getPermissions(string $path): int {
if ($path === '') {
return $this->storage->getPermissions($path) & $this->mask;
@@ -80,6 +85,7 @@ public function getPermissions(string $path): int {
}
}
+ #[\Override]
public function getMetaData(string $path): ?array {
$data = parent::getMetaData($path);
@@ -91,6 +97,7 @@ public function getMetaData(string $path): ?array {
return $data;
}
+ #[\Override]
public function getCache(string $path = '', ?IStorage $storage = null): ICache {
if (!$storage) {
$storage = $this;
diff --git a/lib/Settings/Admin.php b/lib/Settings/Admin.php
index d7307f209..262c465bc 100644
--- a/lib/Settings/Admin.php
+++ b/lib/Settings/Admin.php
@@ -25,6 +25,7 @@ public function __construct(
) {
}
+ #[\Override]
public function getForm(): TemplateResponse {
\OCP\Util::addScript(Application::APP_ID, 'groupfolders-settings');
@@ -51,18 +52,22 @@ public function getForm(): TemplateResponse {
);
}
+ #[\Override]
public function getSection(): string {
return Application::APP_ID;
}
+ #[\Override]
public function getPriority(): int {
return 90;
}
+ #[\Override]
public function getName(): ?string {
return null;
}
+ #[\Override]
public function getAuthorizedAppConfig(): array {
return [];
}
diff --git a/lib/Settings/Section.php b/lib/Settings/Section.php
index bccc0d4be..ed5994f8f 100644
--- a/lib/Settings/Section.php
+++ b/lib/Settings/Section.php
@@ -20,18 +20,22 @@ public function __construct(
) {
}
+ #[\Override]
public function getID(): string {
return Application::APP_ID;
}
+ #[\Override]
public function getName(): string {
return $this->l->t('Team folders');
}
+ #[\Override]
public function getPriority(): int {
return 90;
}
+ #[\Override]
public function getIcon(): string {
return $this->url->imagePath('groupfolders', 'app-dark.svg');
}
diff --git a/lib/Trash/GroupTrashItem.php b/lib/Trash/GroupTrashItem.php
index 71ec339a6..39fa2c99c 100644
--- a/lib/Trash/GroupTrashItem.php
+++ b/lib/Trash/GroupTrashItem.php
@@ -33,6 +33,7 @@ public function getInternalOriginalLocation(): string {
return $this->internalOriginalLocation;
}
+ #[\Override]
public function isRootItem(): bool {
return substr_count($this->getTrashPath(), '/') === 2;
}
@@ -41,15 +42,18 @@ public function getGroupFolderMountPoint(): string {
return $this->mountPoint;
}
+ #[\Override]
public function getTitle(): string {
return $this->getGroupFolderMountPoint() . '/' . $this->getOriginalLocation();
}
+ #[\Override]
public function getMtime(): int {
// trashbin is currently (incorrectly) assuming these to be the same
return $this->getDeletedTime();
}
+ #[\Override]
public function getInternalPath(): string {
// trashbin expects the path without the deletion timestamp
$path = parent::getInternalPath();
diff --git a/lib/Versions/GroupVersionEntity.php b/lib/Versions/GroupVersionEntity.php
index ef8acbc12..7cd289ec5 100644
--- a/lib/Versions/GroupVersionEntity.php
+++ b/lib/Versions/GroupVersionEntity.php
@@ -42,6 +42,7 @@ public function __construct() {
$this->addType('metadata', Types::STRING);
}
+ #[\Override]
public function jsonSerialize(): array {
return [
'id' => $this->id,
diff --git a/psalm.xml b/psalm.xml
index 54a6f6d26..6d12b4b3e 100644
--- a/psalm.xml
+++ b/psalm.xml
@@ -130,6 +130,7 @@
+
diff --git a/tests/ACL/ACLCacheWrapperTest.php b/tests/ACL/ACLCacheWrapperTest.php
index 4a3b3edf3..1d97641cf 100644
--- a/tests/ACL/ACLCacheWrapperTest.php
+++ b/tests/ACL/ACLCacheWrapperTest.php
@@ -25,6 +25,7 @@ class ACLCacheWrapperTest extends TestCase {
private ACLCacheWrapper $cache;
private array $aclPermissions = [];
+ #[\Override]
protected function setUp(): void {
parent::setUp();
diff --git a/tests/ACL/ACLManagerTest.php b/tests/ACL/ACLManagerTest.php
index 3c6c1d9f6..22a156a40 100644
--- a/tests/ACL/ACLManagerTest.php
+++ b/tests/ACL/ACLManagerTest.php
@@ -30,6 +30,7 @@ class ACLManagerTest extends TestCase {
/** @var array> */
private array $rules = [];
+ #[\Override]
protected function setUp(): void {
parent::setUp();
diff --git a/tests/ACL/ACLStorageWrapperTest.php b/tests/ACL/ACLStorageWrapperTest.php
index fadc13983..0e5d75810 100644
--- a/tests/ACL/ACLStorageWrapperTest.php
+++ b/tests/ACL/ACLStorageWrapperTest.php
@@ -22,6 +22,7 @@ class ACLStorageWrapperTest extends TestCase {
private ACLStorageWrapper $storage;
private array $aclPermissions = [];
+ #[\Override]
protected function setUp(): void {
parent::setUp();
diff --git a/tests/ACL/RuleManagerTest.php b/tests/ACL/RuleManagerTest.php
index 7dd0700d6..4b9dc835b 100644
--- a/tests/ACL/RuleManagerTest.php
+++ b/tests/ACL/RuleManagerTest.php
@@ -30,6 +30,7 @@ class RuleManagerTest extends TestCase {
private IUser&MockObject $user;
private IEventDispatcher&MockObject $eventDispatcher;
+ #[\Override]
protected function setUp(): void {
parent::setUp();
diff --git a/tests/AppInfo/CapabilitiesTest.php b/tests/AppInfo/CapabilitiesTest.php
index 393d9189a..311fa9aff 100644
--- a/tests/AppInfo/CapabilitiesTest.php
+++ b/tests/AppInfo/CapabilitiesTest.php
@@ -23,6 +23,7 @@ class CapabilitiesTest extends TestCase {
private IAppManager&MockObject $appManager;
private Capabilities $capabilities;
+ #[\Override]
public function setUp(): void {
parent::setUp();
diff --git a/tests/Folder/FolderManagerTest.php b/tests/Folder/FolderManagerTest.php
index 486280b71..44fda0c06 100644
--- a/tests/Folder/FolderManagerTest.php
+++ b/tests/Folder/FolderManagerTest.php
@@ -45,6 +45,7 @@ class FolderManagerTest extends TestCase {
private FolderStorageManager $folderStorageManager;
private IAppConfig $appConfig;
+ #[\Override]
protected function setUp(): void {
parent::setUp();
diff --git a/tests/Listeners/CircleDestroyedEventListenerTest.php b/tests/Listeners/CircleDestroyedEventListenerTest.php
index 06f695f18..38ac59cb6 100644
--- a/tests/Listeners/CircleDestroyedEventListenerTest.php
+++ b/tests/Listeners/CircleDestroyedEventListenerTest.php
@@ -21,6 +21,7 @@ class CircleDestroyedEventListenerTest extends TestCase {
private FolderManager&MockObject $folderManager;
private CircleDestroyedEventListener $listener;
+ #[\Override]
protected function setUp(): void {
parent::setUp();
diff --git a/tests/Listeners/LoadAdditionalScriptsListenerTest.php b/tests/Listeners/LoadAdditionalScriptsListenerTest.php
index c549fe99c..89660f769 100644
--- a/tests/Listeners/LoadAdditionalScriptsListenerTest.php
+++ b/tests/Listeners/LoadAdditionalScriptsListenerTest.php
@@ -19,6 +19,7 @@
class LoadAdditionalScriptsListenerTest extends TestCase {
private LoadAdditionalScriptsListener $listener;
+ #[\Override]
protected function setUp(): void {
parent::setUp();
diff --git a/tests/Listeners/NodeRenamedListenerTest.php b/tests/Listeners/NodeRenamedListenerTest.php
index 9ea7ba706..a7f97b49d 100644
--- a/tests/Listeners/NodeRenamedListenerTest.php
+++ b/tests/Listeners/NodeRenamedListenerTest.php
@@ -30,6 +30,7 @@ class NodeRenamedListenerTest extends TestCase {
private MockObject $target;
private NodeRenamedEvent&MockObject $event;
+ #[\Override]
protected function setUp(): void {
parent::setUp();
diff --git a/tests/Trash/TrashBackendTest.php b/tests/Trash/TrashBackendTest.php
index 742a71aca..72c983e59 100644
--- a/tests/Trash/TrashBackendTest.php
+++ b/tests/Trash/TrashBackendTest.php
@@ -46,6 +46,7 @@ class TrashBackendTest extends TestCase {
private IUser $managerUser;
private IUser $normalUser;
+ #[\Override]
public function setUp(): void {
parent::setUp();
@@ -89,6 +90,7 @@ public function setUp(): void {
}
+ #[\Override]
protected function tearDown(): void {
$folder = $this->folderManager->getFolder($this->folderId);
if ($folder) {
diff --git a/vendor-bin/psalm/composer.json b/vendor-bin/psalm/composer.json
index d1eb38ea6..254fa9322 100644
--- a/vendor-bin/psalm/composer.json
+++ b/vendor-bin/psalm/composer.json
@@ -1,11 +1,11 @@
{
"require-dev": {
- "vimeo/psalm": "^6.4",
+ "vimeo/psalm": "^6.14",
"psalm/plugin-phpunit": "^0.19.3"
},
"config": {
"platform": {
- "php": "8.2.4"
+ "php": "8.2.27"
}
}
}
diff --git a/vendor-bin/psalm/composer.lock b/vendor-bin/psalm/composer.lock
index 045351959..7c83a9cef 100644
--- a/vendor-bin/psalm/composer.lock
+++ b/vendor-bin/psalm/composer.lock
@@ -4,21 +4,21 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "5b598ebb121e44cc752418d977c716c9",
+ "content-hash": "f9f7139e009b603ee856af72f6b6f2e9",
"packages": [],
"packages-dev": [
{
"name": "amphp/amp",
- "version": "v3.1.0",
+ "version": "v3.1.1",
"source": {
"type": "git",
"url": "https://github.com/amphp/amp.git",
- "reference": "7cf7fef3d667bfe4b2560bc87e67d5387a7bcde9"
+ "reference": "fa0ab33a6f47a82929c38d03ca47ebb71086a93f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/amphp/amp/zipball/7cf7fef3d667bfe4b2560bc87e67d5387a7bcde9",
- "reference": "7cf7fef3d667bfe4b2560bc87e67d5387a7bcde9",
+ "url": "https://api.github.com/repos/amphp/amp/zipball/fa0ab33a6f47a82929c38d03ca47ebb71086a93f",
+ "reference": "fa0ab33a6f47a82929c38d03ca47ebb71086a93f",
"shasum": ""
},
"require": {
@@ -78,7 +78,7 @@
],
"support": {
"issues": "https://github.com/amphp/amp/issues",
- "source": "https://github.com/amphp/amp/tree/v3.1.0"
+ "source": "https://github.com/amphp/amp/tree/v3.1.1"
},
"funding": [
{
@@ -86,7 +86,7 @@
"type": "github"
}
],
- "time": "2025-01-26T16:07:39+00:00"
+ "time": "2025-08-27T21:42:00+00:00"
},
{
"name": "amphp/byte-stream",
@@ -319,16 +319,16 @@
},
{
"name": "amphp/parallel",
- "version": "v2.3.1",
+ "version": "v2.3.3",
"source": {
"type": "git",
"url": "https://github.com/amphp/parallel.git",
- "reference": "5113111de02796a782f5d90767455e7391cca190"
+ "reference": "296b521137a54d3a02425b464e5aee4c93db2c60"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/amphp/parallel/zipball/5113111de02796a782f5d90767455e7391cca190",
- "reference": "5113111de02796a782f5d90767455e7391cca190",
+ "url": "https://api.github.com/repos/amphp/parallel/zipball/296b521137a54d3a02425b464e5aee4c93db2c60",
+ "reference": "296b521137a54d3a02425b464e5aee4c93db2c60",
"shasum": ""
},
"require": {
@@ -391,7 +391,7 @@
],
"support": {
"issues": "https://github.com/amphp/parallel/issues",
- "source": "https://github.com/amphp/parallel/tree/v2.3.1"
+ "source": "https://github.com/amphp/parallel/tree/v2.3.3"
},
"funding": [
{
@@ -399,7 +399,7 @@
"type": "github"
}
],
- "time": "2024-12-21T01:56:09+00:00"
+ "time": "2025-11-15T06:23:42+00:00"
},
{
"name": "amphp/parser",
@@ -969,16 +969,16 @@
},
{
"name": "composer/semver",
- "version": "3.4.3",
+ "version": "3.4.4",
"source": {
"type": "git",
"url": "https://github.com/composer/semver.git",
- "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12"
+ "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12",
- "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12",
+ "url": "https://api.github.com/repos/composer/semver/zipball/198166618906cb2de69b95d7d47e5fa8aa1b2b95",
+ "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95",
"shasum": ""
},
"require": {
@@ -1030,7 +1030,7 @@
"support": {
"irc": "ircs://irc.libera.chat:6697/composer",
"issues": "https://github.com/composer/semver/issues",
- "source": "https://github.com/composer/semver/tree/3.4.3"
+ "source": "https://github.com/composer/semver/tree/3.4.4"
},
"funding": [
{
@@ -1040,13 +1040,9 @@
{
"url": "https://github.com/composer",
"type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
- "type": "tidelift"
}
],
- "time": "2024-09-19T14:15:21+00:00"
+ "time": "2025-08-20T19:15:30+00:00"
},
{
"name": "composer/xdebug-handler",
@@ -1114,6 +1110,58 @@
],
"time": "2024-05-06T16:37:16+00:00"
},
+ {
+ "name": "danog/advanced-json-rpc",
+ "version": "v3.2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/danog/php-advanced-json-rpc.git",
+ "reference": "aadb1c4068a88c3d0530cfe324b067920661efcb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/danog/php-advanced-json-rpc/zipball/aadb1c4068a88c3d0530cfe324b067920661efcb",
+ "reference": "aadb1c4068a88c3d0530cfe324b067920661efcb",
+ "shasum": ""
+ },
+ "require": {
+ "netresearch/jsonmapper": "^5",
+ "php": ">=8.1",
+ "phpdocumentor/reflection-docblock": "^4.3.4 || ^5.0.0"
+ },
+ "replace": {
+ "felixfbecker/php-advanced-json-rpc": "^3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "AdvancedJsonRpc\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "ISC"
+ ],
+ "authors": [
+ {
+ "name": "Felix Becker",
+ "email": "felix.b@outlook.com"
+ },
+ {
+ "name": "Daniil Gentili",
+ "email": "daniil@daniil.it"
+ }
+ ],
+ "description": "A more advanced JSONRPC implementation",
+ "support": {
+ "issues": "https://github.com/danog/php-advanced-json-rpc/issues",
+ "source": "https://github.com/danog/php-advanced-json-rpc/tree/v3.2.2"
+ },
+ "time": "2025-02-14T10:55:15+00:00"
+ },
{
"name": "daverandom/libdns",
"version": "v2.1.0",
@@ -1243,51 +1291,6 @@
},
"time": "2025-04-07T20:06:18+00:00"
},
- {
- "name": "felixfbecker/advanced-json-rpc",
- "version": "v3.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/felixfbecker/php-advanced-json-rpc.git",
- "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/b5f37dbff9a8ad360ca341f3240dc1c168b45447",
- "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447",
- "shasum": ""
- },
- "require": {
- "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
- "php": "^7.1 || ^8.0",
- "phpdocumentor/reflection-docblock": "^4.3.4 || ^5.0.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^7.0 || ^8.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "AdvancedJsonRpc\\": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "ISC"
- ],
- "authors": [
- {
- "name": "Felix Becker",
- "email": "felix.b@outlook.com"
- }
- ],
- "description": "A more advanced JSONRPC implementation",
- "support": {
- "issues": "https://github.com/felixfbecker/php-advanced-json-rpc/issues",
- "source": "https://github.com/felixfbecker/php-advanced-json-rpc/tree/v3.2.1"
- },
- "time": "2021-06-11T22:34:44+00:00"
- },
{
"name": "felixfbecker/language-server-protocol",
"version": "v1.5.3",
@@ -1346,16 +1349,16 @@
},
{
"name": "fidry/cpu-core-counter",
- "version": "1.2.0",
+ "version": "1.3.0",
"source": {
"type": "git",
"url": "https://github.com/theofidry/cpu-core-counter.git",
- "reference": "8520451a140d3f46ac33042715115e290cf5785f"
+ "reference": "db9508f7b1474469d9d3c53b86f817e344732678"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/8520451a140d3f46ac33042715115e290cf5785f",
- "reference": "8520451a140d3f46ac33042715115e290cf5785f",
+ "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/db9508f7b1474469d9d3c53b86f817e344732678",
+ "reference": "db9508f7b1474469d9d3c53b86f817e344732678",
"shasum": ""
},
"require": {
@@ -1365,10 +1368,10 @@
"fidry/makefile": "^0.2.0",
"fidry/php-cs-fixer-config": "^1.1.2",
"phpstan/extension-installer": "^1.2.0",
- "phpstan/phpstan": "^1.9.2",
- "phpstan/phpstan-deprecation-rules": "^1.0.0",
- "phpstan/phpstan-phpunit": "^1.2.2",
- "phpstan/phpstan-strict-rules": "^1.4.4",
+ "phpstan/phpstan": "^2.0",
+ "phpstan/phpstan-deprecation-rules": "^2.0.0",
+ "phpstan/phpstan-phpunit": "^2.0",
+ "phpstan/phpstan-strict-rules": "^2.0",
"phpunit/phpunit": "^8.5.31 || ^9.5.26",
"webmozarts/strict-phpunit": "^7.5"
},
@@ -1395,7 +1398,7 @@
],
"support": {
"issues": "https://github.com/theofidry/cpu-core-counter/issues",
- "source": "https://github.com/theofidry/cpu-core-counter/tree/1.2.0"
+ "source": "https://github.com/theofidry/cpu-core-counter/tree/1.3.0"
},
"funding": [
{
@@ -1403,7 +1406,7 @@
"type": "github"
}
],
- "time": "2024-08-06T10:04:20+00:00"
+ "time": "2025-08-14T07:29:31+00:00"
},
{
"name": "kelunik/certificate",
@@ -1465,33 +1468,38 @@
},
{
"name": "league/uri",
- "version": "7.5.1",
+ "version": "7.7.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/uri.git",
- "reference": "81fb5145d2644324614cc532b28efd0215bda430"
+ "reference": "8d587cddee53490f9b82bf203d3a9aa7ea4f9807"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/uri/zipball/81fb5145d2644324614cc532b28efd0215bda430",
- "reference": "81fb5145d2644324614cc532b28efd0215bda430",
+ "url": "https://api.github.com/repos/thephpleague/uri/zipball/8d587cddee53490f9b82bf203d3a9aa7ea4f9807",
+ "reference": "8d587cddee53490f9b82bf203d3a9aa7ea4f9807",
"shasum": ""
},
"require": {
- "league/uri-interfaces": "^7.5",
- "php": "^8.1"
+ "league/uri-interfaces": "^7.7",
+ "php": "^8.1",
+ "psr/http-factory": "^1"
},
"conflict": {
"league/uri-schemes": "^1.0"
},
"suggest": {
"ext-bcmath": "to improve IPV4 host parsing",
+ "ext-dom": "to convert the URI into an HTML anchor tag",
"ext-fileinfo": "to create Data URI from file contennts",
"ext-gmp": "to improve IPV4 host parsing",
"ext-intl": "to handle IDN host with the best performance",
+ "ext-uri": "to use the PHP native URI class",
"jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain",
"league/uri-components": "Needed to easily manipulate URI objects components",
+ "league/uri-polyfill": "Needed to backport the PHP URI extension for older versions of PHP",
"php-64bit": "to improve IPV4 host parsing",
+ "rowbot/url": "to handle WHATWG URL",
"symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present"
},
"type": "library",
@@ -1519,6 +1527,7 @@
"description": "URI manipulation library",
"homepage": "https://uri.thephpleague.com",
"keywords": [
+ "URN",
"data-uri",
"file-uri",
"ftp",
@@ -1531,9 +1540,11 @@
"psr-7",
"query-string",
"querystring",
+ "rfc2141",
"rfc3986",
"rfc3987",
"rfc6570",
+ "rfc8141",
"uri",
"uri-template",
"url",
@@ -1543,7 +1554,7 @@
"docs": "https://uri.thephpleague.com",
"forum": "https://thephpleague.slack.com",
"issues": "https://github.com/thephpleague/uri-src/issues",
- "source": "https://github.com/thephpleague/uri/tree/7.5.1"
+ "source": "https://github.com/thephpleague/uri/tree/7.7.0"
},
"funding": [
{
@@ -1551,26 +1562,25 @@
"type": "github"
}
],
- "time": "2024-12-08T08:40:02+00:00"
+ "time": "2025-12-07T16:02:06+00:00"
},
{
"name": "league/uri-interfaces",
- "version": "7.5.0",
+ "version": "7.7.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/uri-interfaces.git",
- "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742"
+ "reference": "62ccc1a0435e1c54e10ee6022df28d6c04c2946c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/08cfc6c4f3d811584fb09c37e2849e6a7f9b0742",
- "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742",
+ "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/62ccc1a0435e1c54e10ee6022df28d6c04c2946c",
+ "reference": "62ccc1a0435e1c54e10ee6022df28d6c04c2946c",
"shasum": ""
},
"require": {
"ext-filter": "*",
"php": "^8.1",
- "psr/http-factory": "^1",
"psr/http-message": "^1.1 || ^2.0"
},
"suggest": {
@@ -1578,6 +1588,7 @@
"ext-gmp": "to improve IPV4 host parsing",
"ext-intl": "to handle IDN host with the best performance",
"php-64bit": "to improve IPV4 host parsing",
+ "rowbot/url": "to handle WHATWG URL",
"symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present"
},
"type": "library",
@@ -1602,7 +1613,7 @@
"homepage": "https://nyamsprod.com"
}
],
- "description": "Common interfaces and classes for URI representation and interaction",
+ "description": "Common tools for parsing and resolving RFC3987/RFC3986 URI",
"homepage": "https://uri.thephpleague.com",
"keywords": [
"data-uri",
@@ -1627,7 +1638,7 @@
"docs": "https://uri.thephpleague.com",
"forum": "https://thephpleague.slack.com",
"issues": "https://github.com/thephpleague/uri-src/issues",
- "source": "https://github.com/thephpleague/uri-interfaces/tree/7.5.0"
+ "source": "https://github.com/thephpleague/uri-interfaces/tree/7.7.0"
},
"funding": [
{
@@ -1635,20 +1646,20 @@
"type": "github"
}
],
- "time": "2024-12-08T08:18:47+00:00"
+ "time": "2025-12-07T16:03:21+00:00"
},
{
"name": "netresearch/jsonmapper",
- "version": "v4.5.0",
+ "version": "v5.0.0",
"source": {
"type": "git",
"url": "https://github.com/cweiske/jsonmapper.git",
- "reference": "8e76efb98ee8b6afc54687045e1b8dba55ac76e5"
+ "reference": "8c64d8d444a5d764c641ebe97e0e3bc72b25bf6c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8e76efb98ee8b6afc54687045e1b8dba55ac76e5",
- "reference": "8e76efb98ee8b6afc54687045e1b8dba55ac76e5",
+ "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8c64d8d444a5d764c641ebe97e0e3bc72b25bf6c",
+ "reference": "8c64d8d444a5d764c641ebe97e0e3bc72b25bf6c",
"shasum": ""
},
"require": {
@@ -1684,22 +1695,22 @@
"support": {
"email": "cweiske@cweiske.de",
"issues": "https://github.com/cweiske/jsonmapper/issues",
- "source": "https://github.com/cweiske/jsonmapper/tree/v4.5.0"
+ "source": "https://github.com/cweiske/jsonmapper/tree/v5.0.0"
},
- "time": "2024-09-08T10:13:13+00:00"
+ "time": "2024-09-08T10:20:00+00:00"
},
{
"name": "nikic/php-parser",
- "version": "v5.5.0",
+ "version": "v5.7.0",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "ae59794362fe85e051a58ad36b289443f57be7a9"
+ "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/ae59794362fe85e051a58ad36b289443f57be7a9",
- "reference": "ae59794362fe85e051a58ad36b289443f57be7a9",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82",
+ "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82",
"shasum": ""
},
"require": {
@@ -1718,7 +1729,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.0-dev"
+ "dev-master": "5.x-dev"
}
},
"autoload": {
@@ -1742,9 +1753,9 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
- "source": "https://github.com/nikic/PHP-Parser/tree/v5.5.0"
+ "source": "https://github.com/nikic/PHP-Parser/tree/v5.7.0"
},
- "time": "2025-05-31T08:24:38+00:00"
+ "time": "2025-12-06T11:56:16+00:00"
},
{
"name": "phpdocumentor/reflection-common",
@@ -1801,16 +1812,16 @@
},
{
"name": "phpdocumentor/reflection-docblock",
- "version": "5.6.2",
+ "version": "5.6.6",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "92dde6a5919e34835c506ac8c523ef095a95ed62"
+ "reference": "5cee1d3dfc2d2aa6599834520911d246f656bcb8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/92dde6a5919e34835c506ac8c523ef095a95ed62",
- "reference": "92dde6a5919e34835c506ac8c523ef095a95ed62",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/5cee1d3dfc2d2aa6599834520911d246f656bcb8",
+ "reference": "5cee1d3dfc2d2aa6599834520911d246f656bcb8",
"shasum": ""
},
"require": {
@@ -1820,7 +1831,7 @@
"phpdocumentor/reflection-common": "^2.2",
"phpdocumentor/type-resolver": "^1.7",
"phpstan/phpdoc-parser": "^1.7|^2.0",
- "webmozart/assert": "^1.9.1"
+ "webmozart/assert": "^1.9.1 || ^2"
},
"require-dev": {
"mockery/mockery": "~1.3.5 || ~1.6.0",
@@ -1859,22 +1870,22 @@
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
"support": {
"issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
- "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.2"
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.6"
},
- "time": "2025-04-13T19:20:35+00:00"
+ "time": "2025-12-22T21:13:58+00:00"
},
{
"name": "phpdocumentor/type-resolver",
- "version": "1.10.0",
+ "version": "1.12.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a"
+ "reference": "92a98ada2b93d9b201a613cb5a33584dde25f195"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/679e3ce485b99e84c775d28e2e96fade9a7fb50a",
- "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/92a98ada2b93d9b201a613cb5a33584dde25f195",
+ "reference": "92a98ada2b93d9b201a613cb5a33584dde25f195",
"shasum": ""
},
"require": {
@@ -1917,22 +1928,22 @@
"description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
"support": {
"issues": "https://github.com/phpDocumentor/TypeResolver/issues",
- "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.10.0"
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.12.0"
},
- "time": "2024-11-09T15:12:26+00:00"
+ "time": "2025-11-21T15:09:14+00:00"
},
{
"name": "phpstan/phpdoc-parser",
- "version": "2.1.0",
+ "version": "2.3.0",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpdoc-parser.git",
- "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68"
+ "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/9b30d6fd026b2c132b3985ce6b23bec09ab3aa68",
- "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68",
+ "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/1e0cd5370df5dd2e556a36b9c62f62e555870495",
+ "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495",
"shasum": ""
},
"require": {
@@ -1964,9 +1975,9 @@
"description": "PHPDoc parser with support for nullable, intersection and generic types",
"support": {
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
- "source": "https://github.com/phpstan/phpdoc-parser/tree/2.1.0"
+ "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.0"
},
- "time": "2025-02-19T13:28:12+00:00"
+ "time": "2025-08-30T15:50:23+00:00"
},
{
"name": "psalm/plugin-phpunit",
@@ -2242,16 +2253,16 @@
},
{
"name": "revolt/event-loop",
- "version": "v1.0.7",
+ "version": "v1.0.8",
"source": {
"type": "git",
"url": "https://github.com/revoltphp/event-loop.git",
- "reference": "09bf1bf7f7f574453efe43044b06fafe12216eb3"
+ "reference": "b6fc06dce8e9b523c9946138fa5e62181934f91c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/revoltphp/event-loop/zipball/09bf1bf7f7f574453efe43044b06fafe12216eb3",
- "reference": "09bf1bf7f7f574453efe43044b06fafe12216eb3",
+ "url": "https://api.github.com/repos/revoltphp/event-loop/zipball/b6fc06dce8e9b523c9946138fa5e62181934f91c",
+ "reference": "b6fc06dce8e9b523c9946138fa5e62181934f91c",
"shasum": ""
},
"require": {
@@ -2308,35 +2319,35 @@
],
"support": {
"issues": "https://github.com/revoltphp/event-loop/issues",
- "source": "https://github.com/revoltphp/event-loop/tree/v1.0.7"
+ "source": "https://github.com/revoltphp/event-loop/tree/v1.0.8"
},
- "time": "2025-01-25T19:27:39+00:00"
+ "time": "2025-08-27T21:33:23+00:00"
},
{
"name": "sebastian/diff",
- "version": "5.1.1",
+ "version": "6.0.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/diff.git",
- "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e"
+ "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e",
- "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/b4ccd857127db5d41a5b676f24b51371d76d8544",
+ "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544",
"shasum": ""
},
"require": {
- "php": ">=8.1"
+ "php": ">=8.2"
},
"require-dev": {
- "phpunit/phpunit": "^10.0",
- "symfony/process": "^6.4"
+ "phpunit/phpunit": "^11.0",
+ "symfony/process": "^4.2 || ^5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "5.1-dev"
+ "dev-main": "6.0-dev"
}
},
"autoload": {
@@ -2369,7 +2380,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/diff/issues",
"security": "https://github.com/sebastianbergmann/diff/security/policy",
- "source": "https://github.com/sebastianbergmann/diff/tree/5.1.1"
+ "source": "https://github.com/sebastianbergmann/diff/tree/6.0.2"
},
"funding": [
{
@@ -2377,20 +2388,20 @@
"type": "github"
}
],
- "time": "2024-03-02T07:15:17+00:00"
+ "time": "2024-07-03T04:53:05+00:00"
},
{
"name": "spatie/array-to-xml",
- "version": "3.4.0",
+ "version": "3.4.4",
"source": {
"type": "git",
"url": "https://github.com/spatie/array-to-xml.git",
- "reference": "7dcfc67d60b0272926dabad1ec01f6b8a5fb5e67"
+ "reference": "88b2f3852a922dd73177a68938f8eb2ec70c7224"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/7dcfc67d60b0272926dabad1ec01f6b8a5fb5e67",
- "reference": "7dcfc67d60b0272926dabad1ec01f6b8a5fb5e67",
+ "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/88b2f3852a922dd73177a68938f8eb2ec70c7224",
+ "reference": "88b2f3852a922dd73177a68938f8eb2ec70c7224",
"shasum": ""
},
"require": {
@@ -2433,7 +2444,7 @@
"xml"
],
"support": {
- "source": "https://github.com/spatie/array-to-xml/tree/3.4.0"
+ "source": "https://github.com/spatie/array-to-xml/tree/3.4.4"
},
"funding": [
{
@@ -2445,51 +2456,51 @@
"type": "github"
}
],
- "time": "2024-12-16T12:45:15+00:00"
+ "time": "2025-12-15T09:00:41+00:00"
},
{
"name": "symfony/console",
- "version": "v6.4.22",
+ "version": "v7.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "7d29659bc3c9d8e9a34e2c3414ef9e9e003e6cf3"
+ "reference": "732a9ca6cd9dfd940c639062d5edbde2f6727fb6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/7d29659bc3c9d8e9a34e2c3414ef9e9e003e6cf3",
- "reference": "7d29659bc3c9d8e9a34e2c3414ef9e9e003e6cf3",
+ "url": "https://api.github.com/repos/symfony/console/zipball/732a9ca6cd9dfd940c639062d5edbde2f6727fb6",
+ "reference": "732a9ca6cd9dfd940c639062d5edbde2f6727fb6",
"shasum": ""
},
"require": {
- "php": ">=8.1",
+ "php": ">=8.2",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-mbstring": "~1.0",
"symfony/service-contracts": "^2.5|^3",
- "symfony/string": "^5.4|^6.0|^7.0"
+ "symfony/string": "^7.2|^8.0"
},
"conflict": {
- "symfony/dependency-injection": "<5.4",
- "symfony/dotenv": "<5.4",
- "symfony/event-dispatcher": "<5.4",
- "symfony/lock": "<5.4",
- "symfony/process": "<5.4"
+ "symfony/dependency-injection": "<6.4",
+ "symfony/dotenv": "<6.4",
+ "symfony/event-dispatcher": "<6.4",
+ "symfony/lock": "<6.4",
+ "symfony/process": "<6.4"
},
"provide": {
"psr/log-implementation": "1.0|2.0|3.0"
},
"require-dev": {
"psr/log": "^1|^2|^3",
- "symfony/config": "^5.4|^6.0|^7.0",
- "symfony/dependency-injection": "^5.4|^6.0|^7.0",
- "symfony/event-dispatcher": "^5.4|^6.0|^7.0",
- "symfony/http-foundation": "^6.4|^7.0",
- "symfony/http-kernel": "^6.4|^7.0",
- "symfony/lock": "^5.4|^6.0|^7.0",
- "symfony/messenger": "^5.4|^6.0|^7.0",
- "symfony/process": "^5.4|^6.0|^7.0",
- "symfony/stopwatch": "^5.4|^6.0|^7.0",
- "symfony/var-dumper": "^5.4|^6.0|^7.0"
+ "symfony/config": "^6.4|^7.0|^8.0",
+ "symfony/dependency-injection": "^6.4|^7.0|^8.0",
+ "symfony/event-dispatcher": "^6.4|^7.0|^8.0",
+ "symfony/http-foundation": "^6.4|^7.0|^8.0",
+ "symfony/http-kernel": "^6.4|^7.0|^8.0",
+ "symfony/lock": "^6.4|^7.0|^8.0",
+ "symfony/messenger": "^6.4|^7.0|^8.0",
+ "symfony/process": "^6.4|^7.0|^8.0",
+ "symfony/stopwatch": "^6.4|^7.0|^8.0",
+ "symfony/var-dumper": "^6.4|^7.0|^8.0"
},
"type": "library",
"autoload": {
@@ -2523,7 +2534,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v6.4.22"
+ "source": "https://github.com/symfony/console/tree/v7.4.3"
},
"funding": [
{
@@ -2534,12 +2545,16 @@
"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-05-07T07:05:04+00:00"
+ "time": "2025-12-23T14:50:43+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -2610,25 +2625,25 @@
},
{
"name": "symfony/filesystem",
- "version": "v6.4.13",
+ "version": "v7.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "4856c9cf585d5a0313d8d35afd681a526f038dd3"
+ "reference": "d551b38811096d0be9c4691d406991b47c0c630a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/4856c9cf585d5a0313d8d35afd681a526f038dd3",
- "reference": "4856c9cf585d5a0313d8d35afd681a526f038dd3",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/d551b38811096d0be9c4691d406991b47c0c630a",
+ "reference": "d551b38811096d0be9c4691d406991b47c0c630a",
"shasum": ""
},
"require": {
- "php": ">=8.1",
+ "php": ">=8.2",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-mbstring": "~1.8"
},
"require-dev": {
- "symfony/process": "^5.4|^6.4|^7.0"
+ "symfony/process": "^6.4|^7.0|^8.0"
},
"type": "library",
"autoload": {
@@ -2656,7 +2671,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/filesystem/tree/v6.4.13"
+ "source": "https://github.com/symfony/filesystem/tree/v7.4.0"
},
"funding": [
{
@@ -2667,16 +2682,20 @@
"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-10-25T15:07:50+00:00"
+ "time": "2025-11-27T13:27:24+00:00"
},
{
"name": "symfony/polyfill-ctype",
- "version": "v1.32.0",
+ "version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
@@ -2735,7 +2754,7 @@
"portable"
],
"support": {
- "source": "https://github.com/symfony/polyfill-ctype/tree/v1.32.0"
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0"
},
"funding": [
{
@@ -2746,6 +2765,10 @@
"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"
@@ -2755,16 +2778,16 @@
},
{
"name": "symfony/polyfill-intl-grapheme",
- "version": "v1.32.0",
+ "version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
- "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe"
+ "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",
- "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70",
+ "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70",
"shasum": ""
},
"require": {
@@ -2813,7 +2836,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.32.0"
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0"
},
"funding": [
{
@@ -2824,16 +2847,20 @@
"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-09-09T11:45:10+00:00"
+ "time": "2025-06-27T09:58:17+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
- "version": "v1.32.0",
+ "version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
@@ -2894,7 +2921,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.32.0"
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.0"
},
"funding": [
{
@@ -2905,6 +2932,10 @@
"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"
@@ -2914,7 +2945,7 @@
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.32.0",
+ "version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
@@ -2975,7 +3006,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.32.0"
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0"
},
"funding": [
{
@@ -2986,6 +3017,10 @@
"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"
@@ -2993,18 +3028,98 @@
],
"time": "2024-12-23T08:48:59+00:00"
},
+ {
+ "name": "symfony/polyfill-php84",
+ "version": "v1.33.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php84.git",
+ "reference": "d8ced4d875142b6a7426000426b8abc631d6b191"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/d8ced4d875142b6a7426000426b8abc631d6b191",
+ "reference": "d8ced4d875142b6a7426000426b8abc631d6b191",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php84\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "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/polyfill-php84/tree/v1.33.0"
+ },
+ "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-06-24T13:30:11+00:00"
+ },
{
"name": "symfony/service-contracts",
- "version": "v3.6.0",
+ "version": "v3.6.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
- "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4"
+ "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4",
- "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/45112560a3ba2d715666a509a0bc9521d10b6c43",
+ "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43",
"shasum": ""
},
"require": {
@@ -3058,7 +3173,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/service-contracts/tree/v3.6.0"
+ "source": "https://github.com/symfony/service-contracts/tree/v3.6.1"
},
"funding": [
{
@@ -3069,31 +3184,36 @@
"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-04-25T09:37:31+00:00"
+ "time": "2025-07-15T11:30:57+00:00"
},
{
"name": "symfony/string",
- "version": "v6.4.21",
+ "version": "v7.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "73e2c6966a5aef1d4892873ed5322245295370c6"
+ "reference": "d50e862cb0a0e0886f73ca1f31b865efbb795003"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/73e2c6966a5aef1d4892873ed5322245295370c6",
- "reference": "73e2c6966a5aef1d4892873ed5322245295370c6",
+ "url": "https://api.github.com/repos/symfony/string/zipball/d50e862cb0a0e0886f73ca1f31b865efbb795003",
+ "reference": "d50e862cb0a0e0886f73ca1f31b865efbb795003",
"shasum": ""
},
"require": {
- "php": ">=8.1",
+ "php": ">=8.2",
+ "symfony/deprecation-contracts": "^2.5|^3.0",
"symfony/polyfill-ctype": "~1.8",
- "symfony/polyfill-intl-grapheme": "~1.0",
+ "symfony/polyfill-intl-grapheme": "~1.33",
"symfony/polyfill-intl-normalizer": "~1.0",
"symfony/polyfill-mbstring": "~1.0"
},
@@ -3101,11 +3221,11 @@
"symfony/translation-contracts": "<2.5"
},
"require-dev": {
- "symfony/error-handler": "^5.4|^6.0|^7.0",
- "symfony/http-client": "^5.4|^6.0|^7.0",
- "symfony/intl": "^6.2|^7.0",
+ "symfony/emoji": "^7.1|^8.0",
+ "symfony/http-client": "^6.4|^7.0|^8.0",
+ "symfony/intl": "^6.4|^7.0|^8.0",
"symfony/translation-contracts": "^2.5|^3.0",
- "symfony/var-exporter": "^5.4|^6.0|^7.0"
+ "symfony/var-exporter": "^6.4|^7.0|^8.0"
},
"type": "library",
"autoload": {
@@ -3144,7 +3264,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v6.4.21"
+ "source": "https://github.com/symfony/string/tree/v7.4.0"
},
"funding": [
{
@@ -3155,25 +3275,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": "2025-04-18T15:23:29+00:00"
+ "time": "2025-11-27T13:27:24+00:00"
},
{
"name": "vimeo/psalm",
- "version": "6.5.0",
+ "version": "6.14.3",
"source": {
"type": "git",
"url": "https://github.com/vimeo/psalm.git",
- "reference": "38fc8444edf0cebc9205296ee6e30e906ade783b"
+ "reference": "d0b040a91f280f071c1abcb1b77ce3822058725a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/vimeo/psalm/zipball/38fc8444edf0cebc9205296ee6e30e906ade783b",
- "reference": "38fc8444edf0cebc9205296ee6e30e906ade783b",
+ "url": "https://api.github.com/repos/vimeo/psalm/zipball/d0b040a91f280f071c1abcb1b77ce3822058725a",
+ "reference": "d0b040a91f280f071c1abcb1b77ce3822058725a",
"shasum": ""
},
"require": {
@@ -3183,6 +3307,7 @@
"composer-runtime-api": "^2",
"composer/semver": "^1.4 || ^2.0 || ^3.0",
"composer/xdebug-handler": "^2.0 || ^3.0",
+ "danog/advanced-json-rpc": "^3.1",
"dnoegel/php-xdg-base-dir": "^0.1.1",
"ext-ctype": "*",
"ext-dom": "*",
@@ -3191,16 +3316,16 @@
"ext-mbstring": "*",
"ext-simplexml": "*",
"ext-tokenizer": "*",
- "felixfbecker/advanced-json-rpc": "^3.1",
"felixfbecker/language-server-protocol": "^1.5.3",
"fidry/cpu-core-counter": "^0.4.1 || ^0.5.1 || ^1.0.0",
- "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
+ "netresearch/jsonmapper": "^5.0",
"nikic/php-parser": "^5.0.0",
- "php": "~8.1.17 || ~8.2.4 || ~8.3.0 || ~8.4.0",
+ "php": "~8.1.31 || ~8.2.27 || ~8.3.16 || ~8.4.3 || ~8.5.0",
"sebastian/diff": "^4.0 || ^5.0 || ^6.0 || ^7.0",
"spatie/array-to-xml": "^2.17.0 || ^3.0",
- "symfony/console": "^6.0 || ^7.0",
- "symfony/filesystem": "^6.0 || ^7.0"
+ "symfony/console": "^6.0 || ^7.0 || ^8.0",
+ "symfony/filesystem": "~6.3.12 || ~6.4.3 || ^7.0.3 || ^8.0",
+ "symfony/polyfill-php84": "^1.31.0"
},
"provide": {
"psalm/psalm": "self.version"
@@ -3209,6 +3334,7 @@
"amphp/phpunit-util": "^3",
"bamarni/composer-bin-plugin": "^1.4",
"brianium/paratest": "^6.9",
+ "danog/class-finder": "^0.4.8",
"dg/bypass-finals": "^1.5",
"ext-curl": "*",
"mockery/mockery": "^1.5",
@@ -3220,7 +3346,7 @@
"psalm/plugin-phpunit": "^0.19",
"slevomat/coding-standard": "^8.4",
"squizlabs/php_codesniffer": "^3.6",
- "symfony/process": "^6.0 || ^7.0"
+ "symfony/process": "^6.0 || ^7.0 || ^8.0"
},
"suggest": {
"ext-curl": "In order to send data to shepherd",
@@ -3276,37 +3402,37 @@
"issues": "https://github.com/vimeo/psalm/issues",
"source": "https://github.com/vimeo/psalm"
},
- "time": "2025-02-07T20:42:25+00:00"
+ "time": "2025-12-23T15:36:48+00:00"
},
{
"name": "webmozart/assert",
- "version": "1.11.0",
+ "version": "2.0.0",
"source": {
"type": "git",
"url": "https://github.com/webmozarts/assert.git",
- "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991"
+ "reference": "1b34b004e35a164bc5bb6ebd33c844b2d8069a54"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991",
- "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991",
+ "url": "https://api.github.com/repos/webmozarts/assert/zipball/1b34b004e35a164bc5bb6ebd33c844b2d8069a54",
+ "reference": "1b34b004e35a164bc5bb6ebd33c844b2d8069a54",
"shasum": ""
},
"require": {
"ext-ctype": "*",
- "php": "^7.2 || ^8.0"
- },
- "conflict": {
- "phpstan/phpstan": "<0.12.20",
- "vimeo/psalm": "<4.6.1 || 4.6.2"
+ "ext-date": "*",
+ "ext-filter": "*",
+ "php": "^8.2"
},
- "require-dev": {
- "phpunit/phpunit": "^8.5.13"
+ "suggest": {
+ "ext-intl": "",
+ "ext-simplexml": "",
+ "ext-spl": ""
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.10-dev"
+ "dev-feature/2-0": "2.0-dev"
}
},
"autoload": {
@@ -3322,6 +3448,10 @@
{
"name": "Bernhard Schussek",
"email": "bschussek@gmail.com"
+ },
+ {
+ "name": "Woody Gilk",
+ "email": "woody.gilk@gmail.com"
}
],
"description": "Assertions to validate method input/output with nice error messages.",
@@ -3332,9 +3462,9 @@
],
"support": {
"issues": "https://github.com/webmozarts/assert/issues",
- "source": "https://github.com/webmozarts/assert/tree/1.11.0"
+ "source": "https://github.com/webmozarts/assert/tree/2.0.0"
},
- "time": "2022-06-03T18:03:27+00:00"
+ "time": "2025-12-16T21:36:00+00:00"
}
],
"aliases": [],
@@ -3345,7 +3475,7 @@
"platform": {},
"platform-dev": {},
"platform-overrides": {
- "php": "8.2.4"
+ "php": "8.2.27"
},
- "plugin-api-version": "2.6.0"
+ "plugin-api-version": "2.9.0"
}