diff --git a/composer.json b/composer.json index ddb0f1d6..ebf42284 100644 --- a/composer.json +++ b/composer.json @@ -19,7 +19,7 @@ ], "require" : { "php": "^7.4 || ^8.0", - "mouf/magic-query": "^1.4.3", + "mouf/magic-query": "2.0.x-dev", "mouf/schema-analyzer": "^2.0", "doctrine/dbal": "^3.0", "psr/log": "^1 || ^2 || ^3", @@ -27,14 +27,13 @@ "mouf/classname-mapper": "~1.0", "doctrine/cache": "^1.6", "greenlion/php-sql-parser": "^4.3.0", - "symfony/console": "^2 || ^3 || ^4 || ^5", + "symfony/console": "^2 || ^3 || ^4 || ^5 || ^6", "mouf/utils.log.psr.multi-logger": "^1.0", - "symfony/filesystem": "^2.7 || ^3 || ^4 || ^5", + "symfony/filesystem": "^2.7 || ^3 || ^4 || ^5 || ^6", "ramsey/uuid": "^3.7 || ^4.0", "doctrine/annotations": "^1.10", "laminas/laminas-code": "^4.7", "psr/container": "^1 || ^2", - "brain-diminished/schema-version-control": "^1.0.5", "ext-PDO": "*", "ext-json": "*", "ext-hash": "*", @@ -47,7 +46,7 @@ "wa72/simplelogger": "^1.0", "friendsofphp/php-cs-fixer": "^3.11", "symfony/process": "^3 || ^4 || ^5", - "thecodingmachine/tdbm-fluid-schema-builder": "^1.0.0", + "thecodingmachine/tdbm-fluid-schema-builder": "^v2.0.0", "phpstan/phpstan": "^0.12.81", "thecodingmachine/phpstan-strict-rules": "^0.12.1", "bamarni/composer-bin-plugin": "^1.4.1", diff --git a/src/Configuration.php b/src/Configuration.php index 7ff984a7..916a4159 100644 --- a/src/Configuration.php +++ b/src/Configuration.php @@ -221,7 +221,10 @@ public function getCodeGeneratorListener(): CodeGeneratorListenerInterface */ private function getConnectionUniqueId(): string { - return hash('md4', $this->connection->getHost().'-'.$this->connection->getPort().'-'.$this->connection->getDatabase().'-'.$this->connection->getDriver()->getName()); + $params = $this->connection->getParams(); + $host = $params['host'] ?? null; + $port = $params['port'] ?? null; + return hash('md4', $host.'-'.$port.'-'.$this->connection->getDatabase().'-'.$this->connection->getDatabasePlatform()->getName()); } /** diff --git a/src/DbRow.php b/src/DbRow.php index 759790fc..4d822515 100644 --- a/src/DbRow.php +++ b/src/DbRow.php @@ -211,7 +211,7 @@ public function _dbLoadIfNotLoaded(): void $this->dbRow[$key] = $types[$key]->convertToPHPValue($value, $connection->getDatabasePlatform()); } - $result->closeCursor(); + $result->free(); $this->status = TDBMObjectStateEnum::STATE_LOADED; } diff --git a/src/InnerResultArray.php b/src/InnerResultArray.php index 66e55b33..ce312657 100644 --- a/src/InnerResultArray.php +++ b/src/InnerResultArray.php @@ -92,7 +92,7 @@ private function toIndex($offset): void if ($offset < 0 || filter_var($offset, FILTER_VALIDATE_INT) === false) { throw new TDBMInvalidOffsetException('Trying to access result set using offset "'.$offset.'". An offset must be a positive integer.'); } - if ($this->statement === null) { + if ($this->result === null) { $this->executeQuery(); } while (!isset($this->results[$offset])) { diff --git a/src/InnerResultIterator.php b/src/InnerResultIterator.php index 1af0c73f..eab7e0e5 100644 --- a/src/InnerResultIterator.php +++ b/src/InnerResultIterator.php @@ -4,9 +4,9 @@ namespace TheCodingMachine\TDBM; -use Doctrine\DBAL\Driver\ResultStatement; use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\DBAL\Platforms\MySqlPlatform; +use Doctrine\DBAL\Result; use Doctrine\DBAL\Statement; use Mouf\Database\MagicQuery; use Psr\Log\LoggerInterface; @@ -35,8 +35,8 @@ */ class InnerResultIterator implements \Iterator, InnerResultIteratorInterface { - /** @var ResultStatement|Statement */ - protected $statement; + /** @var Result */ + protected $result; /** @var bool */ protected $fetchStarted = false; @@ -117,7 +117,7 @@ protected function executeQuery(): void $this->logger->debug('Running SQL request: '.$sql); - $this->statement = $this->tdbmService->getConnection()->executeQuery($sql, $this->parameters, DbalUtils::generateTypes($this->parameters)); + $this->result = $this->tdbmService->getConnection()->executeQuery($sql, $this->parameters, DbalUtils::generateTypes($this->parameters)); $this->fetchStarted = true; } @@ -135,8 +135,8 @@ public function count() if ($this->fetchStarted && $this->tdbmService->getConnection()->getDatabasePlatform() instanceof MySqlPlatform) { // Optimisation: we don't need a separate "count" SQL request in MySQL. - assert($this->statement instanceof Statement); - $this->count = (int)$this->statement->rowCount(); + assert($this->result instanceof Result); + $this->count = (int)$this->result->rowCount(); return $this->count; } return $this->getRowCountViaSqlQuery(); @@ -152,7 +152,7 @@ private function getRowCountViaSqlQuery(): int $this->logger->debug('Running count SQL request: '.$countSql); - $this->count = (int) $this->tdbmService->getConnection()->fetchColumn($countSql, $this->parameters, 0, DbalUtils::generateTypes($this->parameters)); + $this->count = (int) $this->tdbmService->getConnection()->fetchOne($countSql, $this->parameters, DbalUtils::generateTypes($this->parameters)); return $this->count; } @@ -182,7 +182,7 @@ public function key() */ public function next(): void { - $row = $this->statement->fetch(\PDO::FETCH_ASSOC); + $row = $this->result->fetchAssociative(); if ($row) { /** @var array>> $beansData array>>*/ $beansData = []; diff --git a/src/QueryFactory/FindObjectsFromRawSqlQueryFactory.php b/src/QueryFactory/FindObjectsFromRawSqlQueryFactory.php index 457b7bd4..9337af9e 100644 --- a/src/QueryFactory/FindObjectsFromRawSqlQueryFactory.php +++ b/src/QueryFactory/FindObjectsFromRawSqlQueryFactory.php @@ -252,7 +252,7 @@ private function formatSelect(array $baseSelect): array ] ]; $formattedSelect[] = $astColumn; - if (in_array($columnName, $pkColumns)) { + if (array_key_exists($columnName, $pkColumns)) { $formattedCountSelect[] = $astColumn; } $columnDescriptors[$alias] = [ @@ -322,7 +322,7 @@ private function generateSimpleSqlCount(array $parsedSql): array if ($this->isDistinctQuery($parsedSql)) { // Only MySQL can do DISTINCT counts. // Other databases should wrap the query - if (!$this->tdbmService->getConnection()->getSchemaManager()->getDatabasePlatform() instanceof MySqlPlatform) { + if (!$this->tdbmService->getConnection()->getDatabasePlatform() instanceof MySqlPlatform) { return $this->generateWrappedSqlCount($parsedSql); } diff --git a/src/ResultIterator.php b/src/ResultIterator.php index 21f13085..b5fea722 100644 --- a/src/ResultIterator.php +++ b/src/ResultIterator.php @@ -110,7 +110,7 @@ protected function executeCountQuery(): void { $sql = $this->magicQuery->buildPreparedStatement($this->queryFactory->getMagicSqlCount(), $this->parameters); $this->logger->debug('Running count query: '.$sql); - $this->totalCount = (int) $this->tdbmService->getConnection()->fetchColumn($sql, $this->parameters, 0, DbalUtils::generateTypes($this->parameters)); + $this->totalCount = (int) $this->tdbmService->getConnection()->fetchOne($sql, $this->parameters, DbalUtils::generateTypes($this->parameters)); } /** diff --git a/src/SchemaLockFileDumper.php b/src/SchemaLockFileDumper.php index daa365b9..0b732f31 100644 --- a/src/SchemaLockFileDumper.php +++ b/src/SchemaLockFileDumper.php @@ -2,13 +2,13 @@ namespace TheCodingMachine\TDBM; -use BrainDiminished\SchemaVersionControl\SchemaVersionControlService; use Doctrine\Common\Cache\Cache; use Doctrine\DBAL\Connection; use Doctrine\DBAL\Schema\ForeignKeyConstraint; use Doctrine\DBAL\Schema\Schema; use Doctrine\DBAL\Schema\Table; use Mouf\Database\SchemaAnalyzer\SchemaAnalyzer; +use TheCodingMachine\TDBM\SchemaVersionControl\SchemaVersionControlService; use TheCodingMachine\TDBM\Utils\ColumnsReorderer; use TheCodingMachine\TDBM\Utils\ImmutableCaster; @@ -68,7 +68,10 @@ public function __construct(Connection $connection, Cache $cache, string $lockFi public function getCachePrefix(): string { if ($this->cachePrefix === null) { - $this->cachePrefix = hash('md4', $this->connection->getHost().'-'.$this->connection->getPort().'-'.$this->connection->getDatabase().'-'.$this->connection->getDriver()->getName()); + $params = $this->connection->getParams(); + $host = $params['host'] ?? null; + $port = $params['port'] ?? null; + $this->cachePrefix = hash('md4', $host.'-'.$port.'-'.$this->connection->getDatabase().'-'.$this->connection->getDatabasePlatform()?->getName()); } return $this->cachePrefix; diff --git a/src/SchemaVersionControl/SchemaBuilder.php b/src/SchemaVersionControl/SchemaBuilder.php new file mode 100644 index 00000000..603a66cd --- /dev/null +++ b/src/SchemaVersionControl/SchemaBuilder.php @@ -0,0 +1,163 @@ +schemaDesc = $schemaDesc; + $schema = new Schema(); + foreach ($schemaDesc['tables'] as $name => $tableDesc) { + $table = $schema->createTable($name); + $this->buildTable($tableDesc, $table); + } + return $schema; + } + + protected function buildTable(array $tableDesc, Table $table) + { + $pk_columns = []; + + if (isset($tableDesc['comment'])) { + $table->addOption("comment", $tableDesc['comment']); + } + + foreach ($tableDesc['columns'] as $columnName => $columnDesc) { + if (!is_array($columnDesc)) { + $columnDesc = ['type' => $columnDesc]; + } + if (isset($columnDesc['primary_key']) + && $columnDesc['primary_key']) { + $pk_columns[] = $columnName; + } + $column = $table->addColumn($columnName, $columnDesc['type']); + $this->buildColumn($columnDesc, $column); + } + if (isset($tableDesc['indexes'])) { + foreach ($tableDesc['indexes'] as $indexName => $indexDesc) { + $this->buildIndex($indexDesc, $table, $indexName); + } + } + if (!empty($pk_columns)) { + $table->setPrimaryKey($pk_columns); + } + if (isset($tableDesc['foreign_keys'])) { + foreach ($tableDesc['foreign_keys'] as $constraintName => $constraintDesc) { + $this->buildForeignKeyConstraint($constraintDesc, $table, $constraintName); + } + } + } + + protected function buildColumn(array $columnDesc, Column $column) + { + if (isset($columnDesc['fixed'])) { + $column->setFixed($columnDesc['fixed']); + } + if (isset($columnDesc['length'])) { + $column->setLength($columnDesc['length']); + } + if (isset($columnDesc['precision'])) { + $column->setPrecision($columnDesc['precision']); + } + if (isset($columnDesc['scale'])) { + $column->setScale($columnDesc['scale']); + } + $column->setNotnull(isset($columnDesc['not_null']) && $columnDesc['not_null']); + if (isset($columnDesc['default'])) { + $column->setDefault($columnDesc['default']); + } + if (isset($columnDesc['auto_increment'])) { + $column->setAutoincrement($columnDesc['auto_increment']); + } + if (isset($columnDesc['comment'])) { + $column->setComment($columnDesc['comment']); + } + if (isset($columnDesc['custom'])) { + $column->setCustomSchemaOptions($columnDesc['custom']); + } + } + + protected function buildForeignKeyConstraint(array $constraintDesc, Table $table, string $name) + { + if (isset($constraintDesc['column'])) { + $localColumns = [$constraintDesc['column']]; + } else { + $localColumns = $constraintDesc['columns']; + } + $references = $constraintDesc['references']; + if (is_array($references)) { + $foreignTable = $references['table']; + if (isset($references['column'])) { + $foreignColumns = [$references['column']]; + } else { + $foreignColumns = $references['columns']; + } + } else { + $foreignTable = $references; + $foreignColumns = $this->getPrimaryKeyColumns($foreignTable); + if (!is_array($foreignColumns)) { + $foreignColumns = [$foreignColumns]; + } + } + $options = array_diff_key($constraintDesc, ['column' => 0,'columns' => 0,'references' => 0]); + $table->addForeignKeyConstraint($foreignTable, $localColumns, $foreignColumns, $options, $name); + } + + protected function getPrimaryKeyColumns(string $tableName) + { + $pkColumns = []; + $tableDesc = $this->schemaDesc['tables'][$tableName]; + foreach ($tableDesc['columns'] as $columnName => $columnDesc) { + if (isset($columnDesc['primary_key']) + && $columnDesc['primary_key']) { + $pkColumns[] = $columnName; + } + } + return $pkColumns; + } + + protected function buildIndex($indexDesc, Table $table, $name) + { + if (!is_array($indexDesc)) { + $indexDesc = ['column' => $indexDesc]; + } elseif (array_keys($indexDesc) === range(0, count($indexDesc) - 1)) { + $indexDesc = ['columns' => $indexDesc]; + } + + if (isset($indexDesc['column'])) { + $columns = [$indexDesc['column']]; + } else { + $columns = $indexDesc['columns']; + } + + if (is_int($name)) { + $name = implode('_', $columns); + } + + $options = array_diff_key($indexDesc, ['column' => 0,'columns' => 0]); + if (isset($indexDesc['unique']) && $indexDesc['unique'] === true) { + $table->addUniqueIndex($columns, $name, [], $options); + } else { + $table->addIndex($columns, $name, [], $options); + } + } +} diff --git a/src/SchemaVersionControl/SchemaNormalizer.php b/src/SchemaVersionControl/SchemaNormalizer.php new file mode 100644 index 00000000..0bfc0f4f --- /dev/null +++ b/src/SchemaVersionControl/SchemaNormalizer.php @@ -0,0 +1,173 @@ +schema = $schema; + $schemaDesc = []; + $schemaDesc['tables'] = []; + foreach ($schema->getTables() as $table) { + $schemaDesc['tables'][$table->getName()] = $this->normalizeTable($table); + } + return $schemaDesc; + } + + protected function normalizeTable(Table $table) + { + $tableDesc = []; + + if ($table->hasPrimaryKey()) { + $pk_columns = $table->getPrimaryKey()->getUnquotedColumns(); + } else { + $pk_columns = []; + } + + if ($table->hasOption('comment') && $table->getOption('comment')) { + $tableDesc['comment'] = $table->getOption('comment'); + } + + // list columns + foreach ($table->getColumns() as $columnName => $column) { + $tableDesc['columns'][$column->getName()] = $this->normalizeColumn($column, in_array($column->getName(), $pk_columns)); + } + + // list indexes + foreach ($table->getIndexes() as $index) { + if (!$index->isPrimary()) { + $tableDesc['indexes'][$index->getName()] = $this->normalizeIndex($index); + } + } + + // list foreign keys + foreach ($table->getForeignKeys() as $foreignKey) { + $tableDesc['foreign_keys'][$foreignKey->getName()] = $this->normalizeForeignKeyConstraint($foreignKey); + } + + return $tableDesc; + } + + protected function normalizeColumn(Column $column, bool $isPrimaryKey) + { + $columnDesc = []; + if ($isPrimaryKey) { + $columnDesc['primary_key'] = $isPrimaryKey; + } + $columnDesc['type'] = $column->getType()->getName(); + if ($column->getUnsigned()) { + $columnDesc['unsigned'] = $column->getUnsigned(); + } + if ($column->getFixed()) { + $columnDesc['fixed'] = $column->getFixed(); + } + if ($column->getLength() !== null) { + $columnDesc['length'] = $column->getLength(); + } + if ($column->getPrecision() !== 10) { + $columnDesc['precision'] = $column->getPrecision(); + } + if ($column->getScale() !== 0) { + $columnDesc['scale'] = $column->getScale(); + } + if ($column->getNotnull()) { + $columnDesc['not_null'] = $column->getNotnull(); + } + if ($column->getDefault() !== null) { + $columnDesc['default'] = $column->getDefault(); + } + if ($column->getAutoincrement()) { + $columnDesc['auto_increment'] = $column->getAutoincrement(); + } + if ($column->getComment() !== null) { + $columnDesc['comment'] = $column->getComment(); + } + if (!empty($column->getCustomSchemaOptions())) { + $columnDesc['custom'] = $column->getCustomSchemaOptions(); + } + + if (count($columnDesc) > 1) { + return $columnDesc; + } + + return $columnDesc['type']; + } + + protected function normalizeForeignKeyConstraint(ForeignKeyConstraint $foreignKeyConstraint) + { + $constraintDesc = []; + if (count($foreignKeyConstraint->getColumns()) > 1) { + $constraintDesc['columns'] = $foreignKeyConstraint->getColumns(); + } else { + $constraintDesc['column'] = $foreignKeyConstraint->getColumns()[0]; + } + + $constraintDesc['references'] = $this->normalizeForeignReference($foreignKeyConstraint); + if (!empty($foreignKeyConstraint->getOptions())) { + $constraintDesc = array_merge($constraintDesc, $foreignKeyConstraint->getOptions()); + } + return $constraintDesc; + } + + protected function normalizeForeignReference(ForeignKeyConstraint $foreignKeyConstraint) + { + $referenceDesc = []; + $foreignTableName = $foreignKeyConstraint->getForeignTableName(); + $foreignTable = $this->schema->getTable($foreignTableName); + if ($foreignTable->hasPrimaryKey() + && $foreignTable->getPrimaryKeyColumns() == $foreignKeyConstraint->getForeignColumns()) { + $referenceDesc = $foreignKeyConstraint->getForeignTableName(); + } else { + $referenceDesc['table'] = $foreignKeyConstraint->getForeignTableName(); + $fkColumns = $foreignKeyConstraint->getForeignColumns(); + if (count($fkColumns) > 1) { + $referenceDesc['columns'] = $fkColumns; + } else { + $referenceDesc['column'] = $fkColumns[0]; + } + } + return $referenceDesc; + } + + protected function normalizeIndex(Index $index) + { + $indexDesc = []; + $columns = $index->getColumns(); + if (count($columns) > 1) { + $indexDesc['columns'] = $index->getColumns(); + } else { + $indexDesc['column'] = $index->getColumns()[0]; + } + if ($index->isUnique()) { + $indexDesc['unique'] = $index->isUnique(); + } + if ($index->isPrimary()) { + $indexDesc['primary'] = $index->isPrimary(); + } + if (!empty($index->getOptions())) { + $indexDesc = array_merge($indexDesc, $index->getOptions()); + } + return $indexDesc; + } +} diff --git a/src/SchemaVersionControl/SchemaVersionControlService.php b/src/SchemaVersionControl/SchemaVersionControlService.php new file mode 100644 index 00000000..7011da39 --- /dev/null +++ b/src/SchemaVersionControl/SchemaVersionControlService.php @@ -0,0 +1,81 @@ +connection = $connection; + $this->schemaFile = $schemaFile; + } + + /** + * Get the current schema used in database. + * @return Schema + */ + public function getCurrentSchema(): Schema + { + return $this->connection->getSchemaManager()->createSchema(); + } + + /** + * Load schema from config file. + * @return Schema + */ + public function loadSchemaFile(): Schema + { + if (!file_exists($this->schemaFile)) { + return new Schema(); + } + + $content = file_get_contents($this->schemaFile); + $desc = Yaml::parse($content); + if (empty($desc)) { + return new Schema(); + } + + $builder = new SchemaBuilder(); + return $builder->build($desc['schema']); + } + + /** + * Write current database schema in config file + */ + public function dumpSchema(): void + { + $schema = $this->getCurrentSchema(); + $normalizer = new SchemaNormalizer(); + $desc = $normalizer->normalize($schema); + $yamlSchema = Yaml::dump(['schema' => $desc], 10, 2); + $directory = dirname($this->schemaFile); + if (!file_exists($directory)) { + if (mkdir($directory, 0666, true) === false) { + throw new \RuntimeException('Could not create directory '.$directory); + } + } + if (file_put_contents($this->schemaFile, $yamlSchema) === false) { + throw new \RuntimeException('Could not edit dump file '.$this->schemaFile); + } + } +} diff --git a/src/TDBMSchemaAnalyzer.php b/src/TDBMSchemaAnalyzer.php index 45cd0109..def3166f 100644 --- a/src/TDBMSchemaAnalyzer.php +++ b/src/TDBMSchemaAnalyzer.php @@ -4,7 +4,6 @@ namespace TheCodingMachine\TDBM; -use BrainDiminished\SchemaVersionControl\SchemaVersionControlService; use Doctrine\Common\Cache\Cache; use Doctrine\DBAL\Connection; use Doctrine\DBAL\Schema\Column; @@ -70,7 +69,10 @@ public function __construct(Connection $connection, Cache $cache, SchemaAnalyzer public function getCachePrefix(): string { if ($this->cachePrefix === null) { - $this->cachePrefix = hash('md4', $this->connection->getHost().'-'.$this->connection->getPort().'-'.$this->connection->getDatabase().'-'.$this->connection->getDriver()->getName()); + $params = $this->connection->getParams(); + $host = $params['host'] ?? null; + $port = $params['port'] ?? null; + $this->cachePrefix = hash('md4', $host.'-'.$port.'-'.$this->connection->getDatabase().'-'.$this->connection->getDatabasePlatform()->getName()); } return $this->cachePrefix; diff --git a/src/TDBMService.php b/src/TDBMService.php index ecfa1be5..748b3287 100644 --- a/src/TDBMService.php +++ b/src/TDBMService.php @@ -26,7 +26,7 @@ use Doctrine\Common\Cache\ClearableCache; use Doctrine\Common\Cache\VoidCache; use Doctrine\DBAL\Connection; -use Doctrine\DBAL\DBALException; +use Doctrine\DBAL\Exception as DBALException; use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\DBAL\Platforms\MySqlPlatform; use Doctrine\DBAL\Platforms\OraclePlatform; diff --git a/src/Utils/BeanDescriptor.php b/src/Utils/BeanDescriptor.php index cb092208..36069618 100644 --- a/src/Utils/BeanDescriptor.php +++ b/src/Utils/BeanDescriptor.php @@ -10,6 +10,7 @@ use Doctrine\DBAL\Schema\Table; use Doctrine\DBAL\Schema\ForeignKeyConstraint; use Doctrine\DBAL\Types\Type; +use Doctrine\DBAL\Types\Types; use JsonSerializable; use Mouf\Database\SchemaAnalyzer\SchemaAnalyzer; use PhpParser\Comment\Doc; @@ -1370,7 +1371,7 @@ private function generateFindByDaoCodeForIndex(Index $index, string $beanNamespa $params[] = $element->getParamAnnotation(); if ($element instanceof ScalarBeanPropertyDescriptor) { $typeName = $element->getDatabaseType()->getName(); - if ($typeName === Type::DATETIME_IMMUTABLE) { + if ($typeName === Types::DATETIME_IMMUTABLE) { $filterArrayCode .= sprintf( " %s => \$this->tdbmService->getConnection()->convertToDatabaseValue(%s, %s),\n", var_export($element->getColumnName(), true), diff --git a/src/Utils/ImmutableCaster.php b/src/Utils/ImmutableCaster.php index c8e52788..9da86e01 100644 --- a/src/Utils/ImmutableCaster.php +++ b/src/Utils/ImmutableCaster.php @@ -5,6 +5,7 @@ use Doctrine\DBAL\Schema\Column; use Doctrine\DBAL\Schema\Schema; use Doctrine\DBAL\Types\Type; +use Doctrine\DBAL\Types\Types; class ImmutableCaster { @@ -24,10 +25,10 @@ public static function castSchemaToImmutable(Schema $schema): void private static function toImmutableType(Column $column): void { $mapping = [ - Type::DATE => Type::DATE_IMMUTABLE, - Type::DATETIME => Type::DATETIME_IMMUTABLE, - Type::DATETIMETZ => Type::DATETIMETZ_IMMUTABLE, - Type::TIME => Type::TIME_IMMUTABLE + Types::DATE_MUTABLE => Types::DATE_IMMUTABLE, + Types::DATETIME_MUTABLE => Types::DATETIME_IMMUTABLE, + Types::DATETIMETZ_MUTABLE => Types::DATETIMETZ_IMMUTABLE, + Types::TIME_MUTABLE => Types::TIME_IMMUTABLE ]; $typeName = $column->getType()->getName(); diff --git a/src/Utils/Logs/LevelFilter.php b/src/Utils/Logs/LevelFilter.php index cf540c47..1d3e1a8f 100644 --- a/src/Utils/Logs/LevelFilter.php +++ b/src/Utils/Logs/LevelFilter.php @@ -7,6 +7,7 @@ use Psr\Log\LoggerInterface; use Psr\Log\LogLevel; +use Stringable; use function array_search; use function sprintf; @@ -62,12 +63,12 @@ public function __construct(LoggerInterface $logger, string $level) * Logs with an arbitrary level. * * @param mixed $level - * @param string $message + * @param Stringable|string $message * @param array $context * * @return void */ - public function log($level, $message, array $context = array()) + public function log($level, $message, array $context = []): void { $levelCode = array_search($level, self::LEVELS, true); if ($levelCode === false) { diff --git a/src/Utils/ScalarBeanPropertyDescriptor.php b/src/Utils/ScalarBeanPropertyDescriptor.php index 22d7a520..d7dfc1ee 100644 --- a/src/Utils/ScalarBeanPropertyDescriptor.php +++ b/src/Utils/ScalarBeanPropertyDescriptor.php @@ -8,6 +8,7 @@ use Doctrine\DBAL\Schema\Column; use Doctrine\DBAL\Schema\Table; use Doctrine\DBAL\Types\Type; +use Doctrine\DBAL\Types\Types; use TheCodingMachine\TDBM\TDBMException; use TheCodingMachine\TDBM\Utils\Annotation\AnnotationParser; use TheCodingMachine\TDBM\Utils\Annotation\Annotations; @@ -388,8 +389,8 @@ public function canBeSerialized(): bool $type = $this->column->getType(); $unserialisableTypes = [ - Type::BLOB, - Type::BINARY + Types::BLOB, + Types::BINARY ]; return \in_array($type->getName(), $unserialisableTypes, true) === false; diff --git a/src/Utils/TDBMDaoGenerator.php b/src/Utils/TDBMDaoGenerator.php index c0009fd8..fe2e6205 100644 --- a/src/Utils/TDBMDaoGenerator.php +++ b/src/Utils/TDBMDaoGenerator.php @@ -4,6 +4,7 @@ namespace TheCodingMachine\TDBM\Utils; +use Doctrine\DBAL\Types\Types; use Doctrine\Inflector\Inflector; use Doctrine\DBAL\Schema\Schema; use Doctrine\DBAL\Schema\Table; @@ -544,26 +545,25 @@ private function dumpFile(string $fileName, string $content): void public static function dbalTypeToPhpType(Type $type): string { $map = [ - Type::TARRAY => 'array', - Type::SIMPLE_ARRAY => 'array', - 'json' => 'array', // 'json' is supported from Doctrine DBAL 2.6 only. - Type::JSON_ARRAY => 'array', - Type::BIGINT => 'string', - Type::BOOLEAN => 'bool', - Type::DATETIME_IMMUTABLE => '\DateTimeImmutable', - Type::DATETIMETZ_IMMUTABLE => '\DateTimeImmutable', - Type::DATE_IMMUTABLE => '\DateTimeImmutable', - Type::TIME_IMMUTABLE => '\DateTimeImmutable', - Type::DECIMAL => 'string', - Type::INTEGER => 'int', - Type::OBJECT => 'string', - Type::SMALLINT => 'int', - Type::STRING => 'string', - Type::TEXT => 'string', - Type::BINARY => 'resource', - Type::BLOB => 'resource', - Type::FLOAT => 'float', - Type::GUID => 'string', + Types::ARRAY => 'array', + Types::SIMPLE_ARRAY => 'array', + Types::JSON => 'array', + Types::BIGINT => 'string', + Types::BOOLEAN => 'bool', + Types::DATETIME_IMMUTABLE => '\DateTimeImmutable', + Types::DATETIMETZ_IMMUTABLE => '\DateTimeImmutable', + Types::DATE_IMMUTABLE => '\DateTimeImmutable', + Types::TIME_IMMUTABLE => '\DateTimeImmutable', + Types::DECIMAL => 'string', + Types::INTEGER => 'int', + Types::OBJECT => 'string', + Types::SMALLINT => 'int', + Types::STRING => 'string', + Types::TEXT => 'string', + Types::BINARY => 'resource', + Types::BLOB => 'resource', + Types::FLOAT => 'float', + Types::GUID => 'string', ]; return $map[$type->getName()] ?? $type->getName(); diff --git a/tests/QueryFactory/FindObjectsFromRawSqlQueryFactoryTest.php b/tests/QueryFactory/FindObjectsFromRawSqlQueryFactoryTest.php index 6effb922..3f78feaa 100644 --- a/tests/QueryFactory/FindObjectsFromRawSqlQueryFactoryTest.php +++ b/tests/QueryFactory/FindObjectsFromRawSqlQueryFactoryTest.php @@ -10,14 +10,14 @@ class FindObjectsFromRawSqlQueryFactoryTest extends TDBMAbstractServiceTest { public function testGetSubQueryColumnDescriptors(): void { - $queryFactory = new FindObjectsFromRawSqlQueryFactory($this->tdbmService, $this->tdbmService->getConnection()->getSchemaManager()->createSchema(), 'country', 'SELECT country.* FROM country'); + $queryFactory = new FindObjectsFromRawSqlQueryFactory($this->tdbmService, $this->tdbmService->getConnection()->createSchemaManager()->createSchema(), 'country', 'SELECT country.* FROM country'); $this->expectException(TDBMException::class); $queryFactory->getSubQueryColumnDescriptors(); } public function testGetMagicSqlSubQuery(): void { - $queryFactory = new FindObjectsFromRawSqlQueryFactory($this->tdbmService, $this->tdbmService->getConnection()->getSchemaManager()->createSchema(), 'country', 'SELECT country.* FROM country'); + $queryFactory = new FindObjectsFromRawSqlQueryFactory($this->tdbmService, $this->tdbmService->getConnection()->createSchemaManager()->createSchema(), 'country', 'SELECT country.* FROM country'); $this->expectException(TDBMException::class); $queryFactory->getMagicSqlSubQuery(); } diff --git a/tests/TDBMAbstractServiceTest.php b/tests/TDBMAbstractServiceTest.php index 25ac2675..b2e92bad 100644 --- a/tests/TDBMAbstractServiceTest.php +++ b/tests/TDBMAbstractServiceTest.php @@ -32,6 +32,7 @@ use Doctrine\DBAL\Platforms\MySqlPlatform; use Doctrine\DBAL\Platforms\OraclePlatform; use Doctrine\DBAL\Types\Type; +use Doctrine\DBAL\Types\Types; use PHPUnit\Framework\TestCase; use TheCodingMachine\FluidSchema\FluidSchema; use TheCodingMachine\FluidSchema\TdbmFluidSchema; @@ -171,7 +172,7 @@ protected function getNamingStrategy() private static function initSchema(Connection $connection): void { - $fromSchema = $connection->getSchemaManager()->createSchema(); + $fromSchema = $connection->createSchemaManager()->createSchema(); $toSchema = clone $fromSchema; $db = new TdbmFluidSchema($toSchema, new \TheCodingMachine\FluidSchema\DefaultNamingStrategy($connection->getDatabasePlatform())); @@ -717,7 +718,7 @@ private static function initSchema(Connection $connection): void 'child_id' => 2 ]); - $timeType = Type::getType(Type::TIME_IMMUTABLE); + $timeType = Type::getType(Types::TIME_IMMUTABLE); self::insert($connection, 'tracks', [ 'album_id' => 1, @@ -829,7 +830,7 @@ protected static function isMariaDb(Connection $connection): bool if (!$connection->getDatabasePlatform() instanceof MySqlPlatform) { return false; } - $version = $connection->fetchColumn('SELECT VERSION()'); + $version = $connection->fetchOne('SELECT VERSION()'); return stripos($version, 'maria') !== false; } } diff --git a/tests/TDBMDaoGeneratorTest.php b/tests/TDBMDaoGeneratorTest.php index 3e985171..47226e7d 100644 --- a/tests/TDBMDaoGeneratorTest.php +++ b/tests/TDBMDaoGeneratorTest.php @@ -109,7 +109,7 @@ class TDBMDaoGeneratorTest extends TDBMAbstractServiceTest protected function setUp(): void { parent::setUp(); - $schemaManager = $this->tdbmService->getConnection()->getSchemaManager(); + $schemaManager = $this->tdbmService->getConnection()->createSchemaManager(); $schemaAnalyzer = new SchemaAnalyzer($schemaManager); $schemaLockFileDumper = new SchemaLockFileDumper($this->tdbmService->getConnection(), new ArrayCache(), Configuration::getDefaultLockFilePath()); $tdbmSchemaAnalyzer = new TDBMSchemaAnalyzer($this->tdbmService->getConnection(), new ArrayCache(), $schemaAnalyzer, $schemaLockFileDumper); @@ -126,7 +126,7 @@ public function testGetSchemaCrashWithoutLock() unlink($schemaFilePath); } //let's check we cannot call get schema without a lock file - $schemaAnalyzer = new SchemaAnalyzer(self::getConnection()->getSchemaManager(), new ArrayCache(), 'prefix_'); + $schemaAnalyzer = new SchemaAnalyzer(self::getConnection()->createSchemaManager(), new ArrayCache(), 'prefix_'); $schemaLockFileDumper = new SchemaLockFileDumper(self::getConnection(), new ArrayCache(), Configuration::getDefaultLockFilePath()); $tdbmSchemaAnalyzer = new TDBMSchemaAnalyzer(self::getConnection(), new ArrayCache(), $schemaAnalyzer, $schemaLockFileDumper); $this->expectException('TheCodingMachine\TDBM\TDBMException'); @@ -182,7 +182,7 @@ public function testGenerationException(): void { $configuration = new Configuration('UnknownVendor\\Dao', 'UnknownVendor\\Bean', self::getConnection(), $this->getNamingStrategy()); - $schemaManager = $this->tdbmService->getConnection()->getSchemaManager(); + $schemaManager = $this->tdbmService->getConnection()->createSchemaManager(); $schemaAnalyzer = new SchemaAnalyzer($schemaManager); $schemaLockFileDumper = new SchemaLockFileDumper($this->tdbmService->getConnection(), new ArrayCache(), Configuration::getDefaultLockFilePath()); $tdbmSchemaAnalyzer = new TDBMSchemaAnalyzer($this->tdbmService->getConnection(), new ArrayCache(), $schemaAnalyzer, $schemaLockFileDumper); diff --git a/tests/Utils/Annotation/AnnotationParserTest.php b/tests/Utils/Annotation/AnnotationParserTest.php index 35428302..eaf322b9 100644 --- a/tests/Utils/Annotation/AnnotationParserTest.php +++ b/tests/Utils/Annotation/AnnotationParserTest.php @@ -8,6 +8,7 @@ use Doctrine\DBAL\Schema\Column; use Doctrine\DBAL\Schema\Table; use Doctrine\DBAL\Types\Type; +use Doctrine\DBAL\Types\Types; use PHPUnit\Framework\TestCase; use TheCodingMachine\TDBM\TDBMException; @@ -19,7 +20,7 @@ public function testParse(): void 'UUID' => UUID::class, 'Autoincrement' => Autoincrement::class ]); - $column = new Column('foo', Type::getType(Type::STRING), ['comment'=>'@UUID']); + $column = new Column('foo', Type::getType(Types::STRING), ['comment'=>'@UUID']); $table = new Table('bar'); $annotations = $parser->getColumnAnnotations($column, $table); @@ -40,7 +41,7 @@ public function testParseMultiLine(): void 'UUID' => UUID::class, 'Autoincrement' => Autoincrement::class ]); - $column = new Column('foo', Type::getType(Type::STRING), ['comment'=>"\n@UUID"]); + $column = new Column('foo', Type::getType(Types::STRING), ['comment'=>"\n@UUID"]); $table = new Table('bar'); $annotations = $parser->getColumnAnnotations($column, $table); @@ -54,7 +55,7 @@ public function testParseMultiAnnotations(): void 'UUID' => UUID::class, 'Autoincrement' => Autoincrement::class ]); - $column = new Column('foo', Type::getType(Type::STRING), ['comment'=>"\n@UUID\n@Autoincrement"]); + $column = new Column('foo', Type::getType(Types::STRING), ['comment'=>"\n@UUID\n@Autoincrement"]); $table = new Table('bar'); $annotations = $parser->getColumnAnnotations($column, $table); @@ -68,7 +69,7 @@ public function testException(): void 'UUID' => UUID::class, 'Autoincrement' => Autoincrement::class ]); - $table = new Table('bar', [], [], [], 0, ['comment'=>"@UUID\n@UUID"]); + $table = new Table('bar', [], [], [], [], ['comment'=>"@UUID\n@UUID"]); $annotations = $parser->getTableAnnotations($table); $this->expectException(TDBMException::class); @@ -81,7 +82,7 @@ public function testParseParameters(): void 'UUID' => UUID::class, 'Autoincrement' => Autoincrement::class ]); - $table = new Table('bar', [], [], [], 0, ['comment'=>'@UUID("v4")']); + $table = new Table('bar', [], [], [], [], ['comment'=>'@UUID("v4")']); $annotations = $parser->getTableAnnotations($table); $annotation = $annotations->findAnnotation(UUID::class); @@ -94,7 +95,7 @@ public function testParseOldUUID(): void 'UUID' => UUID::class, ]); // First generation UUID did not use the Doctrine syntax. - $table = new Table('bar', [], [], [], 0, ['comment'=>'@UUID v4']); + $table = new Table('bar', [], [], [], [], ['comment'=>'@UUID v4']); $annotations = $parser->getTableAnnotations($table); $annotation = $annotations->findAnnotation(UUID::class); diff --git a/tests/Utils/BeanDescriptorTest.php b/tests/Utils/BeanDescriptorTest.php index 73c1f94a..bf4265f1 100644 --- a/tests/Utils/BeanDescriptorTest.php +++ b/tests/Utils/BeanDescriptorTest.php @@ -27,6 +27,7 @@ use Doctrine\DBAL\Schema\Schema; use Doctrine\DBAL\Schema\Table; use Doctrine\DBAL\Types\Type; +use Doctrine\DBAL\Types\Types; use Mouf\Database\SchemaAnalyzer\SchemaAnalyzer; use TheCodingMachine\TDBM\Configuration; use TheCodingMachine\TDBM\SchemaLockFileDumper; @@ -110,7 +111,7 @@ public function testTableWithNoPrimaryKey(): void public function testTableWithLazyLoadingColumn(): void { $table = $this->schema->createTable('lazy_loading'); - $table->addColumn('lazyLoading', Type::BOOLEAN); + $table->addColumn('lazyLoading', Types::BOOLEAN); $table->setPrimaryKey(['lazyLoading']); $sqlStmts = $this->schema->getMigrateFromSql($this->getConnection()->getSchemaManager()->createSchema(), $this->getConnection()->getDatabasePlatform()); diff --git a/tests/Utils/DefaultNamingStrategyTest.php b/tests/Utils/DefaultNamingStrategyTest.php index 20318a92..bfdbc851 100644 --- a/tests/Utils/DefaultNamingStrategyTest.php +++ b/tests/Utils/DefaultNamingStrategyTest.php @@ -131,7 +131,7 @@ public function testExceptions(): void public function testBeanAnnotation(): void { - $table = new Table('chevaux', [], [], [], 0, ['comment'=>'@Bean(name="Cheval")']); + $table = new Table('chevaux', [], [], [], [], ['comment'=>'@Bean(name="Cheval")']); $strategy = $this->getDefaultNamingStrategyWithStubTables([$table]); $this->assertSame('ChevalDao', $strategy->getDaoClassName('chevaux')); } diff --git a/vendor-bin/couscous/composer.lock b/vendor-bin/couscous/composer.lock index 85f90362..43476638 100644 --- a/vendor-bin/couscous/composer.lock +++ b/vendor-bin/couscous/composer.lock @@ -6,75 +6,40 @@ ], "content-hash": "9f4f0fa2fddb80c7d2ae44eba0a56d21", "packages": [ - { - "name": "container-interop/container-interop", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/container-interop/container-interop.git", - "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8", - "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8", - "shasum": "" - }, - "require": { - "psr/container": "^1.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Interop\\Container\\": "src/Interop/Container/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", - "homepage": "https://github.com/container-interop/container-interop", - "support": { - "issues": "https://github.com/container-interop/container-interop/issues", - "source": "https://github.com/container-interop/container-interop/tree/master" - }, - "abandoned": "psr/container", - "time": "2017-02-14T19:40:03+00:00" - }, { "name": "couscous/couscous", - "version": "1.8.0", + "version": "1.10.0", "source": { "type": "git", "url": "https://github.com/CouscousPHP/Couscous.git", - "reference": "5fd8e84a5255748800eadac172a10d508856af0e" + "reference": "1b0731fb254da88696e591578be18abce43e812e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CouscousPHP/Couscous/zipball/5fd8e84a5255748800eadac172a10d508856af0e", - "reference": "5fd8e84a5255748800eadac172a10d508856af0e", + "url": "https://api.github.com/repos/CouscousPHP/Couscous/zipball/1b0731fb254da88696e591578be18abce43e812e", + "reference": "1b0731fb254da88696e591578be18abce43e812e", "shasum": "" }, "require": { - "erusev/parsedown": "~1.7.4", - "erusev/parsedown-extra": "~0.8", - "mnapoli/front-yaml": "~1.5", + "erusev/parsedown": "^1.7.4", + "erusev/parsedown-extra": "^0.8.1", + "mnapoli/front-yaml": "^1.5", "padraic/phar-updater": "^1.0", - "phine/phar": "~1.0", - "php": ">=7.1", - "php-di/php-di": "^5.2.1", - "psr/log": "~1.0", - "symfony/console": "~3.0|~4.0|~5.0", - "symfony/filesystem": "~3.0|~4.0|~5.0", - "symfony/finder": "~3.0|~4.0|~5.0", - "symfony/process": "~3.0|~4.0|~5.0", - "symfony/yaml": "~3.0|~4.0|~5.0", - "twig/twig": "~1.10" + "phine/phar": "^1.0", + "php": ">=7.4", + "php-di/php-di": "^6.0", + "psr/log": "^1.0", + "symfony/console": "~4.0|~5.0|~6.0", + "symfony/filesystem": "~4.0|~5.0|~6.0", + "symfony/finder": "~4.0|~5.0|~6.0", + "symfony/process": "~4.0|~5.0|~6.0", + "symfony/yaml": "~4.0|~5.0|~6.0", + "twig/twig": "^1.44" }, "require-dev": { - "phpunit/phpunit": "~7.5", - "squizlabs/php_codesniffer": "^3.3" + "phpunit/phpunit": "^8.5", + "squizlabs/php_codesniffer": "^3.3", + "vimeo/psalm": "^3.16" }, "bin": [ "bin/couscous" @@ -89,9 +54,10 @@ "license": [ "MIT" ], + "description": "Documentation website generator", "support": { "issues": "https://github.com/CouscousPHP/Couscous/issues", - "source": "https://github.com/CouscousPHP/Couscous/tree/1.8.0" + "source": "https://github.com/CouscousPHP/Couscous/tree/1.10.0" }, "funding": [ { @@ -99,7 +65,7 @@ "type": "github" } ], - "time": "2020-09-18T09:22:35+00:00" + "time": "2023-02-21T10:54:36+00:00" }, { "name": "erusev/parsedown", @@ -202,6 +168,67 @@ }, "time": "2019-12-30T23:20:37+00:00" }, + { + "name": "laravel/serializable-closure", + "version": "v1.3.7", + "source": { + "type": "git", + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "4f48ade902b94323ca3be7646db16209ec76be3d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/4f48ade902b94323ca3be7646db16209ec76be3d", + "reference": "4f48ade902b94323ca3be7646db16209ec76be3d", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "illuminate/support": "^8.0|^9.0|^10.0|^11.0", + "nesbot/carbon": "^2.61|^3.0", + "pestphp/pest": "^1.21.3", + "phpstan/phpstan": "^1.8.2", + "symfony/var-dumper": "^5.4.11|^6.2.0|^7.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\SerializableClosure\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "nuno@laravel.com" + } + ], + "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", + "keywords": [ + "closure", + "laravel", + "serializable" + ], + "support": { + "issues": "https://github.com/laravel/serializable-closure/issues", + "source": "https://github.com/laravel/serializable-closure" + }, + "time": "2024-11-14T18:34:49+00:00" + }, { "name": "mnapoli/front-yaml", "version": "1.8.0", @@ -268,12 +295,12 @@ } }, "autoload": { - "psr-4": { - "Humbug\\": "src/Humbug/" - }, "files": [ "src/function.php" - ] + ], + "psr-4": { + "Humbug\\": "src/Humbug/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -364,12 +391,12 @@ "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/kherge-abandoned/lib-exception.git", + "url": "https://github.com/kherge-archive/lib-exception.git", "reference": "150c6b6090b2ebc53c60e87cb20c7f1287b7b68a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/kherge-abandoned/lib-exception/zipball/150c6b6090b2ebc53c60e87cb20c7f1287b7b68a", + "url": "https://api.github.com/repos/kherge-archive/lib-exception/zipball/150c6b6090b2ebc53c60e87cb20c7f1287b7b68a", "reference": "150c6b6090b2ebc53c60e87cb20c7f1287b7b68a", "shasum": "" }, @@ -408,7 +435,7 @@ ], "support": { "issues": "https://github.com/phine/lib-exception/issues", - "source": "https://github.com/kherge-abandoned/lib-exception/tree/1.0.0" + "source": "https://github.com/kherge-archive/lib-exception/tree/1.0.0" }, "abandoned": true, "time": "2013-08-27T17:43:25+00:00" @@ -418,12 +445,12 @@ "version": "2.0.1", "source": { "type": "git", - "url": "https://github.com/kherge-abandoned/lib-observer.git", + "url": "https://github.com/kherge-archive/lib-observer.git", "reference": "a3ed2f81c79a056ba1fc4949e03c3e1601665106" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/kherge-abandoned/lib-observer/zipball/a3ed2f81c79a056ba1fc4949e03c3e1601665106", + "url": "https://api.github.com/repos/kherge-archive/lib-observer/zipball/a3ed2f81c79a056ba1fc4949e03c3e1601665106", "reference": "a3ed2f81c79a056ba1fc4949e03c3e1601665106", "shasum": "" }, @@ -464,7 +491,7 @@ ], "support": { "issues": "https://github.com/phine/lib-observer/issues", - "source": "https://github.com/kherge-abandoned/lib-observer/tree/2.0.1" + "source": "https://github.com/kherge-archive/lib-observer/tree/2.0.1" }, "abandoned": true, "time": "2013-12-17T23:50:08+00:00" @@ -531,12 +558,12 @@ "version": "1.0.2", "source": { "type": "git", - "url": "https://github.com/kherge-abandoned/lib-phar.git", + "url": "https://github.com/kherge-archive/lib-phar.git", "reference": "6ba06dcbd094926ebc3be75cbb2067b530c743f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/kherge-abandoned/lib-phar/zipball/6ba06dcbd094926ebc3be75cbb2067b530c743f5", + "url": "https://api.github.com/repos/kherge-archive/lib-phar/zipball/6ba06dcbd094926ebc3be75cbb2067b530c743f5", "reference": "6ba06dcbd094926ebc3be75cbb2067b530c743f5", "shasum": "" }, @@ -582,31 +609,33 @@ ], "support": { "issues": "https://github.com/phine/lib-phar/issues", - "source": "https://github.com/kherge-abandoned/lib-phar/tree/1.0.2" + "source": "https://github.com/kherge-archive/lib-phar/tree/1.0.2" }, "abandoned": "box-project/box2", "time": "2013-12-18T00:12:41+00:00" }, { "name": "php-di/invoker", - "version": "1.3.3", + "version": "2.3.6", "source": { "type": "git", "url": "https://github.com/PHP-DI/Invoker.git", - "reference": "1f4ca63b9abc66109e53b255e465d0ddb5c2e3f7" + "reference": "59f15608528d8a8838d69b422a919fd6b16aa576" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-DI/Invoker/zipball/1f4ca63b9abc66109e53b255e465d0ddb5c2e3f7", - "reference": "1f4ca63b9abc66109e53b255e465d0ddb5c2e3f7", + "url": "https://api.github.com/repos/PHP-DI/Invoker/zipball/59f15608528d8a8838d69b422a919fd6b16aa576", + "reference": "59f15608528d8a8838d69b422a919fd6b16aa576", "shasum": "" }, "require": { - "container-interop/container-interop": "~1.1" + "php": ">=7.3", + "psr/container": "^1.0|^2.0" }, "require-dev": { "athletic/athletic": "~0.1.8", - "phpunit/phpunit": "~4.5" + "mnapoli/hard-mode": "~0.3.0", + "phpunit/phpunit": "^9.0" }, "type": "library", "autoload": { @@ -630,76 +659,91 @@ ], "support": { "issues": "https://github.com/PHP-DI/Invoker/issues", - "source": "https://github.com/PHP-DI/Invoker/tree/master" + "source": "https://github.com/PHP-DI/Invoker/tree/2.3.6" }, - "time": "2016-07-14T13:09:58+00:00" + "funding": [ + { + "url": "https://github.com/mnapoli", + "type": "github" + } + ], + "time": "2025-01-17T12:49:27+00:00" }, { "name": "php-di/php-di", - "version": "5.4.6", + "version": "6.4.0", "source": { "type": "git", "url": "https://github.com/PHP-DI/PHP-DI.git", - "reference": "3f9255659595f3e289f473778bb6c51aa72abbbd" + "reference": "ae0f1b3b03d8b29dff81747063cbfd6276246cc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-DI/PHP-DI/zipball/3f9255659595f3e289f473778bb6c51aa72abbbd", - "reference": "3f9255659595f3e289f473778bb6c51aa72abbbd", + "url": "https://api.github.com/repos/PHP-DI/PHP-DI/zipball/ae0f1b3b03d8b29dff81747063cbfd6276246cc4", + "reference": "ae0f1b3b03d8b29dff81747063cbfd6276246cc4", "shasum": "" }, "require": { - "container-interop/container-interop": "~1.2", - "php": ">=5.5.0", - "php-di/invoker": "^1.3.2", + "laravel/serializable-closure": "^1.0", + "php": ">=7.4.0", + "php-di/invoker": "^2.0", "php-di/phpdoc-reader": "^2.0.1", - "psr/container": "~1.0" + "psr/container": "^1.0" }, "provide": { - "container-interop/container-interop-implementation": "^1.0", "psr/container-implementation": "^1.0" }, - "replace": { - "mnapoli/php-di": "*" - }, "require-dev": { - "doctrine/annotations": "~1.2", - "doctrine/cache": "~1.4", - "mnapoli/phpunit-easymock": "~0.2.0", - "ocramius/proxy-manager": "~1.0|~2.0", - "phpbench/phpbench": "@dev", - "phpunit/phpunit": "~4.5" + "doctrine/annotations": "~1.10", + "friendsofphp/php-cs-fixer": "^2.4", + "mnapoli/phpunit-easymock": "^1.2", + "ocramius/proxy-manager": "^2.11.2", + "phpstan/phpstan": "^0.12", + "phpunit/phpunit": "^9.5" }, "suggest": { "doctrine/annotations": "Install it if you want to use annotations (version ~1.2)", - "doctrine/cache": "Install it if you want to use the cache (version ~1.4)", - "ocramius/proxy-manager": "Install it if you want to use lazy injection (version ~1.0 or ~2.0)" + "ocramius/proxy-manager": "Install it if you want to use lazy injection (version ~2.0)" }, "type": "library", "autoload": { - "psr-4": { - "DI\\": "src/DI/" - }, "files": [ - "src/DI/functions.php" - ] + "src/functions.php" + ], + "psr-4": { + "DI\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "description": "The dependency injection container for humans", - "homepage": "http://php-di.org/", + "homepage": "https://php-di.org/", "keywords": [ + "PSR-11", "container", + "container-interop", "dependency injection", - "di" + "di", + "ioc", + "psr11" ], "support": { "issues": "https://github.com/PHP-DI/PHP-DI/issues", - "source": "https://github.com/PHP-DI/PHP-DI/tree/5.4" + "source": "https://github.com/PHP-DI/PHP-DI/tree/6.4.0" }, - "time": "2017-12-03T08:20:27+00:00" + "funding": [ + { + "url": "https://github.com/mnapoli", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/php-di/php-di", + "type": "tidelift" + } + ], + "time": "2022-04-09T16:46:38+00:00" }, { "name": "php-di/phpdoc-reader", @@ -843,52 +887,47 @@ }, { "name": "symfony/console", - "version": "v5.3.10", + "version": "v6.4.17", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "d4e409d9fbcfbf71af0e5a940abb7b0b4bad0bd3" + "reference": "799445db3f15768ecc382ac5699e6da0520a0a04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/d4e409d9fbcfbf71af0e5a940abb7b0b4bad0bd3", - "reference": "d4e409d9fbcfbf71af0e5a940abb7b0b4bad0bd3", + "url": "https://api.github.com/repos/symfony/console/zipball/799445db3f15768ecc382ac5699e6da0520a0a04", + "reference": "799445db3f15768ecc382ac5699e6da0520a0a04", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2", - "symfony/string": "^5.1" + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^5.4|^6.0|^7.0" }, "conflict": { - "psr/log": ">=3", - "symfony/dependency-injection": "<4.4", - "symfony/dotenv": "<5.1", - "symfony/event-dispatcher": "<4.4", - "symfony/lock": "<4.4", - "symfony/process": "<4.4" + "symfony/dependency-injection": "<5.4", + "symfony/dotenv": "<5.4", + "symfony/event-dispatcher": "<5.4", + "symfony/lock": "<5.4", + "symfony/process": "<5.4" }, "provide": { - "psr/log-implementation": "1.0|2.0" + "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { - "psr/log": "^1|^2", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", - "symfony/var-dumper": "^4.4|^5.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" + "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" }, "type": "library", "autoload": { @@ -917,12 +956,12 @@ "homepage": "https://symfony.com", "keywords": [ "cli", - "command line", + "command-line", "console", "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.3.10" + "source": "https://github.com/symfony/console/tree/v6.4.17" }, "funding": [ { @@ -938,33 +977,33 @@ "type": "tidelift" } ], - "time": "2021-10-26T09:30:15+00:00" + "time": "2024-12-07T12:07:30+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v2.4.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627" + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "2.4-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-dev" } }, "autoload": { @@ -989,7 +1028,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" }, "funding": [ { @@ -1005,26 +1044,29 @@ "type": "tidelift" } ], - "time": "2021-03-23T23:28:01+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/filesystem", - "version": "v5.3.4", + "version": "v6.4.13", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "343f4fe324383ca46792cae728a3b6e2f708fb32" + "reference": "4856c9cf585d5a0313d8d35afd681a526f038dd3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/343f4fe324383ca46792cae728a3b6e2f708fb32", - "reference": "343f4fe324383ca46792cae728a3b6e2f708fb32", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/4856c9cf585d5a0313d8d35afd681a526f038dd3", + "reference": "4856c9cf585d5a0313d8d35afd681a526f038dd3", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.1", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16" + "symfony/polyfill-mbstring": "~1.8" + }, + "require-dev": { + "symfony/process": "^5.4|^6.4|^7.0" }, "type": "library", "autoload": { @@ -1052,7 +1094,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.3.4" + "source": "https://github.com/symfony/filesystem/tree/v6.4.13" }, "funding": [ { @@ -1068,25 +1110,27 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:40:44+00:00" + "time": "2024-10-25T15:07:50+00:00" }, { "name": "symfony/finder", - "version": "v5.3.7", + "version": "v6.4.17", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "a10000ada1e600d109a6c7632e9ac42e8bf2fb93" + "reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/a10000ada1e600d109a6c7632e9ac42e8bf2fb93", - "reference": "a10000ada1e600d109a6c7632e9ac42e8bf2fb93", + "url": "https://api.github.com/repos/symfony/finder/zipball/1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7", + "reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1" + }, + "require-dev": { + "symfony/filesystem": "^6.0|^7.0" }, "type": "library", "autoload": { @@ -1114,7 +1158,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.3.7" + "source": "https://github.com/symfony/finder/tree/v6.4.17" }, "funding": [ { @@ -1130,45 +1174,45 @@ "type": "tidelift" } ], - "time": "2021-08-04T21:20:46+00:00" + "time": "2024-12-29T13:51:37+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.23.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" + }, + "provide": { + "ext-ctype": "*" }, "suggest": { "ext-ctype": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1193,7 +1237,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0" }, "funding": [ { @@ -1209,45 +1253,42 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.23.1", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "16880ba9c5ebe3642d1995ab866db29270b36535" + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/16880ba9c5ebe3642d1995ab866db29270b36535", - "reference": "16880ba9c5ebe3642d1995ab866db29270b36535", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1274,7 +1315,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.1" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" }, "funding": [ { @@ -1290,45 +1331,42 @@ "type": "tidelift" } ], - "time": "2021-05-27T12:26:48+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.23.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + "reference": "3833d7255cc303546435cb650316bff708a1c75c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -1358,7 +1396,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" }, "funding": [ { @@ -1374,214 +1412,51 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.23.1", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" + }, + "provide": { + "ext-mbstring": "*" }, "suggest": { "ext-mbstring": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-05-27T12:26:48+00:00" - }, - { - "name": "symfony/polyfill-php73", - "version": "v1.23.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010", - "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, "files": [ "bootstrap.php" ], - "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 7.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.23.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be", - "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] + "Symfony\\Polyfill\\Mbstring\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, { "name": "Nicolas Grekas", "email": "p@tchwork.com" @@ -1591,16 +1466,17 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "description": "Symfony polyfill for the Mbstring extension", "homepage": "https://symfony.com", "keywords": [ "compatibility", + "mbstring", "polyfill", "portable", "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" }, "funding": [ { @@ -1616,25 +1492,24 @@ "type": "tidelift" } ], - "time": "2021-07-28T13:41:28+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/process", - "version": "v5.3.7", + "version": "v6.4.15", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "38f26c7d6ed535217ea393e05634cb0b244a1967" + "reference": "3cb242f059c14ae08591c5c4087d1fe443564392" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/38f26c7d6ed535217ea393e05634cb0b244a1967", - "reference": "38f26c7d6ed535217ea393e05634cb0b244a1967", + "url": "https://api.github.com/repos/symfony/process/zipball/3cb242f059c14ae08591c5c4087d1fe443564392", + "reference": "3cb242f059c14ae08591c5c4087d1fe443564392", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1" }, "type": "library", "autoload": { @@ -1662,7 +1537,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v5.3.7" + "source": "https://github.com/symfony/process/tree/v6.4.15" }, "funding": [ { @@ -1678,43 +1553,47 @@ "type": "tidelift" } ], - "time": "2021-08-04T21:20:46+00:00" + "time": "2024-11-06T14:19:14+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.4.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb" + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", - "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/container": "^1.1" + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" }, - "suggest": { - "symfony/service-implementation": "" + "conflict": { + "ext-psr": "<1.1|>=2" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "2.4-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-dev" } }, "autoload": { "psr-4": { "Symfony\\Contracts\\Service\\": "" - } + }, + "exclude-from-classmap": [ + "/Test/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1741,7 +1620,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.5.1" }, "funding": [ { @@ -1757,44 +1636,48 @@ "type": "tidelift" } ], - "time": "2021-04-01T10:43:52+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/string", - "version": "v5.3.10", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c" + "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c", - "reference": "d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c", + "url": "https://api.github.com/repos/symfony/string/zipball/446e0d146f991dde3e73f45f2c97a9faad773c82", + "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-grapheme": "~1.0", "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "~1.15" + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0" + "symfony/emoji": "^7.1", + "symfony/error-handler": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.4|^7.0" }, "type": "library", "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, "files": [ "Resources/functions.php" ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, "exclude-from-classmap": [ "/Tests/" ] @@ -1824,7 +1707,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.3.10" + "source": "https://github.com/symfony/string/tree/v7.2.0" }, "funding": [ { @@ -1840,32 +1723,32 @@ "type": "tidelift" } ], - "time": "2021-10-27T18:21:46+00:00" + "time": "2024-11-13T13:31:26+00:00" }, { "name": "symfony/yaml", - "version": "v5.3.6", + "version": "v5.4.45", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "4500fe63dc9c6ffc32d3b1cb0448c329f9c814b7" + "reference": "a454d47278cc16a5db371fe73ae66a78a633371e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/4500fe63dc9c6ffc32d3b1cb0448c329f9c814b7", - "reference": "4500fe63dc9c6ffc32d3b1cb0448c329f9c814b7", + "url": "https://api.github.com/repos/symfony/yaml/zipball/a454d47278cc16a5db371fe73ae66a78a633371e", + "reference": "a454d47278cc16a5db371fe73ae66a78a633371e", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-ctype": "~1.8" + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<4.4" + "symfony/console": "<5.3" }, "require-dev": { - "symfony/console": "^4.4|^5.0" + "symfony/console": "^5.3|^6.0" }, "suggest": { "symfony/console": "For validating YAML files using the lint command" @@ -1899,7 +1782,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v5.3.6" + "source": "https://github.com/symfony/yaml/tree/v5.4.45" }, "funding": [ { @@ -1915,20 +1798,20 @@ "type": "tidelift" } ], - "time": "2021-07-29T06:20:01+00:00" + "time": "2024-09-25T14:11:13+00:00" }, { "name": "twig/twig", - "version": "v1.44.5", + "version": "v1.44.8", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "dd4353357c5a116322e92a00d16043a31881a81e" + "reference": "b1f009c449e435a0384814e67205d9190a4d050e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/dd4353357c5a116322e92a00d16043a31881a81e", - "reference": "dd4353357c5a116322e92a00d16043a31881a81e", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/b1f009c449e435a0384814e67205d9190a4d050e", + "reference": "b1f009c449e435a0384814e67205d9190a4d050e", "shasum": "" }, "require": { @@ -1981,7 +1864,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v1.44.5" + "source": "https://github.com/twigphp/Twig/tree/v1.44.8" }, "funding": [ { @@ -1993,7 +1876,7 @@ "type": "tidelift" } ], - "time": "2021-09-17T08:35:19+00:00" + "time": "2024-09-09T17:17:16+00:00" } ], "packages-dev": [], @@ -2004,5 +1887,5 @@ "prefer-lowest": false, "platform": [], "platform-dev": [], - "plugin-api-version": "2.0.0" + "plugin-api-version": "2.3.0" } diff --git a/vendor-bin/require-checker/composer.lock b/vendor-bin/require-checker/composer.lock index 133fc648..7e6ad710 100644 --- a/vendor-bin/require-checker/composer.lock +++ b/vendor-bin/require-checker/composer.lock @@ -8,16 +8,16 @@ "packages": [ { "name": "maglnet/composer-require-checker", - "version": "3.5.1", + "version": "3.8.0", "source": { "type": "git", "url": "https://github.com/maglnet/ComposerRequireChecker.git", - "reference": "f1a5905265b9464d57a7e26ae80b05b7c1411830" + "reference": "537138b833ab0f9ad72b667a72bece2a765e88ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maglnet/ComposerRequireChecker/zipball/f1a5905265b9464d57a7e26ae80b05b7c1411830", - "reference": "f1a5905265b9464d57a7e26ae80b05b7c1411830", + "url": "https://api.github.com/repos/maglnet/ComposerRequireChecker/zipball/537138b833ab0f9ad72b667a72bece2a765e88ab", + "reference": "537138b833ab0f9ad72b667a72bece2a765e88ab", "shasum": "" }, "require": { @@ -26,7 +26,7 @@ "ext-phar": "*", "nikic/php-parser": "^4.13.0", "php": "^7.4 || ^8.0", - "symfony/console": "^5.3.10", + "symfony/console": "^5.4.0", "webmozart/assert": "^1.9.1", "webmozart/glob": "^4.4.0" }, @@ -35,9 +35,9 @@ "ext-zend-opcache": "*", "mikey179/vfsstream": "^1.6.10", "phing/phing": "^2.17.0", - "phpstan/phpstan": "^1.1.1", + "phpstan/phpstan": "^1.2.0", "phpunit/phpunit": "^9.5.10", - "vimeo/psalm": "^4.12.0" + "vimeo/psalm": "^4.14.0" }, "bin": [ "bin/composer-require-checker" @@ -82,31 +82,31 @@ ], "support": { "issues": "https://github.com/maglnet/ComposerRequireChecker/issues", - "source": "https://github.com/maglnet/ComposerRequireChecker/tree/3.5.1" + "source": "https://github.com/maglnet/ComposerRequireChecker/tree/3.8.0" }, - "time": "2021-11-10T12:04:31+00:00" + "time": "2021-12-07T14:25:47+00:00" }, { "name": "nikic/php-parser", - "version": "v4.13.1", + "version": "v4.19.4", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "63a79e8daa781cac14e5195e63ed8ae231dd10fd" + "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/63a79e8daa781cac14e5195e63ed8ae231dd10fd", - "reference": "63a79e8daa781cac14e5195e63ed8ae231dd10fd", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/715f4d25e225bc47b293a8b997fe6ce99bf987d2", + "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": ">=7.0" + "php": ">=7.1" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, "bin": [ "bin/php-parse" @@ -138,28 +138,33 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.4" }, - "time": "2021-11-03T20:52:16+00:00" + "time": "2024-09-29T15:01:53+00:00" }, { "name": "psr/container", - "version": "1.1.2", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", - "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", "shasum": "" }, "require": { "php": ">=7.4.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { "psr-4": { "Psr\\Container\\": "src/" @@ -186,32 +191,32 @@ ], "support": { "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.2" + "source": "https://github.com/php-fig/container/tree/2.0.2" }, - "time": "2021-11-05T16:50:12+00:00" + "time": "2021-11-05T16:47:00+00:00" }, { "name": "symfony/console", - "version": "v5.3.10", + "version": "v5.4.47", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "d4e409d9fbcfbf71af0e5a940abb7b0b4bad0bd3" + "reference": "c4ba980ca61a9eb18ee6bcc73f28e475852bb1ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/d4e409d9fbcfbf71af0e5a940abb7b0b4bad0bd3", - "reference": "d4e409d9fbcfbf71af0e5a940abb7b0b4bad0bd3", + "url": "https://api.github.com/repos/symfony/console/zipball/c4ba980ca61a9eb18ee6bcc73f28e475852bb1ed", + "reference": "c4ba980ca61a9eb18ee6bcc73f28e475852bb1ed", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", + "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2", - "symfony/string": "^5.1" + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" }, "conflict": { "psr/log": ">=3", @@ -226,12 +231,12 @@ }, "require-dev": { "psr/log": "^1|^2", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", - "symfony/var-dumper": "^4.4|^5.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { "psr/log": "For using the console logger", @@ -266,12 +271,12 @@ "homepage": "https://symfony.com", "keywords": [ "cli", - "command line", + "command-line", "console", "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.3.10" + "source": "https://github.com/symfony/console/tree/v5.4.47" }, "funding": [ { @@ -287,33 +292,33 @@ "type": "tidelift" } ], - "time": "2021-10-26T09:30:15+00:00" + "time": "2024-11-06T11:30:55+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v2.4.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627" + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "2.4-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-dev" } }, "autoload": { @@ -338,7 +343,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" }, "funding": [ { @@ -354,45 +359,45 @@ "type": "tidelift" } ], - "time": "2021-03-23T23:28:01+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.23.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" + }, + "provide": { + "ext-ctype": "*" }, "suggest": { "ext-ctype": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -417,7 +422,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0" }, "funding": [ { @@ -433,45 +438,42 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.23.1", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "16880ba9c5ebe3642d1995ab866db29270b36535" + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/16880ba9c5ebe3642d1995ab866db29270b36535", - "reference": "16880ba9c5ebe3642d1995ab866db29270b36535", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -498,7 +500,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.1" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" }, "funding": [ { @@ -514,45 +516,42 @@ "type": "tidelift" } ], - "time": "2021-05-27T12:26:48+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.23.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + "reference": "3833d7255cc303546435cb650316bff708a1c75c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -582,7 +581,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" }, "funding": [ { @@ -598,45 +597,45 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.23.1", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" + }, + "provide": { + "ext-mbstring": "*" }, "suggest": { "ext-mbstring": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -662,7 +661,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" }, "funding": [ { @@ -678,42 +677,39 @@ "type": "tidelift" } ], - "time": "2021-05-27T12:26:48+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.23.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010" + "reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010", - "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/0f68c03565dcaaf25a890667542e8bd75fe7e5bb", + "reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -741,7 +737,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.31.0" }, "funding": [ { @@ -757,42 +753,39 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.23.1", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be" + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be", - "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -824,7 +817,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" }, "funding": [ { @@ -840,43 +833,47 @@ "type": "tidelift" } ], - "time": "2021-07-28T13:41:28+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.4.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb" + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", - "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/container": "^1.1" + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" }, - "suggest": { - "symfony/service-implementation": "" + "conflict": { + "ext-psr": "<1.1|>=2" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "2.4-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-dev" } }, "autoload": { "psr-4": { "Symfony\\Contracts\\Service\\": "" - } + }, + "exclude-from-classmap": [ + "/Test/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -903,7 +900,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.5.1" }, "funding": [ { @@ -919,44 +916,47 @@ "type": "tidelift" } ], - "time": "2021-04-01T10:43:52+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/string", - "version": "v5.3.10", + "version": "v6.4.15", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c" + "reference": "73a5e66ea2e1677c98d4449177c5a9cf9d8b4c6f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c", - "reference": "d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c", + "url": "https://api.github.com/repos/symfony/string/zipball/73a5e66ea2e1677c98d4449177c5a9cf9d8b4c6f", + "reference": "73a5e66ea2e1677c98d4449177c5a9cf9d8b4c6f", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.1", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-grapheme": "~1.0", "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "~1.15" + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0" + "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/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, "files": [ "Resources/functions.php" ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, "exclude-from-classmap": [ "/Tests/" ] @@ -986,7 +986,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.3.10" + "source": "https://github.com/symfony/string/tree/v6.4.15" }, "funding": [ { @@ -1002,25 +1002,25 @@ "type": "tidelift" } ], - "time": "2021-10-27T18:21:46+00:00" + "time": "2024-11-13T13:31:12+00:00" }, { "name": "webmozart/assert", - "version": "1.10.0", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" + "ext-ctype": "*", + "php": "^7.2 || ^8.0" }, "conflict": { "phpstan/phpstan": "<0.12.20", @@ -1058,27 +1058,26 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.10.0" + "source": "https://github.com/webmozarts/assert/tree/1.11.0" }, - "time": "2021-03-09T10:59:23+00:00" + "time": "2022-06-03T18:03:27+00:00" }, { "name": "webmozart/glob", - "version": "4.4.0", + "version": "4.7.0", "source": { "type": "git", "url": "https://github.com/webmozarts/glob.git", - "reference": "539b5dbc10021d3f9242e7a9e9b6b37843179e83" + "reference": "8a2842112d6916e61e0e15e316465b611f3abc17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/glob/zipball/539b5dbc10021d3f9242e7a9e9b6b37843179e83", - "reference": "539b5dbc10021d3f9242e7a9e9b6b37843179e83", + "url": "https://api.github.com/repos/webmozarts/glob/zipball/8a2842112d6916e61e0e15e316465b611f3abc17", + "reference": "8a2842112d6916e61e0e15e316465b611f3abc17", "shasum": "" }, "require": { - "php": "^7.3 || ^8.0.0", - "webmozart/path-util": "^2.2" + "php": "^7.3 || ^8.0.0" }, "require-dev": { "phpunit/phpunit": "^9.5", @@ -1108,60 +1107,9 @@ "description": "A PHP implementation of Ant's glob.", "support": { "issues": "https://github.com/webmozarts/glob/issues", - "source": "https://github.com/webmozarts/glob/tree/4.4.0" - }, - "time": "2021-10-07T16:13:08+00:00" - }, - { - "name": "webmozart/path-util", - "version": "2.3.0", - "source": { - "type": "git", - "url": "https://github.com/webmozart/path-util.git", - "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725", - "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "webmozart/assert": "~1.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\PathUtil\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.", - "support": { - "issues": "https://github.com/webmozart/path-util/issues", - "source": "https://github.com/webmozart/path-util/tree/2.3.0" + "source": "https://github.com/webmozarts/glob/tree/4.7.0" }, - "abandoned": "symfony/filesystem", - "time": "2015-12-17T08:42:14+00:00" + "time": "2024-03-07T20:33:40+00:00" } ], "packages-dev": [], @@ -1172,5 +1120,5 @@ "prefer-lowest": false, "platform": [], "platform-dev": [], - "plugin-api-version": "2.0.0" + "plugin-api-version": "2.3.0" }