From 479f20dabfec0468879888fbc797e4fb65887241 Mon Sep 17 00:00:00 2001 From: Eldad Fux Date: Mon, 22 Apr 2024 07:00:17 +0200 Subject: [PATCH] Fixed some workers --- app/http.php | 1 - app/worker.php | 560 +++++++++++++++++++++++++++++++++---------------- composer.json | 9 +- composer.lock | 482 ++++++++++++++++++++++-------------------- 4 files changed, 640 insertions(+), 412 deletions(-) diff --git a/app/http.php b/app/http.php index 679f4ee1a6..7bb5ba06be 100644 --- a/app/http.php +++ b/app/http.php @@ -22,7 +22,6 @@ use Utopia\Http\Adapter\Swoole\Server; use Utopia\Http\Http; use Utopia\System\System; -//require_once __DIR__ . '/init.php'; require_once __DIR__ . '/init2.php'; require_once __DIR__ . '/controllers/general.php'; diff --git a/app/worker.php b/app/worker.php index a5d29c295a..c8ba9e7741 100644 --- a/app/worker.php +++ b/app/worker.php @@ -30,6 +30,7 @@ use Utopia\Database\Database; use Utopia\Database\DateTime; use Utopia\Database\Document; use Utopia\Database\Validator\Authorization; +use Utopia\DI\Dependency; use Utopia\Logger\Log; use Utopia\Logger\Logger; use Utopia\Platform\Service; @@ -38,221 +39,417 @@ use Utopia\Queue\Connection; use Utopia\Queue\Connection\Redis; use Utopia\Queue\Message; use Utopia\Queue\Server; +use Utopia\Queue\Worker; use Utopia\Registry\Registry; use Utopia\Storage\Device\Local; use Utopia\System\System; -global $gloabl; +global $gloabl, $container; Runtime::enableCoroutine(SWOOLE_HOOK_ALL); -Server::setResource('register', fn () => $gloabl); +$register = new Dependency(); +$register + ->setName('register') + ->setCallback(fn () => $global); +$container->set($register); -Server::setResource('connections', function () { - return new Connections(); -}); +$connections = new Dependency(); +$connections + ->setName('connections') + ->setCallback(function () { + return new Connections(); + }); +$container->set($connections); -Server::setResource('pools', function () use ($gloabl) { - return $gloabl->get('pools'); -}); +$pools = new Dependency(); +$pools + ->setName('pools') + ->inject('register') + ->setCallback(function ($register) { + return $register->get('pools'); + }); +$container->set($pools); -Server::setResource('dbForConsole', function (Cache $cache, array $pools, Authorization $auth, Connections $connections) { - $pool = $pools['pools-console-main']['pool']; - $dsn = $pools['pools-console-main']['dsn']; - $connection = $pool->get(); - $connections->add($connection, $pool); +$dbForConsole = new Dependency(); +$dbForConsole + ->setName('dbForConsole') + ->inject('cache') + ->inject('pools') + ->inject('auth') + ->inject('connections') + ->setCallback(function (Cache $cache, array $pools, Authorization $auth, Connections $connections) { + $pool = $pools['pools-console-main']['pool']; + $dsn = $pools['pools-console-main']['dsn']; + $connection = $pool->get(); + $connections->add($connection, $pool); - $adapter = match ($dsn->getScheme()) { - 'mariadb' => new MariaDB($connection), - 'mysql' => new MySQL($connection), - default => null - }; + $adapter = match ($dsn->getScheme()) { + 'mariadb' => new MariaDB($connection), + 'mysql' => new MySQL($connection), + default => null + }; - $adapter->setDatabase($dsn->getPath()); + $adapter->setDatabase($dsn->getPath()); - $database = new Database($adapter, $cache); - $database->setAuthorization($auth); - $database->setNamespace('_console'); + $database = new Database($adapter, $cache); + $database->setAuthorization($auth); + $database->setNamespace('_console'); - return $database; -}, ['cache', 'pools', 'auth', 'connections']); + return $database; + }); +$container->set($dbForConsole); -Server::setResource('project', function (Message $message, Database $dbForConsole) { - $payload = $message->getPayload() ?? []; - $project = new Document($payload['project'] ?? []); - - if ($project->getId() === 'console') { - return $project; - } - - return $dbForConsole->getDocument('projects', $project->getId()); -}, ['message', 'dbForConsole']); - -Server::setResource('dbForProject', function (Cache $cache, array $pools, Message $message, Document $project, Database $dbForConsole, Authorization $auth, Connections $connections) { - if ($project->isEmpty() || $project->getId() === 'console') { - return $dbForConsole; - } - - $pool = $pools['pools-database-'.$project->getAttribute('database')]['pool']; - $dsn = $pools['pools-database-'.$project->getAttribute('database')]['dsn']; - - $connection = $pool->get(); - $connections->add($connection, $pool); - $adapter = match ($dsn->getScheme()) { - 'mariadb' => new MariaDB($connection), - 'mysql' => new MySQL($connection), - default => null - }; - - $adapter->setDatabase($dsn->getPath()); - - $database = new Database($adapter, $cache); - - $database = new Database($adapter, $cache); - $database->setAuthorization($auth); - $database->setNamespace('_' . $project->getInternalId()); - return $database; -}, ['cache', 'pools', 'message', 'project', 'dbForConsole', 'auth', 'connections']); - -Server::setResource('getProjectDB', function (Group $pools, Database $dbForConsole, $cache, Authorization $auth, Connections $connections) { - $databases = []; // TODO: @Meldiron This should probably be responsibility of utopia-php/pools - - return function (Document $project) use ($pools, $dbForConsole, $cache, &$databases, $auth, $connections): Database { +$dbForProject = new Dependency(); +$dbForProject + ->setName('dbForProject') + ->inject('cache') + ->inject('pools') + ->inject('message') + ->inject('project') + ->inject('dbForConsole') + ->inject('auth') + ->inject('connections') + ->setCallback(function (Cache $cache, array $pools, Message $message, Document $project, Database $dbForConsole, Authorization $auth, Connections $connections) { if ($project->isEmpty() || $project->getId() === 'console') { return $dbForConsole; } - - $databaseName = $project->getAttribute('database'); - - if (isset($databases[$databaseName])) { - $database = $databases[$databaseName]; - $database->setNamespace('_' . $project->getInternalId()); - return $database; - } - - $connection = $pools->get($databaseName)->pop(); - $connections->add($connection); - $dbAdapter = $connection->getResource(); - - $database = new Database($dbAdapter, $cache); + + $pool = $pools['pools-database-'.$project->getAttribute('database')]['pool']; + $dsn = $pools['pools-database-'.$project->getAttribute('database')]['dsn']; + + $connection = $pool->get(); + $connections->add($connection, $pool); + $adapter = match ($dsn->getScheme()) { + 'mariadb' => new MariaDB($connection), + 'mysql' => new MySQL($connection), + default => null + }; + + $adapter->setDatabase($dsn->getPath()); + + $database = new Database($adapter, $cache); $database->setAuthorization($auth); - - $databases[$databaseName] = $database; - $database->setNamespace('_' . $project->getInternalId()); - return $database; - }; -}, ['pools', 'dbForConsole', 'cache', 'auth', 'connections']); + }); +$container->set($dbForProject); -Server::setResource('abuseRetention', function () { - return DateTime::addSeconds(new \DateTime(), -1 * System::getEnv('_APP_MAINTENANCE_RETENTION_ABUSE', 86400)); -}); +$project = new Dependency(); +$project + ->setName('project') + ->inject('message') + ->inject('dbForConsole') + ->setCallback(function (Message $message, Database $dbForConsole) { + $payload = $message->getPayload() ?? []; + $project = new Document($payload['project'] ?? []); + + if ($project->getId() === 'console') { + return $project; + } + + return $dbForConsole->getDocument('projects', $project->getId()); + }); +$container->set($project); -Server::setResource('auditRetention', function () { - return DateTime::addSeconds(new \DateTime(), -1 * System::getEnv('_APP_MAINTENANCE_RETENTION_AUDIT', 1209600)); -}); +$getProjectDB = new Dependency(); +$getProjectDB + ->setName('getProjectDB') + ->inject('pools') + ->inject('dbForConsole') + ->inject('cache') + ->inject('auth') + ->inject('connections') + ->setCallback(function (array $pools, Database $dbForConsole, Cache $cache, Authorization $auth, Connections $connections) { + return function (Document $project) use ($pools, $dbForConsole, $cache, &$databases, $auth, $connections): Database { + if ($project->isEmpty() || $project->getId() === 'console') { + return $dbForConsole; + } -Server::setResource('executionRetention', function () { - return DateTime::addSeconds(new \DateTime(), -1 * System::getEnv('_APP_MAINTENANCE_RETENTION_EXECUTION', 1209600)); -}); + $databaseName = $project->getAttribute('database'); -Server::setResource('cache', function () { - return new Cache(new None()); -}, []); + $pool = $pools['pools-database-'.$databaseName]['pool']; + $dsn = $pools['pools-database-'.$databaseName]['dsn']; + + $connection = $pool->get(); + $connections->add($connection, $pool); + $adapter = match ($dsn->getScheme()) { + 'mariadb' => new MariaDB($connection), + 'mysql' => new MySQL($connection), + default => null + }; -Server::setResource('log', fn () => new Log()); + $database = new Database($adapter, $cache); + $database->setAuthorization($auth); + $database->setNamespace('_' . $project->getInternalId()); -Server::setResource('queueForUsage', function (Connection $queue) { - return new Usage($queue); -}, ['queue']); + return $database; + }; + }); +$container->set($getProjectDB); -Server::setResource('queueForUsageDump', function (Connection $queue) { - return new UsageDump($queue); -}, ['queue']); +// Worker::setResource('getProjectDB', function (Group $pools, Database $dbForConsole, $cache, Authorization $auth, Connections $connections) { +// $databases = []; // TODO: @Meldiron This should probably be responsibility of utopia-php/pools -Server::setResource('queue', function (array $pools, Connections $connections) { - $pool = $pools['pools-queue-main']['pool']; - $dsn = $pools['pools-queue-main']['dsn']; - $connection = $pool->get(); - $connections->add($connection, $pool); +// return function (Document $project) use ($pools, $dbForConsole, $cache, &$databases, $auth, $connections): Database { +// if ($project->isEmpty() || $project->getId() === 'console') { +// return $dbForConsole; +// } - return new Redis($dsn->getHost(), $dsn->getPort()); -}, ['pools', 'connections']); +// $databaseName = $project->getAttribute('database'); -Server::setResource('queueForDatabase', function (Connection $queue) { - return new EventDatabase($queue); -}, ['queue']); +// if (isset($databases[$databaseName])) { +// $database = $databases[$databaseName]; +// $database->setNamespace('_' . $project->getInternalId()); +// return $database; +// } -Server::setResource('queueForMessaging', function (Connection $queue) { - return new Messaging($queue); -}, ['queue']); +// $connection = $pools->get($databaseName)->pop(); +// $connections->add($connection); +// $dbAdapter = $connection->getResource(); -Server::setResource('queueForMails', function (Connection $queue) { - return new Mail($queue); -}, ['queue']); +// $database = new Database($dbAdapter, $cache); +// $database->setAuthorization($auth); -Server::setResource('queueForBuilds', function (Connection $queue) { - return new Build($queue); -}, ['queue']); +// $databases[$databaseName] = $database; -Server::setResource('queueForDeletes', function (Connection $queue) { - return new Delete($queue); -}, ['queue']); +// $database->setNamespace('_' . $project->getInternalId()); -Server::setResource('queueForEvents', function (Connection $queue) { - return new Event($queue); -}, ['queue']); +// return $database; +// }; +// }, ['pools', 'dbForConsole', 'cache', 'auth', 'connections']); -Server::setResource('queueForAudits', function (Connection $queue) { - return new Audit($queue); -}, ['queue']); +$abuseRetention = new Dependency(); +$abuseRetention + ->setName('abuseRetention') + ->setCallback(function () { + return DateTime::addSeconds(new \DateTime(), -1 * System::getEnv('_APP_MAINTENANCE_RETENTION_ABUSE', 86400)); + }); +$container->set($abuseRetention); -Server::setResource('queueForFunctions', function (Connection $queue) { - return new Func($queue); -}, ['queue']); +$auditRetention = new Dependency(); +$auditRetention + ->setName('auditRetention') + ->setCallback(function () { + return DateTime::addSeconds(new \DateTime(), -1 * System::getEnv('_APP_MAINTENANCE_RETENTION_AUDIT', 1209600)); + }); +$container->set($auditRetention); -Server::setResource('queueForCertificates', function (Connection $queue) { - return new Certificate($queue); -}, ['queue']); +$executionRetention = new Dependency(); +$executionRetention + ->setName('executionRetention') + ->setCallback(function () { + return DateTime::addSeconds(new \DateTime(), -1 * System::getEnv('_APP_MAINTENANCE_RETENTION_EXECUTION', 1209600)); + }); +$container->set($executionRetention); -Server::setResource('queueForMigrations', function (Connection $queue) { - return new Migration($queue); -}, ['queue']); +$cache = new Dependency(); +$cache + ->setName('cache') + ->setCallback(function () { + return new Cache(new None()); + }); +$container->set($cache); -Server::setResource('queueForHamster', function (Connection $queue) { - return new Hamster($queue); -}, ['queue']); +$log = new Dependency(); +$log + ->setName('log') + ->setCallback(fn () => new Log()); +$container->set($log); -Server::setResource('logger', function (Registry $register) { - return $register->get('logger'); -}, ['register']); +$queue = new Dependency(); +$queue + ->setName('queue') + ->inject('pools') + ->inject('connections') + ->setCallback(function (array $pools, Connections $connections) { + $pool = $pools['pools-queue-main']['pool']; + $dsn = $pools['pools-queue-main']['dsn']; + $connection = $pool->get(); + $connections->add($connection, $pool); + + return new Redis($dsn->getHost(), $dsn->getPort()); + }); +$container->set($queue); -Server::setResource('pools', function (Registry $register) { - return $register->get('pools'); -}, ['register']); +$queueForMessaging = new Dependency(); +$queueForMessaging + ->setName('queueForMessaging') + ->inject('queue') + ->setCallback(function (Connection $queue) { + return new Messaging($queue); + }); +$container->set($queueForMessaging); -Server::setResource('deviceForFunctions', function (Document $project) { - return getDevice(APP_STORAGE_FUNCTIONS . '/app-' . $project->getId()); -}, ['project']); +$queueForMails = new Dependency(); +$queueForMails + ->setName('queueForMails') + ->inject('queue') + ->setCallback(function (Connection $queue) { + return new Mail($queue); + }); +$container->set($queueForMails); -Server::setResource('deviceForFiles', function (Document $project) { - return getDevice(APP_STORAGE_UPLOADS . '/app-' . $project->getId()); -}, ['project']); +$queueForBuilds = new Dependency(); +$queueForBuilds + ->setName('queueForBuilds') + ->inject('queue') + ->setCallback(function (Connection $queue) { + return new Build($queue); + }); +$container->set($queueForBuilds); -Server::setResource('deviceForBuilds', function (Document $project) { - return getDevice(APP_STORAGE_BUILDS . '/app-' . $project->getId()); -}, ['project']); +$queueForDatabase = new Dependency(); +$queueForDatabase + ->setName('queueForDatabase') + ->inject('queue') + ->setCallback(function (Connection $queue) { + return new EventDatabase($queue); + }); +$container->set($queueForDatabase); -Server::setResource('deviceForCache', function (Document $project) { - return getDevice(APP_STORAGE_CACHE . '/app-' . $project->getId()); -}, ['project']); +$queueForDeletes = new Dependency(); +$queueForDeletes + ->setName('queueForDeletes') + ->inject('queue') + ->setCallback(function (Connection $queue) { + return new Delete($queue); + }); +$container->set($queueForDeletes); -Server::setResource('deviceForLocalFiles', function (Document $project) { - return new Local(APP_STORAGE_UPLOADS . '/app-' . $project->getId()); -}, ['project']); +$queueForEvents = new Dependency(); +$queueForEvents + ->setName('queueForEvents') + ->inject('queue') + ->setCallback(function (Connection $queue) { + return new Event($queue); + }); +$container->set($queueForEvents); -Server::setResource('auth', fn () => new Authorization()); +$queueForAudits = new Dependency(); +$queueForAudits + ->setName('queueForAudits') + ->inject('queue') + ->setCallback(function (Connection $queue) { + return new Audit($queue); + }); +$container->set($queueForAudits); + +$queueForFunctions = new Dependency(); +$queueForFunctions + ->setName('queueForFunctions') + ->inject('queue') + ->setCallback(function (Connection $queue) { + return new Func($queue); + }); +$container->set($queueForFunctions); + +$queueForUsage = new Dependency(); +$queueForUsage + ->setName('queueForUsage') + ->inject('queue') + ->setCallback(function (Connection $queue) { + return new Usage($queue); + }); +$container->set($queueForUsage); + +$queueForUsageDump = new Dependency(); +$queueForUsageDump + ->setName('queueForUsageDump') + ->inject('queue') + ->setCallback(function (Connection $queue) { + return new UsageDump($queue); + }); + +$container->set($queueForUsageDump); + +$queueForCertificates = new Dependency(); +$queueForCertificates + ->setName('queueForCertificates') + ->inject('queue') + ->setCallback(function (Connection $queue) { + return new Certificate($queue); + }); +$container->set($queueForCertificates); + +$queueForMigrations = new Dependency(); +$queueForMigrations + ->setName('queueForMigrations') + ->inject('queue') + ->setCallback(function (Connection $queue) { + return new Migration($queue); + }); +$container->set($queueForMigrations); + +$queueForHamster = new Dependency(); +$queueForHamster + ->setName('queueForHamster') + ->inject('queue') + ->setCallback(function (Connection $queue) { + return new Hamster($queue); + }); +$container->set($queueForHamster); + +$logger = new Dependency(); +$logger + ->setName('logger') + ->inject('register') + ->setCallback(function (Registry $register) { + return $register->get('logger'); + }); +$container->set($logger); + +$deviceForFunctions = new Dependency(); +$deviceForFunctions + ->setName('deviceForFunctions') + ->inject('project') + ->setCallback(function (Document $project) { + return getDevice(APP_STORAGE_FUNCTIONS . '/app-' . $project->getId()); + }); +$container->set($deviceForFunctions); + +$deviceForFiles = new Dependency(); +$deviceForFiles + ->setName('deviceForFiles') + ->inject('project') + ->setCallback(function (Document $project) { + return getDevice(APP_STORAGE_UPLOADS . '/app-' . $project->getId()); + }); +$container->set($deviceForFiles); + +$deviceForBuilds = new Dependency(); +$deviceForBuilds + ->setName('deviceForBuilds') + ->inject('project') + ->setCallback(function (Document $project) { + return getDevice(APP_STORAGE_BUILDS . '/app-' . $project->getId()); + }); +$container->set($deviceForBuilds); + +$deviceForCache = new Dependency(); +$deviceForCache + ->setName('deviceForCache') + ->inject('project') + ->setCallback(function (Document $project) { + return getDevice(APP_STORAGE_CACHE . '/app-' . $project->getId()); + }); +$container->set($deviceForCache); + +$deviceForLocalFiles = new Dependency(); +$deviceForLocalFiles + ->setName('deviceForLocalFiles') + ->inject('project') + ->setCallback(function (Document $project) { + return new Local(APP_STORAGE_UPLOADS . '/app-' . $project->getId()); + }); + +$container->set($deviceForLocalFiles); + +$auth = new Dependency(); +$auth + ->setName('auth') + ->setCallback(fn () => new Authorization()); +$container->set($auth); $platform = new Appwrite(); $args = $_SERVER['argv']; @@ -277,6 +474,14 @@ if (\str_starts_with($workerName, 'databases')) { } try { + + $connection = new Connection\Redis( + System::getEnv('_APP_REDIS_HOST', 'redis'), + System::getEnv('_APP_REDIS_PORT', '6379'), + System::getEnv('_APP_REDIS_USER', ''), + System::getEnv('_APP_REDIS_PASS', '') + ); + /** * Any worker can be configured with the following env vars: * - _APP_WORKERS_NUM The total number of worker processes @@ -285,7 +490,7 @@ try { */ $platform->init(Service::TYPE_WORKER, [ 'workersNum' => System::getEnv('_APP_WORKERS_NUM', 1), - 'connection' => $global->get('pools')['pools-queue-main']['pool']->get(), + 'connection' => $connection, 'workerName' => strtolower($workerName) ?? null, 'queueName' => $queueName ]); @@ -293,24 +498,19 @@ try { Console::error($e->getMessage() . ', File: ' . $e->getFile() . ', Line: ' . $e->getLine()); } -$worker = $platform->getWorker(); - -$worker - ->init() +Worker::init() ->inject('auth') ->action(function (Authorization $auth) { $auth->disable(); }); -$worker - ->shutdown() +Worker::shutdown() ->inject('connections') ->action(function (Connections $connections) { $connections->reclaim(); }); -$worker - ->error() +Worker::error() ->inject('error') ->inject('logger') ->inject('log') @@ -354,9 +554,7 @@ $worker Console::error('[Error] Line: ' . $error->getLine()); }); -$worker->workerStart() - ->action(function () use ($workerName) { - Console::info("Worker $workerName started"); - }); - -$worker->start(); +$platform + ->getWorker() + ->setContainer($container) + ->start(); \ No newline at end of file diff --git a/composer.json b/composer.json index e6d1308220..2ab6741e1e 100644 --- a/composer.json +++ b/composer.json @@ -4,6 +4,7 @@ "description": "End to end backend server for frontend and mobile apps.", "type": "project", "license": "BSD-3-Clause", + "minimum-stability": "dev", "authors": [ { "name": "Eldad Fux", @@ -52,7 +53,6 @@ "utopia-php/cli": "0.17.*", "utopia-php/config": "0.2.*", "utopia-php/database": "dev-feat-framework-v2 as 0.49.99", - "utopia-php/di": "dev-main", "utopia-php/domains": "dev-feat-framework-v2 as 0.5.99", "utopia-php/dsn": "0.2.*", "utopia-php/framework": "dev-feat-di-upgrade as 0.34.99", @@ -63,9 +63,8 @@ "utopia-php/migration": "0.4.*", "utopia-php/orchestration": "dev-feat-framework-v2 as 0.9.99", "utopia-php/platform": "dev-feat-framework-v2 as 0.5.99", - "utopia-php/pools": "dev-feat-coroutine-support as 0.4.99", "utopia-php/view": "0.2.*", - "utopia-php/queue": "dev-feat-framework-v2-v2 as 0.7.99", + "utopia-php/queue": "dev-feat-coroutine-and-di as 0.7.99", "utopia-php/registry": "0.5.*", "utopia-php/storage": "dev-feat-framework-v2-v2 as 0.18.99", "utopia-php/system": "0.8.*", @@ -102,6 +101,10 @@ { "type": "vcs", "url": "https://github.com/utopia-php/di" + }, + { + "type": "vcs", + "url": "https://github.com/utopia-php/servers" } ] } diff --git a/composer.lock b/composer.lock index d7ab08b87e..17e9c54bae 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "42c5379dff348d3525688891a96d1e85", + "content-hash": "4ed66c480296d93fe656835801654fed", "packages": [ { "name": "adhocore/jwt", @@ -210,16 +210,16 @@ }, { "name": "beberlei/assert", - "version": "v3.3.2", + "version": "v3.x-dev", "source": { "type": "git", "url": "https://github.com/beberlei/assert.git", - "reference": "cb70015c04be1baee6f5f5c953703347c0ac1655" + "reference": "d63a6943fc4fd1a2aedb65994e3548715105abcf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/beberlei/assert/zipball/cb70015c04be1baee6f5f5c953703347c0ac1655", - "reference": "cb70015c04be1baee6f5f5c953703347c0ac1655", + "url": "https://api.github.com/repos/beberlei/assert/zipball/d63a6943fc4fd1a2aedb65994e3548715105abcf", + "reference": "d63a6943fc4fd1a2aedb65994e3548715105abcf", "shasum": "" }, "require": { @@ -227,13 +227,12 @@ "ext-json": "*", "ext-mbstring": "*", "ext-simplexml": "*", - "php": "^7.0 || ^8.0" + "php": "^7" }, "require-dev": { "friendsofphp/php-cs-fixer": "*", - "phpstan/phpstan": "*", - "phpunit/phpunit": ">=6.0.0", - "yoast/phpunit-polyfills": "^0.1.0" + "phpstan/phpstan-shim": "*", + "phpunit/phpunit": ">=6.0.0 <8" }, "suggest": { "ext-intl": "Needed to allow Assertion::count(), Assertion::isCountable(), Assertion::minCount(), and Assertion::maxCount() to operate on ResourceBundles" @@ -271,9 +270,9 @@ ], "support": { "issues": "https://github.com/beberlei/assert/issues", - "source": "https://github.com/beberlei/assert/tree/v3.3.2" + "source": "https://github.com/beberlei/assert/tree/v3" }, - "time": "2021-12-16T21:41:27+00:00" + "time": "2019-12-19T17:51:41+00:00" }, { "name": "chillerlan/php-qrcode", @@ -482,16 +481,16 @@ }, { "name": "jean85/pretty-package-versions", - "version": "2.0.6", + "version": "2.x-dev", "source": { "type": "git", "url": "https://github.com/Jean85/pretty-package-versions.git", - "reference": "f9fdd29ad8e6d024f52678b570e5593759b550b4" + "reference": "4ea62fbb39a29d65ef6cda413158baa7f1d98550" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/f9fdd29ad8e6d024f52678b570e5593759b550b4", - "reference": "f9fdd29ad8e6d024f52678b570e5593759b550b4", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/4ea62fbb39a29d65ef6cda413158baa7f1d98550", + "reference": "4ea62fbb39a29d65ef6cda413158baa7f1d98550", "shasum": "" }, "require": { @@ -503,8 +502,9 @@ "jean85/composer-provided-replaced-stub-package": "^1.0", "phpstan/phpstan": "^1.4", "phpunit/phpunit": "^7.5|^8.5|^9.4", - "vimeo/psalm": "^4.3" + "vimeo/psalm": "^4.3 || ^5.0" }, + "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -535,9 +535,9 @@ ], "support": { "issues": "https://github.com/Jean85/pretty-package-versions/issues", - "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.6" + "source": "https://github.com/Jean85/pretty-package-versions/tree/2.x" }, - "time": "2024-03-08T09:58:59+00:00" + "time": "2024-04-08T08:58:14+00:00" }, { "name": "league/csv", @@ -970,7 +970,7 @@ }, { "name": "spomky-labs/otphp", - "version": "v10.0.3", + "version": "v10.0.x-dev", "source": { "type": "git", "url": "https://github.com/Spomky-Labs/otphp.git", @@ -999,6 +999,7 @@ "phpunit/phpunit": "^8.0", "thecodingmachine/phpstan-safe-rule": "^1.0 || ^2.0" }, + "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -1045,21 +1046,22 @@ }, { "name": "symfony/polyfill-php80", - "version": "v1.29.0", + "version": "1.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" + "reference": "7d191eb4022901cd3d91a816ec5464ca3a08a8aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", - "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7d191eb4022901cd3d91a816ec5464ca3a08a8aa", + "reference": "7d191eb4022901cd3d91a816ec5464ca3a08a8aa", "shasum": "" }, "require": { "php": ">=7.1" }, + "default-branch": true, "type": "library", "extra": { "thanks": { @@ -1105,7 +1107,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-php80/tree/1.x" }, "funding": [ { @@ -1121,7 +1123,7 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-04-19T06:31:17+00:00" }, { "name": "thecodingmachine/safe", @@ -1268,12 +1270,12 @@ "source": { "type": "git", "url": "https://github.com/utopia-php/abuse.git", - "reference": "55b34b581c957fc98f912943d94dcdc7079f191e" + "reference": "a2292d71da901ea13129d56f89876626ba92adf0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/abuse/zipball/55b34b581c957fc98f912943d94dcdc7079f191e", - "reference": "55b34b581c957fc98f912943d94dcdc7079f191e", + "url": "https://api.github.com/repos/utopia-php/abuse/zipball/a2292d71da901ea13129d56f89876626ba92adf0", + "reference": "a2292d71da901ea13129d56f89876626ba92adf0", "shasum": "" }, "require": { @@ -1309,7 +1311,7 @@ "issues": "https://github.com/utopia-php/abuse/issues", "source": "https://github.com/utopia-php/abuse/tree/feat-framework-v2" }, - "time": "2024-03-08T11:27:58+00:00" + "time": "2024-04-18T17:04:17+00:00" }, { "name": "utopia-php/analytics", @@ -1363,12 +1365,12 @@ "source": { "type": "git", "url": "https://github.com/utopia-php/audit.git", - "reference": "59f88d71f9d93603393aeda368a975b10b8ddb17" + "reference": "49c2a113277bfa0d7d1774c150de2d2fa07349e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/audit/zipball/59f88d71f9d93603393aeda368a975b10b8ddb17", - "reference": "59f88d71f9d93603393aeda368a975b10b8ddb17", + "url": "https://api.github.com/repos/utopia-php/audit/zipball/49c2a113277bfa0d7d1774c150de2d2fa07349e7", + "reference": "49c2a113277bfa0d7d1774c150de2d2fa07349e7", "shasum": "" }, "require": { @@ -1402,7 +1404,7 @@ "issues": "https://github.com/utopia-php/audit/issues", "source": "https://github.com/utopia-php/audit/tree/feat-framework-v2" }, - "time": "2024-03-08T11:29:31+00:00" + "time": "2024-04-18T17:02:14+00:00" }, { "name": "utopia-php/cache", @@ -1560,12 +1562,12 @@ "source": { "type": "git", "url": "https://github.com/utopia-php/database.git", - "reference": "bdd9140e40c77faadb0cf2f5050b466c34eef673" + "reference": "0d7b914c7770a5c488f104a36147d91db3b71368" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/database/zipball/bdd9140e40c77faadb0cf2f5050b466c34eef673", - "reference": "bdd9140e40c77faadb0cf2f5050b466c34eef673", + "url": "https://api.github.com/repos/utopia-php/database/zipball/0d7b914c7770a5c488f104a36147d91db3b71368", + "reference": "0d7b914c7770a5c488f104a36147d91db3b71368", "shasum": "" }, "require": { @@ -1609,7 +1611,7 @@ "issues": "https://github.com/utopia-php/database/issues", "source": "https://github.com/utopia-php/database/tree/feat-framework-v2" }, - "time": "2024-03-07T16:55:44+00:00" + "time": "2024-04-19T14:37:34+00:00" }, { "name": "utopia-php/di", @@ -1617,12 +1619,12 @@ "source": { "type": "git", "url": "https://github.com/utopia-php/di.git", - "reference": "0bb7af5693bc131f4d2ce34d3f732d41e6637679" + "reference": "fb3c45b268018b87dcbbf87ad943ced9eea3bbe2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/di/zipball/0bb7af5693bc131f4d2ce34d3f732d41e6637679", - "reference": "0bb7af5693bc131f4d2ce34d3f732d41e6637679", + "url": "https://api.github.com/repos/utopia-php/di/zipball/fb3c45b268018b87dcbbf87ad943ced9eea3bbe2", + "reference": "fb3c45b268018b87dcbbf87ad943ced9eea3bbe2", "shasum": "" }, "require": { @@ -1671,7 +1673,7 @@ "source": "https://github.com/utopia-php/di/tree/main", "issues": "https://github.com/utopia-php/di/issues" }, - "time": "2024-04-08T22:41:41+00:00" + "time": "2024-04-18T20:06:02+00:00" }, { "name": "utopia-php/domains", @@ -1825,12 +1827,12 @@ "source": { "type": "git", "url": "https://github.com/utopia-php/http.git", - "reference": "d600ae234780e083c600ab62a8348b7ea506cd1d" + "reference": "62c2b5b2b1e0e598cd67d79143e4dd210c44d499" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/http/zipball/d600ae234780e083c600ab62a8348b7ea506cd1d", - "reference": "d600ae234780e083c600ab62a8348b7ea506cd1d", + "url": "https://api.github.com/repos/utopia-php/http/zipball/62c2b5b2b1e0e598cd67d79143e4dd210c44d499", + "reference": "62c2b5b2b1e0e598cd67d79143e4dd210c44d499", "shasum": "" }, "require": { @@ -1867,7 +1869,7 @@ "issues": "https://github.com/utopia-php/http/issues", "source": "https://github.com/utopia-php/http/tree/feat-di-upgrade" }, - "time": "2024-04-14T16:41:37+00:00" + "time": "2024-04-18T20:53:06+00:00" }, { "name": "utopia-php/image", @@ -1970,7 +1972,7 @@ }, { "name": "utopia-php/logger", - "version": "0.3.2", + "version": "0.3.x-dev", "source": { "type": "git", "url": "https://github.com/utopia-php/logger.git", @@ -2017,7 +2019,7 @@ ], "support": { "issues": "https://github.com/utopia-php/logger/issues", - "source": "https://github.com/utopia-php/logger/tree/0.3.2" + "source": "https://github.com/utopia-php/logger/tree/0.3.x" }, "time": "2023-11-22T14:45:43+00:00" }, @@ -2235,12 +2237,12 @@ "source": { "type": "git", "url": "https://github.com/utopia-php/platform.git", - "reference": "88711a2992ff0edbf196cdf1f48b5614e1e423f7" + "reference": "e6f2f281b2ad962211b1c6f88650d0230f615a3a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/platform/zipball/88711a2992ff0edbf196cdf1f48b5614e1e423f7", - "reference": "88711a2992ff0edbf196cdf1f48b5614e1e423f7", + "url": "https://api.github.com/repos/utopia-php/platform/zipball/e6f2f281b2ad962211b1c6f88650d0230f615a3a", + "reference": "e6f2f281b2ad962211b1c6f88650d0230f615a3a", "shasum": "" }, "require": { @@ -2249,7 +2251,7 @@ "php": ">=8.0", "utopia-php/cli": "0.17.*", "utopia-php/framework": "0.34.*", - "utopia-php/queue": "dev-feat-framework-v2-v2 as 0.7.99" + "utopia-php/queue": "dev-feat-coroutine-and-di as 0.7.99" }, "require-dev": { "laravel/pint": "1.2.*", @@ -2277,77 +2279,27 @@ "issues": "https://github.com/utopia-php/platform/issues", "source": "https://github.com/utopia-php/platform/tree/feat-framework-v2" }, - "time": "2024-03-07T15:44:09+00:00" - }, - { - "name": "utopia-php/pools", - "version": "dev-feat-coroutine-support", - "source": { - "type": "git", - "url": "https://github.com/utopia-php/pools.git", - "reference": "ada61e5b86191644e779ea2c71cd7bf172e94fca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/utopia-php/pools/zipball/ada61e5b86191644e779ea2c71cd7bf172e94fca", - "reference": "ada61e5b86191644e779ea2c71cd7bf172e94fca", - "shasum": "" - }, - "require": { - "php": ">=8.0" - }, - "require-dev": { - "laravel/pint": "1.2.*", - "phpstan/phpstan": "1.8.*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "autoload": { - "psr-4": { - "Utopia\\Pools\\": "src/Pools" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Team Appwrite", - "email": "team@appwrite.io" - } - ], - "description": "A simple library to manage connection pools", - "keywords": [ - "framework", - "php", - "pools", - "utopia" - ], - "support": { - "issues": "https://github.com/utopia-php/pools/issues", - "source": "https://github.com/utopia-php/pools/tree/feat-coroutine-support" - }, - "time": "2024-04-10T21:34:22+00:00" + "time": "2024-04-21T18:38:38+00:00" }, { "name": "utopia-php/queue", - "version": "dev-feat-framework-v2-v2", + "version": "dev-feat-coroutine-and-di", "source": { "type": "git", "url": "https://github.com/utopia-php/queue.git", - "reference": "0e9ba1b32169d64a78909fd77891db4d64344a63" + "reference": "309796b08891eac135540c241d8943dd42eccc9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/queue/zipball/0e9ba1b32169d64a78909fd77891db4d64344a63", - "reference": "0e9ba1b32169d64a78909fd77891db4d64344a63", + "url": "https://api.github.com/repos/utopia-php/queue/zipball/309796b08891eac135540c241d8943dd42eccc9e", + "reference": "309796b08891eac135540c241d8943dd42eccc9e", "shasum": "" }, "require": { "php": ">=8.0", "utopia-php/cli": "0.17.*", - "utopia-php/framework": "0.34.*" + "utopia-php/di": "dev-main", + "utopia-php/servers": "dev-dev" }, "require-dev": { "laravel/pint": "^0.2.3", @@ -2357,6 +2309,7 @@ "workerman/workerman": "^4.0" }, "suggest": { + "ext-redis": "Needed to support Redis connections", "ext-swoole": "Needed to support Swoole.", "workerman/workerman": "Needed to support Workerman." }, @@ -2387,9 +2340,9 @@ ], "support": { "issues": "https://github.com/utopia-php/queue/issues", - "source": "https://github.com/utopia-php/queue/tree/feat-framework-v2-v2" + "source": "https://github.com/utopia-php/queue/tree/feat-coroutine-and-di" }, - "time": "2024-03-08T09:29:41+00:00" + "time": "2024-04-21T18:59:04+00:00" }, { "name": "utopia-php/registry", @@ -2443,6 +2396,77 @@ }, "time": "2021-03-10T10:45:22+00:00" }, + { + "name": "utopia-php/servers", + "version": "dev-dev", + "source": { + "type": "git", + "url": "https://github.com/utopia-php/servers.git", + "reference": "20bb7ab93c21d0ae37bc309d41b70ddf2a78a6fd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/utopia-php/servers/zipball/20bb7ab93c21d0ae37bc309d41b70ddf2a78a6fd", + "reference": "20bb7ab93c21d0ae37bc309d41b70ddf2a78a6fd", + "shasum": "" + }, + "require": { + "php": ">=8.0", + "utopia-php/di": "dev-main" + }, + "require-dev": { + "laravel/pint": "^0.2.3", + "phpstan/phpstan": "^1.8", + "phpunit/phpunit": "^9.5.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Utopia\\Servers\\": "src/Servers" + } + }, + "autoload-dev": { + "psr-4": { + "Tests\\E2E\\": "tests/Servers/Unit" + } + }, + "scripts": { + "test": [ + "phpunit" + ], + "analyse": [ + "vendor/bin/phpstan analyse" + ], + "format": [ + "vendor/bin/pint" + ], + "lint": [ + "vendor/bin/pint --test" + ] + }, + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Team Appwrite", + "email": "team@appwrite.io" + } + ], + "description": "A base library for building Utopia style servers.", + "keywords": [ + "framework", + "php", + "servers", + "upf", + "utopia" + ], + "support": { + "source": "https://github.com/utopia-php/servers/tree/dev", + "issues": "https://github.com/utopia-php/servers/issues" + }, + "time": "2024-04-21T18:53:43+00:00" + }, { "name": "utopia-php/storage", "version": "dev-feat-framework-v2-v2", @@ -2831,16 +2855,16 @@ "packages-dev": [ { "name": "appwrite/sdk-generator", - "version": "0.37.9", + "version": "0.37.12", "source": { "type": "git", "url": "https://github.com/appwrite/sdk-generator.git", - "reference": "ad80d80e18f0cda981e1bddbf0841a805632caa0" + "reference": "882881934e8014b2135590e7ea5f402ab4513c38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/ad80d80e18f0cda981e1bddbf0841a805632caa0", - "reference": "ad80d80e18f0cda981e1bddbf0841a805632caa0", + "url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/882881934e8014b2135590e7ea5f402ab4513c38", + "reference": "882881934e8014b2135590e7ea5f402ab4513c38", "shasum": "" }, "require": { @@ -2876,13 +2900,13 @@ "description": "Appwrite PHP library for generating API SDKs for multiple programming languages and platforms", "support": { "issues": "https://github.com/appwrite/sdk-generator/issues", - "source": "https://github.com/appwrite/sdk-generator/tree/0.37.9" + "source": "https://github.com/appwrite/sdk-generator/tree/0.37.12" }, - "time": "2024-03-24T05:40:55+00:00" + "time": "2024-04-17T19:14:43+00:00" }, { "name": "doctrine/deprecations", - "version": "1.1.3", + "version": "1.1.x-dev", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", @@ -2909,6 +2933,7 @@ "suggest": { "psr/log": "Allows logging deprecations via PSR-3 logger implementation" }, + "default-branch": true, "type": "library", "autoload": { "psr-4": { @@ -2929,29 +2954,29 @@ }, { "name": "doctrine/instantiator", - "version": "1.5.0", + "version": "1.5.x-dev", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b" + "reference": "12be2483e1f0e850b353e26869e4e6c038459501" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b", - "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/12be2483e1f0e850b353e26869e4e6c038459501", + "reference": "12be2483e1f0e850b353e26869e4e6c038459501", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9 || ^11", + "doctrine/coding-standard": "^9 || ^12", "ext-pdo": "*", "ext-phar": "*", "phpbench/phpbench": "^0.16 || ^1", "phpstan/phpstan": "^1.4", "phpstan/phpstan-phpunit": "^1", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", "vimeo/psalm": "^4.30 || ^5.4" }, "type": "library", @@ -2979,7 +3004,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.5.0" + "source": "https://github.com/doctrine/instantiator/tree/1.5.x" }, "funding": [ { @@ -2995,7 +3020,7 @@ "type": "tidelift" } ], - "time": "2022-12-30T00:15:36+00:00" + "time": "2023-12-09T14:16:53+00:00" }, { "name": "laravel/pint", @@ -3189,16 +3214,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.11.1", + "version": "1.x-dev", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" + "reference": "2f5294676c802a62b0549f6bc8983f14294ce369" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/2f5294676c802a62b0549f6bc8983f14294ce369", + "reference": "2f5294676c802a62b0549f6bc8983f14294ce369", "shasum": "" }, "require": { @@ -3206,13 +3231,15 @@ }, "conflict": { "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3,<3.2.2" + "doctrine/common": "<2.13.3 || >=3 <3.2.2" }, "require-dev": { "doctrine/collections": "^1.6.8", "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, + "default-branch": true, "type": "library", "autoload": { "files": [ @@ -3236,7 +3263,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" + "source": "https://github.com/myclabs/DeepCopy/tree/1.x" }, "funding": [ { @@ -3244,20 +3271,20 @@ "type": "tidelift" } ], - "time": "2023-03-08T13:26:56+00:00" + "time": "2024-02-10T11:10:03+00:00" }, { "name": "nikic/php-parser", - "version": "v5.0.2", + "version": "dev-master", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13" + "reference": "c5ee33df86c06b3278c670f64273b1ba768a0744" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/139676794dc1e9231bf7bcd123cfc0c99182cb13", - "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/c5ee33df86c06b3278c670f64273b1ba768a0744", + "reference": "c5ee33df86c06b3278c670f64273b1ba768a0744", "shasum": "" }, "require": { @@ -3268,8 +3295,9 @@ }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^9.0" }, + "default-branch": true, "bin": [ "bin/php-parse" ], @@ -3300,13 +3328,13 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.2" + "source": "https://github.com/nikic/PHP-Parser/tree/master" }, - "time": "2024-03-05T20:51:40+00:00" + "time": "2024-04-19T12:04:10+00:00" }, { "name": "phar-io/manifest", - "version": "2.0.4", + "version": "dev-master", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", @@ -3326,6 +3354,7 @@ "phar-io/version": "^3.0.1", "php": "^7.2 || ^8.0" }, + "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -3424,25 +3453,25 @@ }, { "name": "phpdocumentor/reflection-common", - "version": "2.2.0", + "version": "dev-master", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + "reference": "a0eeab580cbdf4414fef6978732510a36ed0a9d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/a0eeab580cbdf4414fef6978732510a36ed0a9d6", + "reference": "a0eeab580cbdf4414fef6978732510a36ed0a9d6", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-2.x": "2.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { @@ -3471,13 +3500,13 @@ ], "support": { "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/master" }, - "time": "2020-06-27T09:03:43+00:00" + "time": "2021-06-25T13:47:51+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.4.0", + "version": "5.x-dev", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", @@ -3507,6 +3536,7 @@ "phpunit/phpunit": "^9.5", "vimeo/psalm": "^5.13" }, + "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -3541,23 +3571,23 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.8.2", + "version": "1.x-dev", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "153ae662783729388a584b4361f2545e4d841e3c" + "reference": "483fb7fe262607b0a5ec32f99bdc42e2212b22fe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c", - "reference": "153ae662783729388a584b4361f2545e4d841e3c", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/483fb7fe262607b0a5ec32f99bdc42e2212b22fe", + "reference": "483fb7fe262607b0a5ec32f99bdc42e2212b22fe", "shasum": "" }, "require": { "doctrine/deprecations": "^1.0", "php": "^7.3 || ^8.0", "phpdocumentor/reflection-common": "^2.0", - "phpstan/phpdoc-parser": "^1.13" + "phpstan/phpdoc-parser": "^1.18" }, "require-dev": { "ext-tokenizer": "*", @@ -3569,6 +3599,7 @@ "rector/rector": "^0.13.9", "vimeo/psalm": "^4.25" }, + "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -3593,22 +3624,22 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.x" }, - "time": "2024-02-23T11:10:43+00:00" + "time": "2024-03-29T20:21:22+00:00" }, { "name": "phpspec/prophecy", - "version": "v1.19.0", + "version": "dev-master", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "67a759e7d8746d501c41536ba40cd9c0a07d6a87" + "reference": "f9e07be0992e7bf1cad210829055b99318df142f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/67a759e7d8746d501c41536ba40cd9c0a07d6a87", - "reference": "67a759e7d8746d501c41536ba40cd9c0a07d6a87", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/f9e07be0992e7bf1cad210829055b99318df142f", + "reference": "f9e07be0992e7bf1cad210829055b99318df142f", "shasum": "" }, "require": { @@ -3623,6 +3654,7 @@ "phpstan/phpstan": "^1.9", "phpunit/phpunit": "^8.0 || ^9.0 || ^10.0" }, + "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -3662,9 +3694,9 @@ ], "support": { "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.19.0" + "source": "https://github.com/phpspec/prophecy/tree/master" }, - "time": "2024-02-29T11:52:51+00:00" + "time": "2024-03-29T09:25:04+00:00" }, { "name": "phpstan/phpdoc-parser", @@ -3715,16 +3747,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.8.11", + "version": "1.8.x-dev", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "46e223dd68a620da18855c23046ddb00940b4014" + "reference": "b20042710baa0d9c07636cc66d4c400f03f1477a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/46e223dd68a620da18855c23046ddb00940b4014", - "reference": "46e223dd68a620da18855c23046ddb00940b4014", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/b20042710baa0d9c07636cc66d4c400f03f1477a", + "reference": "b20042710baa0d9c07636cc66d4c400f03f1477a", "shasum": "" }, "require": { @@ -3754,7 +3786,7 @@ ], "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.8.11" + "source": "https://github.com/phpstan/phpstan/tree/1.8.x" }, "funding": [ { @@ -3770,20 +3802,20 @@ "type": "tidelift" } ], - "time": "2022-10-24T15:45:13+00:00" + "time": "2022-10-29T12:56:57+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.31", + "version": "9.2.x-dev", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965" + "reference": "3352293d9e91513d5508c415835014881b420218" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/48c34b5d8d983006bd2adc2d0de92963b9155965", - "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/3352293d9e91513d5508c415835014881b420218", + "reference": "3352293d9e91513d5508c415835014881b420218", "shasum": "" }, "require": { @@ -3840,7 +3872,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.31" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2" }, "funding": [ { @@ -3848,20 +3880,20 @@ "type": "github" } ], - "time": "2024-03-02T06:37:42+00:00" + "time": "2024-03-22T05:16:32+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "3.0.6", + "version": "3.0.x-dev", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + "reference": "38b24367e1b340aa78b96d7cab042942d917bb84" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/38b24367e1b340aa78b96d7cab042942d917bb84", + "reference": "38b24367e1b340aa78b96d7cab042942d917bb84", "shasum": "" }, "require": { @@ -3900,7 +3932,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0" }, "funding": [ { @@ -3908,7 +3940,7 @@ "type": "github" } ], - "time": "2021-12-02T12:48:52+00:00" + "time": "2022-02-11T16:23:04+00:00" }, { "name": "phpunit/php-invoker", @@ -4196,7 +4228,7 @@ }, { "name": "psr/log", - "version": "3.0.0", + "version": "dev-master", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", @@ -4211,6 +4243,7 @@ "require": { "php": ">=8.0.0" }, + "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -4246,7 +4279,7 @@ }, { "name": "sebastian/cli-parser", - "version": "1.0.2", + "version": "1.0.x-dev", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", @@ -4413,16 +4446,16 @@ }, { "name": "sebastian/comparator", - "version": "4.0.8", + "version": "4.0.x-dev", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a" + "reference": "b247957a1c8dc81a671770f74b479c0a78a818f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/b247957a1c8dc81a671770f74b479c0a78a818f1", + "reference": "b247957a1c8dc81a671770f74b479c0a78a818f1", "shasum": "" }, "require": { @@ -4475,7 +4508,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0" }, "funding": [ { @@ -4483,11 +4516,11 @@ "type": "github" } ], - "time": "2022-09-14T12:41:17+00:00" + "time": "2022-09-14T12:46:14+00:00" }, { "name": "sebastian/complexity", - "version": "2.0.3", + "version": "2.0.x-dev", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", @@ -4544,7 +4577,7 @@ }, { "name": "sebastian/diff", - "version": "4.0.6", + "version": "4.0.x-dev", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", @@ -4610,7 +4643,7 @@ }, { "name": "sebastian/environment", - "version": "5.1.5", + "version": "5.1.x-dev", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", @@ -4661,7 +4694,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1" }, "funding": [ { @@ -4673,7 +4706,7 @@ }, { "name": "sebastian/exporter", - "version": "4.0.6", + "version": "4.0.x-dev", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", @@ -4750,7 +4783,7 @@ }, { "name": "sebastian/global-state", - "version": "5.0.7", + "version": "5.0.x-dev", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", @@ -4814,7 +4847,7 @@ }, { "name": "sebastian/lines-of-code", - "version": "1.0.4", + "version": "1.0.x-dev", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", @@ -4983,7 +5016,7 @@ }, { "name": "sebastian/recursion-context", - "version": "4.0.5", + "version": "4.0.x-dev", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", @@ -5046,16 +5079,16 @@ }, { "name": "sebastian/resource-operations", - "version": "3.0.4", + "version": "dev-main", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e" + "reference": "ff553e7482dcee39fa4acc2b175d6ddeb0f7bc25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/05d5692a7993ecccd56a03e40cd7e5b09b1d404e", - "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ff553e7482dcee39fa4acc2b175d6ddeb0f7bc25", + "reference": "ff553e7482dcee39fa4acc2b175d6ddeb0f7bc25", "shasum": "" }, "require": { @@ -5064,6 +5097,7 @@ "require-dev": { "phpunit/phpunit": "^9.0" }, + "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -5088,7 +5122,7 @@ "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", "support": { - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.4" + "source": "https://github.com/sebastianbergmann/resource-operations/tree/main" }, "funding": [ { @@ -5096,11 +5130,11 @@ "type": "github" } ], - "time": "2024-03-14T16:00:52+00:00" + "time": "2024-03-14T18:47:08+00:00" }, { "name": "sebastian/type", - "version": "3.2.1", + "version": "3.2.x-dev", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", @@ -5144,7 +5178,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" + "source": "https://github.com/sebastianbergmann/type/tree/3.2" }, "funding": [ { @@ -5156,7 +5190,7 @@ }, { "name": "sebastian/version", - "version": "3.0.2", + "version": "3.0.x-dev", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", @@ -5241,16 +5275,16 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.29.0", + "version": "1.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4" + "reference": "c9e59dec962d38cf2e0e4c61c4a1a1312f4dd7fe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4", - "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c9e59dec962d38cf2e0e4c61c4a1a1312f4dd7fe", + "reference": "c9e59dec962d38cf2e0e4c61c4a1a1312f4dd7fe", "shasum": "" }, "require": { @@ -5262,6 +5296,7 @@ "suggest": { "ext-ctype": "For best performance" }, + "default-branch": true, "type": "library", "extra": { "thanks": { @@ -5300,7 +5335,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/1.x" }, "funding": [ { @@ -5316,20 +5351,20 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-04-19T06:31:17+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.29.0", + "version": "1.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" + "reference": "e642fbe7a7b73cdb05460555289a9057bfd6ead6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", - "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/e642fbe7a7b73cdb05460555289a9057bfd6ead6", + "reference": "e642fbe7a7b73cdb05460555289a9057bfd6ead6", "shasum": "" }, "require": { @@ -5341,6 +5376,7 @@ "suggest": { "ext-mbstring": "For best performance" }, + "default-branch": true, "type": "library", "extra": { "thanks": { @@ -5380,7 +5416,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/1.x" }, "funding": [ { @@ -5396,7 +5432,7 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-04-19T06:31:17+00:00" }, { "name": "textalk/websocket", @@ -5619,15 +5655,9 @@ "alias": "0.5.99", "alias_normalized": "0.5.99.0" }, - { - "package": "utopia-php/pools", - "version": "dev-feat-coroutine-support", - "alias": "0.4.99", - "alias_normalized": "0.4.99.0" - }, { "package": "utopia-php/queue", - "version": "dev-feat-framework-v2-v2", + "version": "dev-feat-coroutine-and-di", "alias": "0.7.99", "alias_normalized": "0.7.99.0" }, @@ -5638,18 +5668,16 @@ "alias_normalized": "0.18.99.0" } ], - "minimum-stability": "stable", + "minimum-stability": "dev", "stability-flags": { "utopia-php/abuse": 20, "utopia-php/analytics": 20, "utopia-php/audit": 20, "utopia-php/database": 20, - "utopia-php/di": 20, "utopia-php/domains": 20, "utopia-php/framework": 20, "utopia-php/orchestration": 20, "utopia-php/platform": 20, - "utopia-php/pools": 20, "utopia-php/queue": 20, "utopia-php/storage": 20 },