Browse Source

Merge pull request #44533 from nextcloud/dependabot/composer/vendor-bin/psalm/vimeo/psalm-5.23.1

pull/44871/head
dependabot[bot] 1 month ago
parent
commit
cb27fbc3bb
No account linked to committer's email address
34 changed files with 1209 additions and 1133 deletions
  1. 1
    1
      apps/dav/lib/Connector/Sabre/File.php
  2. 1
    1
      apps/files/lib/Service/OwnershipTransferService.php
  3. 3
    0
      apps/files_external/lib/Lib/Storage/SFTP.php
  4. 3
    1
      apps/settings/lib/SetupChecks/PhpOpcacheSetup.php
  5. 5
    5
      apps/theming/lib/Util.php
  6. 1
    1
      apps/user_ldap/ajax/wizard.php
  7. 70
    2
      apps/user_ldap/lib/Configuration.php
  8. 73
    43
      apps/user_ldap/lib/Connection.php
  9. 1
    1
      apps/user_ldap/lib/Group_Proxy.php
  10. 1
    1
      apps/user_ldap/lib/Jobs/Sync.php
  11. 1
    0
      apps/user_ldap/lib/LDAP.php
  12. 1
    1
      apps/user_ldap/lib/User_Proxy.php
  13. 11
    5
      apps/user_ldap/lib/Wizard.php
  14. 716
    787
      build/psalm-baseline.xml
  15. 1
    1
      core/Command/Maintenance/Mimetype/GenerateMimetypeFileBuilder.php
  16. 2
    2
      core/Command/Preview/Generate.php
  17. 2
    2
      lib/base.php
  18. 4
    6
      lib/private/AppConfig.php
  19. 6
    6
      lib/private/AppFramework/Http/Request.php
  20. 2
    2
      lib/private/AppFramework/Utility/SimpleContainer.php
  21. 14
    18
      lib/private/Archive/TAR.php
  22. 2
    6
      lib/private/DB/QueryBuilder/QueryBuilder.php
  23. 3
    4
      lib/private/DirectEditing/Manager.php
  24. 1
    0
      lib/private/Files/Storage/Local.php
  25. 14
    27
      lib/private/Files/Type/Detection.php
  26. 7
    18
      lib/private/Group/Manager.php
  27. 1
    1
      lib/private/Preview/MimeIconProvider.php
  28. 6
    10
      lib/private/Share20/Share.php
  29. 10
    19
      lib/private/User/Manager.php
  30. 1
    1
      lib/private/legacy/OC_Files.php
  31. 1
    1
      lib/private/legacy/OC_Helper.php
  32. 1
    1
      lib/public/Files/IMimeTypeDetector.php
  33. 1
    0
      lib/public/Share/IShare.php
  34. 242
    159
      vendor-bin/psalm/composer.lock

+ 1
- 1
apps/dav/lib/Connector/Sabre/File.php View File

* different object on a subsequent GET you are strongly recommended to not * different object on a subsequent GET you are strongly recommended to not
* return an ETag, and just return null. * return an ETag, and just return null.
* *
* @param resource $data
* @param resource|string $data
* *
* @throws Forbidden * @throws Forbidden
* @throws UnsupportedMediaType * @throws UnsupportedMediaType

+ 1
- 1
apps/files/lib/Service/OwnershipTransferService.php View File



