diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100755 index 0000000..b747f7e --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,54 @@ +name: Lint + +on: + push: + branches: + - "develop" + - "1.0-develop" + pull_request: + branches: + - "develop" + - "1.0-develop" + +jobs: + lint: + name: Lint + runs-on: ubuntu-20.04 + steps: + - name: Code Checkout + uses: actions/checkout@v3 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: "8.3" + extensions: bcmath, curl, gd, mbstring, mysql, openssl, pdo, tokenizer, xml, zip + tools: composer:v2 + coverage: none + + - name: Install dependencies + run: composer install --no-interaction --no-progress --no-suggest --prefer-dist + + - name: PHP CS Fixer (APP) + run: vendor/bin/php-cs-fixer fix app --dry-run + + - name: PHP CS Fixer (Tests) + run: vendor/bin/php-cs-fixer fix tests --dry-run + - name: PHP CS Fixer (Routes) + run: vendor/bin/php-cs-fixer fix routes --dry-run + - name: PHP CS Fixer (Lang) + run: vendor/bin/php-cs-fixer fix lang --dry-run + - name: PHP CS Fixer (Cron) + run: vendor/bin/php-cs-fixer fix lang --dry-run + - name: PHP CS Fixer (API) + run: vendor/bin/php-cs-fixer fix api --dry-run + - name: PHP CS Fixer (Addons) + run: vendor/bin/php-cs-fixer fix addons --dry-run + - name: PHP CS Fixer (Commands) + run: vendor/bin/php-cs-fixer fix commands --dry-run + - name: PHP CS Fixer (Install) + run: vendor/bin/php-cs-fixer fix install --dry-run + - name: PHP CS Fixer (Public) + run: vendor/bin/php-cs-fixer fix public --dry-run + - name: PHP CS Fixer (Migrate) + run: vendor/bin/php-cs-fixer fix migrate --dry-run diff --git a/.gitignore b/.gitignore index e1ff5e2..6e144da 100755 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ composer.phar /test.json /caches/*/ caches/last_settings_migrate_run +.php-cs-fixer.cache diff --git a/addons/Example/Example.php b/addons/Example/Example.php index 2a44c8f..dc81f57 100755 --- a/addons/Example/Example.php +++ b/addons/Example/Example.php @@ -3,11 +3,8 @@ class Example { - public function Main(array $args = []) { } } - -?> \ No newline at end of file diff --git a/api/System/logs.php b/api/System/logs.php index fa2cc75..b513a2a 100755 --- a/api/System/logs.php +++ b/api/System/logs.php @@ -1,4 +1,5 @@ - Logger::getAllSortedByDate(LoggerTypes::OTHER, LoggerLevels::OTHER,10) + "logs" => Logger::getAllSortedByDate(LoggerTypes::OTHER, LoggerLevels::OTHER, 10) ]); -} \ No newline at end of file +} diff --git a/api/User/login.php b/api/User/login.php index e30faf3..14ea07c 100755 --- a/api/User/login.php +++ b/api/User/login.php @@ -1,4 +1,5 @@ - \ No newline at end of file diff --git a/app/Cli/Colors.php b/app/Cli/Colors.php index 04cd29e..2fa7495 100755 --- a/app/Cli/Colors.php +++ b/app/Cli/Colors.php @@ -164,7 +164,8 @@ public static function Underline(): string return "\033[4m"; } - public static function NewLine() : string { + public static function NewLine(): string + { return "\n"; } diff --git a/app/Cli/Commands/Colors.php b/app/Cli/Commands/Colors.php new file mode 100755 index 0000000..e2797ae --- /dev/null +++ b/app/Cli/Commands/Colors.php @@ -0,0 +1,16 @@ +tryConnection($host, $port, $username, $password, $database) == true) { + echo self::NewLine(); + echo self::translateColorsCode("&fConnection to the database was &asuccessful!&o"); + echo self::NewLine(); + echo self::translateColorsCode("&fSaving the configuration...&o"); + cfg::set("database", "host", $host); + cfg::set("database", "port", $port); + cfg::set("database", "username", $username); + cfg::set("database", "password", $password); + cfg::set("database", "name", $database); + echo self::translateColorsCode("&fConfiguration saved &asuccessfully!&o"); + } else { + echo self::translateColorsCode("&7Failed to connect to the database. &o&fPlease check the provided information."); + } + + } + + public static function configure(): void + { + + } +} diff --git a/app/Cli/Commands/Down.php b/app/Cli/Commands/Down.php new file mode 100755 index 0000000..6eeb63e --- /dev/null +++ b/app/Cli/Commands/Down.php @@ -0,0 +1,21 @@ +hasProperty('description')) { + continue; + } + + echo self::log_info("{$command} > {$reflectionClass->getProperty('description')->getValue()}"); + } + echo self::log_info(""); + } +} diff --git a/app/Cli/Commands/Migrate.php b/app/Cli/Commands/Migrate.php new file mode 100755 index 0000000..e73d085 --- /dev/null +++ b/app/Cli/Commands/Migrate.php @@ -0,0 +1,58 @@ +getMessage() . ""); + } + } + + public static function cfg(): void + { + + } +} diff --git a/app/Cli/Commands/Rebuild.php b/app/Cli/Commands/Rebuild.php new file mode 100755 index 0000000..e74ea91 --- /dev/null +++ b/app/Cli/Commands/Rebuild.php @@ -0,0 +1,105 @@ +tryConnection(cfg::get("database", "host"), cfg::get("database", "port"), cfg::get("database", "username"), cfg::get("database", "password"), cfg::get("database", "name")) == true) { + echo self::translateColorsCode("&o&fConnection to the database was &asuccessful!&o"); + echo self::NewLine(); + echo self::translateColorsCode("&4&lWARNING: &fThis option will wipe the database. &o"); + echo self::translateColorsCode("&4&lWARNING: &fOnly use this function if you know what you are doing &o"); + echo self::translateColorsCode("&4&lWARNING: &fOnce you wipe the database there is no going back! &o"); + echo self::translateColorsCode("&4&lWARNING: &fPlease be careful and don't play around with commands! &o"); + echo self::translateColorsCode("&4&lWARNING: &fThere is no other message then this so keep in mind! &o"); + echo self::translateColorsCode("&4&lWARNING: &fDo you really want to wipe the database? (&ey&f/&en&f): "); + + $confirm = readline(); + if (strtolower($confirm) == 'y') { + try { + $mysql = new MySQL(); + $db = $mysql->connectPDO(); + + $db->exec("SET FOREIGN_KEY_CHECKS = 0"); + $tables = $db->query("SHOW TABLES")->fetchAll(PDO::FETCH_COLUMN); + foreach ($tables as $table) { + $db->exec("DROP TABLE IF EXISTS $table"); + } + $db->exec("SET FOREIGN_KEY_CHECKS = 1"); + echo self::NewLine(); + echo self::NewLine(); + echo self::NewLine(); + echo self::NewLine(); + echo self::NewLine(); + echo self::translateColorsCode("&fDatabase wiped!!&o"); + MySQL::migrate(true); + Settings::migrate(true); + echo self::NewLine(); + echo self::translateColorsCode("&fDatabase rebuilt!&o"); + echo self::translateColorsCode("&fLet's start by setting up your configuration!&o"); + Configure::configure(); + } catch (PDOException $e) { + echo self::translateColorsCode("&fFailed to drop tables: &c" . $e->getMessage() . "&o"); + echo self::NewLine(); + } + } else { + self::exit("&fExiting...&o"); + } + } else { + self::exit("&cFailed to connect to the database!&o"); + } + } catch (Exception $e) { + self::exit("&cFailed to rebuild the database: &r" . $e->getMessage() . ""); + } + } + + public static function app(): void + { + try { + self::log_info("Rebuilding the app..."); + self::log_info(""); + self::log_success("&rApp rebuilt &asuccessfully&r!"); + self::exit(); + } catch (Exception $e) { + die("Failed to rebuild the app: " . $e->getMessage() . ""); + } + } +} diff --git a/app/Cli/Commands/Up.php b/app/Cli/Commands/Up.php new file mode 100755 index 0000000..c2c93af --- /dev/null +++ b/app/Cli/Commands/Up.php @@ -0,0 +1,21 @@ +execute(true); - } else { - throw new Exception("Command class not found: $commandClass"); - } - } else { - throw new Exception("Command file not found: $commandName"); + $commandName = ucfirst($commandName); + $commandFile = __DIR__ . "/Commands/$commandName.php"; + + if (!file_exists($commandFile)) { + throw new Exception("Command not found!"); + } + + require_once $commandFile; + + $commandClass = "MythicalSystemsFramework\\Cli\\Commands\\$commandName"; + + if (!class_exists($commandClass)) { + throw new Exception("Command not found!"); } - } + $reflectionClass = new ReflectionClass($commandClass); + + if (!$reflectionClass->hasProperty('description')) { + throw new Exception("Command class '$commandClass' does not have 'name' or 'description' properties."); + } + + $commandClass::execute(true); + + } /** - * Recursively searches for the command file with the specified command name. + * Exit the CLI application. + * + * @param string $message The message to display before exiting. * - * @param string $commandName The name of the command to search for. - * @param string $directory The directory to search in. Defaults to '/var/www/network-masters/framework/commands'. - * - * @return string|null The path to the command file if found, or null if not found. + * @return void */ - public static function findCommandFile($commandName, $directory = __DIR__ . '/../../commands'): string|null + public static function exit(string $message = '&7Application exited &asuccessfully&7!'): void { - $files = scandir($directory); - foreach ($files as $file) { - if ($file === '.' || $file === '..') { - continue; - } - $path = $directory . '/' . $file; - if (is_dir($path)) { - $subCommandFile = self::findCommandFile($commandName, $path); - if ($subCommandFile !== null) { - return $subCommandFile; - } - } elseif (pathinfo($file, PATHINFO_FILENAME) === $commandName) { - return $path; - } + if ($message !== '') { + echo self::translateColorsCode($message); } - return null; + + exit; } -} \ No newline at end of file +} diff --git a/app/Database/MySQL.php b/app/Database/MySQL.php index 934f8b3..ecee282 100755 --- a/app/Database/MySQL.php +++ b/app/Database/MySQL.php @@ -2,6 +2,9 @@ namespace MythicalSystemsFramework\Database; +use MythicalSystemsFramework\Cli\Kernel; +use MythicalSystemsFramework\Database\exception\database\MySQLError; +use MythicalSystemsFramework\Database\exception\migration\NoMigrationsFound; use MythicalSystemsFramework\Managers\ConfigManager as cfg; use MythicalSystemsFramework\Kernel\Logger; use MythicalSystemsFramework\Kernel\LoggerLevels; @@ -14,10 +17,10 @@ class MySQL { private static $connection; - + public static int $migrated_files_count; /** * Connects to the database server using PDO. - * + * * @return PDO The PDO object representing the database connection. * @throws PDOException If the connection to the database fails. */ @@ -37,7 +40,7 @@ public function connectPDO(): PDO /** * Connects to the database server using MYSQLI. - * + * * @return mysqli */ public function connectMYSQLI(): mysqli @@ -61,7 +64,7 @@ public function connectMYSQLI(): mysqli /** * Close a database connection if open - * + * * @return void */ public static function closeConnection(): void @@ -80,9 +83,9 @@ public static function closeConnection(): void * @param string $username The username * @param string $password The password * @param string $database The database name - * + * * @return bool True if the connection is successful, false otherwise. - * @throws PDOException If the connection to the database fails. * + * @throws PDOException If the connection to the database fails. * */ public function tryConnection(string $host, string|int $port, string $username, string $password, string $database): bool { @@ -99,10 +102,10 @@ public function tryConnection(string $host, string|int $port, string $username, /** * Try to lock a record! - * + * * @param string $table The table name! * @param string $id The record id! - * + * * @return void */ public function requestLock(string $table, string $id): void @@ -125,10 +128,10 @@ public function requestLock(string $table, string $id): void /** * Try to unlock a record. * Unlock a record so you can write and read it! - * + * * @param string $table The table name! * @param string $id The id of the record! - * + * * @return void */ public static function requestUnLock(string $table, string $id): void @@ -150,10 +153,10 @@ public static function requestUnLock(string $table, string $id): void } /** * Get the lock status of a record. - * + * * @param string $table The table name * @param string $id The id of the record - * + * * @return bool */ public static function getLock(string $table, string $id): bool @@ -176,9 +179,9 @@ public static function getLock(string $table, string $id): bool } /** * Does a table exist in the database? - * + * * @param string $table The table name - * + * * @return bool */ public static function doesTableExist(string $table): bool @@ -186,7 +189,7 @@ public static function doesTableExist(string $table): bool try { $mysqli = new MySQL(); $conn = $mysqli->connectMYSQLI(); - $conn->query("SELECT * FROM ".mysqli_real_escape_string($conn, $table)); + $conn->query("SELECT * FROM " . mysqli_real_escape_string($conn, $table)); return true; } catch (Exception $e) { Logger::log(LoggerLevels::CRITICAL, LoggerTypes::DATABASE, "Failed to check if table exists: " . $e); @@ -195,13 +198,14 @@ public static function doesTableExist(string $table): bool } /** * Does a record exist in the database? - * + * * @param string $table Table name * @param string $search The term you want to search for (id) * @param string $term What the value should be (1) * @return bool */ - public static function doesRecordExist(string $table, string $search, string $term) : bool { + public static function doesRecordExist(string $table, string $search, string $term): bool + { try { if (self::doesTableExist($table) === false) { return false; @@ -218,4 +222,76 @@ public static function doesRecordExist(string $table, string $search, string $te return false; } } -} \ No newline at end of file + + /** + * Migrate the database. + * + * @return void + */ + public static function migrate(bool $isCli = false): void + { + try { + + $mysql = new MySQL(); + $db = $mysql->connectPDO(); + + $db->exec(" + CREATE TABLE IF NOT EXISTS framework_migrations ( + id INT AUTO_INCREMENT PRIMARY KEY, + script VARCHAR(255) NOT NULL, + executed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + ) + "); + + $sqlFiles = glob(__DIR__ . '/../../migrate/database/*.sql'); + + if (count($sqlFiles) > 0) { + usort($sqlFiles, function ($a, $b) { + $aDate = intval(basename($a, '.sql')); + $bDate = intval(basename($b, '.sql')); + return $aDate - $bDate; + }); + + foreach ($sqlFiles as $sqlFile) { + $script = file_get_contents($sqlFile); + + $fileName = basename($sqlFile); // Get only the file name + + $stmt = $db->prepare("SELECT COUNT(*) FROM framework_migrations WHERE script = ?"); + $stmt->execute([$fileName]); + $count = $stmt->fetchColumn(); + + if ($count == 0) { + $db->exec($script); + + $stmt = $db->prepare("INSERT INTO framework_migrations (script) VALUES (?)"); + $stmt->execute([$fileName]); + if ($isCli == true) { + echo Kernel::translateColorsCode("&fExecuted migration: &e" . $fileName . "&o"); + echo Kernel::NewLine(); + } + } else { + if ($isCli == true) { + echo Kernel::translateColorsCode("&fSkipping migration: &e" . $fileName . " &f(&ealready executed&f)&o"); + echo Kernel::NewLine(); + } + } + } + } else { + if ($isCli == true) { + echo Kernel::translateColorsCode("&cNo migrations found!&o"); + echo Kernel::NewLine(); + } else { + throw new NoMigrationsFound(); + } + } + } catch (PDOException $e) { + if ($isCli == true) { + echo Kernel::translateColorsCode("&cFailed to migrate the database: " . $e->getMessage() . "&o"); + echo Kernel::NewLine(); + } else { + throw new MySQLError("Failed to migrate the database: " . $e->getMessage()); + } + } + } +} diff --git a/app/Database/MySQLCache.php b/app/Database/MySQLCache.php index f033ac7..aac2c35 100755 --- a/app/Database/MySQLCache.php +++ b/app/Database/MySQLCache.php @@ -26,7 +26,7 @@ public static function saveCache(string $table_name): void /** * Specific table dump settings! - * + * * @requires framework_settings */ if ($table_name == "framework_settings") { @@ -74,7 +74,7 @@ public static function saveCache(string $table_name): void "date_created" => date("Y-m-d H:i:s"), "date_expire" => date("Y-m-d H:i:s", strtotime("+".$data["caches"]["settings_cache_life"]." seconds")), ]; - $data = array_merge($cache_info,$data); + $data = array_merge($cache_info, $data); $json = json_encode($data, JSON_PRETTY_PRINT); Settings::up(); file_put_contents(Settings::$cache_path . '/' . $table_name . '.json', $json); @@ -92,4 +92,4 @@ public static function deleteCaches(): void } } } -} \ No newline at end of file +} diff --git a/app/Database/Redis/Redis.php b/app/Database/Redis/Redis.php index a9a213f..59c5082 100755 --- a/app/Database/Redis/Redis.php +++ b/app/Database/Redis/Redis.php @@ -2,12 +2,11 @@ namespace MythicalSystemsFramework\Database\Redis; - class Redis { public static function getConnection() { - + } -} \ No newline at end of file +} diff --git a/app/Database/exception/database/MySQLError.php b/app/Database/exception/database/MySQLError.php new file mode 100755 index 0000000..17213bd --- /dev/null +++ b/app/Database/exception/database/MySQLError.php @@ -0,0 +1,14 @@ +connectMYSQLI(); @@ -253,17 +252,18 @@ public static function markAsRead(string $notification_id, string $user_uuid) : } catch (Exception $e) { throw new Exception("" . $e->getMessage()); } - } + } /** * Check if a notification was already read! - * + * * @param string $notification_id The id of the notification * @param string $user_uuid The uuid of the user - * + * * @throws Exception * @return bool */ - public static function hasAlreadyRead(string $notification_id, string $user_uuid) : bool { + public static function hasAlreadyRead(string $notification_id, string $user_uuid): bool + { try { $mysqli = new MySQL(); $conn = $mysqli->connectMYSQLI(); diff --git a/app/Handlers/exception/AnnouncementNotFoundException.php b/app/Handlers/exception/AnnouncementNotFoundException.php index ac11ab0..acb8a33 100755 --- a/app/Handlers/exception/AnnouncementNotFoundException.php +++ b/app/Handlers/exception/AnnouncementNotFoundException.php @@ -8,4 +8,4 @@ public function __construct($message = "Announcement not found.", $code = 0, \Th { parent::__construct($message, $code, $previous); } -} \ No newline at end of file +} diff --git a/app/Handlers/exception/NotificationNotFoundException.php b/app/Handlers/exception/NotificationNotFoundException.php index fa9c544..b514849 100755 --- a/app/Handlers/exception/NotificationNotFoundException.php +++ b/app/Handlers/exception/NotificationNotFoundException.php @@ -8,4 +8,4 @@ public function __construct($message = "Notification not found.", $code = 0, \Ex { parent::__construct($message, $code, $previous); } -} \ No newline at end of file +} diff --git a/app/Handlers/interfaces/AnnouncementSocial.php b/app/Handlers/interfaces/AnnouncementSocial.php index 7f19479..bc8a92b 100755 --- a/app/Handlers/interfaces/AnnouncementSocial.php +++ b/app/Handlers/interfaces/AnnouncementSocial.php @@ -2,7 +2,8 @@ namespace MythicalSystemsFramework\Handlers\interfaces; -interface AnnouncementSocial { +interface AnnouncementSocial +{ public static const Read = "read"; public static const Like = "like"; public static const Dislike = "dislike"; diff --git a/app/Kernel/Debugger.php b/app/Kernel/Debugger.php index 2b0f178..d43e239 100755 --- a/app/Kernel/Debugger.php +++ b/app/Kernel/Debugger.php @@ -8,10 +8,10 @@ class Debugger { /** * Display the information - * + * * @param mixed $input The input to display the info about! * @param bool $collapse This is always false by default - * + * * @return void */ public static function display_info($input, $collapse = false): void @@ -144,13 +144,13 @@ public static function display_info($input, $collapse = false): void /** * Throw an error - * + * * @param mixed $renderer The twig renderer * @param string $error_text The error text * @param string $error_full_message The full error message * @param int $error_database_id The error database id * @param string $error_file_path The error file path - * + * * @return void IT will die */ public static function throw_error($renderer, $error_text, $error_full_message, $error_database_id, $error_file_path) @@ -174,4 +174,4 @@ public static function throw_error($renderer, $error_text, $error_full_message, die($e->getMessage()); } } -} \ No newline at end of file +} diff --git a/app/Kernel/Encryption.php b/app/Kernel/Encryption.php index 05d28f9..5fe8f34 100755 --- a/app/Kernel/Encryption.php +++ b/app/Kernel/Encryption.php @@ -9,9 +9,9 @@ class Encryption { /** * Encrypt the data - * + * * @param string $data - * + * * @return string */ public static function encrypt(string $data): string @@ -21,9 +21,9 @@ public static function encrypt(string $data): string /** * Decrypt the data - * + * * @param string $data - * + * * @return string */ public static function decrypt(string $data): string diff --git a/app/Kernel/Logger.php b/app/Kernel/Logger.php index 3c685e8..a363fed 100755 --- a/app/Kernel/Logger.php +++ b/app/Kernel/Logger.php @@ -11,11 +11,11 @@ class Logger { /** * Log something inside the kernel framework_logs - * + * * @param LoggerTypes|string $level (INFO, WARNING, ERROR, CRITICAL, OTHER) * @param LoggerLevels|string $type (CORE, DATABASE, PLUGIN, LOG, OTHER, LANGUAGE) * @param string $message The message you want to log - * + * * @return int The log id! */ public static function log(LoggerTypes|string $level, LoggerLevels|string $type, string $message): int @@ -118,7 +118,7 @@ public static function getAllSortedById(): array * @param LoggerTypes|string $level (INFO, WARNING, ERROR, CRITICAL, OTHER) * @param LoggerLevels|string $type (CORE, DATABASE, PLUGIN, LOG, OTHER, LANGUAGE) * @param int $limit The amount of logs you want to get (15 by default) - * + * * @return array|null Returns the logs in an array */ public static function getAllSortedByDate(LoggerTypes|string $level, LoggerLevels|string $type, int $limit = 15): array|null diff --git a/app/Kernel/LoggerLevels.php b/app/Kernel/LoggerLevels.php index c613a0f..d561ff9 100755 --- a/app/Kernel/LoggerLevels.php +++ b/app/Kernel/LoggerLevels.php @@ -4,7 +4,7 @@ interface LoggerLevels { - // Log level + // Log level public const INFO = 'INFO'; public const WARNING = 'WARNING'; public const ERROR = 'ERROR'; diff --git a/app/Managers/ConfigManager.php b/app/Managers/ConfigManager.php index 17716d7..7114cb3 100755 --- a/app/Managers/ConfigManager.php +++ b/app/Managers/ConfigManager.php @@ -11,12 +11,12 @@ class ConfigManager /** * DEPRECATED: Use Settings class instead!! * DEPRECATED: This class is used for the settings.json file! - * + * * Get value form the config! - * + * * @param string $category The category of the value you want to take from the config * @param string $value The value you want to take from the config file! - * + * * @return string|null */ public static function get(string $category, string $key): string|null @@ -39,12 +39,12 @@ public static function get(string $category, string $key): string|null /** * DEPRECATED: Use Settings class instead!! * DEPRECATED: This class is used for the settings.json file! - * + * * Set a value in the config file! - * + * * @param string $category The category of the value you want to set in the config - * @param string $value The value you want to set in the config file! - * + * @param string $value The value you want to set in the config file! + * * @return bool If true then success if false then false! */ public static function set(string $category, string $key, string $value): bool @@ -67,13 +67,13 @@ public static function set(string $category, string $key, string $value): bool /** * DEPRECATED: Use Settings class instead!! * DEPRECATED: This class is used for the settings.json file! - * + * * Add a value to the config file! - * + * * @param string $category The category of the value you want to add in the config * @param string $key The key of the value you want to add in the config file! - * @param string $value The value you want to add in the config file! - * + * @param string $value The value you want to add in the config file! + * * @return bool */ public static function add(string $category, string $key, string $value): bool @@ -96,12 +96,12 @@ public static function add(string $category, string $key, string $value): bool /** * DEPRECATED: Use Settings class instead!! * DEPRECATED: This class is used for the settings.json file! - * + * * Remove a value from the config file! - * + * * @param string $category The category of the value you want to remove from the config * @param string $key The key of the value you want to remove from the config file! - * + * * @return bool */ public static function remove(string $category, string $key): bool diff --git a/app/Managers/LanguageManager.php b/app/Managers/LanguageManager.php index 6ad6ab2..22180f3 100755 --- a/app/Managers/LanguageManager.php +++ b/app/Managers/LanguageManager.php @@ -9,10 +9,9 @@ class LanguageManager { - /** * Get the language from the file - * + * * @return mixed */ public static function getLang(): mixed @@ -45,7 +44,7 @@ public static function getLang(): mixed /** * Get all available languages - * + * * @return array */ public static function getAllAvailableLanguages(): array @@ -57,10 +56,10 @@ public static function getAllAvailableLanguages(): array /** * Log translation key not found - * + * * @param string $key Translation key * @param string $message The alternative message - * + * * @return string The translation key not found message */ public static function logKeyTranslationNotFound($key, $message = "TRANSLATION_KEY_NOT_FOUND"): string diff --git a/app/Managers/Settings.php b/app/Managers/Settings.php index d36c9b3..c215b7b 100755 --- a/app/Managers/Settings.php +++ b/app/Managers/Settings.php @@ -3,6 +3,10 @@ namespace MythicalSystemsFramework\Managers; use MythicalSystemsFramework\Database\MySQLCache; +use MythicalSystemsFramework\Database\MySQL; +use MythicalSystemsFramework\Cli\Colors as color; +use MythicalSystemsFramework\Managers\exception\settings\NoMigrationsFound; +use Exception; class Settings { @@ -35,20 +39,66 @@ public static function getSetting(string $category, string $name): string|null } /** * Update a setting in the database - * + * * @param string $category The name of the category * @param string $name The name of the setting * @param string $value The value you want to replace with! * @param bool $updateCache Update the cache after updating the setting - * + * * @return void * @throws Exception */ - public static function updateSetting(string $category, string $name, string $value, bool $updateCache = true) : void + public static function updateSetting(string $category, string $name, string $value, bool $updateCache = true): void { SettingsManager::update($category, $name, $value); if ($updateCache) { MySQLCache::saveCache("framework_settings"); } } + + + public static function migrate(bool $isTerminal = false): void + { + try { + $mysql = new MySQL(); + $db = $mysql->connectPDO(); + $db->exec("CREATE TABLE IF NOT EXISTS `framework_settings_migrations` (`id` INT NOT NULL AUTO_INCREMENT , `script` TEXT NOT NULL , `executed_at` DATETIME NOT NULL , PRIMARY KEY (`id`)) ENGINE = InnoDB; ALTER TABLE `framework_settings_migrations` CHANGE `executed_at` `executed_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP;"); + $phpFiles = glob(__DIR__ . '/../../migrate/config/*.php'); + if (count($phpFiles) > 0) { + sort($phpFiles); + + $migratedCount = 0; // Initialize migrated count + + foreach ($phpFiles as $phpFile) { + $fileName = basename($phpFile); + + $stmt = $db->prepare("SELECT COUNT(*) FROM framework_settings_migrations WHERE script = ?"); + $stmt->execute([$fileName]); + $count = $stmt->fetchColumn(); + + if ($count == 0) { + include $phpFile; + + $stmt = $db->prepare("INSERT INTO framework_settings_migrations (script) VALUES (?)"); + $stmt->execute([$fileName]); + + $migratedCount++; // Increment migrated count + } + } + if ($isTerminal) { + echo color::translateColorsCode("&fMigration completed. Migrated &e" . $migratedCount . " &ffiles."); + } + } else { + if ($isTerminal) { + echo color::translateColorsCode("&fNo migrations found!"); + } + } + } catch (Exception $e) { + if ($isTerminal) { + echo color::translateColorsCode("&cFailed to migrate the database: &f" . $e->getMessage() . ""); + } else { + throw new NoMigrationsFound("No migrations found!". $e->getMessage()); + } + } + } } diff --git a/app/Managers/SettingsManager.php b/app/Managers/SettingsManager.php index 034cd84..51d19c4 100755 --- a/app/Managers/SettingsManager.php +++ b/app/Managers/SettingsManager.php @@ -3,6 +3,7 @@ namespace MythicalSystemsFramework\Managers; use MythicalSystemsFramework\Database\MySQL; + /** * DEPRECATED: Use Settings class instead!! */ @@ -10,9 +11,9 @@ class SettingsManager { /** * DEPRECATED: Use Settings class instead!! - * + * * Get a setting from the database! - * + * * @param string $category The category of the setting you want to get! * @param string $key The key of the setting you want to get! * @@ -38,7 +39,7 @@ public static function get(string $category, string $key): string|null /** * DEPRECATED: Use Settings class instead!! * Set a setting in the database! - * + * * @param string $category The category of the setting you want to set! * @param string $key The key of the setting you want to set! * @param string $value The value of the setting you want to set! @@ -59,7 +60,7 @@ public static function set(string $category, string $key, string $value): bool /** * DEPRECATED: Use Settings class instead!! * Delete a setting from the database! - * + * * @param string $category The category of the setting you want to delete! * @param string $key The key of the setting you want to delete! * @@ -82,9 +83,9 @@ public static function delete(string $category, string $key): bool /** * DEPRECATED: Use Settings class instead!! - * + * * Delete all settings from the database! - * + * * @return bool True if successfully deleted, false otherwise! */ public static function deleteAll(): bool @@ -97,9 +98,9 @@ public static function deleteAll(): bool /** * DEPRECATED: Use Settings class instead!! - * + * * Update a setting in the database! - * + * * @param string $category The category of the setting you want to update! * @param string $key The key of the setting you want to update! * @param string $value The value of the setting you want to update! @@ -125,7 +126,7 @@ public static function update(string $category, string $key, string $value): boo * DEPRECATED: Use Settings class instead!! * * Check if a setting exists in the database! - * + * * @param string $category The category of the setting you want to check! * @param string $key The key of the setting you want to check! * diff --git a/app/Managers/SnowFlakeManager.php b/app/Managers/SnowFlakeManager.php index 08ec884..c84cf88 100755 --- a/app/Managers/SnowFlakeManager.php +++ b/app/Managers/SnowFlakeManager.php @@ -8,8 +8,8 @@ class SnowFlakeManager { /** * Function to generate a unique user ID - * - * @return string The new user id + * + * @return string The new user id */ private static function generateUserID(): string { @@ -18,7 +18,7 @@ private static function generateUserID(): string /** * Function to get the cached user IDs from the database - * + * * @return array Array of cached user IDs */ private static function getCachedUserIDs(): array @@ -40,9 +40,9 @@ private static function getCachedUserIDs(): array /** * Function to save user IDs to the database - * + * * @param string $userId Save the user id inside the database - * + * * @return bool True if successfully saved, false otherwise */ private static function saveUserIDToDatabase(string $userId): bool @@ -58,7 +58,7 @@ private static function saveUserIDToDatabase(string $userId): bool /** * Function to check if a user ID is already used - * + * * @return bool If this is used or not */ private static function isUserIDUsed(string $userId, array $cachedUserIds): bool @@ -68,7 +68,7 @@ private static function isUserIDUsed(string $userId, array $cachedUserIds): bool /** * Function to get a unique user ID - * + * * @return string The user id */ public static function getUniqueUserID(): string @@ -89,9 +89,9 @@ public static function getUniqueUserID(): string /** * Function to delete a user ID from the database - * + * * @param string $userId The user ID to be deleted from the database - * + * * @return bool True if the user ID was successfully deleted, false otherwise */ public static function deleteUserFromDatabase(string $userId): bool @@ -107,9 +107,9 @@ public static function deleteUserFromDatabase(string $userId): bool /** * Function to check if a user ID exists in the database - * + * * @param string $userId The user ID to check - * + * * @return bool True if the user ID exists in the database, false otherwise */ public static function doesUserExistInDatabase(string $userId): bool diff --git a/app/Managers/exception/settings/NoMigrationsFound.php b/app/Managers/exception/settings/NoMigrationsFound.php new file mode 100755 index 0000000..bfa8645 --- /dev/null +++ b/app/Managers/exception/settings/NoMigrationsFound.php @@ -0,0 +1,14 @@ +connectMYSQLI(); - + // Update the role $stmtRole = $mysqli->prepare("UPDATE framework_roles SET name = ?, weight = ? WHERE id = ?"); $stmtRole->bind_param("sii", $name, $weight, $id); @@ -125,10 +125,10 @@ public static function update(int $id, string $name, int $weight = 1): string|nu /** * Get a role - * + * * @param int $id The role id * @param string $data The data you are looking for - * + * * MAKE SURE YOU CHECK THE DOCS FOR THIS FUNCTION * @return string|null */ @@ -159,7 +159,7 @@ public static function getSpecificRoleInfo(int $id, string $data): string|null /** * Get all roles with name, weight, and id - * + * * @return array|null An array of roles with name, weight, and id */ public static function getAllRoles(): array|null @@ -193,9 +193,9 @@ public static function getAllRoles(): array|null } /** * This function just looks if the role exists - * + * * @param int $id The name of the role - * + * * @return string|null */ public static function roleExists(int $id): string|null diff --git a/app/Roles/RolesHelper.php b/app/Roles/RolesHelper.php index 558d355..d10d4d4 100755 --- a/app/Roles/RolesHelper.php +++ b/app/Roles/RolesHelper.php @@ -10,14 +10,14 @@ class RolesHelper extends RolesDataHandler { /** * Get the role name from the role id - * + * * @param string $role_id - * + * * @return string|null */ public static function getRoleName(int $role_id): ?string { return self::getSpecificRoleInfo($role_id, "name"); } - + } diff --git a/app/Roles/RolesPermissionDataHandler.php b/app/Roles/RolesPermissionDataHandler.php index ccf9331..35be23a 100755 --- a/app/Roles/RolesPermissionDataHandler.php +++ b/app/Roles/RolesPermissionDataHandler.php @@ -7,15 +7,14 @@ use MythicalSystemsFramework\Kernel\LoggerLevels; use MythicalSystemsFramework\Kernel\LoggerTypes; - class RolesPermissionDataHandler { /** * Create a role permission - * + * * @param int $roleId The role id * @param string $permission The permission - * + * * @return string|null The role permission id in a string */ public static function create(int $roleId, string $permission): string|null @@ -40,9 +39,9 @@ public static function create(int $roleId, string $permission): string|null /** * Delete a role permission - * + * * @param int $id The role permission id - * + * * @return string|null */ public static function delete(int $id): string|null @@ -74,10 +73,10 @@ public static function delete(int $id): string|null /** * Update a role permission - * + * * @param int $id The role permission id * @param string $permission The permission - * + * * @return string|null */ public static function update(int $id, string $permission): string|null @@ -110,9 +109,9 @@ public static function update(int $id, string $permission): string|null /** * Get all permissions for a role - * + * * @param int $roleId The role id - * + * * @return array|null An array of permissions or null if role does not exist */ public static function getAllPermissionsForRole(int $roleId): ?array @@ -149,10 +148,10 @@ public static function getAllPermissionsForRole(int $roleId): ?array /** * Get a role permission - * + * * @param int $id The role permission id * @param string $data The data you are looking for - * + * * @return string|null */ public static function getSpecificRolePermissionInfo(int $id, string $data): string|null @@ -182,9 +181,9 @@ public static function getSpecificRolePermissionInfo(int $id, string $data): str /** * This function checks if the role permission exists - * + * * @param int $id The role permission id - * + * * @return string|null */ public static function rolePermissionExists(int $id): string|null @@ -215,11 +214,11 @@ public static function rolePermissionExists(int $id): string|null /** * Check if a role has a specific permission - * + * * @param int $roleId The role id * @param string $permission The permission - * - * @return string|null + * + * @return string|null */ public static function doesRoleHavePermission(int $roleId, string $permission): string|null { diff --git a/app/User/Exceptions/UserException.php b/app/User/Exceptions/UserException.php index 8b96f4a..013949e 100755 --- a/app/User/Exceptions/UserException.php +++ b/app/User/Exceptions/UserException.php @@ -11,11 +11,13 @@ public function __construct($message, $code = 0, Throwable $previous = null) { parent::__construct($message, $code, $previous); } - public function __toString(): string { + public function __toString(): string + { return __CLASS__ . ": [{$this->code}]: {$this->message}\n"; } - - public function toString() : string { + + public function toString(): string + { return __CLASS__ . ": [{$this->code}]: {$this->message}\n"; } } diff --git a/app/User/UserDataHandler.php b/app/User/UserDataHandler.php index 02c362b..4ce0595 100755 --- a/app/User/UserDataHandler.php +++ b/app/User/UserDataHandler.php @@ -2,11 +2,12 @@ /** * UNIT TEST REQUIRED!!! - * + * * This file is responsible for handling the user data! - * + * * @category User */ + namespace MythicalSystemsFramework\User; use DateTime; @@ -26,11 +27,11 @@ class UserDataHandler { /** * Login a user - * + * * @param string $email * @param string $password * @param string $ip - * + * * MAKE SURE YOU CHECK THE DOCS FOR THIS FUNCTION * @return string|null The user token */ @@ -85,20 +86,20 @@ public static function login(string $email, string $password, string $ip): strin } } } catch (\Exception $e) { - Logger::log(LoggerLevels::CRITICAL,LoggerTypes::DATABASE,"(App/User/UserDataHandler.php) Failed to login user: " . $e->getMessage()); + Logger::log(LoggerLevels::CRITICAL, LoggerTypes::DATABASE, "(App/User/UserDataHandler.php) Failed to login user: " . $e->getMessage()); return "ERROR_DATABASE_SELECT_FAILED"; } } /** * Create a user - * + * * @param string $username * @param string $password * @param string $email * @param string $first_name * @param string $last_name * @param string $ip - * + * * MAKE SURE YOU CHECK THE DOCS FOR THIS FUNCTION * @return string|null The user token */ @@ -155,18 +156,18 @@ public static function create(string $username, string $password, string $email, } } } catch (\Exception $e) { - Logger::log(LoggerLevels::CRITICAL,LoggerTypes::DATABASE,"(App/User/UserDataHandler.php) Failed to create user: " . $e->getMessage()); + Logger::log(LoggerLevels::CRITICAL, LoggerTypes::DATABASE, "(App/User/UserDataHandler.php) Failed to create user: " . $e->getMessage()); return "ERROR_DATABASE_INSERT_FAILED"; } } /** * Get the user data - * + * * @param string $account_token The token of the account you want the data for! * @param string $data The data you want to get from the user! * @param bool $encrypted Set to false in case the data is not encrypted! - * + * * @return string The user data or null if not found! */ public static function getSpecificUserData(string $account_token, string $data, bool $encrypted = true): string|null @@ -196,22 +197,22 @@ public static function getSpecificUserData(string $account_token, string $data, return "ERROR_FIELD_NOT_FOUND"; } } catch (\Exception $e) { - Logger::log(LoggerLevels::CRITICAL,LoggerTypes::DATABASE,"(App/User/UserDataHandler.php) Failed to get user data: " . $e->getMessage()); + Logger::log(LoggerLevels::CRITICAL, LoggerTypes::DATABASE, "(App/User/UserDataHandler.php) Failed to get user data: " . $e->getMessage()); return "ERROR_DATABASE_SELECT_FAILED"; } } /** * Update the user data - * + * * @param string $account_token The token of the account you want to update the data for! * @param string $data The data you want to update! * @param string $value The value you want to set! * @param bool $encrypted Set to false in case the data is not encrypted! - * + * * @return bool True if the data was updated false if not! */ - public static function updateSpecificUserData(string $account_token, string $data, string $value, bool $encrypted = true): string + public static function updateSpecificUserData(string $account_token, string $data, string $value, bool $encrypted = true): string { try { $isAccountValid = UserHelper::isSessionValid($account_token); @@ -231,7 +232,7 @@ public static function updateSpecificUserData(string $account_token, string $dat $stmt->close(); return "SUCCESS"; } catch (\Exception $e) { - Logger::log(LoggerLevels::CRITICAL,LoggerTypes::DATABASE,"(App/User/UserDataHandler.php) Failed to update user: " . $e->getMessage()); + Logger::log(LoggerLevels::CRITICAL, LoggerTypes::DATABASE, "(App/User/UserDataHandler.php) Failed to update user: " . $e->getMessage()); return "ERROR_DATABASE_UPDATE_FAILED"; } } diff --git a/app/User/UserHelper.php b/app/User/UserHelper.php index 9ab8eac..88290c2 100755 --- a/app/User/UserHelper.php +++ b/app/User/UserHelper.php @@ -16,12 +16,11 @@ class UserHelper extends UserDataHandler { - /** - * This function will ban a user from the system. - * + * This function will ban a user from the system. + * * @param string $account_token The account token of the user you want to ban. - * + * * @return string The response of the ban. */ public static function banUser(string $account_token): string @@ -44,10 +43,10 @@ public static function banUser(string $account_token): string } /** - * This function will unban a user from the system. - * + * This function will unban a user from the system. + * * @param string $account_token The account token of the user you want to unban. - * + * * @return string The response of the unban. */ public static function unbanUser(string $account_token): string @@ -71,9 +70,9 @@ public static function unbanUser(string $account_token): string /** * This function will check if the user is banned. - * + * * @param string $account_token The account token of the user you want to check. - * + * * @return string If the user is banned or not. */ public static function isUserBanned(string $account_token): string @@ -95,11 +94,11 @@ public static function isUserBanned(string $account_token): string } } - /** + /** * Check if the user session is valid - * + * * @param string $account_token The token of the account you want the check the session for! - * + * * @return bool True if yes false if no! */ public static function isSessionValid(string $account_token): bool @@ -123,14 +122,14 @@ public static function isSessionValid(string $account_token): bool return true; } } catch (\Exception $e) { - Logger::log(LoggerLevels::CRITICAL,LoggerTypes::DATABASE,"(App/User/UserDataHandler.php) Failed to validate user: " . $e->getMessage()); + Logger::log(LoggerLevels::CRITICAL, LoggerTypes::DATABASE, "(App/User/UserDataHandler.php) Failed to validate user: " . $e->getMessage()); return false; } } /** * Log the user out of his account - * + * * @return void This functions removes the token header! */ public static function killSession(): void @@ -141,14 +140,15 @@ public static function killSession(): void Cookies::unSetCookie("token"); } - /** + /** * This function will soft delete a user * * @param string $account_token The account token of the user you want to delete. - * + * * @return string The response of the delete. - */ - public static function deleteUser(string $account_token): string { + */ + public static function deleteUser(string $account_token): string + { try { if (self::isSessionValid($account_token)) { $update_user = self::updateSpecificUserData($account_token, "deleted", "true", false); @@ -168,12 +168,13 @@ public static function deleteUser(string $account_token): string { /** * This function will restore a soft deleted user - * + * * @param string $account_token The account token of the user you want to restore. - * + * * @return string The response of the restore. */ - public static function restoreUser(string $account_token): string { + public static function restoreUser(string $account_token): string + { try { if (self::isSessionValid($account_token)) { $update_user = self::updateSpecificUserData($account_token, "deleted", "false", false); @@ -193,12 +194,13 @@ public static function restoreUser(string $account_token): string { /** * This function will check if the user is soft deleted - * + * * @param string $account_token The account token of the user you want to check. - * + * * @return string The response of the check. */ - public static function isUserDeleted(string $account_token): string { + public static function isUserDeleted(string $account_token): string + { try { if (self::isSessionValid($account_token)) { $delete_state = self::getSpecificUserData($account_token, "deleted", false); @@ -218,12 +220,13 @@ public static function isUserDeleted(string $account_token): string { /** * This function will check if the user is verified - * + * * @param string $account_token The account token of the user you want to check. - * + * * @return string The response of the check. */ - public static function isUserVerified(string $account_token): string { + public static function isUserVerified(string $account_token): string + { try { if (self::isSessionValid($account_token)) { $verified_state = self::getSpecificUserData($account_token, "verified", false); @@ -243,12 +246,13 @@ public static function isUserVerified(string $account_token): string { /** * This function will verify a user - * + * * @param string $account_token The account token of the user you want to verify. - * + * * @return string The response of the verification. */ - public static function verifyUser(string $account_token): string { + public static function verifyUser(string $account_token): string + { try { if (self::isSessionValid($account_token)) { $update_user = self::updateSpecificUserData($account_token, "verified", "true", false); @@ -268,12 +272,13 @@ public static function verifyUser(string $account_token): string { /** * This function will unverify a user - * + * * @param string $account_token The account token of the user you want to unverify. - * + * * @return string The response of the unverification. */ - public static function unverifyUser(string $account_token): string { + public static function unverifyUser(string $account_token): string + { try { if (self::isSessionValid($account_token)) { $update_user = self::updateSpecificUserData($account_token, "verified", "false", false); @@ -293,13 +298,14 @@ public static function unverifyUser(string $account_token): string { /** * This function will update the last seen and the last ip of the user - * + * * @param string $account_token The account token of the user you want to update. * @param string $ip The ip of the user. - * + * * @return string */ - public static function updateLastSeen(string $account_token, string $ip): string { + public static function updateLastSeen(string $account_token, string $ip): string + { try { if (self::isSessionValid($account_token)) { $update_user = self::updateSpecificUserData($account_token, "last_seen", date("Y-m-d H:i:s"), false); @@ -324,12 +330,13 @@ public static function updateLastSeen(string $account_token, string $ip): string /** * This function will return your the role id of a user - * + * * @param string $account_token The account token of the user you want to get the role id from. - * + * * @return string|null The role id of the user or an error. */ - public static function getUserRoleId($account_token) : string|null { + public static function getUserRoleId($account_token): string|null + { try { if (self::isSessionValid($account_token)) { $role_id = self::getSpecificUserData($account_token, "role", false); @@ -343,12 +350,12 @@ public static function getUserRoleId($account_token) : string|null { } } - /** + /** * Does this user have permission? - * + * * @param string $account_token The account token. * @param string $permission The permission name. - * + * * @return string|null */ public static function doesUserHavePermission(string $account_token, string $permission): string|null @@ -371,4 +378,4 @@ public static function doesUserHavePermission(string $account_token, string $per return "ERROR_DATABASE_SELECT_FAILED"; } } -} \ No newline at end of file +} diff --git a/commands/core/cache/cacheprocess.php b/commands/core/cache/cacheprocess.php index e47efca..fb42b00 100755 --- a/commands/core/cache/cacheprocess.php +++ b/commands/core/cache/cacheprocess.php @@ -1,4 +1,5 @@ -getMessage()); - } + } } -} \ No newline at end of file +} diff --git a/commands/core/cache/cachepurge.php b/commands/core/cache/cachepurge.php index fdb0c97..d188083 100755 --- a/commands/core/cache/cachepurge.php +++ b/commands/core/cache/cachepurge.php @@ -1,4 +1,5 @@ -getMessage()); - } + } } -} \ No newline at end of file +} diff --git a/commands/core/config/configmigrate.php b/commands/core/config/configmigrate.php deleted file mode 100755 index de1ae97..0000000 --- a/commands/core/config/configmigrate.php +++ /dev/null @@ -1,45 +0,0 @@ -connectPDO(); - $db->exec("CREATE TABLE IF NOT EXISTS `framework_settings_migrations` (`id` INT NOT NULL AUTO_INCREMENT , `script` TEXT NOT NULL , `executed_at` DATETIME NOT NULL , PRIMARY KEY (`id`)) ENGINE = InnoDB; ALTER TABLE `framework_settings_migrations` CHANGE `executed_at` `executed_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP;"); - $phpFiles = glob(__DIR__ . '/../../../migrate/config/*.php'); - if (count($phpFiles) > 0) { - sort($phpFiles); - - $migratedCount = 0; // Initialize migrated count - - foreach ($phpFiles as $phpFile) { - $fileName = basename($phpFile); - - $stmt = $db->prepare("SELECT COUNT(*) FROM framework_settings_migrations WHERE script = ?"); - $stmt->execute([$fileName]); - $count = $stmt->fetchColumn(); - - if ($count == 0) { - include $phpFile; - - $stmt = $db->prepare("INSERT INTO framework_settings_migrations (script) VALUES (?)"); - $stmt->execute([$fileName]); - - $migratedCount++; // Increment migrated count - } - } - - echo color::translateColorsCode("&fMigration completed. Migrated &e$migratedCount &ffiles."); - } else { - echo color::translateColorsCode("&fMigration completed. Migrated &e0 &ffiles."); - } - } catch (PDOException $e) { - echo color::translateColorsCode("Failed to migrate the database: " . $e->getMessage() . ""); - } - } -} diff --git a/commands/core/database/dbconfigure.php b/commands/core/database/dbconfigure.php deleted file mode 100755 index 4265f71..0000000 --- a/commands/core/database/dbconfigure.php +++ /dev/null @@ -1,79 +0,0 @@ -tryConnection(cfg::get("database", "host"), cfg::get("database", "port"), cfg::get("database", "username"), cfg::get("database", "password"), cfg::get("database", "name")) == true) { - echo color::translateColorsCode("&fConnection to the database was &asuccessful!&o"); - echo color::NewLine(); - echo color::translateColorsCode("&fDo you want to reconfigure the database? (&ey&f/&en&f): "); - $confirm = readline(); - if (strtolower($confirm) === 'y') { - $this->configure(); - } else { - die(color::translateColorsCode("&fExiting...&o")); - } - return; - } else { - $this->configure(); - } - } - /** - * Configures the database connection. - * - * @return void - */ - public function configure(): void - { - $defaultHost = "127.0.0.1"; - $defaultPort = "3306"; - $db = new MySQL(); - echo color::translateColorsCode("&fEnter the host of the database &8[&e$defaultHost&8]&f: "); - $host = readline() ?: $defaultHost; - echo color::translateColorsCode("&fEnter the port of the database &8[&e$defaultPort&8]&f: "); - $port = readline() ?: $defaultPort; - echo color::translateColorsCode("&fEnter the username: "); - $username = readline(); - echo color::translateColorsCode("&fEnter the password: "); - $password = readline(); - echo color::translateColorsCode("&fEnter the database name: "); - $database = readline(); - // Perform validation - if (empty($username) || empty($password) || empty($database)) { - echo color::translateColorsCode("&cPlease provide all the required information.&o"); - return; - } - - // Hide the password - $hiddenPassword = str_repeat('*', strlen($password)); - - // Use the provided information - echo color::NewLine(); - echo color::translateColorsCode("&fHost: &e$host&o"); - echo color::translateColorsCode("&fPort: &e$port&o"); - echo color::translateColorsCode("&fUsername: &e$username&o"); - echo color::translateColorsCode("&fPassword: &e$hiddenPassword&o"); - echo color::translateColorsCode("&fDatabase: &e$database&o"); - - if ($db->tryConnection($host, $port, $username, $password, $database) == true) { - echo color::NewLine(); - echo color::translateColorsCode("&fConnection to the database was &asuccessful!&o"); - echo color::NewLine(); - echo color::translateColorsCode("&fSaving the configuration...&o"); - cfg::set("database", "host", $host); - cfg::set("database", "port", $port); - cfg::set("database", "username", $username); - cfg::set("database", "password", $password); - cfg::set("database", "name", $database); - echo color::translateColorsCode("&fConfiguration saved &asuccessfully!&o"); - } else { - echo color::translateColorsCode("&7Failed to connect to the database. &o&fPlease check the provided information."); - } - } - -} \ No newline at end of file diff --git a/commands/core/database/dbmigrate.php b/commands/core/database/dbmigrate.php deleted file mode 100755 index b888518..0000000 --- a/commands/core/database/dbmigrate.php +++ /dev/null @@ -1,81 +0,0 @@ -tryConnection(cfg::get("database", "host"), cfg::get("database", "port"), cfg::get("database", "username"), cfg::get("database", "password"), cfg::get("database", "name")) == true) { - echo color::translateColorsCode("&fConnection to the database was &asuccessful!&o"); - echo color::NewLine(); - echo color::translateColorsCode("&fDo you want to migrate the database? (&ey&f/&en&f): "); - $confirm = readline(); - if (strtolower($confirm) == 'y') { - $this->migrate(); - } else { - die(color::translateColorsCode("&fExiting...&o")); - } - return; - } else { - die(color::translateColorsCode("&cFailed to connect to the database!&o")); - } - } - - public function migrate() - { - try { - $mysql = new MySQL(); - $db = $mysql->connectPDO(); - - $db->exec(" - CREATE TABLE IF NOT EXISTS framework_migrations ( - id INT AUTO_INCREMENT PRIMARY KEY, - script VARCHAR(255) NOT NULL, - executed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP - ) - "); - - $sqlFiles = glob(__DIR__ . '/../../../migrate/database/*.sql'); - - if (count($sqlFiles) > 0) { - usort($sqlFiles, function($a, $b) { - $aDate = intval(basename($a, '.sql')); - $bDate = intval(basename($b, '.sql')); - return $aDate - $bDate; - }); - - foreach ($sqlFiles as $sqlFile) { - $script = file_get_contents($sqlFile); - - $fileName = basename($sqlFile); // Get only the file name - - $stmt = $db->prepare("SELECT COUNT(*) FROM framework_migrations WHERE script = ?"); - $stmt->execute([$fileName]); - $count = $stmt->fetchColumn(); - - if ($count == 0) { - $db->exec($script); - - $stmt = $db->prepare("INSERT INTO framework_migrations (script) VALUES (?)"); - $stmt->execute([$fileName]); - - echo color::translateColorsCode("&fExecuted migration: &e" . $fileName . "&o"); - echo color::NewLine(); - } else { - echo color::translateColorsCode("&fSkipping migration: &e" . $fileName . " &f(&ealready executed&f)&o"); - echo color::NewLine(); - } - } - } else { - echo color::translateColorsCode("&cNo migrations found!&o"); - echo color::NewLine(); - } - } catch (PDOException $e) { - echo color::translateColorsCode("&cFailed to migrate the database: " . $e->getMessage() . "&o"); - echo color::NewLine(); - } - } -} \ No newline at end of file diff --git a/commands/core/database/dbrebuild.php b/commands/core/database/dbrebuild.php deleted file mode 100755 index 4b770cf..0000000 --- a/commands/core/database/dbrebuild.php +++ /dev/null @@ -1,56 +0,0 @@ -tryConnection(cfg::get("database", "host"), cfg::get("database", "port"), cfg::get("database", "username"), cfg::get("database", "password"), cfg::get("database", "name")) == true) { - echo color::translateColorsCode("&fConnection to the database was &asuccessful!&o"); - echo color::NewLine(); - echo color::translateColorsCode("&4&lWARNING: &fThis option will wipe the database. &o"); - echo color::translateColorsCode("&4&lWARNING: &fOnly use this function if you know what you are doing &o"); - echo color::translateColorsCode("&4&lWARNING: &fOnce you wipe the database there is no going back! &o"); - echo color::translateColorsCode("&4&lWARNING: &fPlease be careful and don't play around with commands! &o"); - echo color::translateColorsCode("&4&lWARNING: &fThere is no other message then this so keep in mind! &o"); - echo color::translateColorsCode("&4&lWARNING: &fDo you really want to wipe the database? (&ey&f/&en&f): "); - - $confirm = readline(); - if (strtolower($confirm) == 'y') { - $this->wipe(); - } else { - die(color::translateColorsCode("&fExiting...&o")); - } - return; - } else { - die(color::translateColorsCode("&cFailed to connect to the database!&o")); - } - } - - public function wipe() { - try { - $mysql = new MySQL(); - $db = $mysql->connectPDO(); - - $db->exec("SET FOREIGN_KEY_CHECKS = 0"); - $tables = $db->query("SHOW TABLES")->fetchAll(PDO::FETCH_COLUMN); - foreach ($tables as $table) { - $db->exec("DROP TABLE IF EXISTS $table"); - } - $db->exec("SET FOREIGN_KEY_CHECKS = 1"); - echo color::NewLine(); - echo color::NewLine(); - echo color::NewLine(); - echo color::NewLine(); - echo color::NewLine(); - echo color::translateColorsCode("&fDatabase wiped!!&o"); - echo color::translateColorsCode("&fPlease run the migration command to rebuild the database!&o"); - } catch (PDOException $e) { - echo color::translateColorsCode("&fFailed to drop tables: &c" . $e->getMessage() . "&o"); - echo color::NewLine(); - } - } -} \ No newline at end of file diff --git a/commands/core/encryption/newkey.php b/commands/core/encryption/newkey.php index 37cd833..461be47 100755 --- a/commands/core/encryption/newkey.php +++ b/commands/core/encryption/newkey.php @@ -1,4 +1,5 @@ -generate(); } else { echo color::translateColorsCode("&4&lWARNING: &fA key already exists. Do you want to generate a new one?&o"); @@ -21,12 +22,12 @@ public function execute() } } /** - * + * */ public function generate() { - $key = "mythicalcore_".bin2hex(random_bytes(64*32)); - cfg::set("encryption","key",$key); + $key = "mythicalcore_".bin2hex(random_bytes(64 * 32)); + cfg::set("encryption", "key", $key); echo color::translateColorsCode("&fKey generated successfully!&o"); } -} \ No newline at end of file +} diff --git a/commands/core/status/down.php b/commands/core/status/down.php deleted file mode 100755 index 9cde1d2..0000000 --- a/commands/core/status/down.php +++ /dev/null @@ -1,16 +0,0 @@ -tryConnection(cfg::get("database", "host"), cfg::get("database", "port"), cfg::get("database", "username"), cfg::get("database", "password"), cfg::get("database", "name")) == true) { - echo color::translateColorsCode("&fConnection to the database was &asuccessful!&o"); - echo color::NewLine(); - if (cfg::get("encryption","key") == "") { - die(color::translateColorsCode("&cEncryption key is not set!&o&fHave you set it up already?&o")); - } - } else { - die(color::translateColorsCode("&cFailed to connect to the database!&o&fHave you set it up already?&o")); - } - } -} \ No newline at end of file diff --git a/composer.json b/composer.json index a3e0b2d..3de5a65 100755 --- a/composer.json +++ b/composer.json @@ -52,7 +52,8 @@ } }, "require-dev": { - "phpunit/phpunit": "^11.1" + "phpunit/phpunit": "^11.1", + "friendsofphp/php-cs-fixer": "^3.59" }, "scripts": { "tests": [ @@ -62,26 +63,16 @@ "push": [ "export COMPOSER_ALLOW_SUPERUSER=1", "bash devtools/push.bash", - "git push origin develop" + "git push origin develop", + "composer run tests", + "composer run lint" ], "pull": [ "export COMPOSER_ALLOW_SUPERUSER=1", "git pull origin develop", "bash devtools/restore.bash" ], - "frontend:build": [ - "export COMPOSER_ALLOW_SUPERUSER=1", - "npx tailwindcss -i styles.css -o ./public/style.css --minify --jit" - ], - "frontend:watch": [ - "export COMPOSER_ALLOW_SUPERUSER=1", - "npx tailwindcss -i styles.css -o ./public/style.css --watch" - ], - "frontend:clear": [ - "export COMPOSER_ALLOW_SUPERUSER=1", - "rm -rf ./public/style.css" - ], - "frontend:install:dependency": [ + "install:dependency": [ "export COMPOSER_ALLOW_SUPERUSER=1", "composer install && npm i" ], @@ -93,9 +84,9 @@ "export COMPOSER_ALLOW_SUPERUSER=1", "php framework" ], - "convert:code":[ + "lint": [ "export COMPOSER_ALLOW_SUPERUSER=1", - "php framework convert:code" + "vendor/bin/php-cs-fixer fix ." ] } } diff --git a/composer.lock b/composer.lock index 1fdd8ff..91c4005 100755 --- 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": "9b9a095f793f7c67933c87249e1b17b1", + "content-hash": "d0d736cc77e2510ef863bc93d4d6a57b", "packages": [ { "name": "gravatarphp/gravatar", @@ -530,408 +530,2381 @@ ], "packages-dev": [ { - "name": "myclabs/deep-copy", - "version": "1.12.0", + "name": "clue/ndjson-react", + "version": "v1.3.0", "source": { "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c" + "url": "https://github.com/clue/reactphp-ndjson.git", + "reference": "392dc165fce93b5bb5c637b67e59619223c931b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", - "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "url": "https://api.github.com/repos/clue/reactphp-ndjson/zipball/392dc165fce93b5bb5c637b67e59619223c931b0", + "reference": "392dc165fce93b5bb5c637b67e59619223c931b0", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3 <3.2.2" + "php": ">=5.3", + "react/stream": "^1.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" + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35", + "react/event-loop": "^1.2" }, "type": "library", "autoload": { - "files": [ - "src/DeepCopy/deep_copy.php" - ], "psr-4": { - "DeepCopy\\": "src/DeepCopy/" + "Clue\\React\\NDJson\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Create deep copies (clones) of your objects", + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering" + } + ], + "description": "Streaming newline-delimited JSON (NDJSON) parser and encoder for ReactPHP.", + "homepage": "https://github.com/clue/reactphp-ndjson", "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" + "NDJSON", + "json", + "jsonlines", + "newline", + "reactphp", + "streaming" ], "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.12.0" + "issues": "https://github.com/clue/reactphp-ndjson/issues", + "source": "https://github.com/clue/reactphp-ndjson/tree/v1.3.0" }, "funding": [ { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" + "url": "https://clue.engineering/support", + "type": "custom" + }, + { + "url": "https://github.com/clue", + "type": "github" } ], - "time": "2024-06-12T14:39:25+00:00" + "time": "2022-12-23T10:58:28+00:00" }, { - "name": "nikic/php-parser", - "version": "v5.1.0", + "name": "composer/pcre", + "version": "3.1.4", "source": { "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "683130c2ff8c2739f4822ff7ac5c873ec529abd1" + "url": "https://github.com/composer/pcre.git", + "reference": "04229f163664973f68f38f6f73d917799168ef24" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/683130c2ff8c2739f4822ff7ac5c873ec529abd1", - "reference": "683130c2ff8c2739f4822ff7ac5c873ec529abd1", + "url": "https://api.github.com/repos/composer/pcre/zipball/04229f163664973f68f38f6f73d917799168ef24", + "reference": "04229f163664973f68f38f6f73d917799168ef24", "shasum": "" }, "require": { - "ext-ctype": "*", - "ext-json": "*", - "ext-tokenizer": "*", - "php": ">=7.4" + "php": "^7.4 || ^8.0" }, "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^9.0" + "phpstan/phpstan": "^1.3", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^5" }, - "bin": [ - "bin/php-parse" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-main": "3.x-dev" } }, "autoload": { "psr-4": { - "PhpParser\\": "lib/PhpParser" + "Composer\\Pcre\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Nikita Popov" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" } ], - "description": "A PHP parser written in PHP", + "description": "PCRE wrapping library that offers type-safe preg_* replacements.", "keywords": [ - "parser", - "php" + "PCRE", + "preg", + "regex", + "regular expression" ], "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.1.0" + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/3.1.4" }, - "time": "2024-07-01T20:03:41+00:00" + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2024-05-27T13:40:54+00:00" }, { - "name": "phar-io/manifest", - "version": "2.0.4", + "name": "composer/semver", + "version": "3.4.2", "source": { "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "54750ef60c58e43759730615a392c31c80e23176" + "url": "https://github.com/composer/semver.git", + "reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", - "reference": "54750ef60c58e43759730615a392c31c80e23176", + "url": "https://api.github.com/repos/composer/semver/zipball/c51258e759afdb17f1fd1fe83bc12baaef6309d6", + "reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-phar": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.4", + "symfony/phpunit-bridge": "^4.2 || ^5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-main": "3.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Composer\\Semver\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" }, { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" }, { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" } ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], "support": { - "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.4" + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.4.2" }, "funding": [ { - "url": "https://github.com/theseer", + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" } ], - "time": "2024-03-03T12:33:53+00:00" + "time": "2024-07-12T11:35:52+00:00" }, { - "name": "phar-io/version", - "version": "3.2.1", + "name": "composer/xdebug-handler", + "version": "3.0.5", "source": { "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "composer/pcre": "^1 || ^2 || ^3", + "php": "^7.2.5 || ^8.0", + "psr/log": "^1 || ^2 || ^3" + }, + "require-dev": { + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-strict-rules": "^1.1", + "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5" }, "type": "library", "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without Xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], + "support": { + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/3.0.5" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" }, { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" + "url": "https://github.com/composer", + "type": "github" }, { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" } ], - "description": "Library for handling version information and constraints", - "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.2.1" - }, - "time": "2022-02-21T01:04:05+00:00" + "time": "2024-05-06T16:37:16+00:00" }, { - "name": "phpunit/php-code-coverage", - "version": "11.0.5", + "name": "evenement/evenement", + "version": "v3.0.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "19b6365ab8b59a64438c0c3f4241feeb480c9861" + "url": "https://github.com/igorw/evenement.git", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/19b6365ab8b59a64438c0c3f4241feeb480c9861", - "reference": "19b6365ab8b59a64438c0c3f4241feeb480c9861", + "url": "https://api.github.com/repos/igorw/evenement/zipball/0a16b0d71ab13284339abb99d9d2bd813640efbc", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^5.0", - "php": ">=8.2", - "phpunit/php-file-iterator": "^5.0", - "phpunit/php-text-template": "^4.0", - "sebastian/code-unit-reverse-lookup": "^4.0", - "sebastian/complexity": "^4.0", - "sebastian/environment": "^7.0", - "sebastian/lines-of-code": "^3.0", - "sebastian/version": "^5.0", - "theseer/tokenizer": "^1.2.0" + "php": ">=7.0" }, "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "suggest": { - "ext-pcov": "PHP extension that provides line coverage", - "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + "phpunit/phpunit": "^9 || ^6" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "11.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Evenement\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" } ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "description": "Événement is a very simple event dispatching library for PHP", "keywords": [ - "coverage", - "testing", - "xunit" + "event-dispatcher", + "event-emitter" ], "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/11.0.5" + "issues": "https://github.com/igorw/evenement/issues", + "source": "https://github.com/igorw/evenement/tree/v3.0.2" }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-07-03T05:05:37+00:00" + "time": "2023-08-08T05:53:35+00:00" }, { - "name": "phpunit/php-file-iterator", - "version": "5.0.1", + "name": "fidry/cpu-core-counter", + "version": "1.1.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "6ed896bf50bbbfe4d504a33ed5886278c78e4a26" + "url": "https://github.com/theofidry/cpu-core-counter.git", + "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6ed896bf50bbbfe4d504a33ed5886278c78e4a26", - "reference": "6ed896bf50bbbfe4d504a33ed5886278c78e4a26", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/f92996c4d5c1a696a6a970e20f7c4216200fcc42", + "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42", "shasum": "" }, "require": { - "php": ">=8.2" + "php": "^7.2 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "fidry/makefile": "^0.2.0", + "fidry/php-cs-fixer-config": "^1.1.2", + "phpstan/extension-installer": "^1.2.0", + "phpstan/phpstan": "^1.9.2", + "phpstan/phpstan-deprecation-rules": "^1.0.0", + "phpstan/phpstan-phpunit": "^1.2.2", + "phpstan/phpstan-strict-rules": "^1.4.4", + "phpunit/phpunit": "^8.5.31 || ^9.5.26", + "webmozarts/strict-phpunit": "^7.5" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Fidry\\CpuCoreCounter\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Théo FIDRY", + "email": "theo.fidry@gmail.com" } ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "description": "Tiny utility to get the number of CPU cores.", "keywords": [ - "filesystem", - "iterator" + "CPU", + "core" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/5.0.1" + "issues": "https://github.com/theofidry/cpu-core-counter/issues", + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.1.0" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://github.com/theofidry", "type": "github" } ], - "time": "2024-07-03T05:06:37+00:00" + "time": "2024-02-07T09:43:46+00:00" }, { - "name": "phpunit/php-invoker", - "version": "5.0.1", + "name": "friendsofphp/php-cs-fixer", + "version": "v3.59.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2" + "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", + "reference": "30ba9ecc2b0e5205e578fe29973c15653d9bfd29" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/c1ca3814734c07492b3d4c5f794f4b0995333da2", - "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/30ba9ecc2b0e5205e578fe29973c15653d9bfd29", + "reference": "30ba9ecc2b0e5205e578fe29973c15653d9bfd29", "shasum": "" }, "require": { - "php": ">=8.2" + "clue/ndjson-react": "^1.0", + "composer/semver": "^3.4", + "composer/xdebug-handler": "^3.0.3", + "ext-filter": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "fidry/cpu-core-counter": "^1.0", + "php": "^7.4 || ^8.0", + "react/child-process": "^0.6.5", + "react/event-loop": "^1.0", + "react/promise": "^2.0 || ^3.0", + "react/socket": "^1.0", + "react/stream": "^1.0", + "sebastian/diff": "^4.0 || ^5.0 || ^6.0", + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0", + "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", + "symfony/finder": "^5.4 || ^6.0 || ^7.0", + "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0", + "symfony/polyfill-mbstring": "^1.28", + "symfony/polyfill-php80": "^1.28", + "symfony/polyfill-php81": "^1.28", + "symfony/process": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0" + }, + "require-dev": { + "facile-it/paraunit": "^1.3 || ^2.3", + "infection/infection": "^0.29.5", + "justinrainbow/json-schema": "^5.2", + "keradus/cli-executor": "^2.1", + "mikey179/vfsstream": "^1.6.11", + "php-coveralls/php-coveralls": "^2.7", + "php-cs-fixer/accessible-object": "^1.1", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.5", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.5", + "phpunit/phpunit": "^9.6.19 || ^10.5.21 || ^11.2", + "symfony/var-dumper": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" + }, + "suggest": { + "ext-dom": "For handling output formats in XML", + "ext-mbstring": "For handling non-UTF8 characters." + }, + "bin": [ + "php-cs-fixer" + ], + "type": "application", + "autoload": { + "psr-4": { + "PhpCsFixer\\": "src/" + }, + "exclude-from-classmap": [ + "src/Fixer/Internal/*" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Dariusz Rumiński", + "email": "dariusz.ruminski@gmail.com" + } + ], + "description": "A tool to automatically fix PHP code style", + "keywords": [ + "Static code analysis", + "fixer", + "standards", + "static analysis" + ], + "support": { + "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.59.3" + }, + "funding": [ + { + "url": "https://github.com/keradus", + "type": "github" + } + ], + "time": "2024-06-16T14:17:03+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.12.0", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/collections": "<1.6.8", + "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" + }, + "type": "library", + "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.12.0" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2024-06-12T14:39:25+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v5.1.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "683130c2ff8c2739f4822ff7ac5c873ec529abd1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/683130c2ff8c2739f4822ff7ac5c873ec529abd1", + "reference": "683130c2ff8c2739f4822ff7ac5c873ec529abd1", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.4" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v5.1.0" + }, + "time": "2024-07-01T20:03:41+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "54750ef60c58e43759730615a392c31c80e23176" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" + }, + { + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "11.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "19b6365ab8b59a64438c0c3f4241feeb480c9861" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/19b6365ab8b59a64438c0c3f4241feeb480c9861", + "reference": "19b6365ab8b59a64438c0c3f4241feeb480c9861", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^5.0", + "php": ">=8.2", + "phpunit/php-file-iterator": "^5.0", + "phpunit/php-text-template": "^4.0", + "sebastian/code-unit-reverse-lookup": "^4.0", + "sebastian/complexity": "^4.0", + "sebastian/environment": "^7.0", + "sebastian/lines-of-code": "^3.0", + "sebastian/version": "^5.0", + "theseer/tokenizer": "^1.2.0" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "suggest": { + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "11.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "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/11.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:05:37+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "5.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "6ed896bf50bbbfe4d504a33ed5886278c78e4a26" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6ed896bf50bbbfe4d504a33ed5886278c78e4a26", + "reference": "6ed896bf50bbbfe4d504a33ed5886278c78e4a26", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/5.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:06:37+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "5.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/c1ca3814734c07492b3d4c5f794f4b0995333da2", + "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^11.0" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "security": "https://github.com/sebastianbergmann/php-invoker/security/policy", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/5.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:07:44+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/3e0404dc6b300e6bf56415467ebcb3fe4f33e964", + "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:08:43+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "7.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3b415def83fbcb41f991d9ebf16ae4ad8b7837b3", + "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "security": "https://github.com/sebastianbergmann/php-timer/security/policy", + "source": "https://github.com/sebastianbergmann/php-timer/tree/7.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:09:35+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "11.2.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "a7a29e8d3113806f18f99d670f580a30e8ffff39" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a7a29e8d3113806f18f99d670f580a30e8ffff39", + "reference": "a7a29e8d3113806f18f99d670f580a30e8ffff39", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.12.0", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", + "php": ">=8.2", + "phpunit/php-code-coverage": "^11.0.5", + "phpunit/php-file-iterator": "^5.0.1", + "phpunit/php-invoker": "^5.0.1", + "phpunit/php-text-template": "^4.0.1", + "phpunit/php-timer": "^7.0.1", + "sebastian/cli-parser": "^3.0.2", + "sebastian/code-unit": "^3.0.1", + "sebastian/comparator": "^6.0.1", + "sebastian/diff": "^6.0.2", + "sebastian/environment": "^7.2.0", + "sebastian/exporter": "^6.1.3", + "sebastian/global-state": "^7.0.2", + "sebastian/object-enumerator": "^6.0.1", + "sebastian/type": "^5.0.1", + "sebastian/version": "^5.0.1" + }, + "suggest": { + "ext-soap": "To be able to generate mocks based on WSDL files" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "11.2-dev" + } + }, + "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.2.8" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" + } + ], + "time": "2024-07-18T14:56:37+00:00" + }, + { + "name": "psr/container", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, + "dist": { + "type": "zip", + "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/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" + }, + "time": "2021-11-05T16:47:00+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/log", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/3.0.0" + }, + "time": "2021-07-14T16:46:02+00:00" + }, + { + "name": "react/cache", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/cache.git", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/cache/zipball/d47c472b64aa5608225f47965a484b75c7817d5b", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "react/promise": "^3.0 || ^2.0 || ^1.1" + }, + "require-dev": { + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async, Promise-based cache interface for ReactPHP", + "keywords": [ + "cache", + "caching", + "promise", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/cache/issues", + "source": "https://github.com/reactphp/cache/tree/v1.2.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2022-11-30T15:59:55+00:00" + }, + { + "name": "react/child-process", + "version": "v0.6.5", + "source": { + "type": "git", + "url": "https://github.com/reactphp/child-process.git", + "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/child-process/zipball/e71eb1aa55f057c7a4a0d08d06b0b0a484bead43", + "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/event-loop": "^1.2", + "react/stream": "^1.2" + }, + "require-dev": { + "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35", + "react/socket": "^1.8", + "sebastian/environment": "^5.0 || ^3.0 || ^2.0 || ^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\ChildProcess\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Event-driven library for executing child processes with ReactPHP.", + "keywords": [ + "event-driven", + "process", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/child-process/issues", + "source": "https://github.com/reactphp/child-process/tree/v0.6.5" + }, + "funding": [ + { + "url": "https://github.com/WyriHaximus", + "type": "github" + }, + { + "url": "https://github.com/clue", + "type": "github" + } + ], + "time": "2022-09-16T13:41:56+00:00" + }, + { + "name": "react/dns", + "version": "v1.13.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/dns.git", + "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/dns/zipball/eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", + "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "react/cache": "^1.0 || ^0.6 || ^0.5", + "react/event-loop": "^1.2", + "react/promise": "^3.2 || ^2.7 || ^1.2.1" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/async": "^4.3 || ^3 || ^2", + "react/promise-timer": "^1.11" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Dns\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async DNS resolver for ReactPHP", + "keywords": [ + "async", + "dns", + "dns-resolver", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/dns/issues", + "source": "https://github.com/reactphp/dns/tree/v1.13.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-06-13T14:18:03+00:00" + }, + { + "name": "react/event-loop", + "version": "v1.5.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/event-loop.git", + "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/event-loop/zipball/bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + }, + "suggest": { + "ext-pcntl": "For signal handling support when using the StreamSelectLoop" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\EventLoop\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", + "keywords": [ + "asynchronous", + "event-loop" + ], + "support": { + "issues": "https://github.com/reactphp/event-loop/issues", + "source": "https://github.com/reactphp/event-loop/tree/v1.5.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-11-13T13:48:05+00:00" + }, + { + "name": "react/promise", + "version": "v3.2.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/promise.git", + "reference": "8a164643313c71354582dc850b42b33fa12a4b63" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/promise/zipball/8a164643313c71354582dc850b42b33fa12a4b63", + "reference": "8a164643313c71354582dc850b42b33fa12a4b63", + "shasum": "" + }, + "require": { + "php": ">=7.1.0" + }, + "require-dev": { + "phpstan/phpstan": "1.10.39 || 1.4.10", + "phpunit/phpunit": "^9.6 || ^7.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "React\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "A lightweight implementation of CommonJS Promises/A for PHP", + "keywords": [ + "promise", + "promises" + ], + "support": { + "issues": "https://github.com/reactphp/promise/issues", + "source": "https://github.com/reactphp/promise/tree/v3.2.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-05-24T10:39:05+00:00" + }, + { + "name": "react/socket", + "version": "v1.15.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/socket.git", + "reference": "216d3aec0b87f04a40ca04f481e6af01bdd1d038" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/socket/zipball/216d3aec0b87f04a40ca04f481e6af01bdd1d038", + "reference": "216d3aec0b87f04a40ca04f481e6af01bdd1d038", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/dns": "^1.11", + "react/event-loop": "^1.2", + "react/promise": "^3 || ^2.6 || ^1.2.1", + "react/stream": "^1.2" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/async": "^4 || ^3 || ^2", + "react/promise-stream": "^1.4", + "react/promise-timer": "^1.10" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Socket\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP", + "keywords": [ + "Connection", + "Socket", + "async", + "reactphp", + "stream" + ], + "support": { + "issues": "https://github.com/reactphp/socket/issues", + "source": "https://github.com/reactphp/socket/tree/v1.15.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-12-15T11:02:10+00:00" + }, + { + "name": "react/stream", + "version": "v1.4.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/stream.git", + "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/stream/zipball/1e5b0acb8fe55143b5b426817155190eb6f5b18d", + "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.8", + "react/event-loop": "^1.2" + }, + "require-dev": { + "clue/stream-filter": "~1.2", + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Stream\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP", + "keywords": [ + "event-driven", + "io", + "non-blocking", + "pipe", + "reactphp", + "readable", + "stream", + "writable" + ], + "support": { + "issues": "https://github.com/reactphp/stream/issues", + "source": "https://github.com/reactphp/stream/tree/v1.4.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-06-11T12:45:25+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/15c5dd40dc4f38794d383bb95465193f5e0ae180", + "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/3.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:41:36+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "6bb7d09d6623567178cf54126afa9c2310114268" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/6bb7d09d6623567178cf54126afa9c2310114268", + "reference": "6bb7d09d6623567178cf54126afa9c2310114268", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "security": "https://github.com/sebastianbergmann/code-unit/security/policy", + "source": "https://github.com/sebastianbergmann/code-unit/tree/3.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:44:28+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "183a9b2632194febd219bb9246eee421dad8d45e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/183a9b2632194febd219bb9246eee421dad8d45e", + "reference": "183a9b2632194febd219bb9246eee421dad8d45e", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "security": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/security/policy", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:45:54+00:00" + }, + { + "name": "sebastian/comparator", + "version": "6.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "131942b86d3587291067a94f295498ab6ac79c20" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/131942b86d3587291067a94f295498ab6ac79c20", + "reference": "131942b86d3587291067a94f295498ab6ac79c20", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.2", + "sebastian/diff": "^6.0", + "sebastian/exporter": "^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/6.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:48:07+00:00" + }, + { + "name": "sebastian/complexity", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "ee41d384ab1906c68852636b6de493846e13e5a0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/ee41d384ab1906c68852636b6de493846e13e5a0", + "reference": "ee41d384ab1906c68852636b6de493846e13e5a0", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^5.0", + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:49:50+00:00" + }, + { + "name": "sebastian/diff", + "version": "6.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/b4ccd857127db5d41a5b676f24b51371d76d8544", + "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/6.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:53:05+00:00" + }, + { + "name": "sebastian/environment", + "version": "7.2.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "855f3ae0ab316bbafe1ba4e16e9f3c078d24a0c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/855f3ae0ab316bbafe1ba4e16e9f3c078d24a0c5", + "reference": "855f3ae0ab316bbafe1ba4e16e9f3c078d24a0c5", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "https://github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/7.2.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:54:44+00:00" + }, + { + "name": "sebastian/exporter", + "version": "6.1.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "c414673eee9a8f9d51bbf8d61fc9e3ef1e85b20e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/c414673eee9a8f9d51bbf8d61fc9e3ef1e85b20e", + "reference": "c414673eee9a8f9d51bbf8d61fc9e3ef1e85b20e", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=8.2", + "sebastian/recursion-context": "^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^11.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/6.1.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:56:19+00:00" + }, + { + "name": "sebastian/global-state", + "version": "7.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "3be331570a721f9a4b5917f4209773de17f747d7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/3be331570a721f9a4b5917f4209773de17f747d7", + "reference": "3be331570a721f9a4b5917f4209773de17f747d7", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "sebastian/object-reflector": "^4.0", + "sebastian/recursion-context": "^6.0" }, "require-dev": { - "ext-pcntl": "*", + "ext-dom": "*", "phpunit/phpunit": "^11.0" }, - "suggest": { - "ext-pcntl": "*" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "7.0-dev" } }, "autoload": { @@ -946,19 +2919,18 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "Invoke callables with a timeout", - "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "description": "Snapshotting of global state", + "homepage": "https://www.github.com/sebastianbergmann/global-state", "keywords": [ - "process" + "global state" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "security": "https://github.com/sebastianbergmann/php-invoker/security/policy", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/5.0.1" + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/7.0.2" }, "funding": [ { @@ -966,23 +2938,24 @@ "type": "github" } ], - "time": "2024-07-03T05:07:44+00:00" + "time": "2024-07-03T04:57:36+00:00" }, { - "name": "phpunit/php-text-template", - "version": "4.0.1", + "name": "sebastian/lines-of-code", + "version": "3.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964" + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/3e0404dc6b300e6bf56415467ebcb3fe4f33e964", - "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/d36ad0d782e5756913e42ad87cb2890f4ffe467a", + "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a", "shasum": "" }, "require": { + "nikic/php-parser": "^5.0", "php": ">=8.2" }, "require-dev": { @@ -991,7 +2964,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -1010,15 +2983,12 @@ "role": "lead" } ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/4.0.1" + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/3.0.1" }, "funding": [ { @@ -1026,24 +2996,26 @@ "type": "github" } ], - "time": "2024-07-03T05:08:43+00:00" + "time": "2024-07-03T04:58:38+00:00" }, { - "name": "phpunit/php-timer", - "version": "7.0.1", + "name": "sebastian/object-enumerator", + "version": "6.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3" + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "f5b498e631a74204185071eb41f33f38d64608aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3b415def83fbcb41f991d9ebf16ae4ad8b7837b3", - "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/f5b498e631a74204185071eb41f33f38d64608aa", + "reference": "f5b498e631a74204185071eb41f33f38d64608aa", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.2", + "sebastian/object-reflector": "^4.0", + "sebastian/recursion-context": "^6.0" }, "require-dev": { "phpunit/phpunit": "^11.0" @@ -1051,7 +3023,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "7.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -1066,19 +3038,15 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "security": "https://github.com/sebastianbergmann/php-timer/security/policy", - "source": "https://github.com/sebastianbergmann/php-timer/tree/7.0.1" + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/6.0.1" }, "funding": [ { @@ -1086,65 +3054,35 @@ "type": "github" } ], - "time": "2024-07-03T05:09:35+00:00" + "time": "2024-07-03T05:00:13+00:00" }, { - "name": "phpunit/phpunit", - "version": "11.2.8", + "name": "sebastian/object-reflector", + "version": "4.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "a7a29e8d3113806f18f99d670f580a30e8ffff39" + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a7a29e8d3113806f18f99d670f580a30e8ffff39", - "reference": "a7a29e8d3113806f18f99d670f580a30e8ffff39", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/6e1a43b411b2ad34146dee7524cb13a068bb35f9", + "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.12.0", - "phar-io/manifest": "^2.0.4", - "phar-io/version": "^3.2.1", - "php": ">=8.2", - "phpunit/php-code-coverage": "^11.0.5", - "phpunit/php-file-iterator": "^5.0.1", - "phpunit/php-invoker": "^5.0.1", - "phpunit/php-text-template": "^4.0.1", - "phpunit/php-timer": "^7.0.1", - "sebastian/cli-parser": "^3.0.2", - "sebastian/code-unit": "^3.0.1", - "sebastian/comparator": "^6.0.1", - "sebastian/diff": "^6.0.2", - "sebastian/environment": "^7.2.0", - "sebastian/exporter": "^6.1.3", - "sebastian/global-state": "^7.0.2", - "sebastian/object-enumerator": "^6.0.1", - "sebastian/type": "^5.0.1", - "sebastian/version": "^5.0.1" + "php": ">=8.2" }, - "suggest": { - "ext-soap": "To be able to generate mocks based on WSDL files" + "require-dev": { + "phpunit/phpunit": "^11.0" }, - "bin": [ - "phpunit" - ], "type": "library", "extra": { "branch-alias": { - "dev-main": "11.2-dev" + "dev-main": "4.0-dev" } }, "autoload": { - "files": [ - "src/Framework/Assert/Functions.php" - ], "classmap": [ "src/" ] @@ -1156,50 +3094,100 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/11.2.8" + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "security": "https://github.com/sebastianbergmann/object-reflector/security/policy", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/4.0.1" }, "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, { "url": "https://github.com/sebastianbergmann", "type": "github" + } + ], + "time": "2024-07-03T05:01:32+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "6.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "694d156164372abbd149a4b85ccda2e4670c0e16" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/694d156164372abbd149a4b85ccda2e4670c0e16", + "reference": "694d156164372abbd149a4b85ccda2e4670c0e16", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" }, { - "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", - "type": "tidelift" + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" } ], - "time": "2024-07-18T14:56:37+00:00" + "description": "Provides functionality to recursively process PHP variables", + "homepage": "https://github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/6.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T05:10:34+00:00" }, { - "name": "sebastian/cli-parser", - "version": "3.0.2", + "name": "sebastian/type", + "version": "5.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180" + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "fb6a6566f9589e86661291d13eba708cce5eb4aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/15c5dd40dc4f38794d383bb95465193f5e0ae180", - "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fb6a6566f9589e86661291d13eba708cce5eb4aa", + "reference": "fb6a6566f9589e86661291d13eba708cce5eb4aa", "shasum": "" }, "require": { @@ -1211,7 +3199,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -1230,12 +3218,12 @@ "role": "lead" } ], - "description": "Library for parsing CLI options", - "homepage": "https://github.com/sebastianbergmann/cli-parser", + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", "support": { - "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/3.0.2" + "issues": "https://github.com/sebastianbergmann/type/issues", + "security": "https://github.com/sebastianbergmann/type/security/policy", + "source": "https://github.com/sebastianbergmann/type/tree/5.0.1" }, "funding": [ { @@ -1243,32 +3231,29 @@ "type": "github" } ], - "time": "2024-07-03T04:41:36+00:00" + "time": "2024-07-03T05:11:49+00:00" }, { - "name": "sebastian/code-unit", - "version": "3.0.1", + "name": "sebastian/version", + "version": "5.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "6bb7d09d6623567178cf54126afa9c2310114268" + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "45c9debb7d039ce9b97de2f749c2cf5832a06ac4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/6bb7d09d6623567178cf54126afa9c2310114268", - "reference": "6bb7d09d6623567178cf54126afa9c2310114268", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/45c9debb7d039ce9b97de2f749c2cf5832a06ac4", + "reference": "45c9debb7d039ce9b97de2f749c2cf5832a06ac4", "shasum": "" }, "require": { "php": ">=8.2" }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -1287,12 +3272,12 @@ "role": "lead" } ], - "description": "Collection of value objects that represent the PHP code units", - "homepage": "https://github.com/sebastianbergmann/code-unit", + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", "support": { - "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "security": "https://github.com/sebastianbergmann/code-unit/security/policy", - "source": "https://github.com/sebastianbergmann/code-unit/tree/3.0.1" + "issues": "https://github.com/sebastianbergmann/version/issues", + "security": "https://github.com/sebastianbergmann/version/security/policy", + "source": "https://github.com/sebastianbergmann/version/tree/5.0.1" }, "funding": [ { @@ -1300,816 +3285,981 @@ "type": "github" } ], - "time": "2024-07-03T04:44:28+00:00" + "time": "2024-07-03T05:13:08+00:00" }, { - "name": "sebastian/code-unit-reverse-lookup", - "version": "4.0.1", + "name": "symfony/console", + "version": "v7.1.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "183a9b2632194febd219bb9246eee421dad8d45e" + "url": "https://github.com/symfony/console.git", + "reference": "0aa29ca177f432ab68533432db0de059f39c92ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/183a9b2632194febd219bb9246eee421dad8d45e", - "reference": "183a9b2632194febd219bb9246eee421dad8d45e", + "url": "https://api.github.com/repos/symfony/console/zipball/0aa29ca177f432ab68533432db0de059f39c92ae", + "reference": "0aa29ca177f432ab68533432db0de059f39c92ae", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.2", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^6.4|^7.0" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/dotenv": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/lock": "<6.4", + "symfony/process": "<6.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], "support": { - "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "security": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/security/policy", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/4.0.1" + "source": "https://github.com/symfony/console/tree/v7.1.2" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2024-07-03T04:45:54+00:00" + "time": "2024-06-28T10:03:55+00:00" }, { - "name": "sebastian/comparator", - "version": "6.0.1", + "name": "symfony/event-dispatcher", + "version": "v7.1.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "131942b86d3587291067a94f295498ab6ac79c20" + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/131942b86d3587291067a94f295498ab6ac79c20", - "reference": "131942b86d3587291067a94f295498ab6ac79c20", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7", + "reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-mbstring": "*", "php": ">=8.2", - "sebastian/diff": "^6.0", - "sebastian/exporter": "^6.0" + "symfony/event-dispatcher-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/service-contracts": "<2.5" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/error-handler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^6.4|^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/sebastianbergmann/comparator/issues", - "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/6.0.1" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.1.1" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2024-07-03T04:48:07+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { - "name": "sebastian/complexity", - "version": "4.0.1", + "name": "symfony/event-dispatcher-contracts", + "version": "v3.5.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "ee41d384ab1906c68852636b6de493846e13e5a0" + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/ee41d384ab1906c68852636b6de493846e13e5a0", - "reference": "ee41d384ab1906c68852636b6de493846e13e5a0", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50", + "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50", "shasum": "" }, "require": { - "nikic/php-parser": "^5.0", - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" + "php": ">=8.1", + "psr/event-dispatcher": "^1" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Library for calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "security": "https://github.com/sebastianbergmann/complexity/security/policy", - "source": "https://github.com/sebastianbergmann/complexity/tree/4.0.1" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.0" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2024-07-03T04:49:50+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { - "name": "sebastian/diff", - "version": "6.0.2", + "name": "symfony/filesystem", + "version": "v7.1.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544" + "url": "https://github.com/symfony/filesystem.git", + "reference": "92a91985250c251de9b947a14bb2c9390b1a562c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/b4ccd857127db5d41a5b676f24b51371d76d8544", - "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/92a91985250c251de9b947a14bb2c9390b1a562c", + "reference": "92a91985250c251de9b947a14bb2c9390b1a562c", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8" }, "require-dev": { - "phpunit/phpunit": "^11.0", - "symfony/process": "^4.2 || ^5" + "symfony/process": "^6.4|^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/6.0.2" + "source": "https://github.com/symfony/filesystem/tree/v7.1.2" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2024-07-03T04:53:05+00:00" + "time": "2024-06-28T10:03:55+00:00" }, { - "name": "sebastian/environment", - "version": "7.2.0", + "name": "symfony/finder", + "version": "v7.1.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "855f3ae0ab316bbafe1ba4e16e9f3c078d24a0c5" + "url": "https://github.com/symfony/finder.git", + "reference": "fbb0ba67688b780efbc886c1a0a0948dcf7205d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/855f3ae0ab316bbafe1ba4e16e9f3c078d24a0c5", - "reference": "855f3ae0ab316bbafe1ba4e16e9f3c078d24a0c5", + "url": "https://api.github.com/repos/symfony/finder/zipball/fbb0ba67688b780efbc886c1a0a0948dcf7205d6", + "reference": "fbb0ba67688b780efbc886c1a0a0948dcf7205d6", "shasum": "" }, "require": { "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "suggest": { - "ext-posix": "*" + "symfony/filesystem": "^6.4|^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "7.2-dev" - } - }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "https://github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "security": "https://github.com/sebastianbergmann/environment/security/policy", - "source": "https://github.com/sebastianbergmann/environment/tree/7.2.0" + "source": "https://github.com/symfony/finder/tree/v7.1.1" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2024-07-03T04:54:44+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { - "name": "sebastian/exporter", - "version": "6.1.3", + "name": "symfony/options-resolver", + "version": "v7.1.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "c414673eee9a8f9d51bbf8d61fc9e3ef1e85b20e" + "url": "https://github.com/symfony/options-resolver.git", + "reference": "47aa818121ed3950acd2b58d1d37d08a94f9bf55" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/c414673eee9a8f9d51bbf8d61fc9e3ef1e85b20e", - "reference": "c414673eee9a8f9d51bbf8d61fc9e3ef1e85b20e", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/47aa818121ed3950acd2b58d1d37d08a94f9bf55", + "reference": "47aa818121ed3950acd2b58d1d37d08a94f9bf55", "shasum": "" }, "require": { - "ext-mbstring": "*", "php": ">=8.2", - "sebastian/recursion-context": "^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^11.2" + "symfony/deprecation-contracts": "^2.5|^3" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.1-dev" - } - }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\OptionsResolver\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "https://www.github.com/sebastianbergmann/exporter", + "description": "Provides an improved replacement for the array_replace PHP function", + "homepage": "https://symfony.com", "keywords": [ - "export", - "exporter" + "config", + "configuration", + "options" ], "support": { - "issues": "https://github.com/sebastianbergmann/exporter/issues", - "security": "https://github.com/sebastianbergmann/exporter/security/policy", - "source": "https://github.com/sebastianbergmann/exporter/tree/6.1.3" + "source": "https://github.com/symfony/options-resolver/tree/v7.1.1" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2024-07-03T04:56:19+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { - "name": "sebastian/global-state", - "version": "7.0.2", + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.30.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "3be331570a721f9a4b5917f4209773de17f747d7" + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/3be331570a721f9a4b5917f4209773de17f747d7", - "reference": "3be331570a721f9a4b5917f4209773de17f747d7", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/64647a7c30b2283f5d49b874d84a18fc22054b7a", + "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a", "shasum": "" }, "require": { - "php": ">=8.2", - "sebastian/object-reflector": "^4.0", - "sebastian/recursion-context": "^6.0" + "php": ">=7.1" }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^11.0" + "suggest": { + "ext-intl": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "7.0-dev" + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { - "classmap": [ - "src/" - ] + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Snapshotting of global state", - "homepage": "https://www.github.com/sebastianbergmann/global-state", + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", "keywords": [ - "global state" + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" ], "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "security": "https://github.com/sebastianbergmann/global-state/security/policy", - "source": "https://github.com/sebastianbergmann/global-state/tree/7.0.2" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.30.0" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2024-07-03T04:57:36+00:00" + "time": "2024-05-31T15:07:36+00:00" }, { - "name": "sebastian/lines-of-code", - "version": "3.0.1", + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.30.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a" + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/d36ad0d782e5756913e42ad87cb2890f4ffe467a", - "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/a95281b0be0d9ab48050ebd988b967875cdb9fdb", + "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb", "shasum": "" }, "require": { - "nikic/php-parser": "^5.0", - "php": ">=8.2" + "php": ">=7.1" }, - "require-dev": { - "phpunit/phpunit": "^11.0" + "suggest": { + "ext-intl": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.0-dev" + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, "classmap": [ - "src/" + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Library for counting the lines of code in PHP source code", - "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], "support": { - "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/3.0.1" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.30.0" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2024-07-03T04:58:38+00:00" + "time": "2024-05-31T15:07:36+00:00" }, { - "name": "sebastian/object-enumerator", - "version": "6.0.1", + "name": "symfony/polyfill-php81", + "version": "v1.30.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "f5b498e631a74204185071eb41f33f38d64608aa" + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "3fb075789fb91f9ad9af537c4012d523085bd5af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/f5b498e631a74204185071eb41f33f38d64608aa", - "reference": "f5b498e631a74204185071eb41f33f38d64608aa", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/3fb075789fb91f9ad9af537c4012d523085bd5af", + "reference": "3fb075789fb91f9ad9af537c4012d523085bd5af", "shasum": "" }, "require": { - "php": ">=8.2", - "sebastian/object-reflector": "^4.0", - "sebastian/recursion-context": "^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" + "php": ">=7.1" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "6.0-dev" + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, "classmap": [ - "src/" + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], "support": { - "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/6.0.1" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.30.0" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2024-07-03T05:00:13+00:00" + "time": "2024-06-19T12:30:46+00:00" }, { - "name": "sebastian/object-reflector", - "version": "4.0.1", + "name": "symfony/process", + "version": "v7.1.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9" + "url": "https://github.com/symfony/process.git", + "reference": "febf90124323a093c7ee06fdb30e765ca3c20028" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/6e1a43b411b2ad34146dee7524cb13a068bb35f9", - "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9", + "url": "https://api.github.com/repos/symfony/process/zipball/febf90124323a093c7ee06fdb30e765ca3c20028", + "reference": "febf90124323a093c7ee06fdb30e765ca3c20028", "shasum": "" }, "require": { "php": ">=8.2" }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "security": "https://github.com/sebastianbergmann/object-reflector/security/policy", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/4.0.1" + "source": "https://github.com/symfony/process/tree/v7.1.1" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2024-07-03T05:01:32+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { - "name": "sebastian/recursion-context", - "version": "6.0.2", + "name": "symfony/service-contracts", + "version": "v3.5.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "694d156164372abbd149a4b85ccda2e4670c0e16" + "url": "https://github.com/symfony/service-contracts.git", + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/694d156164372abbd149a4b85ccda2e4670c0e16", - "reference": "694d156164372abbd149a4b85ccda2e4670c0e16", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" }, - "require-dev": { - "phpunit/phpunit": "^11.0" + "conflict": { + "ext-psr": "<1.1|>=2" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + }, + "exclude-from-classmap": [ + "/Test/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { - "name": "Adam Harvey", - "email": "aharvey@php.net" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "https://github.com/sebastianbergmann/recursion-context", + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/6.0.2" + "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2024-07-03T05:10:34+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { - "name": "sebastian/type", - "version": "5.0.1", + "name": "symfony/stopwatch", + "version": "v7.1.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "fb6a6566f9589e86661291d13eba708cce5eb4aa" + "url": "https://github.com/symfony/stopwatch.git", + "reference": "5b75bb1ac2ba1b9d05c47fc4b3046a625377d23d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fb6a6566f9589e86661291d13eba708cce5eb4aa", - "reference": "fb6a6566f9589e86661291d13eba708cce5eb4aa", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5b75bb1ac2ba1b9d05c47fc4b3046a625377d23d", + "reference": "5b75bb1ac2ba1b9d05c47fc4b3046a625377d23d", "shasum": "" }, "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" + "php": ">=8.2", + "symfony/service-contracts": "^2.5|^3" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Stopwatch\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Collection of value objects that represent the types of the PHP type system", - "homepage": "https://github.com/sebastianbergmann/type", + "description": "Provides a way to profile code", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/sebastianbergmann/type/issues", - "security": "https://github.com/sebastianbergmann/type/security/policy", - "source": "https://github.com/sebastianbergmann/type/tree/5.0.1" + "source": "https://github.com/symfony/stopwatch/tree/v7.1.1" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2024-07-03T05:11:49+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { - "name": "sebastian/version", - "version": "5.0.1", + "name": "symfony/string", + "version": "v7.1.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "45c9debb7d039ce9b97de2f749c2cf5832a06ac4" + "url": "https://github.com/symfony/string.git", + "reference": "14221089ac66cf82e3cf3d1c1da65de305587ff8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/45c9debb7d039ce9b97de2f749c2cf5832a06ac4", - "reference": "45c9debb7d039ce9b97de2f749c2cf5832a06ac4", + "url": "https://api.github.com/repos/symfony/string/zipball/14221089ac66cf82e3cf3d1c1da65de305587ff8", + "reference": "14221089ac66cf82e3cf3d1c1da65de305587ff8", "shasum": "" }, "require": { - "php": ">=8.2" + "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" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } + "conflict": { + "symfony/translation-contracts": "<2.5" + }, + "require-dev": { + "symfony/emoji": "^7.1", + "symfony/error-handler": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.4|^7.0" }, + "type": "library", "autoload": { - "classmap": [ - "src/" + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], "support": { - "issues": "https://github.com/sebastianbergmann/version/issues", - "security": "https://github.com/sebastianbergmann/version/security/policy", - "source": "https://github.com/sebastianbergmann/version/tree/5.0.1" + "source": "https://github.com/symfony/string/tree/v7.1.2" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2024-07-03T05:13:08+00:00" + "time": "2024-06-28T09:27:18+00:00" }, { "name": "theseer/tokenizer", diff --git a/cron/jobs/SettingsJob.php b/cron/jobs/SettingsJob.php index 26c582f..3765154 100755 --- a/cron/jobs/SettingsJob.php +++ b/cron/jobs/SettingsJob.php @@ -1,4 +1,5 @@ getMessage() . "")); + die(Kernel::translateColorsCode("&cE&0&lr&2&lr&3&lo&5&lr: &r&l" . $e->getMessage() . "")); } \ No newline at end of file diff --git a/install/install.php b/install/install.php index 877c9d6..187b3d9 100755 --- a/install/install.php +++ b/install/install.php @@ -1,5 +1,7 @@ getMessage()); + } catch (NoMigrationsFound $e) { + die("No migrations found!"); + } catch (Exception $e) { + die("Failed to migrate the database: " . $e->getMessage()); + } migrateCfg(); settings::update('app', 'name', $app_name); settings::update('app', 'timezone', $app_timezone); @@ -82,9 +92,9 @@ /** * Install functions - * + * * Do not touch those functions please - * + * * If you touch you gay */ function migrateDB() @@ -104,7 +114,7 @@ function migrateDB() $sqlFiles = glob(__DIR__ . '/..//migrate/database/*.sql'); if (count($sqlFiles) > 0) { - usort($sqlFiles, function($a, $b) { + usort($sqlFiles, function ($a, $b) { $aDate = intval(basename($a, '.sql')); $bDate = intval(basename($b, '.sql')); return $aDate - $bDate; @@ -129,7 +139,7 @@ function migrateDB() } } } else { - die("(DB) No migrations found!"); + } } catch (PDOException $e) { die("Failed to migrate the database: " . $e->getMessage() . ""); diff --git a/install/mysql.php b/install/mysql.php index ee0bd93..e0fe762 100755 --- a/install/mysql.php +++ b/install/mysql.php @@ -1,4 +1,5 @@ \ No newline at end of file diff --git a/lang/en_US.php b/lang/en_US.php index c44094b..a6718b7 100755 --- a/lang/en_US.php +++ b/lang/en_US.php @@ -1,10 +1,10 @@ - "Page not found", - "pages_error_500" => "Internal server error", - "pages_error_403" => "Forbidden", - "pages_error_401" => "Unauthorized", - "pages_error_go_back" => "Go home", - ]; -?> \ No newline at end of file + "Page not found", + "pages_error_500" => "Internal server error", + "pages_error_403" => "Forbidden", + "pages_error_401" => "Unauthorized", + "pages_error_go_back" => "Go home", +]; diff --git a/migrate/config/1.php b/migrate/config/1.php index b33f763..eec82ab 100755 --- a/migrate/config/1.php +++ b/migrate/config/1.php @@ -1,4 +1,5 @@ add('/errors/404', function () { /** - * The requirement for each template + * The requirement for each template */ global $renderer; http_response_code(404); @@ -11,7 +11,7 @@ $router->add('/errors/500', function () { /** - * The requirement for each template + * The requirement for each template */ global $renderer; http_response_code(500); @@ -20,7 +20,7 @@ $router->add('/errors/403', function () { /** - * The requirement for each template + * The requirement for each template */ global $renderer; http_response_code(403); @@ -29,7 +29,7 @@ $router->add('/errors/401', function () { /** - * The requirement for each template + * The requirement for each template */ global $renderer; http_response_code(401); diff --git a/routes/views/index.php b/routes/views/index.php index 80c61fc..b42c178 100755 --- a/routes/views/index.php +++ b/routes/views/index.php @@ -1,13 +1,14 @@ -add('/', function() { +$router->add('/', function () { /** - * The requirement for each template + * The requirement for each template */ - global $renderer; + global $renderer; die($renderer->render('index.twig')); -}); \ No newline at end of file +}); diff --git a/tests/EncryptionTest.php b/tests/EncryptionTest.php index 5491321..310d5e3 100755 --- a/tests/EncryptionTest.php +++ b/tests/EncryptionTest.php @@ -9,19 +9,19 @@ class EncryptionTest extends TestCase { /** * The encryption key - * + * * @var string */ public static string $key = "AAAAB3NzaC1yc2EAAAADAQABAAABAQDZHXFFVqeRQk42pViMsxfQhIrQBm7LcmW1sazqkgkCgoOVcW4OiCoaH0P9Zf5HjqdJ9RJocnJz8qKQQUiCFxuxt8qJiHMoqf+Mu8KgOs6ixo0SLiH2QakAZ0Nm46WB+VjXmLHkxZ9tw/f2M9dGI5Ky0M0TvsKSXS0v8crXLBBE3Fa+gao/34Cyqim1ZhCopVIjTtRNSZwx0CzHcYGhegl04+nIksCYg7RH56CTH5j1NZX8enJ7T5lx9sl8YIde6qJu7tD0nsfZFTRxwUzLvfGmFIQ9/96BNThB7aK806T8Tr+amKsPcYEc3Il6LifoPztYS6pYtbwBl3eMm0mchNgJ"; /** * The data to encrypt - * + * * @var string */ public static string $data = "Hello World, this is a unit test for the encryption handler :)!"; /** * The encrypted data - * + * * @var string */ public static string $data_e = "iaatrbFTpenTr5Wlg6atqrRhqrdhsmG3r6q1YrW2t85ovrW4duXNt3HQopXiz9nB3OfUcdCq4LWu0qlsnZZ4"; @@ -38,4 +38,4 @@ public function testEncryption(): void $this->assertEquals(self::$data_e, $encryptedData); } -} \ No newline at end of file +} diff --git a/yarn.lock b/yarn.lock old mode 100644 new mode 100755