$encryptedFiles = []; $encryptedFiles = [];
$this->walkFiles($view, $sourcePath, $this->walkFiles($view, $sourcePath,
function (FileInfo $fileInfo) use ($progress) {
function (FileInfo $fileInfo) use ($progress, &$encryptedFiles) {
if ($fileInfo->getType() === FileInfo::TYPE_FOLDER) { if ($fileInfo->getType() === FileInfo::TYPE_FOLDER) {
// only analyze into folders from main storage, // only analyze into folders from main storage,
if (!$fileInfo->getStorage()->instanceOfStorage(IHomeStorage::class)) { if (!$fileInfo->getStorage()->instanceOfStorage(IHomeStorage::class)) {

+ 3
- 0
apps/files_external/lib/Lib/Storage/SFTP.php View File

$result = $this->getConnection()->put($this->absPath($path), $stream); $result = $this->getConnection()->put($this->absPath($path), $stream);
fclose($stream); fclose($stream);
if ($result) { if ($result) {
if ($size === null) {
throw new \Exception("Failed to get written size from sftp storage wrapper");
}
return $size; return $size;
} else { } else {
throw new \Exception("Failed to write steam to sftp storage"); throw new \Exception("Failed to write steam to sftp storage");

+ 3
- 1
apps/settings/lib/SetupChecks/PhpOpcacheSetup.php View File

$recommendations[] = $this->l10n->t('The OPcache buffer is nearly full. To assure that all scripts can be hold in cache, it is recommended to apply "opcache.memory_consumption" to your PHP configuration with a value higher than "%s".', [($this->iniGetWrapper->getNumeric('opcache.memory_consumption') ?: 'currently')]); $recommendations[] = $this->l10n->t('The OPcache buffer is nearly full. To assure that all scripts can be hold in cache, it is recommended to apply "opcache.memory_consumption" to your PHP configuration with a value higher than "%s".', [($this->iniGetWrapper->getNumeric('opcache.memory_consumption') ?: 'currently')]);
} }


$interned_strings_buffer = $this->iniGetWrapper->getNumeric('opcache.interned_strings_buffer') ?? 0;
$memory_consumption = $this->iniGetWrapper->getNumeric('opcache.memory_consumption') ?? 0;
if ( if (
// Do not recommend to raise the interned strings buffer size above a quarter of the total OPcache size // Do not recommend to raise the interned strings buffer size above a quarter of the total OPcache size
($this->iniGetWrapper->getNumeric('opcache.interned_strings_buffer') ?? $this->iniGetWrapper->getNumeric('opcache.memory_consumption') > 0 ?? 0 / 4) &&
($interned_strings_buffer < ($memory_consumption / 4)) &&
( (
empty($status['interned_strings_usage']['free_memory']) || empty($status['interned_strings_usage']['free_memory']) ||
($status['interned_strings_usage']['used_memory'] / $status['interned_strings_usage']['free_memory'] > 9) ($status['interned_strings_usage']['used_memory'] / $status['interned_strings_usage']['free_memory'] > 9)

+ 5
- 5
apps/theming/lib/Util.php View File





/** /**
* @param $app string app name
* @param string $app app name
* @return string|ISimpleFile path to app icon / file of logo * @return string|ISimpleFile path to app icon / file of logo
*/ */
public function getAppIcon($app) { public function getAppIcon($app) {
} }


/** /**
* @param $app string app name
* @param $image string relative path to image in app folder
* @param string $app app name
* @param string $image relative path to image in app folder
* @return string|false absolute path to image * @return string|false absolute path to image
*/ */
public function getAppImage($app, $image) { public function getAppImage($app, $image) {
/** /**
* replace default color with a custom one * replace default color with a custom one
* *
* @param $svg string content of a svg file
* @param $color string color to match
* @param string $svg content of a svg file
* @param string $color color to match
* @return string * @return string
*/ */
public function colorizeSvg($svg, $color) { public function colorizeSvg($svg, $color) {

+ 1
- 1
apps/user_ldap/ajax/wizard.php View File



$con = new \OCA\User_LDAP\Connection($ldapWrapper, $prefix, null); $con = new \OCA\User_LDAP\Connection($ldapWrapper, $prefix, null);
$con->setConfiguration($configuration->getConfiguration()); $con->setConfiguration($configuration->getConfiguration());
$con->ldapConfigurationActive = true;
$con->ldapConfigurationActive = (string)true;
$con->setIgnoreValidation(true); $con->setIgnoreValidation(true);


$factory = \OC::$server->get(\OCA\User_LDAP\AccessFactory::class); $factory = \OC::$server->get(\OCA\User_LDAP\AccessFactory::class);

+ 70
- 2
apps/user_ldap/lib/Configuration.php View File

use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;


/** /**
* @property int ldapPagingSize holds an integer
* @property string ldapUserAvatarRule
* @property string $ldapHost
* @property string $ldapPort
* @property string $ldapBackupHost
* @property string $ldapBackupPort
* @property string $ldapBackgroundHost
* @property string $ldapBackgroundPort
* @property array|'' $ldapBase
* @property array|'' $ldapBaseUsers
* @property array|'' $ldapBaseGroups
* @property string $ldapAgentName
* @property string $ldapAgentPassword
* @property string $ldapTLS
* @property string $turnOffCertCheck
* @property string $ldapIgnoreNamingRules
* @property string $ldapUserDisplayName
* @property string $ldapUserDisplayName2
* @property string $ldapUserAvatarRule
* @property string $ldapGidNumber
* @property array|'' $ldapUserFilterObjectclass
* @property array|'' $ldapUserFilterGroups
* @property string $ldapUserFilter
* @property string $ldapUserFilterMode
* @property string $ldapGroupFilter
* @property string $ldapGroupFilterMode
* @property array|'' $ldapGroupFilterObjectclass
* @property array|'' $ldapGroupFilterGroups
* @property string $ldapGroupDisplayName
* @property string $ldapGroupMemberAssocAttr
* @property string $ldapLoginFilter
* @property string $ldapLoginFilterMode
* @property string $ldapLoginFilterEmail
* @property string $ldapLoginFilterUsername
* @property array|'' $ldapLoginFilterAttributes
* @property string $ldapQuotaAttribute
* @property string $ldapQuotaDefault
* @property string $ldapEmailAttribute
* @property string $ldapCacheTTL
* @property string $ldapUuidUserAttribute
* @property string $ldapUuidGroupAttribute
* @property string $ldapOverrideMainServer
* @property string $ldapConfigurationActive
* @property array|'' $ldapAttributesForUserSearch
* @property array|'' $ldapAttributesForGroupSearch
* @property string $ldapExperiencedAdmin
* @property string $homeFolderNamingRule
* @property string $hasMemberOfFilterSupport
* @property string $useMemberOfToDetectMembership
* @property string $ldapExpertUsernameAttr
* @property string $ldapExpertUUIDUserAttr
* @property string $ldapExpertUUIDGroupAttr
* @property string $markRemnantsAsDisabled
* @property string $lastJpegPhotoLookup
* @property string $ldapNestedGroups
* @property string $ldapPagingSize
* @property string $turnOnPasswordChange
* @property string $ldapDynamicGroupMemberURL
* @property string $ldapDefaultPPolicyDN
* @property string $ldapExtStorageHomeAttribute
* @property string $ldapMatchingRuleInChainState
* @property string $ldapConnectionTimeout
* @property string $ldapAttributePhone
* @property string $ldapAttributeWebsite
* @property string $ldapAttributeAddress
* @property string $ldapAttributeTwitter
* @property string $ldapAttributeFediverse
* @property string $ldapAttributeOrganisation
* @property string $ldapAttributeRole
* @property string $ldapAttributeHeadline
* @property string $ldapAttributeBiography
* @property string $ldapAdminGroup
*/ */
class Configuration { class Configuration {
public const AVATAR_PREFIX_DEFAULT = 'default'; public const AVATAR_PREFIX_DEFAULT = 'default';

+ 73
- 43
apps/user_ldap/lib/Connection.php View File

use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;


/** /**
* magic properties (incomplete)
* magic properties
* responsible for LDAP connections in context with the provided configuration * responsible for LDAP connections in context with the provided configuration
* *
* @property string ldapHost
* @property string ldapPort holds the port number
* @property string ldapUserFilter
* @property string ldapUserDisplayName
* @property string ldapUserDisplayName2
* @property string ldapUserAvatarRule
* @property boolean turnOnPasswordChange
* @property string[] ldapBaseUsers
* @property int|null ldapPagingSize holds an integer
* @property bool|mixed|void ldapGroupMemberAssocAttr
* @property string ldapUuidUserAttribute
* @property string ldapUuidGroupAttribute
* @property string ldapExpertUUIDUserAttr
* @property string ldapExpertUUIDGroupAttr
* @property string ldapQuotaAttribute
* @property string ldapQuotaDefault
* @property string ldapEmailAttribute
* @property string ldapExtStorageHomeAttribute
* @property string homeFolderNamingRule
* @property bool|string markRemnantsAsDisabled
* @property bool|string ldapNestedGroups
* @property string[] ldapBaseGroups
* @property string ldapGroupFilter
* @property string ldapGroupDisplayName
* @property string ldapLoginFilter
* @property string ldapDynamicGroupMemberURL
* @property string ldapGidNumber
* @property int hasMemberOfFilterSupport
* @property int useMemberOfToDetectMembership
* @property string ldapMatchingRuleInChainState
* @property string ldapAttributePhone
* @property string ldapAttributeWebsite
* @property string ldapAttributeAddress
* @property string ldapAttributeTwitter
* @property string ldapAttributeFediverse
* @property string ldapAttributeOrganisation
* @property string ldapAttributeRole
* @property string ldapAttributeHeadline
* @property string ldapAttributeBiography
* @property string ldapAdminGroup
* @property string $ldapHost
* @property string $ldapPort
* @property string $ldapBackupHost
* @property string $ldapBackupPort
* @property string $ldapBackgroundHost
* @property string $ldapBackgroundPort
* @property array|'' $ldapBase
* @property array|'' $ldapBaseUsers
* @property array|'' $ldapBaseGroups
* @property string $ldapAgentName
* @property string $ldapAgentPassword
* @property string $ldapTLS
* @property string $turnOffCertCheck
* @property string $ldapIgnoreNamingRules
* @property string $ldapUserDisplayName
* @property string $ldapUserDisplayName2
* @property string $ldapUserAvatarRule
* @property string $ldapGidNumber
* @property array|'' $ldapUserFilterObjectclass
* @property array|'' $ldapUserFilterGroups
* @property string $ldapUserFilter
* @property string $ldapUserFilterMode
* @property string $ldapGroupFilter
* @property string $ldapGroupFilterMode
* @property array|'' $ldapGroupFilterObjectclass
* @property array|'' $ldapGroupFilterGroups
* @property string $ldapGroupDisplayName
* @property string $ldapGroupMemberAssocAttr
* @property string $ldapLoginFilter
* @property string $ldapLoginFilterMode
* @property string $ldapLoginFilterEmail
* @property string $ldapLoginFilterUsername
* @property array|'' $ldapLoginFilterAttributes
* @property string $ldapQuotaAttribute
* @property string $ldapQuotaDefault
* @property string $ldapEmailAttribute
* @property string $ldapCacheTTL
* @property string $ldapUuidUserAttribute
* @property string $ldapUuidGroupAttribute
* @property string $ldapOverrideMainServer
* @property string $ldapConfigurationActive
* @property array|'' $ldapAttributesForUserSearch
* @property array|'' $ldapAttributesForGroupSearch
* @property string $ldapExperiencedAdmin
* @property string $homeFolderNamingRule
* @property string $hasMemberOfFilterSupport
* @property string $useMemberOfToDetectMembership
* @property string $ldapExpertUsernameAttr
* @property string $ldapExpertUUIDUserAttr
* @property string $ldapExpertUUIDGroupAttr
* @property string $markRemnantsAsDisabled
* @property string $lastJpegPhotoLookup
* @property string $ldapNestedGroups
* @property string $ldapPagingSize
* @property string $turnOnPasswordChange
* @property string $ldapDynamicGroupMemberURL
* @property string $ldapDefaultPPolicyDN
* @property string $ldapExtStorageHomeAttribute
* @property string $ldapMatchingRuleInChainState
* @property string $ldapConnectionTimeout
* @property string $ldapAttributePhone
* @property string $ldapAttributeWebsite
* @property string $ldapAttributeAddress
* @property string $ldapAttributeTwitter
* @property string $ldapAttributeFediverse
* @property string $ldapAttributeOrganisation
* @property string $ldapAttributeRole
* @property string $ldapAttributeHeadline
* @property string $ldapAttributeBiography
* @property string $ldapAdminGroup
*/ */
class Connection extends LDAPUtility { class Connection extends LDAPUtility {
private ?\LDAP\Connection $ldapConnectionRes = null; private ?\LDAP\Connection $ldapConnectionRes = null;


$backupPort = (int)$this->configuration->ldapBackupPort; $backupPort = (int)$this->configuration->ldapBackupPort;
if ($backupPort <= 0) { if ($backupPort <= 0) {
$this->configuration->backupPort = $this->configuration->ldapPort;
$this->configuration->ldapBackupPort = $this->configuration->ldapPort;
} }


//make sure empty search attributes are saved as simple, empty array //make sure empty search attributes are saved as simple, empty array


if ((stripos((string)$this->configuration->ldapHost, 'ldaps://') === 0) if ((stripos((string)$this->configuration->ldapHost, 'ldaps://') === 0)
&& $this->configuration->ldapTLS) { && $this->configuration->ldapTLS) {
$this->configuration->ldapTLS = false;
$this->configuration->ldapTLS = (string)false;
$this->logger->info( $this->logger->info(
'LDAPS (already using secure connection) and TLS do not work together. Switched off TLS.', 'LDAPS (already using secure connection) and TLS do not work together. Switched off TLS.',
['app' => 'user_ldap'] ['app' => 'user_ldap']

+ 1
- 1
apps/user_ldap/lib/Group_Proxy.php View File

$this->backends[$configPrefix] = $this->backends[$configPrefix] =
new Group_LDAP($this->getAccess($configPrefix), $this->groupPluginManager, $this->config, $this->ncUserManager); new Group_LDAP($this->getAccess($configPrefix), $this->groupPluginManager, $this->config, $this->ncUserManager);
if (is_null($this->refBackend)) { if (is_null($this->refBackend)) {
$this->refBackend = &$this->backends[$configPrefix];
$this->refBackend = $this->backends[$configPrefix];
} }
} }



+ 1
- 1
apps/user_ldap/lib/Jobs/Sync.php View File

$results = $access->fetchListOfUsers( $results = $access->fetchListOfUsers(
$filter, $filter,
$access->userManager->getAttributes(), $access->userManager->getAttributes(),
$connection->ldapPagingSize,
(int)$connection->ldapPagingSize,
$cycleData['offset'], $cycleData['offset'],
true true
); );

+ 1
- 0
apps/user_ldap/lib/LDAP.php View File

$serverControls = []; $serverControls = [];
} }


/** @psalm-suppress UndefinedVariable $oldHandler is defined when the closure is called but psalm fails to get that */
$oldHandler = set_error_handler(function ($no, $message, $file, $line) use (&$oldHandler) { $oldHandler = set_error_handler(function ($no, $message, $file, $line) use (&$oldHandler) {
if (str_contains($message, 'Partial search results returned: Sizelimit exceeded')) { if (str_contains($message, 'Partial search results returned: Sizelimit exceeded')) {
return true; return true;

+ 1
- 1
apps/user_ldap/lib/User_Proxy.php View File

); );


if (is_null($this->refBackend)) { if (is_null($this->refBackend)) {
$this->refBackend = &$this->backends[$configPrefix];
$this->refBackend = $this->backends[$configPrefix];
} }
} }



+ 11
- 5
apps/user_ldap/lib/Wizard.php View File

$this->fetchGroups($dbKey, $confKey); $this->fetchGroups($dbKey, $confKey);


if ($testMemberOf) { if ($testMemberOf) {
$this->configuration->hasMemberOfFilterSupport = $this->testMemberOf();
$this->configuration->hasMemberOfFilterSupport = (string)$this->testMemberOf();
$this->result->markChange(); $this->result->markChange();
if (!$this->configuration->hasMemberOfFilterSupport) { if (!$this->configuration->hasMemberOfFilterSupport) {
throw new \Exception('memberOf is not supported by the server'); throw new \Exception('memberOf is not supported by the server');


if ($settingsFound === true) { if ($settingsFound === true) {
$config = [ $config = [
'ldapPort' => $p,
'ldapTLS' => (int)$t
'ldapPort' => (string)$p,
'ldapTLS' => (string)$t,
]; ];
$this->configuration->setConfiguration($config); $this->configuration->setConfiguration($config);
$this->logger->debug( $this->logger->debug(
$this->ldap->setOption($cr, LDAP_OPT_PROTOCOL_VERSION, 3); $this->ldap->setOption($cr, LDAP_OPT_PROTOCOL_VERSION, 3);
$this->ldap->setOption($cr, LDAP_OPT_REFERRALS, 0); $this->ldap->setOption($cr, LDAP_OPT_REFERRALS, 0);
$this->ldap->setOption($cr, LDAP_OPT_NETWORK_TIMEOUT, self::LDAP_NW_TIMEOUT); $this->ldap->setOption($cr, LDAP_OPT_NETWORK_TIMEOUT, self::LDAP_NW_TIMEOUT);
if ($this->configuration->ldapTLS === 1) {
if ($this->configuration->ldapTLS) {
$this->ldap->startTls($cr); $this->ldap->startTls($cr);
} }


return false; return false;
} }


/**
* @return array<array{port:int,tls:bool}>
*/
private function getDefaultLdapPortSettings(): array { private function getDefaultLdapPortSettings(): array {
static $settings = [ static $settings = [
['port' => 7636, 'tls' => false], ['port' => 7636, 'tls' => false],
return $settings; return $settings;
} }


/**
* @return array<array{port:int,tls:bool}>
*/
private function getPortSettingsToTry(): array { private function getPortSettingsToTry(): array {
//389 ← LDAP / Unencrypted or StartTLS //389 ← LDAP / Unencrypted or StartTLS
//636 ← LDAPS / SSL //636 ← LDAPS / SSL
} }
$portSettings[] = ['port' => $port, 'tls' => false]; $portSettings[] = ['port' => $port, 'tls' => false];
} elseif ($this->configuration->usesLdapi()) { } elseif ($this->configuration->usesLdapi()) {
$portSettings[] = ['port' => '', 'tls' => false];
$portSettings[] = ['port' => 0, 'tls' => false];
} }


//default ports //default ports

+ 716
- 787
build/psalm-baseline.xml
File diff suppressed because it is too large
View File


+ 1
- 1
core/Command/Maintenance/Mimetype/GenerateMimetypeFileBuilder.php View File

/** /**
* Generate mime type list file * Generate mime type list file
* *
* @param array $aliases
* @param array<string,string> $aliases
* @return string * @return string
*/ */
public function generateFile(array $aliases): string { public function generateFile(array $aliases): string {

+ 2
- 2
core/Command/Preview/Generate.php View File

protected function execute(InputInterface $input, OutputInterface $output): int { protected function execute(InputInterface $input, OutputInterface $output): int {
$fileInput = $input->getArgument("file"); $fileInput = $input->getArgument("file");
$sizes = $input->getOption("size"); $sizes = $input->getOption("size");
$sizes = array_map(function (string $size) use ($output, &$error) {
$sizes = array_map(function (string $size) use ($output) {
if (str_contains($size, 'x')) { if (str_contains($size, 'x')) {
$sizeParts = explode('x', $size, 2); $sizeParts = explode('x', $size, 2);
} else { } else {
$sizeParts = [$size, $size]; $sizeParts = [$size, $size];
} }
if (!is_numeric($sizeParts[0]) || !is_numeric($sizeParts[1])) {
if (!is_numeric($sizeParts[0]) || !is_numeric($sizeParts[1] ?? null)) {
$output->writeln("<error>Invalid size $size</error>"); $output->writeln("<error>Invalid size $size</error>");
return null; return null;
} }

+ 2
- 2
lib/base.php View File

//this doesn´t work always depending on the webserver and php configuration. //this doesn´t work always depending on the webserver and php configuration.
//Let´s try to overwrite some defaults if they are smaller than 1 hour //Let´s try to overwrite some defaults if they are smaller than 1 hour


if (intval(@ini_get('max_execution_time') ?? 0) < 3600) {
if (intval(@ini_get('max_execution_time') ?: 0) < 3600) {
@ini_set('max_execution_time', strval(3600)); @ini_set('max_execution_time', strval(3600));
} }


if (intval(@ini_get('max_input_time') ?? 0) < 3600) {
if (intval(@ini_get('max_input_time') ?: 0) < 3600) {
@ini_set('max_input_time', strval(3600)); @ini_set('max_input_time', strval(3600));
} }



+ 4
- 6
lib/private/AppConfig.php View File



// update local cache // update local cache
if ($lazy) { if ($lazy) {
$cache = &$this->lazyCache;
$this->lazyCache[$app][$key] = $value;
} else { } else {
$cache = &$this->fastCache;
$this->fastCache[$app][$key] = $value;
} }
$cache[$app][$key] = $value;
$this->valueTypes[$app][$key] = $type; $this->valueTypes[$app][$key] = $type;


return true; return true;
foreach ($rows as $row) { foreach ($rows as $row) {
// most of the time, 'lazy' is not in the select because its value is already known // most of the time, 'lazy' is not in the select because its value is already known
if (($row['lazy'] ?? ($lazy ?? 0) ? 1 : 0) === 1) { if (($row['lazy'] ?? ($lazy ?? 0) ? 1 : 0) === 1) {
$cache = &$this->lazyCache;
$this->lazyCache[$row['appid']][$row['configkey']] = $row['configvalue'] ?? '';
} else { } else {
$cache = &$this->fastCache;
$this->fastCache[$row['appid']][$row['configkey']] = $row['configvalue'] ?? '';
} }
$cache[$row['appid']][$row['configkey']] = $row['configvalue'] ?? '';
$this->valueTypes[$row['appid']][$row['configkey']] = (int)($row['type'] ?? 0); $this->valueTypes[$row['appid']][$row['configkey']] = (int)($row['type'] ?? 0);
} }
$result->closeCursor(); $result->closeCursor();

+ 6
- 6
lib/private/AppFramework/Http/Request.php View File

* Class for accessing variables in the request. * Class for accessing variables in the request.
* This class provides an immutable object with request variables. * This class provides an immutable object with request variables.
* *
* @property mixed[] cookies
* @property mixed[] env
* @property mixed[] files
* @property string method
* @property mixed[] parameters
* @property mixed[] server
* @property mixed[] $cookies
* @property mixed[] $env
* @property mixed[] $files
* @property string $method
* @property mixed[] $parameters
* @property mixed[] $server
* @template-implements \ArrayAccess<string,mixed> * @template-implements \ArrayAccess<string,mixed>
*/ */
class Request implements \ArrayAccess, \Countable, IRequest { class Request implements \ArrayAccess, \Countable, IRequest {

+ 2
- 2
lib/private/AppFramework/Utility/SimpleContainer.php View File

/** /**
* @deprecated 20.0.0 use \OCP\IContainer::registerService * @deprecated 20.0.0 use \OCP\IContainer::registerService
*/ */
public function offsetSet($id, $service): void {
$this->container->offsetSet($id, $service);
public function offsetSet($offset, $value): void {
$this->container->offsetSet($offset, $value);
} }


/** /**

+ 14
- 18
lib/private/Archive/TAR.php View File

*/ */
private $cachedHeaders = false; private $cachedHeaders = false;


/**
* @var \Archive_Tar
*/
private $tar = null;
private \Archive_Tar $tar;


/**
* @var string
*/
private $path;
private string $path;


public function __construct(string $source) { public function __construct(string $source) {
$types = [null, 'gz', 'bz2']; $types = [null, 'gz', 'bz2'];
$tmp = \OC::$server->getTempManager()->getTemporaryFolder(); $tmp = \OC::$server->getTempManager()->getTemporaryFolder();
$this->tar->extract($tmp); $this->tar->extract($tmp);
rename($tmp . $source, $tmp . $dest); rename($tmp . $source, $tmp . $dest);
$this->tar = null;
$this->tar->_close();
unlink($this->path); unlink($this->path);
$types = [null, 'gz', 'bz']; $types = [null, 'gz', 'bz'];
$this->tar = new \Archive_Tar($this->path, $types[self::getTarType($this->path)]); $this->tar = new \Archive_Tar($this->path, $types[self::getTarType($this->path)]);
* get all files in the archive * get all files in the archive
*/ */
public function getFiles(): array { public function getFiles(): array {
if ($this->fileList) {
if ($this->fileList !== false) {
return $this->fileList; return $this->fileList;
} }
if (!$this->cachedHeaders) {
$this->cachedHeaders = $this->tar->listContent();
if ($this->cachedHeaders === false) {
$headers = $this->tar->listContent();
if (is_array($headers)) {
$this->cachedHeaders = $headers;
} else {
return [];
}
} }
$files = []; $files = [];
foreach ($this->cachedHeaders as $header) { foreach ($this->cachedHeaders as $header) {
*/ */
public function getFile(string $path) { public function getFile(string $path) {
$string = $this->tar->extractInString($path); $string = $this->tar->extractInString($path);
/** @var ?string $string */
if (is_string($string)) { if (is_string($string)) {
return $string; return $string;
} else { } else {
$tmp = \OC::$server->getTempManager()->getTemporaryFolder(); $tmp = \OC::$server->getTempManager()->getTemporaryFolder();
$this->tar->extract($tmp); $this->tar->extract($tmp);
\OCP\Files::rmdirr($tmp . $path); \OCP\Files::rmdirr($tmp . $path);
$this->tar = null;
unlink($this->path); unlink($this->path);
$this->reopen(); $this->reopen();
$this->tar->createModify([$tmp], '', $tmp); $this->tar->createModify([$tmp], '', $tmp);
* reopen the archive to ensure everything is written * reopen the archive to ensure everything is written
*/ */
private function reopen(): void { private function reopen(): void {
if ($this->tar) {
$this->tar->_close();
$this->tar = null;
}
$this->tar->_close();
$types = [null, 'gz', 'bz']; $types = [null, 'gz', 'bz'];
$this->tar = new \Archive_Tar($this->path, $types[self::getTarType($this->path)]); $this->tar = new \Archive_Tar($this->path, $types[self::getTarType($this->path)]);
} }
* Get error object from archive_tar. * Get error object from archive_tar.
*/ */
public function getError(): ?\PEAR_Error { public function getError(): ?\PEAR_Error {
if ($this->tar instanceof \Archive_Tar && $this->tar->error_object instanceof \PEAR_Error) {
if ($this->tar->error_object instanceof \PEAR_Error) {
return $this->tar->error_object; return $this->tar->error_object;
} }
return null; return null;

+ 2
- 6
lib/private/DB/QueryBuilder/QueryBuilder.php View File

* *
* @return $this This QueryBuilder instance. * @return $this This QueryBuilder instance.
*/ */
public function addGroupBy(...$groupBys) {
if (count($groupBys) === 1 && is_array($groupBys[0])) {
$$groupBys = $groupBys[0];
}

public function addGroupBy(...$groupBy) {
call_user_func_array( call_user_func_array(
[$this->queryBuilder, 'addGroupBy'], [$this->queryBuilder, 'addGroupBy'],
$this->helper->quoteColumnNames($groupBys)
$this->helper->quoteColumnNames($groupBy)
); );


return $this; return $this;

+ 3
- 4
lib/private/DirectEditing/Manager.php View File

} }


/** /**
* @param $userId
* @param $fileId
* @param null $filePath
* @return Node
* @param string $userId
* @param int $fileId
* @param ?string $filePath
* @throws NotFoundException * @throws NotFoundException
*/ */
public function getFileForToken($userId, $fileId, $filePath = null): Node { public function getFileForToken($userId, $fileId, $filePath = null): Node {

+ 1
- 0
lib/private/Files/Storage/Local.php View File

$realPath = realpath($pathToResolve); $realPath = realpath($pathToResolve);
while ($realPath === false) { // for non existing files check the parent directory while ($realPath === false) { // for non existing files check the parent directory
$currentPath = dirname($currentPath); $currentPath = dirname($currentPath);
/** @psalm-suppress TypeDoesNotContainType Let's be extra cautious and still check for empty string */
if ($currentPath === '' || $currentPath === '.') { if ($currentPath === '' || $currentPath === '.') {
return $fullPath; return $fullPath;
} }

+ 14
- 27
lib/private/Files/Type/Detection.php View File

private const CUSTOM_MIMETYPEMAPPING = 'mimetypemapping.json'; private const CUSTOM_MIMETYPEMAPPING = 'mimetypemapping.json';
private const CUSTOM_MIMETYPEALIASES = 'mimetypealiases.json'; private const CUSTOM_MIMETYPEALIASES = 'mimetypealiases.json';


protected $mimetypes = [];
protected $secureMimeTypes = [];

protected $mimetypeIcons = [];
/** @var string[] */
protected $mimeTypeAlias = [];

/** @var IURLGenerator */
private $urlGenerator;

private LoggerInterface $logger;

/** @var string */
private $customConfigDir;

/** @var string */
private $defaultConfigDir;

public function __construct(IURLGenerator $urlGenerator,
LoggerInterface $logger,
string $customConfigDir,
string $defaultConfigDir) {
$this->urlGenerator = $urlGenerator;
$this->logger = $logger;
$this->customConfigDir = $customConfigDir;
$this->defaultConfigDir = $defaultConfigDir;
protected array $mimetypes = [];
protected array $secureMimeTypes = [];

protected array $mimetypeIcons = [];
/** @var array<string,string> */
protected array $mimeTypeAlias = [];

public function __construct(
private IURLGenerator $urlGenerator,
private LoggerInterface $logger,
private string $customConfigDir,
private string $defaultConfigDir,
) {
} }


/** /**
} }


/** /**
* @return string[]
* @return array<string,string>
*/ */
public function getAllAliases(): array { public function getAllAliases(): array {
$this->loadAliases(); $this->loadAliases();

+ 7
- 18
lib/private/Group/Manager.php View File

$this->logger = $logger; $this->logger = $logger;
$this->displayNameCache = new DisplayNameCache($cacheFactory, $this); $this->displayNameCache = new DisplayNameCache($cacheFactory, $this);


$cachedGroups = &$this->cachedGroups;
$cachedUserGroups = &$this->cachedUserGroups;
$this->listen('\OC\Group', 'postDelete', function ($group) use (&$cachedGroups, &$cachedUserGroups) {
/**
* @var \OC\Group\Group $group
*/
unset($cachedGroups[$group->getGID()]);
$cachedUserGroups = [];
$this->listen('\OC\Group', 'postDelete', function (IGroup $group): void {
unset($this->cachedGroups[$group->getGID()]);
$this->cachedUserGroups = [];
}); });
$this->listen('\OC\Group', 'postAddUser', function ($group) use (&$cachedUserGroups) {
/**
* @var \OC\Group\Group $group
*/
$cachedUserGroups = [];
$this->listen('\OC\Group', 'postAddUser', function (IGroup $group): void {
$this->cachedUserGroups = [];
}); });
$this->listen('\OC\Group', 'postRemoveUser', function ($group) use (&$cachedUserGroups) {
/**
* @var \OC\Group\Group $group
*/
$cachedUserGroups = [];
$this->listen('\OC\Group', 'postRemoveUser', function (IGroup $group): void {
$this->cachedUserGroups = [];
}); });
} }



+ 1
- 1
lib/private/Preview/MimeIconProvider.php View File

$aliases = $this->mimetypeDetector->getAllAliases(); $aliases = $this->mimetypeDetector->getAllAliases();


// Remove comments // Remove comments
$aliases = array_filter($aliases, static function ($key) {
$aliases = array_filter($aliases, static function (string $key) {
return !($key === '' || $key[0] === '_'); return !($key === '' || $key[0] === '_');
}, ARRAY_FILTER_USE_KEY); }, ARRAY_FILTER_USE_KEY);



+ 6
- 10
lib/private/Share20/Share.php View File

/** @var string */ /** @var string */
private $label = ''; private $label = '';


/** @var IRootFolder */
private $rootFolder;

/** @var IUserManager */
private $userManager;

/** @var ICacheEntry|null */ /** @var ICacheEntry|null */
private $nodeCacheEntry; private $nodeCacheEntry;


/** @var bool */ /** @var bool */
private $hideDownload = false; private $hideDownload = false;


public function __construct(IRootFolder $rootFolder, IUserManager $userManager) {
$this->rootFolder = $rootFolder;
$this->userManager = $userManager;
public function __construct(
private IRootFolder $rootFolder,
private IUserManager $userManager,
) {
} }


/** /**
* @inheritdoc * @inheritdoc
*/ */
public function setId($id) { public function setId($id) {
/** @var mixed $id Let's be safe until strong typing */
if (is_int($id)) { if (is_int($id)) {
$id = (string)$id; $id = (string)$id;
} }
/** /**
* Set the parent of this share * Set the parent of this share
* *
* @param int parent
* @param int $parent
* @return IShare * @return IShare
* @deprecated The new shares do not have parents. This is just here for legacy reasons. * @deprecated The new shares do not have parents. This is just here for legacy reasons.
*/ */

+ 10
- 19
lib/private/User/Manager.php View File

/** /**
* @var \OCP\UserInterface[] $backends * @var \OCP\UserInterface[] $backends
*/ */
private $backends = [];
private array $backends = [];


/** /**
* @var \OC\User\User[] $cachedUsers
* @var array<string,\OC\User\User> $cachedUsers
*/ */
private $cachedUsers = [];
private array $cachedUsers = [];


/** @var IConfig */
private $config;

/** @var ICache */
private $cache;

/** @var IEventDispatcher */
private $eventDispatcher;
private ICache $cache;


private DisplayNameCache $displayNameCache; private DisplayNameCache $displayNameCache;


public function __construct(IConfig $config,
public function __construct(
private IConfig $config,
ICacheFactory $cacheFactory, ICacheFactory $cacheFactory,
IEventDispatcher $eventDispatcher) {
$this->config = $config;
private IEventDispatcher $eventDispatcher,
) {
$this->cache = new WithLocalCache($cacheFactory->createDistributed('user_backend_map')); $this->cache = new WithLocalCache($cacheFactory->createDistributed('user_backend_map'));
$cachedUsers = &$this->cachedUsers;
$this->listen('\OC\User', 'postDelete', function ($user) use (&$cachedUsers) {
/** @var \OC\User\User $user */
unset($cachedUsers[$user->getUID()]);
$this->listen('\OC\User', 'postDelete', function (IUser $user): void {
unset($this->cachedUsers[$user->getUID()]);
}); });
$this->eventDispatcher = $eventDispatcher;
$this->displayNameCache = new DisplayNameCache($cacheFactory, $this); $this->displayNameCache = new DisplayNameCache($cacheFactory, $this);
} }



+ 1
- 1
lib/private/legacy/OC_Files.php View File

* return the content of a file or return a zip file containing multiple files * return the content of a file or return a zip file containing multiple files
* *
* @param string $dir * @param string $dir
* @param string $files ; separated list of files to download
* @param string|array $files ; separated list of files to download
* @param array $params ; 'head' boolean to only send header of the request ; 'range' http range header * @param array $params ; 'head' boolean to only send header of the request ; 'range' http range header
*/ */
public static function get($dir, $files, $params = null) { public static function get($dir, $files, $params = null) {

+ 1
- 1
lib/private/legacy/OC_Helper.php View File



$bytes = (float)$str; $bytes = (float)$str;


if (preg_match('#([kmgtp]?b?)$#si', $str, $matches) && !empty($bytes_array[$matches[1]])) {
if (preg_match('#([kmgtp]?b?)$#si', $str, $matches) && isset($bytes_array[$matches[1]])) {
$bytes *= $bytes_array[$matches[1]]; $bytes *= $bytes_array[$matches[1]];
} else { } else {
return false; return false;

+ 1
- 1
lib/public/Files/IMimeTypeDetector.php View File

public function mimeTypeIcon($mimeType); public function mimeTypeIcon($mimeType);


/** /**
* @return string[]
* @return array<string,string>
* @since 28.0.0 * @since 28.0.0
*/ */
public function getAllAliases(): array; public function getAllAliases(): array;

+ 1
- 0
lib/public/Share/IShare.php View File

* Set the cache entry for the shared node * Set the cache entry for the shared node
* *
* @param ICacheEntry $entry * @param ICacheEntry $entry
* @return void
* @since 11.0.0 * @since 11.0.0
*/ */
public function setNodeCacheEntry(ICacheEntry $entry); public function setNodeCacheEntry(ICacheEntry $entry);

+ 242
- 159
vendor-bin/psalm/composer.lock View File

"packages": [ "packages": [
{ {
"name": "amphp/amp", "name": "amphp/amp",
"version": "v2.6.2",
"version": "v2.6.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/amphp/amp.git", "url": "https://github.com/amphp/amp.git",
"reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb"
"reference": "ded3d9be08f526089eb7ee8d9f16a9768f9dec2d"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/amphp/amp/zipball/9d5100cebffa729aaffecd3ad25dc5aeea4f13bb",
"reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb",
"url": "https://api.github.com/repos/amphp/amp/zipball/ded3d9be08f526089eb7ee8d9f16a9768f9dec2d",
"reference": "ded3d9be08f526089eb7ee8d9f16a9768f9dec2d",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ext-json": "*", "ext-json": "*",
"jetbrains/phpstorm-stubs": "^2019.3", "jetbrains/phpstorm-stubs": "^2019.3",
"phpunit/phpunit": "^7 | ^8 | ^9", "phpunit/phpunit": "^7 | ^8 | ^9",
"psalm/phar": "^3.11@dev",
"react/promise": "^2"
"react/promise": "^2",
"vimeo/psalm": "^3.12"
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"support": { "support": {
"irc": "irc://irc.freenode.org/amphp", "irc": "irc://irc.freenode.org/amphp",
"issues": "https://github.com/amphp/amp/issues", "issues": "https://github.com/amphp/amp/issues",
"source": "https://github.com/amphp/amp/tree/v2.6.2"
"source": "https://github.com/amphp/amp/tree/v2.6.4"
}, },
"funding": [ "funding": [
{ {
"type": "github" "type": "github"
} }
], ],
"time": "2022-02-20T17:52:18+00:00"
"time": "2024-03-21T18:52:26+00:00"
}, },
{ {
"name": "amphp/byte-stream", "name": "amphp/byte-stream",
}, },
{ {
"name": "composer/pcre", "name": "composer/pcre",
"version": "3.0.2",
"version": "3.1.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/composer/pcre.git", "url": "https://github.com/composer/pcre.git",
"reference": "4482b6409ca6bfc2af043a5711cd21ac3e7a8dfb"
"reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/composer/pcre/zipball/4482b6409ca6bfc2af043a5711cd21ac3e7a8dfb",
"reference": "4482b6409ca6bfc2af043a5711cd21ac3e7a8dfb",
"url": "https://api.github.com/repos/composer/pcre/zipball/5b16e25a5355f1f3afdfc2f954a0a80aec4826a8",
"reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
], ],
"support": { "support": {
"issues": "https://github.com/composer/pcre/issues", "issues": "https://github.com/composer/pcre/issues",
"source": "https://github.com/composer/pcre/tree/3.0.2"
"source": "https://github.com/composer/pcre/tree/3.1.3"
}, },
"funding": [ "funding": [
{ {
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-11-03T20:24:16+00:00"
"time": "2024-03-19T10:26:25+00:00"
}, },
{ {
"name": "composer/semver", "name": "composer/semver",
"version": "3.3.2",
"version": "3.4.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/composer/semver.git", "url": "https://github.com/composer/semver.git",
"reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9"
"reference": "35e8d0af4486141bc745f23a29cc2091eb624a32"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9",
"reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9",
"url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32",
"reference": "35e8d0af4486141bc745f23a29cc2091eb624a32",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"versioning" "versioning"
], ],
"support": { "support": {
"irc": "irc://irc.freenode.org/composer",
"irc": "ircs://irc.libera.chat:6697/composer",
"issues": "https://github.com/composer/semver/issues", "issues": "https://github.com/composer/semver/issues",
"source": "https://github.com/composer/semver/tree/3.3.2"
"source": "https://github.com/composer/semver/tree/3.4.0"
}, },
"funding": [ "funding": [
{ {
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-04-01T19:23:25+00:00"
"time": "2023-08-31T09:50:34+00:00"
}, },
{ {
"name": "composer/xdebug-handler", "name": "composer/xdebug-handler",
"version": "3.0.3",
"version": "3.0.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/composer/xdebug-handler.git", "url": "https://github.com/composer/xdebug-handler.git",
"reference": "ced299686f41dce890debac69273b47ffe98a40c"
"reference": "4f988f8fdf580d53bdb2d1278fe93d1ed5462255"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c",
"reference": "ced299686f41dce890debac69273b47ffe98a40c",
"url": "https://api.github.com/repos/composer/xdebug-handler/zipball/4f988f8fdf580d53bdb2d1278fe93d1ed5462255",
"reference": "4f988f8fdf580d53bdb2d1278fe93d1ed5462255",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"require-dev": { "require-dev": {
"phpstan/phpstan": "^1.0", "phpstan/phpstan": "^1.0",
"phpstan/phpstan-strict-rules": "^1.1", "phpstan/phpstan-strict-rules": "^1.1",
"symfony/phpunit-bridge": "^6.0"
"phpunit/phpunit": "^8.5 || ^9.6 || ^10.5"
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
"performance" "performance"
], ],
"support": { "support": {
"irc": "irc://irc.freenode.org/composer",
"irc": "ircs://irc.libera.chat:6697/composer",
"issues": "https://github.com/composer/xdebug-handler/issues", "issues": "https://github.com/composer/xdebug-handler/issues",
"source": "https://github.com/composer/xdebug-handler/tree/3.0.3"
"source": "https://github.com/composer/xdebug-handler/tree/3.0.4"
}, },
"funding": [ "funding": [
{ {
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-02-25T21:32:43+00:00"
"time": "2024-03-26T18:29:49+00:00"
}, },
{ {
"name": "dnoegel/php-xdg-base-dir", "name": "dnoegel/php-xdg-base-dir",
}, },
"time": "2019-12-04T15:06:13+00:00" "time": "2019-12-04T15:06:13+00:00"
}, },
{
"name": "doctrine/deprecations",
"version": "1.1.3",
"source": {
"type": "git",
"url": "https://github.com/doctrine/deprecations.git",
"reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
"reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
"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"
},
"suggest": {
"psr/log": "Allows logging deprecations via PSR-3 logger implementation"
},
"type": "library",
"autoload": {
"psr-4": {
"Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.",
"homepage": "https://www.doctrine-project.org/",
"support": {
"issues": "https://github.com/doctrine/deprecations/issues",
"source": "https://github.com/doctrine/deprecations/tree/1.1.3"
},
"time": "2024-01-30T19:34:25+00:00"
},
{ {
"name": "felixfbecker/advanced-json-rpc", "name": "felixfbecker/advanced-json-rpc",
"version": "v3.2.1", "version": "v3.2.1",
}, },
{ {
"name": "fidry/cpu-core-counter", "name": "fidry/cpu-core-counter",
"version": "0.5.1",
"version": "1.1.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/theofidry/cpu-core-counter.git", "url": "https://github.com/theofidry/cpu-core-counter.git",
"reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623"
"reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/b58e5a3933e541dc286cc91fc4f3898bbc6f1623",
"reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623",
"url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/f92996c4d5c1a696a6a970e20f7c4216200fcc42",
"reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
}, },
"require-dev": { "require-dev": {
"fidry/makefile": "^0.2.0", "fidry/makefile": "^0.2.0",
"fidry/php-cs-fixer-config": "^1.1.2",
"phpstan/extension-installer": "^1.2.0", "phpstan/extension-installer": "^1.2.0",
"phpstan/phpstan": "^1.9.2", "phpstan/phpstan": "^1.9.2",
"phpstan/phpstan-deprecation-rules": "^1.0.0", "phpstan/phpstan-deprecation-rules": "^1.0.0",
"phpstan/phpstan-phpunit": "^1.2.2", "phpstan/phpstan-phpunit": "^1.2.2",
"phpstan/phpstan-strict-rules": "^1.4.4", "phpstan/phpstan-strict-rules": "^1.4.4",
"phpunit/phpunit": "^9.5.26 || ^8.5.31",
"theofidry/php-cs-fixer-config": "^1.0",
"phpunit/phpunit": "^8.5.31 || ^9.5.26",
"webmozarts/strict-phpunit": "^7.5" "webmozarts/strict-phpunit": "^7.5"
}, },
"type": "library", "type": "library",
], ],
"support": { "support": {
"issues": "https://github.com/theofidry/cpu-core-counter/issues", "issues": "https://github.com/theofidry/cpu-core-counter/issues",
"source": "https://github.com/theofidry/cpu-core-counter/tree/0.5.1"
"source": "https://github.com/theofidry/cpu-core-counter/tree/1.1.0"
}, },
"funding": [ "funding": [
{ {
"type": "github" "type": "github"
} }
], ],
"time": "2022-12-24T12:35:10+00:00"
"time": "2024-02-07T09:43:46+00:00"
}, },
{ {
"name": "netresearch/jsonmapper", "name": "netresearch/jsonmapper",
"version": "v4.0.0",
"version": "v4.4.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/cweiske/jsonmapper.git", "url": "https://github.com/cweiske/jsonmapper.git",
"reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d"
"reference": "132c75c7dd83e45353ebb9c6c9f591952995bbf0"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d",
"reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d",
"url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/132c75c7dd83e45353ebb9c6c9f591952995bbf0",
"reference": "132c75c7dd83e45353ebb9c6c9f591952995bbf0",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=7.1" "php": ">=7.1"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "~7.5 || ~8.0 || ~9.0",
"phpunit/phpunit": "~7.5 || ~8.0 || ~9.0 || ~10.0",
"squizlabs/php_codesniffer": "~3.5" "squizlabs/php_codesniffer": "~3.5"
}, },
"type": "library", "type": "library",
"support": { "support": {
"email": "cweiske@cweiske.de", "email": "cweiske@cweiske.de",
"issues": "https://github.com/cweiske/jsonmapper/issues", "issues": "https://github.com/cweiske/jsonmapper/issues",
"source": "https://github.com/cweiske/jsonmapper/tree/v4.0.0"
"source": "https://github.com/cweiske/jsonmapper/tree/v4.4.1"
}, },
"time": "2020-12-01T19:48:11+00:00"
"time": "2024-01-31T06:18:54+00:00"
}, },
{ {
"name": "nikic/php-parser", "name": "nikic/php-parser",
"version": "v4.15.1",
"version": "v4.19.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/nikic/PHP-Parser.git", "url": "https://github.com/nikic/PHP-Parser.git",
"reference": "0ef6c55a3f47f89d7a374e6f835197a0b5fcf900"
"reference": "4e1b88d21c69391150ace211e9eaf05810858d0b"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/0ef6c55a3f47f89d7a374e6f835197a0b5fcf900",
"reference": "0ef6c55a3f47f89d7a374e6f835197a0b5fcf900",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4e1b88d21c69391150ace211e9eaf05810858d0b",
"reference": "4e1b88d21c69391150ace211e9eaf05810858d0b",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ext-tokenizer": "*", "ext-tokenizer": "*",
"php": ">=7.0"
"php": ">=7.1"
}, },
"require-dev": { "require-dev": {
"ircmaxell/php-yacc": "^0.0.7", "ircmaxell/php-yacc": "^0.0.7",
], ],
"support": { "support": {
"issues": "https://github.com/nikic/PHP-Parser/issues", "issues": "https://github.com/nikic/PHP-Parser/issues",
"source": "https://github.com/nikic/PHP-Parser/tree/v4.15.1"
"source": "https://github.com/nikic/PHP-Parser/tree/v4.19.1"
}, },
"time": "2022-09-04T07:30:47+00:00"
"time": "2024-03-17T08:10:35+00:00"
}, },
{ {
"name": "phpdocumentor/reflection-common", "name": "phpdocumentor/reflection-common",
}, },
{ {
"name": "phpdocumentor/type-resolver", "name": "phpdocumentor/type-resolver",
"version": "1.6.2",
"version": "1.8.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git", "url": "https://github.com/phpDocumentor/TypeResolver.git",
"reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d"
"reference": "153ae662783729388a584b4361f2545e4d841e3c"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/48f445a408c131e38cab1c235aa6d2bb7a0bb20d",
"reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d",
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c",
"reference": "153ae662783729388a584b4361f2545e4d841e3c",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": "^7.4 || ^8.0",
"phpdocumentor/reflection-common": "^2.0"
"doctrine/deprecations": "^1.0",
"php": "^7.3 || ^8.0",
"phpdocumentor/reflection-common": "^2.0",
"phpstan/phpdoc-parser": "^1.13"
}, },
"require-dev": { "require-dev": {
"ext-tokenizer": "*", "ext-tokenizer": "*",
"phpbench/phpbench": "^1.2",
"phpstan/extension-installer": "^1.1", "phpstan/extension-installer": "^1.1",
"phpstan/phpstan": "^1.8", "phpstan/phpstan": "^1.8",
"phpstan/phpstan-phpunit": "^1.1", "phpstan/phpstan-phpunit": "^1.1",
"description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
"support": { "support": {
"issues": "https://github.com/phpDocumentor/TypeResolver/issues", "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
"source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.2"
"source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2"
},
"time": "2024-02-23T11:10:43+00:00"
},
{
"name": "phpstan/phpdoc-parser",
"version": "1.27.0",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpdoc-parser.git",
"reference": "86e4d5a4b036f8f0be1464522f4c6b584c452757"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/86e4d5a4b036f8f0be1464522f4c6b584c452757",
"reference": "86e4d5a4b036f8f0be1464522f4c6b584c452757",
"shasum": ""
},
"require": {
"php": "^7.2 || ^8.0"
},
"require-dev": {
"doctrine/annotations": "^2.0",
"nikic/php-parser": "^4.15",
"php-parallel-lint/php-parallel-lint": "^1.2",
"phpstan/extension-installer": "^1.0",
"phpstan/phpstan": "^1.5",
"phpstan/phpstan-phpunit": "^1.1",
"phpstan/phpstan-strict-rules": "^1.0",
"phpunit/phpunit": "^9.5",
"symfony/process": "^5.2"
}, },
"time": "2022-10-14T12:47:21+00:00"
"type": "library",
"autoload": {
"psr-4": {
"PHPStan\\PhpDocParser\\": [
"src/"
]
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"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/1.27.0"
},
"time": "2024-03-21T13:14:53+00:00"
}, },
{ {
"name": "psr/container", "name": "psr/container",
}, },
{ {
"name": "sebastian/diff", "name": "sebastian/diff",
"version": "4.0.4",
"version": "4.0.6",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/diff.git", "url": "https://github.com/sebastianbergmann/diff.git",
"reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d"
"reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d",
"reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d",
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc",
"reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
], ],
"support": { "support": {
"issues": "https://github.com/sebastianbergmann/diff/issues", "issues": "https://github.com/sebastianbergmann/diff/issues",
"source": "https://github.com/sebastianbergmann/diff/tree/4.0.4"
"source": "https://github.com/sebastianbergmann/diff/tree/4.0.6"
}, },
"funding": [ "funding": [
{ {
"type": "github" "type": "github"
} }
], ],
"time": "2020-10-26T13:10:38+00:00"
"time": "2024-03-02T06:30:58+00:00"
}, },
{ {
"name": "spatie/array-to-xml", "name": "spatie/array-to-xml",
"version": "3.1.5",
"version": "3.2.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/spatie/array-to-xml.git", "url": "https://github.com/spatie/array-to-xml.git",
"reference": "13f76acef5362d15c71ae1ac6350cc3df5e25e43"
"reference": "c95fd4db94ec199f798d4b5b4a81757bd20d88ab"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/spatie/array-to-xml/zipball/13f76acef5362d15c71ae1ac6350cc3df5e25e43",
"reference": "13f76acef5362d15c71ae1ac6350cc3df5e25e43",
"url": "https://api.github.com/repos/spatie/array-to-xml/zipball/c95fd4db94ec199f798d4b5b4a81757bd20d88ab",
"reference": "c95fd4db94ec199f798d4b5b4a81757bd20d88ab",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"xml" "xml"
], ],
"support": { "support": {
"source": "https://github.com/spatie/array-to-xml/tree/3.1.5"
"source": "https://github.com/spatie/array-to-xml/tree/3.2.3"
}, },
"funding": [ "funding": [
{ {
"type": "github" "type": "github"
} }
], ],
"time": "2022-12-24T13:43:51+00:00"
"time": "2024-02-07T10:39:02+00:00"
}, },
{ {
"name": "symfony/console", "name": "symfony/console",
"version": "v5.4.15",
"version": "v5.4.36",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/console.git", "url": "https://github.com/symfony/console.git",
"reference": "ea59bb0edfaf9f28d18d8791410ee0355f317669"
"reference": "39f75d9d73d0c11952fdcecf4877b4d0f62a8f6e"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/ea59bb0edfaf9f28d18d8791410ee0355f317669",
"reference": "ea59bb0edfaf9f28d18d8791410ee0355f317669",
"url": "https://api.github.com/repos/symfony/console/zipball/39f75d9d73d0c11952fdcecf4877b4d0f62a8f6e",
"reference": "39f75d9d73d0c11952fdcecf4877b4d0f62a8f6e",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"keywords": [ "keywords": [
"cli", "cli",
"command line",
"command-line",
"console", "console",
"terminal" "terminal"
], ],
"support": { "support": {
"source": "https://github.com/symfony/console/tree/v5.4.15"
"source": "https://github.com/symfony/console/tree/v5.4.36"
}, },
"funding": [ "funding": [
{ {
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-10-26T21:41:52+00:00"
"time": "2024-02-20T16:33:57+00:00"
}, },
{ {
"name": "symfony/deprecation-contracts", "name": "symfony/deprecation-contracts",
}, },
{ {
"name": "symfony/filesystem", "name": "symfony/filesystem",
"version": "v5.4.21",
"version": "v5.4.35",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/filesystem.git", "url": "https://github.com/symfony/filesystem.git",
"reference": "e75960b1bbfd2b8c9e483e0d74811d555ca3de9f"
"reference": "5a553607d4ffbfa9c0ab62facadea296c9db7086"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/e75960b1bbfd2b8c9e483e0d74811d555ca3de9f",
"reference": "e75960b1bbfd2b8c9e483e0d74811d555ca3de9f",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/5a553607d4ffbfa9c0ab62facadea296c9db7086",
"reference": "5a553607d4ffbfa9c0ab62facadea296c9db7086",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"description": "Provides basic utilities for the filesystem", "description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/filesystem/tree/v5.4.21"
"source": "https://github.com/symfony/filesystem/tree/v5.4.35"
}, },
"funding": [ "funding": [
{ {
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2023-02-14T08:03:56+00:00"
"time": "2024-01-23T13:51:25+00:00"
}, },
{ {
"name": "symfony/polyfill-ctype", "name": "symfony/polyfill-ctype",
"version": "v1.26.0",
"version": "v1.29.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git", "url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4"
"reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4",
"reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4",
"reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": {
"dev-main": "1.26-dev"
},
"thanks": { "thanks": {
"name": "symfony/polyfill", "name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill" "url": "https://github.com/symfony/polyfill"
"portable" "portable"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0"
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0"
}, },
"funding": [ "funding": [
{ {
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-05-24T11:49:31+00:00"
"time": "2024-01-29T20:11:03+00:00"
}, },
{ {
"name": "symfony/polyfill-intl-grapheme", "name": "symfony/polyfill-intl-grapheme",
"version": "v1.26.0",
"version": "v1.29.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
"reference": "433d05519ce6990bf3530fba6957499d327395c2"
"reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/433d05519ce6990bf3530fba6957499d327395c2",
"reference": "433d05519ce6990bf3530fba6957499d327395c2",
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f",
"reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": {
"dev-main": "1.26-dev"
},
"thanks": { "thanks": {
"name": "symfony/polyfill", "name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill" "url": "https://github.com/symfony/polyfill"
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.26.0"
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0"
}, },
"funding": [ "funding": [
{ {
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-05-24T11:49:31+00:00"
"time": "2024-01-29T20:11:03+00:00"
}, },
{ {
"name": "symfony/polyfill-intl-normalizer", "name": "symfony/polyfill-intl-normalizer",
"version": "v1.26.0",
"version": "v1.29.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
"reference": "219aa369ceff116e673852dce47c3a41794c14bd"
"reference": "bc45c394692b948b4d383a08d7753968bed9a83d"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd",
"reference": "219aa369ceff116e673852dce47c3a41794c14bd",
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d",
"reference": "bc45c394692b948b4d383a08d7753968bed9a83d",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": {
"dev-main": "1.26-dev"
},
"thanks": { "thanks": {
"name": "symfony/polyfill", "name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill" "url": "https://github.com/symfony/polyfill"
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0"
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0"
}, },
"funding": [ "funding": [
{ {
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-05-24T11:49:31+00:00"
"time": "2024-01-29T20:11:03+00:00"
}, },
{ {
"name": "symfony/polyfill-mbstring", "name": "symfony/polyfill-mbstring",
"version": "v1.26.0",
"version": "v1.29.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git", "url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e"
"reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e",
"reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
"reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": {
"dev-main": "1.26-dev"
},
"thanks": { "thanks": {
"name": "symfony/polyfill", "name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill" "url": "https://github.com/symfony/polyfill"
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0"
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0"
}, },
"funding": [ "funding": [
{ {
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-05-24T11:49:31+00:00"
"time": "2024-01-29T20:11:03+00:00"
}, },
{ {
"name": "symfony/polyfill-php73", "name": "symfony/polyfill-php73",
"version": "v1.26.0",
"version": "v1.29.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-php73.git", "url": "https://github.com/symfony/polyfill-php73.git",
"reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85"
"reference": "21bd091060673a1177ae842c0ef8fe30893114d2"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/e440d35fa0286f77fb45b79a03fedbeda9307e85",
"reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85",
"url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/21bd091060673a1177ae842c0ef8fe30893114d2",
"reference": "21bd091060673a1177ae842c0ef8fe30893114d2",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": {
"dev-main": "1.26-dev"
},
"thanks": { "thanks": {
"name": "symfony/polyfill", "name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill" "url": "https://github.com/symfony/polyfill"
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-php73/tree/v1.26.0"
"source": "https://github.com/symfony/polyfill-php73/tree/v1.29.0"
}, },
"funding": [ "funding": [
{ {
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-05-24T11:49:31+00:00"
"time": "2024-01-29T20:11:03+00:00"
}, },
{ {
"name": "symfony/polyfill-php80", "name": "symfony/polyfill-php80",
"version": "v1.26.0",
"version": "v1.29.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-php80.git", "url": "https://github.com/symfony/polyfill-php80.git",
"reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace"
"reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace",
"reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace",
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
"reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": {
"dev-main": "1.26-dev"
},
"thanks": { "thanks": {
"name": "symfony/polyfill", "name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill" "url": "https://github.com/symfony/polyfill"
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0"
"source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0"
}, },
"funding": [ "funding": [
{ {
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-05-10T07:21:04+00:00"
"time": "2024-01-29T20:11:03+00:00"
}, },
{ {
"name": "symfony/service-contracts", "name": "symfony/service-contracts",
}, },
{ {
"name": "symfony/string", "name": "symfony/string",
"version": "v5.4.15",
"version": "v5.4.36",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/string.git", "url": "https://github.com/symfony/string.git",
"reference": "571334ce9f687e3e6af72db4d3b2a9431e4fd9ed"
"reference": "4e232c83622bd8cd32b794216aa29d0d266d353b"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/string/zipball/571334ce9f687e3e6af72db4d3b2a9431e4fd9ed",
"reference": "571334ce9f687e3e6af72db4d3b2a9431e4fd9ed",
"url": "https://api.github.com/repos/symfony/string/zipball/4e232c83622bd8cd32b794216aa29d0d266d353b",
"reference": "4e232c83622bd8cd32b794216aa29d0d266d353b",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"utf8" "utf8"
], ],
"support": { "support": {
"source": "https://github.com/symfony/string/tree/v5.4.15"
"source": "https://github.com/symfony/string/tree/v5.4.36"
}, },
"funding": [ "funding": [
{ {
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-10-05T15:16:54+00:00"
"time": "2024-02-01T08:49:30+00:00"
}, },
{ {
"name": "vimeo/psalm", "name": "vimeo/psalm",
"version": "5.9.0",
"version": "5.23.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/vimeo/psalm.git", "url": "https://github.com/vimeo/psalm.git",
"reference": "8b9ad1eb9e8b7d3101f949291da2b9f7767cd163"
"reference": "8471a896ccea3526b26d082f4461eeea467f10a4"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/vimeo/psalm/zipball/8b9ad1eb9e8b7d3101f949291da2b9f7767cd163",
"reference": "8b9ad1eb9e8b7d3101f949291da2b9f7767cd163",
"url": "https://api.github.com/repos/vimeo/psalm/zipball/8471a896ccea3526b26d082f4461eeea467f10a4",
"reference": "8471a896ccea3526b26d082f4461eeea467f10a4",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ext-tokenizer": "*", "ext-tokenizer": "*",
"felixfbecker/advanced-json-rpc": "^3.1", "felixfbecker/advanced-json-rpc": "^3.1",
"felixfbecker/language-server-protocol": "^1.5.2", "felixfbecker/language-server-protocol": "^1.5.2",
"fidry/cpu-core-counter": "^0.4.1 || ^0.5.1",
"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": "^1.0 || ^2.0 || ^3.0 || ^4.0",
"nikic/php-parser": "^4.14",
"php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0",
"sebastian/diff": "^4.0 || ^5.0",
"nikic/php-parser": "^4.16",
"php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0",
"sebastian/diff": "^4.0 || ^5.0 || ^6.0",
"spatie/array-to-xml": "^2.17.0 || ^3.0", "spatie/array-to-xml": "^2.17.0 || ^3.0",
"symfony/console": "^4.1.6 || ^5.0 || ^6.0",
"symfony/filesystem": "^5.4 || ^6.0"
"symfony/console": "^4.1.6 || ^5.0 || ^6.0 || ^7.0",
"symfony/filesystem": "^5.4 || ^6.0 || ^7.0"
},
"conflict": {
"nikic/php-parser": "4.17.0"
}, },
"provide": { "provide": {
"psalm/psalm": "self.version" "psalm/psalm": "self.version"
"psalm/plugin-phpunit": "^0.18", "psalm/plugin-phpunit": "^0.18",
"slevomat/coding-standard": "^8.4", "slevomat/coding-standard": "^8.4",
"squizlabs/php_codesniffer": "^3.6", "squizlabs/php_codesniffer": "^3.6",
"symfony/process": "^4.4 || ^5.0 || ^6.0"
"symfony/process": "^4.4 || ^5.0 || ^6.0 || ^7.0"
}, },
"suggest": { "suggest": {
"ext-curl": "In order to send data to shepherd", "ext-curl": "In order to send data to shepherd",
"psalm-refactor", "psalm-refactor",
"psalter" "psalter"
], ],
"type": "library",
"type": "project",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "5.x-dev", "dev-master": "5.x-dev",
"static analysis" "static analysis"
], ],
"support": { "support": {
"docs": "https://psalm.dev/docs",
"issues": "https://github.com/vimeo/psalm/issues", "issues": "https://github.com/vimeo/psalm/issues",
"source": "https://github.com/vimeo/psalm/tree/5.9.0"
"source": "https://github.com/vimeo/psalm"
}, },
"time": "2023-03-29T21:38:21+00:00"
"time": "2024-03-11T20:33:46+00:00"
}, },
{ {
"name": "webmozart/assert", "name": "webmozart/assert",
"platform-overrides": { "platform-overrides": {
"php": "8.0" "php": "8.0"
}, },
"plugin-api-version": "2.3.0"
"plugin-api-version": "2.6.0"
} }

Loading…
Cancel
Save