├── resources └── lang │ ├── config.yml │ └── data │ └── eng.ini ├── icon.png ├── phpstan.neon.dist ├── .github ├── FUNDING.yml ├── dependabot.yml ├── ISSUE_TEMPLATE │ ├── security-vulnerability.md │ ├── config.yml │ ├── crash.md │ └── bug_report.md ├── workflows │ ├── support.yml │ ├── main.yml │ └── draft-release.yml └── PULL_REQUEST_TEMPLATE.md ├── plugin.yml ├── .poggit.yml ├── src ├── lang │ ├── CustomKnownTranslationKeys.php │ └── CustomKnownTranslationFactory.php ├── commands │ ├── ReplyCommand.php │ └── TellCommand.php └── Main.php ├── README.md ├── composer.json ├── phpstan-baseline.php ├── .php-cs-fixer.php ├── LICENSE └── composer.lock /resources/lang/config.yml: -------------------------------------------------------------------------------- 1 | --- 2 | English: 3 | mini: "eng" 4 | ... -------------------------------------------------------------------------------- /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonw4331/SimpleReplies/HEAD/icon.png -------------------------------------------------------------------------------- /phpstan.neon.dist: -------------------------------------------------------------------------------- 1 | includes: 2 | - phpstan-baseline.php 3 | 4 | parameters: 5 | level: 9 6 | paths: 7 | - src -------------------------------------------------------------------------------- /resources/lang/data/eng.ini: -------------------------------------------------------------------------------- 1 | ; English language file for SimpleReplies 2 | command.reply.description = Reply to the last received message 3 | command.reply.usage = /reply 4 | command.reply.success = [{%0} -> {%1}] -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [ jasonw4331 ] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: jasonwynn10 5 | custom: https://www.buymeacoffee.com/jasonwynn10 -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: composer 4 | directory: "/" 5 | schedule: 6 | interval: daily 7 | time: "10:00" 8 | open-pull-requests-limit: 2 9 | - package-ecosystem: github-actions 10 | directory: "/" 11 | schedule: 12 | interval: daily 13 | -------------------------------------------------------------------------------- /plugin.yml: -------------------------------------------------------------------------------- 1 | name: SimpleReplies 2 | main: jasonw4331\SimpleReplies\Main 3 | src-namespace-prefix: jasonw4331\SimpleReplies 4 | version: 2.0.0 5 | api: [4.0.0, 5.0.0] 6 | author: "jasonw4331" 7 | description: "Adds a command to reply to the last person who messaged you" 8 | permissions: 9 | SimpleReplies.reply: 10 | default: true 11 | description: "allows the use of /r" -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/security-vulnerability.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Security vulnerability 3 | about: 'Bug or exploit that can be used to attack servers (hint: don\'t report it 4 | on a public issue tracker)' 5 | title: '' 6 | labels: 'Auto: Spam' 7 | assignees: '' 8 | 9 | --- 10 | 11 | Please DO NOT report security vulnerabilities here. 12 | Instead, contact @jasonw#4331 on discord directly, IN PRIVATE. -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: Help & support on Discord 4 | url: https://discord.gg/R7kdetE 5 | about: We don't accept support requests on the issue tracker. Please try asking on Discord instead. 6 | - name: Help & support on forums 7 | url: https://forums.pmmp.io 8 | about: We don't accept support requests on the issue tracker. Please try asking on forums instead. 9 | -------------------------------------------------------------------------------- /.poggit.yml: -------------------------------------------------------------------------------- 1 | --- # Poggit-CI Manifest. Open the CI at https://poggit.pmmp.io/ci/jasonw4331/SimpleReplies 2 | projects: 3 | SimpleReplies: 4 | path: "" 5 | icon: "icon.png" 6 | excludeDirs: 7 | - .github 8 | - build 9 | excludeFiles: 10 | - .gitignore 11 | - CONTRIBUTING.md 12 | - SECURITY.md 13 | - phpstan.neon.dist 14 | - phpstan-baseline.php 15 | - .php-cs-fixer.php 16 | ... 17 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/crash.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Crash 3 | about: Report a crash caused by SimpleReplies 4 | title: Server crashed 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | 11 | 12 | Link to crashdump: 13 | 14 | 15 | 16 | ### Additional comments (optional) -------------------------------------------------------------------------------- /src/lang/CustomKnownTranslationKeys.php: -------------------------------------------------------------------------------- 1 | 16 | Hi, we only accept **bug reports** on this issue tracker, but this issue looks like a support request. 17 | 18 | 19 | Instead of creating an issue, try the following: 20 | 21 | - Ask the community on our [Discord server](https://discord.gg/R7kdetE) or the [PocketMine Forums](https://forums.pmmp.io) 22 | 23 | - Ask in the PocketMine community [Discord server](https://discord.gg/bmSAZBG) 24 | 25 | 26 | [Discord](https://discord.gg/R7kdetE) | [Forums](https://forums.pmmp.io) 27 | 28 | close-issue: true 29 | lock-issue: false 30 | -------------------------------------------------------------------------------- /src/lang/CustomKnownTranslationFactory.php: -------------------------------------------------------------------------------- 1 | $param0, 23 | 1 => $param1, 24 | ]); 25 | } 26 | 27 | public static function command_reply_usage() : Translatable{ 28 | return new Translatable(CustomKnownTranslationKeys::COMMAND_REPLY_USAGE, []); 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jasonw4331/simplereplies", 3 | "description": "A PocketMine plugins which adds a command to reply to the last person who messaged you", 4 | "type": "library", 5 | "license": "lgpl-3.0-or-later", 6 | "authors": [{ 7 | "name": "jasonw4331", 8 | "email": "jasonwynn10@gmail.com" 9 | }], 10 | "minimum-stability": "beta", 11 | "prefer-stable": true, 12 | "autoload": { 13 | "psr-4": { 14 | "jasonw4331\\SimpleReplies\\": "/src" 15 | } 16 | }, 17 | "require-dev": { 18 | "pocketmine/pocketmine-mp": "^5.0|^4.0", 19 | "phpstan/phpstan": "*", 20 | "phpstan/phpstan-strict-rules": "*", 21 | "phpstan/extension-installer": "*", 22 | "friendsofphp/php-cs-fixer": "*" 23 | }, 24 | "config": { 25 | "allow-plugins": { 26 | "phpstan/extension-installer": true 27 | } 28 | }, 29 | "scripts": { 30 | "make-baseline": "@php ./vendor/bin/phpstan analyze -b phpstan-baseline.php -c phpstan.neon.dist --allow-empty-baseline", 31 | "fix-codestyle": "@php ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.php --verbose --diff" 32 | } 33 | } -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ## Introduction 2 | 3 | 4 | 5 | ### Relevant issues 6 | 7 | 8 | 14 | 15 | ## Changes 16 | 17 | ### API changes 18 | 19 | 20 | 21 | ### Behavioural changes 22 | 23 | 24 | 25 | ## Backwards compatibility 26 | 27 | 28 | 29 | ## Follow-up 30 | 31 | 32 | 41 | 42 | ## Tests 43 | 44 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Unexpected non-crash behaviour 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | ### Issue description 11 | 12 | - Expected result: What were you expecting to happen? 13 | - Actual result: What actually happened? 14 | 15 | ### Steps to reproduce the issue 16 | 17 | 1. ... 18 | 2. ... 19 | 20 | ### OS and versions 21 | 22 | 23 | 24 | * Plugin Version: 25 | * PocketMine-MP: 26 | * PHP: 27 | * Game version: PE/Win10 (delete as appropriate) 28 | 29 | ### Other Plugins 30 | 31 | 32 | 33 | - If you remove all other plugins, does the issue still occur? Yes/No (delete as appropriate) 34 | - If the issue is **not** reproducible without other plugins: 35 | - Have you asked for help in the community discord before creating an issue? 36 | - Can you provide sample, *minimal* reproducing code for the issue? If so, paste it in the bottom section. 37 | 38 | ### Console error, backtrace or other files 39 | 40 | -------------------------------------------------------------------------------- /phpstan-baseline.php: -------------------------------------------------------------------------------- 1 | '#^Method jasonw4331\\\\SimpleReplies\\\\Main\\:\\:getConsoleCommandSender\\(\\) should return pocketmine\\\\console\\\\ConsoleCommandSender\\|null but returns mixed\\.$#', 6 | 'count' => 1, 7 | 'path' => __DIR__ . '/src/Main.php', 8 | ]; 9 | $ignoreErrors[] = [ 10 | 'message' => '#^Static property jasonw4331\\\\SimpleReplies\\\\Main\\:\\:\\$consoleCommandSender \\(pocketmine\\\\console\\\\ConsoleCommandSender\\|null\\) does not accept mixed\\.$#', 11 | 'count' => 1, 12 | 'path' => __DIR__ . '/src/Main.php', 13 | ]; 14 | $ignoreErrors[] = [ 15 | 'message' => '#^Call to an undefined method pocketmine\\\\plugin\\\\Plugin\\:\\:getWhoLastSent\\(\\)\\.$#', 16 | 'count' => 1, 17 | 'path' => __DIR__ . '/src/commands/ReplyCommand.php', 18 | ]; 19 | $ignoreErrors[] = [ 20 | 'message' => '#^Call to an undefined method pocketmine\\\\plugin\\\\Plugin\\:\\:onMessage\\(\\)\\.$#', 21 | 'count' => 1, 22 | 'path' => __DIR__ . '/src/commands/ReplyCommand.php', 23 | ]; 24 | $ignoreErrors[] = [ 25 | 'message' => '#^Call to an undefined method pocketmine\\\\console\\\\ConsoleCommandSender\\|pocketmine\\\\player\\\\Player\\:\\:getDisplayName\\(\\)\\.$#', 26 | 'count' => 2, 27 | 'path' => __DIR__ . '/src/commands/TellCommand.php', 28 | ]; 29 | $ignoreErrors[] = [ 30 | 'message' => '#^Call to an undefined method pocketmine\\\\plugin\\\\Plugin\\:\\:onMessage\\(\\)\\.$#', 31 | 'count' => 1, 32 | 'path' => __DIR__ . '/src/commands/TellCommand.php', 33 | ]; 34 | 35 | return ['parameters' => ['ignoreErrors' => $ignoreErrors]]; 36 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: 4 | push: 5 | pull_request: 6 | workflow_dispatch: 7 | 8 | jobs: 9 | PHPStan_Analyze: 10 | name: PHPStan Analysis 11 | runs-on: ubuntu-latest 12 | strategy: 13 | fail-fast: false 14 | 15 | steps: 16 | - uses: actions/checkout@v6 17 | 18 | - name: Setup PHP and tools 19 | uses: shivammathur/setup-php@v2 20 | with: 21 | php-version: 8.1 22 | tools: phpstan 23 | coverage: none 24 | 25 | - name: Get composer cache directory 26 | id: composer-cache 27 | run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT 28 | 29 | - name: Cache composer dependencies 30 | uses: actions/cache@v5 31 | with: 32 | path: ${{ steps.composer-cache.outputs.dir }} 33 | key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} 34 | restore-keys: ${{ runner.os }}-composer- 35 | 36 | - name: Install Composer dependencies 37 | run: composer install --no-progress --prefer-dist --optimize-autoloader --ignore-platform-reqs 38 | 39 | - name: Run PhpStan 40 | run: phpstan analyze --no-progress src -c phpstan.neon.dist 41 | 42 | codestyle: 43 | name: Code Style checks 44 | runs-on: ubuntu-latest 45 | strategy: 46 | fail-fast: false 47 | 48 | steps: 49 | - uses: actions/checkout@v6 50 | 51 | - name: Setup PHP and tools 52 | uses: shivammathur/setup-php@v2 53 | with: 54 | tools: php-cs-fixer 55 | coverage: none 56 | 57 | - name: Run PHP-CS-Fixer 58 | run: php-cs-fixer fix --dry-run --diff --config=.php-cs-fixer.php -------------------------------------------------------------------------------- /src/commands/ReplyCommand.php: -------------------------------------------------------------------------------- 1 | setOwningPlugin($owningPlugin); 36 | $this->setPermission("SimpleReplies.reply"); 37 | } 38 | 39 | public function execute(CommandSender $sender, string $commandLabel, array $args) : void{ 40 | if(!$this->testPermission($sender)){ 41 | return; 42 | } 43 | 44 | if(count($args) < 1){ 45 | throw new InvalidCommandSyntaxException(); 46 | } 47 | 48 | $lastSent = $this->owningPlugin->getWhoLastSent($sender); 49 | if($lastSent !== ""){ 50 | $found = str_contains(mb_strtoupper($lastSent), "CONSOLE") ? 51 | Main::getConsoleCommandSender() : 52 | Server::getInstance()->getPlayerExact($lastSent); 53 | if($found instanceof CommandSender){ 54 | $foundName = $found instanceof Player ? $found->getDisplayName() : $found->getName(); 55 | $sender->sendMessage(CustomKnownTranslationFactory::command_reply_success($sender->getName(), $foundName . TextFormat::RESET)->postfix(implode(" ", $args))); 56 | $senderName = $sender instanceof Player ? $sender->getDisplayName() : $sender->getName(); 57 | $found->sendMessage(CustomKnownTranslationFactory::command_reply_success($senderName . TextFormat::RESET, $found->getName())->postfix(implode(" ", $args))); 58 | $this->owningPlugin->onMessage($sender, $found); 59 | return; 60 | } 61 | } 62 | $sender->sendMessage(KnownTranslationFactory::commands_generic_player_notFound()); 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /.php-cs-fixer.php: -------------------------------------------------------------------------------- 1 | in(__DIR__ . '/src') 5 | ->in(__DIR__ . '/build'); 6 | 7 | return (new PhpCsFixer\Config) 8 | ->setRiskyAllowed(true) 9 | ->setRules([ 10 | 'align_multiline_comment' => [ 11 | 'comment_type' => 'phpdocs_only' 12 | ], 13 | 'array_indentation' => true, 14 | 'array_syntax' => [ 15 | 'syntax' => 'short' 16 | ], 17 | 'binary_operator_spaces' => [ 18 | 'default' => 'single_space' 19 | ], 20 | 'blank_line_after_namespace' => true, 21 | 'blank_line_after_opening_tag' => true, 22 | 'blank_line_before_statement' => [ 23 | 'statements' => [ 24 | 'declare' 25 | ] 26 | ], 27 | 'cast_spaces' => [ 28 | 'space' => 'single' 29 | ], 30 | 'concat_space' => [ 31 | 'spacing' => 'one' 32 | ], 33 | 'declare_strict_types' => true, 34 | 'elseif' => true, 35 | 'fully_qualified_strict_types' => true, 36 | 'global_namespace_import' => [ 37 | 'import_constants' => true, 38 | 'import_functions' => true, 39 | 'import_classes' => null, 40 | ], 41 | 'indentation_type' => true, 42 | 'logical_operators' => true, 43 | 'native_constant_invocation' => [ 44 | 'scope' => 'namespaced' 45 | ], 46 | 'native_function_invocation' => [ 47 | 'scope' => 'namespaced', 48 | 'include' => ['@all'], 49 | ], 50 | 'new_with_braces' => [ 51 | 'named_class' => true, 52 | 'anonymous_class' => false, 53 | ], 54 | 'no_closing_tag' => true, 55 | 'no_empty_phpdoc' => true, 56 | 'no_extra_blank_lines' => true, 57 | 'no_superfluous_phpdoc_tags' => [ 58 | 'allow_mixed' => true, 59 | ], 60 | 'no_trailing_whitespace' => true, 61 | 'no_trailing_whitespace_in_comment' => true, 62 | 'no_whitespace_in_blank_line' => true, 63 | 'no_unused_imports' => true, 64 | 'ordered_imports' => [ 65 | 'imports_order' => [ 66 | 'class', 67 | 'function', 68 | 'const', 69 | ], 70 | 'sort_algorithm' => 'alpha' 71 | ], 72 | 'phpdoc_align' => [ 73 | 'align' => 'vertical', 74 | 'tags' => [ 75 | 'param', 76 | ] 77 | ], 78 | 'phpdoc_line_span' => [ 79 | 'property' => 'single', 80 | 'method' => null, 81 | 'const' => null 82 | ], 83 | 'phpdoc_trim' => true, 84 | 'phpdoc_trim_consecutive_blank_line_separation' => true, 85 | 'return_type_declaration' => [ 86 | 'space_before' => 'one' 87 | ], 88 | 'single_blank_line_at_eof' => true, 89 | 'single_import_per_statement' => true, 90 | 'strict_param' => true, 91 | 'unary_operator_spaces' => true, 92 | ]) 93 | ->setFinder($finder) 94 | ->setIndent("\t") 95 | ->setLineEnding("\n"); 96 | -------------------------------------------------------------------------------- /src/commands/TellCommand.php: -------------------------------------------------------------------------------- 1 | setOwningPlugin($owningPlugin); 37 | $this->setPermission(DefaultPermissionNames::COMMAND_TELL); 38 | } 39 | 40 | public function execute(CommandSender $sender, string $commandLabel, array $args) : void{ 41 | if(!$this->testPermission($sender)){ 42 | return; 43 | } 44 | 45 | if(count($args) < 2){ 46 | throw new InvalidCommandSyntaxException(); 47 | } 48 | 49 | $search = array_shift($args); 50 | 51 | $found = str_contains(mb_strtoupper($search), "CONSOLE") ? 52 | Main::getConsoleCommandSender() : 53 | $sender->getServer()->getPlayerByPrefix($search); 54 | 55 | if($found === $sender){ 56 | $sender->sendMessage(KnownTranslationFactory::commands_message_sameTarget()->prefix(TextFormat::RED)); 57 | return; 58 | } 59 | 60 | if($found instanceof CommandSender){ 61 | $message = implode(" ", $args); 62 | $sender->sendMessage(KnownTranslationFactory::commands_message_display_outgoing($found->getDisplayName(), $message)->prefix(TextFormat::GRAY . TextFormat::ITALIC)); 63 | $name = $sender instanceof Player ? $sender->getDisplayName() : $sender->getName(); 64 | $found->sendMessage(KnownTranslationFactory::commands_message_display_incoming($name, $message)->prefix(TextFormat::GRAY . TextFormat::ITALIC)); 65 | Command::broadcastCommandMessage($sender, KnownTranslationFactory::commands_message_display_outgoing($found->getDisplayName(), $message), false); 66 | $this->owningPlugin->onMessage($sender, $found); 67 | }else{ 68 | $sender->sendMessage(KnownTranslationFactory::commands_generic_player_notFound()); 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /.github/workflows/draft-release.yml: -------------------------------------------------------------------------------- 1 | name: Draft release 2 | 3 | on: 4 | push: 5 | tags: "*" 6 | 7 | jobs: 8 | draft: 9 | name: Create GitHub Draft Release 10 | if: "startsWith(github.event.head_commit.message, 'Release ')" 11 | runs-on: ubuntu-latest 12 | strategy: 13 | fail-fast: false 14 | 15 | steps: 16 | - uses: actions/checkout@v6 17 | 18 | - name: Setup PHP 19 | uses: shivammathur/setup-php@v2 20 | with: 21 | php-version: 8.1 22 | ini-values: phar.readonly=0 23 | coverage: none 24 | 25 | - name: Get composer cache directory 26 | id: composer-cache 27 | run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT 28 | 29 | - name: Cache composer dependencies 30 | uses: actions/cache@v5 31 | with: 32 | path: ${{ steps.composer-cache.outputs.dir }} 33 | # Use composer.json for key, if composer.lock is not committed. 34 | # key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }} 35 | key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} 36 | restore-keys: ${{ runner.os }}-composer- 37 | 38 | - name: Install Composer dependencies 39 | run: composer install --no-progress --no-dev --prefer-dist --optimize-autoloader --ignore-platform-reqs 40 | 41 | - name: Download Pharynx phar builder 42 | run: wget https://github.com/SOF3/pharynx/releases/latest/download/pharynx.phar -O pharynx.phar 43 | 44 | - id: get-manifest 45 | run: | 46 | echo "NAME=$(grep '^name:' plugin.yml | cut -d' ' -f2- | xargs)" >> $GITHUB_OUTPUT 47 | echo "PRERELEASE=$(grep '^version:' plugin.yml | cut -d' ' -f2- | xargs | grep -E 'alpha|beta|pre' && echo 'true')" >> $GITHUB_OUTPUT 48 | echo "API=$(grep '^api:' plugin.yml | cut -d' ' -f2- | xargs)" >> $GITHUB_OUTPUT 49 | sed -i '/src-namespace-prefix/d' plugin.yml 50 | sed -i "s/version: .*/version: ${{ github.ref_name }}/g" plugin.yml 51 | 52 | - name: Build plugin archive 53 | run: php pharynx.phar -i . -f LICENSE -c -p=${{ github.workspace }}/${{ steps.get-manifest.outputs.NAME }}.phar 54 | 55 | - name: Upload release artifacts 56 | uses: actions/upload-artifact@v6 57 | with: 58 | name: release_artifacts 59 | path: | 60 | ${{ github.workspace }}/${{ steps.get-manifest.outputs.NAME }}.phar 61 | 62 | - name: Create draft release 63 | uses: ncipollo/release-action@v1 64 | with: 65 | artifacts: ${{ github.workspace }}/${{ steps.get-manifest.outputs.NAME }}.phar 66 | commit: ${{ github.sha }} 67 | draft: true 68 | name: ${{ steps.get-manifest.outputs.NAME }} v${{ github.ref_name }} 69 | prerelease: ${{ steps.get-manifest.outputs.PRERELEASE }} 70 | tag: ${{ github.ref_name }} 71 | #token: ${{ secrets.GITHUB_TOKEN }} 72 | body: | 73 | **For PocketMine API ${{ steps.get-manifest.outputs.API }}** -------------------------------------------------------------------------------- /src/Main.php: -------------------------------------------------------------------------------- 1 | getServer()->getCommandMap(); 33 | $commandMap->unregister($commandMap->getCommand('tell') ?? throw new AssumptionFailedError('Tell command does not exist')); 34 | $commandMap->registerAll($this->getName(), [ 35 | new commands\TellCommand('tell', $this), 36 | new commands\ReplyCommand('reply', $this) 37 | ]); 38 | 39 | // register events 40 | $this->getServer()->getPluginManager()->registerEvent( 41 | PlayerQuitEvent::class, 42 | function(PlayerQuitEvent $event) : void{ unset($this->lastSent[$event->getPlayer()->getName()]); }, 43 | EventPriority::NORMAL, 44 | $this 45 | ); 46 | 47 | $this->saveResource('/lang/config.yml'); 48 | /** @var string[][] $contents */ 49 | $contents = yaml_parse_file(Path::join($this->getDataFolder(), "lang", 'config.yml')); 50 | $languageAliases = []; 51 | foreach($contents as $language => $aliases){ 52 | $mini = mb_strtolower($aliases['mini']); 53 | $this->saveResource('/lang/data/' . $mini . '.ini'); 54 | $languageAliases[$mini] = $language; 55 | } 56 | 57 | $languages = []; 58 | $dir = scandir(Path::join($this->getDataFolder(), "lang", "data")); 59 | if($dir !== false){ 60 | foreach($dir as $file){ 61 | /** @phpstan-var array{dirname: string, basename: string, extension?: string, filename: string} $fileData */ 62 | $fileData = pathinfo($file); 63 | if(!isset($fileData["extension"]) || $fileData["extension"] !== "ini"){ 64 | continue; 65 | } 66 | $languageName = mb_strtolower($fileData["filename"]); 67 | $language = new Language( 68 | $languageName, 69 | Path::join($this->getDataFolder(), "lang", "data") 70 | ); 71 | $languages[$languageName] = $language; 72 | foreach(Utils::stringifyKeys($languageAliases) as $languageAlias => $alias){ 73 | if(mb_strtolower($alias) === $languageName){ 74 | $languages[mb_strtolower($languageAlias)] = $language; 75 | unset($languageAliases[$languageAlias]); 76 | } 77 | } 78 | } 79 | } 80 | 81 | // add translations to existing server language instance 82 | $languageA = $this->getServer()->getLanguage(); 83 | $refClass = new ReflectionClass($languageA::class); 84 | $refPropA = $refClass->getProperty('lang'); 85 | /** @var string[] $langA */ 86 | $langA = $refPropA->getValue($languageA); 87 | /** @var string[] $langB */ 88 | $langB = $refClass->getProperty('lang')->getValue($languages[$languageA->getLang()]); 89 | $refPropA->setValue($languageA, array_merge($langA, $langB)); 90 | } 91 | 92 | public function onMessage(CommandSender $sender, CommandSender $receiver) : void{ 93 | $this->lastSent[$receiver->getName()] = $sender->getName(); 94 | } 95 | 96 | public function getWhoLastSent(CommandSender $recipient) : string{ 97 | return $this->lastSent[$recipient->getName()] ?? ""; 98 | } 99 | 100 | public static function getConsoleCommandSender() : ?ConsoleCommandSender{ 101 | self::$consoleCommandSender ??= (new ReflectionClass(Server::getInstance()))->getProperty('consoleSender')->getValue(Server::getInstance()); 102 | return self::$consoleCommandSender; 103 | } 104 | } 105 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU LESSER GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | 9 | This version of the GNU Lesser General Public License incorporates 10 | the terms and conditions of version 3 of the GNU General Public 11 | License, supplemented by the additional permissions listed below. 12 | 13 | 0. Additional Definitions. 14 | 15 | As used herein, "this License" refers to version 3 of the GNU Lesser 16 | General Public License, and the "GNU GPL" refers to version 3 of the GNU 17 | General Public License. 18 | 19 | "The Library" refers to a covered work governed by this License, 20 | other than an Application or a Combined Work as defined below. 21 | 22 | An "Application" is any work that makes use of an interface provided 23 | by the Library, but which is not otherwise based on the Library. 24 | Defining a subclass of a class defined by the Library is deemed a mode 25 | of using an interface provided by the Library. 26 | 27 | A "Combined Work" is a work produced by combining or linking an 28 | Application with the Library. The particular version of the Library 29 | with which the Combined Work was made is also called the "Linked 30 | Version". 31 | 32 | The "Minimal Corresponding Source" for a Combined Work means the 33 | Corresponding Source for the Combined Work, excluding any source code 34 | for portions of the Combined Work that, considered in isolation, are 35 | based on the Application, and not on the Linked Version. 36 | 37 | The "Corresponding Application Code" for a Combined Work means the 38 | object code and/or source code for the Application, including any data 39 | and utility programs needed for reproducing the Combined Work from the 40 | Application, but excluding the System Libraries of the Combined Work. 41 | 42 | 1. Exception to Section 3 of the GNU GPL. 43 | 44 | You may convey a covered work under sections 3 and 4 of this License 45 | without being bound by section 3 of the GNU GPL. 46 | 47 | 2. Conveying Modified Versions. 48 | 49 | If you modify a copy of the Library, and, in your modifications, a 50 | facility refers to a function or data to be supplied by an Application 51 | that uses the facility (other than as an argument passed when the 52 | facility is invoked), then you may convey a copy of the modified 53 | version: 54 | 55 | a) under this License, provided that you make a good faith effort to 56 | ensure that, in the event an Application does not supply the 57 | function or data, the facility still operates, and performs 58 | whatever part of its purpose remains meaningful, or 59 | 60 | b) under the GNU GPL, with none of the additional permissions of 61 | this License applicable to that copy. 62 | 63 | 3. Object Code Incorporating Material from Library Header Files. 64 | 65 | The object code form of an Application may incorporate material from 66 | a header file that is part of the Library. You may convey such object 67 | code under terms of your choice, provided that, if the incorporated 68 | material is not limited to numerical parameters, data structure 69 | layouts and accessors, or small macros, inline functions and templates 70 | (ten or fewer lines in length), you do both of the following: 71 | 72 | a) Give prominent notice with each copy of the object code that the 73 | Library is used in it and that the Library and its use are 74 | covered by this License. 75 | 76 | b) Accompany the object code with a copy of the GNU GPL and this license 77 | document. 78 | 79 | 4. Combined Works. 80 | 81 | You may convey a Combined Work under terms of your choice that, 82 | taken together, effectively do not restrict modification of the 83 | portions of the Library contained in the Combined Work and reverse 84 | engineering for debugging such modifications, if you also do each of 85 | the following: 86 | 87 | a) Give prominent notice with each copy of the Combined Work that 88 | the Library is used in it and that the Library and its use are 89 | covered by this License. 90 | 91 | b) Accompany the Combined Work with a copy of the GNU GPL and this license 92 | document. 93 | 94 | c) For a Combined Work that displays copyright notices during 95 | execution, include the copyright notice for the Library among 96 | these notices, as well as a reference directing the user to the 97 | copies of the GNU GPL and this license document. 98 | 99 | d) Do one of the following: 100 | 101 | 0) Convey the Minimal Corresponding Source under the terms of this 102 | License, and the Corresponding Application Code in a form 103 | suitable for, and under terms that permit, the user to 104 | recombine or relink the Application with a modified version of 105 | the Linked Version to produce a modified Combined Work, in the 106 | manner specified by section 6 of the GNU GPL for conveying 107 | Corresponding Source. 108 | 109 | 1) Use a suitable shared library mechanism for linking with the 110 | Library. A suitable mechanism is one that (a) uses at run time 111 | a copy of the Library already present on the user's computer 112 | system, and (b) will operate properly with a modified version 113 | of the Library that is interface-compatible with the Linked 114 | Version. 115 | 116 | e) Provide Installation Information, but only if you would otherwise 117 | be required to provide such information under section 6 of the 118 | GNU GPL, and only to the extent that such information is 119 | necessary to install and execute a modified version of the 120 | Combined Work produced by recombining or relinking the 121 | Application with a modified version of the Linked Version. (If 122 | you use option 4d0, the Installation Information must accompany 123 | the Minimal Corresponding Source and Corresponding Application 124 | Code. If you use option 4d1, you must provide the Installation 125 | Information in the manner specified by section 6 of the GNU GPL 126 | for conveying Corresponding Source.) 127 | 128 | 5. Combined Libraries. 129 | 130 | You may place library facilities that are a work based on the 131 | Library side by side in a single library together with other library 132 | facilities that are not Applications and are not covered by this 133 | License, and convey such a combined library under terms of your 134 | choice, if you do both of the following: 135 | 136 | a) Accompany the combined library with a copy of the same work based 137 | on the Library, uncombined with any other library facilities, 138 | conveyed under the terms of this License. 139 | 140 | b) Give prominent notice with the combined library that part of it 141 | is a work based on the Library, and explaining where to find the 142 | accompanying uncombined form of the same work. 143 | 144 | 6. Revised Versions of the GNU Lesser General Public License. 145 | 146 | The Free Software Foundation may publish revised and/or new versions 147 | of the GNU Lesser General Public License from time to time. Such new 148 | versions will be similar in spirit to the present version, but may 149 | differ in detail to address new problems or concerns. 150 | 151 | Each version is given a distinguishing version number. If the 152 | Library as you received it specifies that a certain numbered version 153 | of the GNU Lesser General Public License "or any later version" 154 | applies to it, you have the option of following the terms and 155 | conditions either of that published version or of any later version 156 | published by the Free Software Foundation. If the Library as you 157 | received it does not specify a version number of the GNU Lesser 158 | General Public License, you may choose any version of the GNU Lesser 159 | General Public License ever published by the Free Software Foundation. 160 | 161 | If the Library as you received it specifies that a proxy can decide 162 | whether future versions of the GNU Lesser General Public License shall 163 | apply, that proxy's public statement of acceptance of any version is 164 | permanent authorization for you to choose that version for the 165 | Library. 166 | -------------------------------------------------------------------------------- /composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", 5 | "This file is @generated automatically" 6 | ], 7 | "content-hash": "800a61541fa07e72e7fae3df1175affe", 8 | "packages": [], 9 | "packages-dev": [ 10 | { 11 | "name": "adhocore/json-comment", 12 | "version": "1.2.1", 13 | "source": { 14 | "type": "git", 15 | "url": "https://github.com/adhocore/php-json-comment.git", 16 | "reference": "651023f9fe52e9efa2198cbaf6e481d1968e2377" 17 | }, 18 | "dist": { 19 | "type": "zip", 20 | "url": "https://api.github.com/repos/adhocore/php-json-comment/zipball/651023f9fe52e9efa2198cbaf6e481d1968e2377", 21 | "reference": "651023f9fe52e9efa2198cbaf6e481d1968e2377", 22 | "shasum": "" 23 | }, 24 | "require": { 25 | "ext-ctype": "*", 26 | "php": ">=7.0" 27 | }, 28 | "require-dev": { 29 | "phpunit/phpunit": "^6.5 || ^7.5 || ^8.5" 30 | }, 31 | "type": "library", 32 | "autoload": { 33 | "psr-4": { 34 | "Ahc\\Json\\": "src/" 35 | } 36 | }, 37 | "notification-url": "https://packagist.org/downloads/", 38 | "license": [ 39 | "MIT" 40 | ], 41 | "authors": [ 42 | { 43 | "name": "Jitendra Adhikari", 44 | "email": "jiten.adhikary@gmail.com" 45 | } 46 | ], 47 | "description": "Lightweight JSON comment stripper library for PHP", 48 | "keywords": [ 49 | "comment", 50 | "json", 51 | "strip-comment" 52 | ], 53 | "support": { 54 | "issues": "https://github.com/adhocore/php-json-comment/issues", 55 | "source": "https://github.com/adhocore/php-json-comment/tree/1.2.1" 56 | }, 57 | "funding": [ 58 | { 59 | "url": "https://paypal.me/ji10", 60 | "type": "custom" 61 | }, 62 | { 63 | "url": "https://github.com/adhocore", 64 | "type": "github" 65 | } 66 | ], 67 | "time": "2022-10-02T11:22:07+00:00" 68 | }, 69 | { 70 | "name": "brick/math", 71 | "version": "0.11.0", 72 | "source": { 73 | "type": "git", 74 | "url": "https://github.com/brick/math.git", 75 | "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478" 76 | }, 77 | "dist": { 78 | "type": "zip", 79 | "url": "https://api.github.com/repos/brick/math/zipball/0ad82ce168c82ba30d1c01ec86116ab52f589478", 80 | "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478", 81 | "shasum": "" 82 | }, 83 | "require": { 84 | "php": "^8.0" 85 | }, 86 | "require-dev": { 87 | "php-coveralls/php-coveralls": "^2.2", 88 | "phpunit/phpunit": "^9.0", 89 | "vimeo/psalm": "5.0.0" 90 | }, 91 | "type": "library", 92 | "autoload": { 93 | "psr-4": { 94 | "Brick\\Math\\": "src/" 95 | } 96 | }, 97 | "notification-url": "https://packagist.org/downloads/", 98 | "license": [ 99 | "MIT" 100 | ], 101 | "description": "Arbitrary-precision arithmetic library", 102 | "keywords": [ 103 | "Arbitrary-precision", 104 | "BigInteger", 105 | "BigRational", 106 | "arithmetic", 107 | "bigdecimal", 108 | "bignum", 109 | "brick", 110 | "math" 111 | ], 112 | "support": { 113 | "issues": "https://github.com/brick/math/issues", 114 | "source": "https://github.com/brick/math/tree/0.11.0" 115 | }, 116 | "funding": [ 117 | { 118 | "url": "https://github.com/BenMorel", 119 | "type": "github" 120 | } 121 | ], 122 | "time": "2023-01-15T23:15:59+00:00" 123 | }, 124 | { 125 | "name": "composer/pcre", 126 | "version": "3.1.0", 127 | "source": { 128 | "type": "git", 129 | "url": "https://github.com/composer/pcre.git", 130 | "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2" 131 | }, 132 | "dist": { 133 | "type": "zip", 134 | "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", 135 | "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", 136 | "shasum": "" 137 | }, 138 | "require": { 139 | "php": "^7.4 || ^8.0" 140 | }, 141 | "require-dev": { 142 | "phpstan/phpstan": "^1.3", 143 | "phpstan/phpstan-strict-rules": "^1.1", 144 | "symfony/phpunit-bridge": "^5" 145 | }, 146 | "type": "library", 147 | "extra": { 148 | "branch-alias": { 149 | "dev-main": "3.x-dev" 150 | } 151 | }, 152 | "autoload": { 153 | "psr-4": { 154 | "Composer\\Pcre\\": "src" 155 | } 156 | }, 157 | "notification-url": "https://packagist.org/downloads/", 158 | "license": [ 159 | "MIT" 160 | ], 161 | "authors": [ 162 | { 163 | "name": "Jordi Boggiano", 164 | "email": "j.boggiano@seld.be", 165 | "homepage": "http://seld.be" 166 | } 167 | ], 168 | "description": "PCRE wrapping library that offers type-safe preg_* replacements.", 169 | "keywords": [ 170 | "PCRE", 171 | "preg", 172 | "regex", 173 | "regular expression" 174 | ], 175 | "support": { 176 | "issues": "https://github.com/composer/pcre/issues", 177 | "source": "https://github.com/composer/pcre/tree/3.1.0" 178 | }, 179 | "funding": [ 180 | { 181 | "url": "https://packagist.com", 182 | "type": "custom" 183 | }, 184 | { 185 | "url": "https://github.com/composer", 186 | "type": "github" 187 | }, 188 | { 189 | "url": "https://tidelift.com/funding/github/packagist/composer/composer", 190 | "type": "tidelift" 191 | } 192 | ], 193 | "time": "2022-11-17T09:50:14+00:00" 194 | }, 195 | { 196 | "name": "composer/semver", 197 | "version": "3.3.2", 198 | "source": { 199 | "type": "git", 200 | "url": "https://github.com/composer/semver.git", 201 | "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" 202 | }, 203 | "dist": { 204 | "type": "zip", 205 | "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", 206 | "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", 207 | "shasum": "" 208 | }, 209 | "require": { 210 | "php": "^5.3.2 || ^7.0 || ^8.0" 211 | }, 212 | "require-dev": { 213 | "phpstan/phpstan": "^1.4", 214 | "symfony/phpunit-bridge": "^4.2 || ^5" 215 | }, 216 | "type": "library", 217 | "extra": { 218 | "branch-alias": { 219 | "dev-main": "3.x-dev" 220 | } 221 | }, 222 | "autoload": { 223 | "psr-4": { 224 | "Composer\\Semver\\": "src" 225 | } 226 | }, 227 | "notification-url": "https://packagist.org/downloads/", 228 | "license": [ 229 | "MIT" 230 | ], 231 | "authors": [ 232 | { 233 | "name": "Nils Adermann", 234 | "email": "naderman@naderman.de", 235 | "homepage": "http://www.naderman.de" 236 | }, 237 | { 238 | "name": "Jordi Boggiano", 239 | "email": "j.boggiano@seld.be", 240 | "homepage": "http://seld.be" 241 | }, 242 | { 243 | "name": "Rob Bast", 244 | "email": "rob.bast@gmail.com", 245 | "homepage": "http://robbast.nl" 246 | } 247 | ], 248 | "description": "Semver library that offers utilities, version constraint parsing and validation.", 249 | "keywords": [ 250 | "semantic", 251 | "semver", 252 | "validation", 253 | "versioning" 254 | ], 255 | "support": { 256 | "irc": "irc://irc.freenode.org/composer", 257 | "issues": "https://github.com/composer/semver/issues", 258 | "source": "https://github.com/composer/semver/tree/3.3.2" 259 | }, 260 | "funding": [ 261 | { 262 | "url": "https://packagist.com", 263 | "type": "custom" 264 | }, 265 | { 266 | "url": "https://github.com/composer", 267 | "type": "github" 268 | }, 269 | { 270 | "url": "https://tidelift.com/funding/github/packagist/composer/composer", 271 | "type": "tidelift" 272 | } 273 | ], 274 | "time": "2022-04-01T19:23:25+00:00" 275 | }, 276 | { 277 | "name": "composer/xdebug-handler", 278 | "version": "3.0.3", 279 | "source": { 280 | "type": "git", 281 | "url": "https://github.com/composer/xdebug-handler.git", 282 | "reference": "ced299686f41dce890debac69273b47ffe98a40c" 283 | }, 284 | "dist": { 285 | "type": "zip", 286 | "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c", 287 | "reference": "ced299686f41dce890debac69273b47ffe98a40c", 288 | "shasum": "" 289 | }, 290 | "require": { 291 | "composer/pcre": "^1 || ^2 || ^3", 292 | "php": "^7.2.5 || ^8.0", 293 | "psr/log": "^1 || ^2 || ^3" 294 | }, 295 | "require-dev": { 296 | "phpstan/phpstan": "^1.0", 297 | "phpstan/phpstan-strict-rules": "^1.1", 298 | "symfony/phpunit-bridge": "^6.0" 299 | }, 300 | "type": "library", 301 | "autoload": { 302 | "psr-4": { 303 | "Composer\\XdebugHandler\\": "src" 304 | } 305 | }, 306 | "notification-url": "https://packagist.org/downloads/", 307 | "license": [ 308 | "MIT" 309 | ], 310 | "authors": [ 311 | { 312 | "name": "John Stevenson", 313 | "email": "john-stevenson@blueyonder.co.uk" 314 | } 315 | ], 316 | "description": "Restarts a process without Xdebug.", 317 | "keywords": [ 318 | "Xdebug", 319 | "performance" 320 | ], 321 | "support": { 322 | "irc": "irc://irc.freenode.org/composer", 323 | "issues": "https://github.com/composer/xdebug-handler/issues", 324 | "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" 325 | }, 326 | "funding": [ 327 | { 328 | "url": "https://packagist.com", 329 | "type": "custom" 330 | }, 331 | { 332 | "url": "https://github.com/composer", 333 | "type": "github" 334 | }, 335 | { 336 | "url": "https://tidelift.com/funding/github/packagist/composer/composer", 337 | "type": "tidelift" 338 | } 339 | ], 340 | "time": "2022-02-25T21:32:43+00:00" 341 | }, 342 | { 343 | "name": "doctrine/annotations", 344 | "version": "2.0.1", 345 | "source": { 346 | "type": "git", 347 | "url": "https://github.com/doctrine/annotations.git", 348 | "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f" 349 | }, 350 | "dist": { 351 | "type": "zip", 352 | "url": "https://api.github.com/repos/doctrine/annotations/zipball/e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", 353 | "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", 354 | "shasum": "" 355 | }, 356 | "require": { 357 | "doctrine/lexer": "^2 || ^3", 358 | "ext-tokenizer": "*", 359 | "php": "^7.2 || ^8.0", 360 | "psr/cache": "^1 || ^2 || ^3" 361 | }, 362 | "require-dev": { 363 | "doctrine/cache": "^2.0", 364 | "doctrine/coding-standard": "^10", 365 | "phpstan/phpstan": "^1.8.0", 366 | "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", 367 | "symfony/cache": "^5.4 || ^6", 368 | "vimeo/psalm": "^4.10" 369 | }, 370 | "suggest": { 371 | "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" 372 | }, 373 | "type": "library", 374 | "autoload": { 375 | "psr-4": { 376 | "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" 377 | } 378 | }, 379 | "notification-url": "https://packagist.org/downloads/", 380 | "license": [ 381 | "MIT" 382 | ], 383 | "authors": [ 384 | { 385 | "name": "Guilherme Blanco", 386 | "email": "guilhermeblanco@gmail.com" 387 | }, 388 | { 389 | "name": "Roman Borschel", 390 | "email": "roman@code-factory.org" 391 | }, 392 | { 393 | "name": "Benjamin Eberlei", 394 | "email": "kontakt@beberlei.de" 395 | }, 396 | { 397 | "name": "Jonathan Wage", 398 | "email": "jonwage@gmail.com" 399 | }, 400 | { 401 | "name": "Johannes Schmitt", 402 | "email": "schmittjoh@gmail.com" 403 | } 404 | ], 405 | "description": "Docblock Annotations Parser", 406 | "homepage": "https://www.doctrine-project.org/projects/annotations.html", 407 | "keywords": [ 408 | "annotations", 409 | "docblock", 410 | "parser" 411 | ], 412 | "support": { 413 | "issues": "https://github.com/doctrine/annotations/issues", 414 | "source": "https://github.com/doctrine/annotations/tree/2.0.1" 415 | }, 416 | "time": "2023-02-02T22:02:53+00:00" 417 | }, 418 | { 419 | "name": "doctrine/lexer", 420 | "version": "3.0.0", 421 | "source": { 422 | "type": "git", 423 | "url": "https://github.com/doctrine/lexer.git", 424 | "reference": "84a527db05647743d50373e0ec53a152f2cde568" 425 | }, 426 | "dist": { 427 | "type": "zip", 428 | "url": "https://api.github.com/repos/doctrine/lexer/zipball/84a527db05647743d50373e0ec53a152f2cde568", 429 | "reference": "84a527db05647743d50373e0ec53a152f2cde568", 430 | "shasum": "" 431 | }, 432 | "require": { 433 | "php": "^8.1" 434 | }, 435 | "require-dev": { 436 | "doctrine/coding-standard": "^10", 437 | "phpstan/phpstan": "^1.9", 438 | "phpunit/phpunit": "^9.5", 439 | "psalm/plugin-phpunit": "^0.18.3", 440 | "vimeo/psalm": "^5.0" 441 | }, 442 | "type": "library", 443 | "autoload": { 444 | "psr-4": { 445 | "Doctrine\\Common\\Lexer\\": "src" 446 | } 447 | }, 448 | "notification-url": "https://packagist.org/downloads/", 449 | "license": [ 450 | "MIT" 451 | ], 452 | "authors": [ 453 | { 454 | "name": "Guilherme Blanco", 455 | "email": "guilhermeblanco@gmail.com" 456 | }, 457 | { 458 | "name": "Roman Borschel", 459 | "email": "roman@code-factory.org" 460 | }, 461 | { 462 | "name": "Johannes Schmitt", 463 | "email": "schmittjoh@gmail.com" 464 | } 465 | ], 466 | "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", 467 | "homepage": "https://www.doctrine-project.org/projects/lexer.html", 468 | "keywords": [ 469 | "annotations", 470 | "docblock", 471 | "lexer", 472 | "parser", 473 | "php" 474 | ], 475 | "support": { 476 | "issues": "https://github.com/doctrine/lexer/issues", 477 | "source": "https://github.com/doctrine/lexer/tree/3.0.0" 478 | }, 479 | "funding": [ 480 | { 481 | "url": "https://www.doctrine-project.org/sponsorship.html", 482 | "type": "custom" 483 | }, 484 | { 485 | "url": "https://www.patreon.com/phpdoctrine", 486 | "type": "patreon" 487 | }, 488 | { 489 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", 490 | "type": "tidelift" 491 | } 492 | ], 493 | "time": "2022-12-15T16:57:16+00:00" 494 | }, 495 | { 496 | "name": "friendsofphp/php-cs-fixer", 497 | "version": "v3.22.0", 498 | "source": { 499 | "type": "git", 500 | "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", 501 | "reference": "92b019f6c8d79aa26349d0db7671d37440dc0ff3" 502 | }, 503 | "dist": { 504 | "type": "zip", 505 | "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/92b019f6c8d79aa26349d0db7671d37440dc0ff3", 506 | "reference": "92b019f6c8d79aa26349d0db7671d37440dc0ff3", 507 | "shasum": "" 508 | }, 509 | "require": { 510 | "composer/semver": "^3.3", 511 | "composer/xdebug-handler": "^3.0.3", 512 | "doctrine/annotations": "^2", 513 | "doctrine/lexer": "^2 || ^3", 514 | "ext-json": "*", 515 | "ext-tokenizer": "*", 516 | "php": "^7.4 || ^8.0", 517 | "sebastian/diff": "^4.0 || ^5.0", 518 | "symfony/console": "^5.4 || ^6.0", 519 | "symfony/event-dispatcher": "^5.4 || ^6.0", 520 | "symfony/filesystem": "^5.4 || ^6.0", 521 | "symfony/finder": "^5.4 || ^6.0", 522 | "symfony/options-resolver": "^5.4 || ^6.0", 523 | "symfony/polyfill-mbstring": "^1.27", 524 | "symfony/polyfill-php80": "^1.27", 525 | "symfony/polyfill-php81": "^1.27", 526 | "symfony/process": "^5.4 || ^6.0", 527 | "symfony/stopwatch": "^5.4 || ^6.0" 528 | }, 529 | "require-dev": { 530 | "facile-it/paraunit": "^1.3 || ^2.0", 531 | "justinrainbow/json-schema": "^5.2", 532 | "keradus/cli-executor": "^2.0", 533 | "mikey179/vfsstream": "^1.6.11", 534 | "php-coveralls/php-coveralls": "^2.5.3", 535 | "php-cs-fixer/accessible-object": "^1.1", 536 | "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", 537 | "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", 538 | "phpspec/prophecy": "^1.16", 539 | "phpspec/prophecy-phpunit": "^2.0", 540 | "phpunit/phpunit": "^9.5", 541 | "phpunitgoodpractices/polyfill": "^1.6", 542 | "phpunitgoodpractices/traits": "^1.9.2", 543 | "symfony/phpunit-bridge": "^6.2.3", 544 | "symfony/yaml": "^5.4 || ^6.0" 545 | }, 546 | "suggest": { 547 | "ext-dom": "For handling output formats in XML", 548 | "ext-mbstring": "For handling non-UTF8 characters." 549 | }, 550 | "bin": [ 551 | "php-cs-fixer" 552 | ], 553 | "type": "application", 554 | "autoload": { 555 | "psr-4": { 556 | "PhpCsFixer\\": "src/" 557 | } 558 | }, 559 | "notification-url": "https://packagist.org/downloads/", 560 | "license": [ 561 | "MIT" 562 | ], 563 | "authors": [ 564 | { 565 | "name": "Fabien Potencier", 566 | "email": "fabien@symfony.com" 567 | }, 568 | { 569 | "name": "Dariusz Rumiński", 570 | "email": "dariusz.ruminski@gmail.com" 571 | } 572 | ], 573 | "description": "A tool to automatically fix PHP code style", 574 | "keywords": [ 575 | "Static code analysis", 576 | "fixer", 577 | "standards", 578 | "static analysis" 579 | ], 580 | "support": { 581 | "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", 582 | "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.22.0" 583 | }, 584 | "funding": [ 585 | { 586 | "url": "https://github.com/keradus", 587 | "type": "github" 588 | } 589 | ], 590 | "time": "2023-07-16T23:08:06+00:00" 591 | }, 592 | { 593 | "name": "phpstan/extension-installer", 594 | "version": "1.3.1", 595 | "source": { 596 | "type": "git", 597 | "url": "https://github.com/phpstan/extension-installer.git", 598 | "reference": "f45734bfb9984c6c56c4486b71230355f066a58a" 599 | }, 600 | "dist": { 601 | "type": "zip", 602 | "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f45734bfb9984c6c56c4486b71230355f066a58a", 603 | "reference": "f45734bfb9984c6c56c4486b71230355f066a58a", 604 | "shasum": "" 605 | }, 606 | "require": { 607 | "composer-plugin-api": "^2.0", 608 | "php": "^7.2 || ^8.0", 609 | "phpstan/phpstan": "^1.9.0" 610 | }, 611 | "require-dev": { 612 | "composer/composer": "^2.0", 613 | "php-parallel-lint/php-parallel-lint": "^1.2.0", 614 | "phpstan/phpstan-strict-rules": "^0.11 || ^0.12 || ^1.0" 615 | }, 616 | "type": "composer-plugin", 617 | "extra": { 618 | "class": "PHPStan\\ExtensionInstaller\\Plugin" 619 | }, 620 | "autoload": { 621 | "psr-4": { 622 | "PHPStan\\ExtensionInstaller\\": "src/" 623 | } 624 | }, 625 | "notification-url": "https://packagist.org/downloads/", 626 | "license": [ 627 | "MIT" 628 | ], 629 | "description": "Composer plugin for automatic installation of PHPStan extensions", 630 | "support": { 631 | "issues": "https://github.com/phpstan/extension-installer/issues", 632 | "source": "https://github.com/phpstan/extension-installer/tree/1.3.1" 633 | }, 634 | "time": "2023-05-24T08:59:17+00:00" 635 | }, 636 | { 637 | "name": "phpstan/phpstan", 638 | "version": "1.10.26", 639 | "source": { 640 | "type": "git", 641 | "url": "https://github.com/phpstan/phpstan.git", 642 | "reference": "5d660cbb7e1b89253a47147ae44044f49832351f" 643 | }, 644 | "dist": { 645 | "type": "zip", 646 | "url": "https://api.github.com/repos/phpstan/phpstan/zipball/5d660cbb7e1b89253a47147ae44044f49832351f", 647 | "reference": "5d660cbb7e1b89253a47147ae44044f49832351f", 648 | "shasum": "" 649 | }, 650 | "require": { 651 | "php": "^7.2|^8.0" 652 | }, 653 | "conflict": { 654 | "phpstan/phpstan-shim": "*" 655 | }, 656 | "bin": [ 657 | "phpstan", 658 | "phpstan.phar" 659 | ], 660 | "type": "library", 661 | "autoload": { 662 | "files": [ 663 | "bootstrap.php" 664 | ] 665 | }, 666 | "notification-url": "https://packagist.org/downloads/", 667 | "license": [ 668 | "MIT" 669 | ], 670 | "description": "PHPStan - PHP Static Analysis Tool", 671 | "keywords": [ 672 | "dev", 673 | "static analysis" 674 | ], 675 | "support": { 676 | "docs": "https://phpstan.org/user-guide/getting-started", 677 | "forum": "https://github.com/phpstan/phpstan/discussions", 678 | "issues": "https://github.com/phpstan/phpstan/issues", 679 | "security": "https://github.com/phpstan/phpstan/security/policy", 680 | "source": "https://github.com/phpstan/phpstan-src" 681 | }, 682 | "funding": [ 683 | { 684 | "url": "https://github.com/ondrejmirtes", 685 | "type": "github" 686 | }, 687 | { 688 | "url": "https://github.com/phpstan", 689 | "type": "github" 690 | }, 691 | { 692 | "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", 693 | "type": "tidelift" 694 | } 695 | ], 696 | "time": "2023-07-19T12:44:37+00:00" 697 | }, 698 | { 699 | "name": "phpstan/phpstan-strict-rules", 700 | "version": "1.5.1", 701 | "source": { 702 | "type": "git", 703 | "url": "https://github.com/phpstan/phpstan-strict-rules.git", 704 | "reference": "b21c03d4f6f3a446e4311155f4be9d65048218e6" 705 | }, 706 | "dist": { 707 | "type": "zip", 708 | "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/b21c03d4f6f3a446e4311155f4be9d65048218e6", 709 | "reference": "b21c03d4f6f3a446e4311155f4be9d65048218e6", 710 | "shasum": "" 711 | }, 712 | "require": { 713 | "php": "^7.2 || ^8.0", 714 | "phpstan/phpstan": "^1.10" 715 | }, 716 | "require-dev": { 717 | "nikic/php-parser": "^4.13.0", 718 | "php-parallel-lint/php-parallel-lint": "^1.2", 719 | "phpstan/phpstan-deprecation-rules": "^1.1", 720 | "phpstan/phpstan-phpunit": "^1.0", 721 | "phpunit/phpunit": "^9.5" 722 | }, 723 | "type": "phpstan-extension", 724 | "extra": { 725 | "phpstan": { 726 | "includes": [ 727 | "rules.neon" 728 | ] 729 | } 730 | }, 731 | "autoload": { 732 | "psr-4": { 733 | "PHPStan\\": "src/" 734 | } 735 | }, 736 | "notification-url": "https://packagist.org/downloads/", 737 | "license": [ 738 | "MIT" 739 | ], 740 | "description": "Extra strict and opinionated rules for PHPStan", 741 | "support": { 742 | "issues": "https://github.com/phpstan/phpstan-strict-rules/issues", 743 | "source": "https://github.com/phpstan/phpstan-strict-rules/tree/1.5.1" 744 | }, 745 | "time": "2023-03-29T14:47:40+00:00" 746 | }, 747 | { 748 | "name": "pocketmine/bedrock-block-upgrade-schema", 749 | "version": "3.1.0", 750 | "source": { 751 | "type": "git", 752 | "url": "https://github.com/pmmp/BedrockBlockUpgradeSchema.git", 753 | "reference": "6d4ae416043337946a22fc31e8065ca2c21f472d" 754 | }, 755 | "dist": { 756 | "type": "zip", 757 | "url": "https://api.github.com/repos/pmmp/BedrockBlockUpgradeSchema/zipball/6d4ae416043337946a22fc31e8065ca2c21f472d", 758 | "reference": "6d4ae416043337946a22fc31e8065ca2c21f472d", 759 | "shasum": "" 760 | }, 761 | "type": "library", 762 | "notification-url": "https://packagist.org/downloads/", 763 | "license": [ 764 | "CC0-1.0" 765 | ], 766 | "description": "Schemas describing how to upgrade saved block data in older Minecraft: Bedrock Edition world saves", 767 | "support": { 768 | "issues": "https://github.com/pmmp/BedrockBlockUpgradeSchema/issues", 769 | "source": "https://github.com/pmmp/BedrockBlockUpgradeSchema/tree/3.1.0" 770 | }, 771 | "time": "2023-07-12T12:05:36+00:00" 772 | }, 773 | { 774 | "name": "pocketmine/bedrock-data", 775 | "version": "2.4.0+bedrock-1.20.10", 776 | "source": { 777 | "type": "git", 778 | "url": "https://github.com/pmmp/BedrockData.git", 779 | "reference": "f98bd1cae46d2920058acf3b23c0bedeac79f4ab" 780 | }, 781 | "dist": { 782 | "type": "zip", 783 | "url": "https://api.github.com/repos/pmmp/BedrockData/zipball/f98bd1cae46d2920058acf3b23c0bedeac79f4ab", 784 | "reference": "f98bd1cae46d2920058acf3b23c0bedeac79f4ab", 785 | "shasum": "" 786 | }, 787 | "type": "library", 788 | "notification-url": "https://packagist.org/downloads/", 789 | "license": [ 790 | "CC0-1.0" 791 | ], 792 | "description": "Blobs of data generated from Minecraft: Bedrock Edition, used by PocketMine-MP", 793 | "support": { 794 | "issues": "https://github.com/pmmp/BedrockData/issues", 795 | "source": "https://github.com/pmmp/BedrockData/tree/bedrock-1.20.10" 796 | }, 797 | "time": "2023-07-12T11:51:54+00:00" 798 | }, 799 | { 800 | "name": "pocketmine/bedrock-item-upgrade-schema", 801 | "version": "1.4.0", 802 | "source": { 803 | "type": "git", 804 | "url": "https://github.com/pmmp/BedrockItemUpgradeSchema.git", 805 | "reference": "60d199afe5e371fd189b21d685ec1fed6ba54230" 806 | }, 807 | "dist": { 808 | "type": "zip", 809 | "url": "https://api.github.com/repos/pmmp/BedrockItemUpgradeSchema/zipball/60d199afe5e371fd189b21d685ec1fed6ba54230", 810 | "reference": "60d199afe5e371fd189b21d685ec1fed6ba54230", 811 | "shasum": "" 812 | }, 813 | "type": "library", 814 | "notification-url": "https://packagist.org/downloads/", 815 | "license": [ 816 | "CC0-1.0" 817 | ], 818 | "description": "JSON schemas for upgrading items found in older Minecraft: Bedrock world saves", 819 | "support": { 820 | "issues": "https://github.com/pmmp/BedrockItemUpgradeSchema/issues", 821 | "source": "https://github.com/pmmp/BedrockItemUpgradeSchema/tree/1.4.0" 822 | }, 823 | "time": "2023-07-12T12:08:37+00:00" 824 | }, 825 | { 826 | "name": "pocketmine/bedrock-protocol", 827 | "version": "23.0.2+bedrock-1.20.10", 828 | "source": { 829 | "type": "git", 830 | "url": "https://github.com/pmmp/BedrockProtocol.git", 831 | "reference": "69a309a2dd7dcf3ec8c316385b866397e8c2cbfd" 832 | }, 833 | "dist": { 834 | "type": "zip", 835 | "url": "https://api.github.com/repos/pmmp/BedrockProtocol/zipball/69a309a2dd7dcf3ec8c316385b866397e8c2cbfd", 836 | "reference": "69a309a2dd7dcf3ec8c316385b866397e8c2cbfd", 837 | "shasum": "" 838 | }, 839 | "require": { 840 | "ext-json": "*", 841 | "netresearch/jsonmapper": "^4.0", 842 | "php": "^8.0", 843 | "pocketmine/binaryutils": "^0.2.0", 844 | "pocketmine/color": "^0.2.0 || ^0.3.0", 845 | "pocketmine/math": "^0.3.0 || ^0.4.0", 846 | "pocketmine/nbt": "^0.3.0", 847 | "ramsey/uuid": "^4.1" 848 | }, 849 | "require-dev": { 850 | "phpstan/phpstan": "1.10.7", 851 | "phpstan/phpstan-phpunit": "^1.0.0", 852 | "phpstan/phpstan-strict-rules": "^1.0.0", 853 | "phpunit/phpunit": "^9.5" 854 | }, 855 | "type": "library", 856 | "autoload": { 857 | "psr-4": { 858 | "pocketmine\\network\\mcpe\\protocol\\": "src/" 859 | } 860 | }, 861 | "notification-url": "https://packagist.org/downloads/", 862 | "license": [ 863 | "LGPL-3.0" 864 | ], 865 | "description": "An implementation of the Minecraft: Bedrock Edition protocol in PHP", 866 | "support": { 867 | "issues": "https://github.com/pmmp/BedrockProtocol/issues", 868 | "source": "https://github.com/pmmp/BedrockProtocol/tree/23.0.2+bedrock-1.20.10" 869 | }, 870 | "time": "2023-07-24T15:35:36+00:00" 871 | }, 872 | { 873 | "name": "pocketmine/binaryutils", 874 | "version": "0.2.4", 875 | "source": { 876 | "type": "git", 877 | "url": "https://github.com/pmmp/BinaryUtils.git", 878 | "reference": "5ac7eea91afbad8dc498f5ce34ce6297d5e6ea9a" 879 | }, 880 | "dist": { 881 | "type": "zip", 882 | "url": "https://api.github.com/repos/pmmp/BinaryUtils/zipball/5ac7eea91afbad8dc498f5ce34ce6297d5e6ea9a", 883 | "reference": "5ac7eea91afbad8dc498f5ce34ce6297d5e6ea9a", 884 | "shasum": "" 885 | }, 886 | "require": { 887 | "php": "^7.4 || ^8.0", 888 | "php-64bit": "*" 889 | }, 890 | "require-dev": { 891 | "phpstan/extension-installer": "^1.0", 892 | "phpstan/phpstan": "1.3.0", 893 | "phpstan/phpstan-phpunit": "^1.0", 894 | "phpstan/phpstan-strict-rules": "^1.0.0", 895 | "phpunit/phpunit": "^9.5" 896 | }, 897 | "type": "library", 898 | "autoload": { 899 | "psr-4": { 900 | "pocketmine\\utils\\": "src/" 901 | } 902 | }, 903 | "notification-url": "https://packagist.org/downloads/", 904 | "license": [ 905 | "LGPL-3.0" 906 | ], 907 | "description": "Classes and methods for conveniently handling binary data", 908 | "support": { 909 | "issues": "https://github.com/pmmp/BinaryUtils/issues", 910 | "source": "https://github.com/pmmp/BinaryUtils/tree/0.2.4" 911 | }, 912 | "time": "2022-01-12T18:06:33+00:00" 913 | }, 914 | { 915 | "name": "pocketmine/callback-validator", 916 | "version": "1.0.3", 917 | "source": { 918 | "type": "git", 919 | "url": "https://github.com/pmmp/CallbackValidator.git", 920 | "reference": "64787469766bcaa7e5885242e85c23c25e8c55a2" 921 | }, 922 | "dist": { 923 | "type": "zip", 924 | "url": "https://api.github.com/repos/pmmp/CallbackValidator/zipball/64787469766bcaa7e5885242e85c23c25e8c55a2", 925 | "reference": "64787469766bcaa7e5885242e85c23c25e8c55a2", 926 | "shasum": "" 927 | }, 928 | "require": { 929 | "ext-reflection": "*", 930 | "php": "^7.1 || ^8.0" 931 | }, 932 | "replace": { 933 | "daverandom/callback-validator": "*" 934 | }, 935 | "require-dev": { 936 | "phpstan/extension-installer": "^1.0", 937 | "phpstan/phpstan": "0.12.59", 938 | "phpstan/phpstan-strict-rules": "^0.12.4", 939 | "phpunit/phpunit": "^7.5 || ^8.5 || ^9.0" 940 | }, 941 | "type": "library", 942 | "autoload": { 943 | "psr-4": { 944 | "DaveRandom\\CallbackValidator\\": "src/" 945 | } 946 | }, 947 | "notification-url": "https://packagist.org/downloads/", 948 | "license": [ 949 | "MIT" 950 | ], 951 | "authors": [ 952 | { 953 | "name": "Chris Wright", 954 | "email": "cw@daverandom.com" 955 | } 956 | ], 957 | "description": "Fork of daverandom/callback-validator - Tools for validating callback signatures", 958 | "support": { 959 | "issues": "https://github.com/pmmp/CallbackValidator/issues", 960 | "source": "https://github.com/pmmp/CallbackValidator/tree/1.0.3" 961 | }, 962 | "time": "2020-12-11T01:45:37+00:00" 963 | }, 964 | { 965 | "name": "pocketmine/color", 966 | "version": "0.3.1", 967 | "source": { 968 | "type": "git", 969 | "url": "https://github.com/pmmp/Color.git", 970 | "reference": "a0421f1e9e0b0c619300fb92d593283378f6a5e1" 971 | }, 972 | "dist": { 973 | "type": "zip", 974 | "url": "https://api.github.com/repos/pmmp/Color/zipball/a0421f1e9e0b0c619300fb92d593283378f6a5e1", 975 | "reference": "a0421f1e9e0b0c619300fb92d593283378f6a5e1", 976 | "shasum": "" 977 | }, 978 | "require": { 979 | "php": "^8.0" 980 | }, 981 | "require-dev": { 982 | "phpstan/phpstan": "1.10.3", 983 | "phpstan/phpstan-strict-rules": "^1.2.0" 984 | }, 985 | "type": "library", 986 | "autoload": { 987 | "psr-4": { 988 | "pocketmine\\color\\": "src/" 989 | } 990 | }, 991 | "notification-url": "https://packagist.org/downloads/", 992 | "license": [ 993 | "LGPL-3.0" 994 | ], 995 | "description": "Color handling library used by PocketMine-MP and related projects", 996 | "support": { 997 | "issues": "https://github.com/pmmp/Color/issues", 998 | "source": "https://github.com/pmmp/Color/tree/0.3.1" 999 | }, 1000 | "time": "2023-04-10T11:38:05+00:00" 1001 | }, 1002 | { 1003 | "name": "pocketmine/errorhandler", 1004 | "version": "0.6.0", 1005 | "source": { 1006 | "type": "git", 1007 | "url": "https://github.com/pmmp/ErrorHandler.git", 1008 | "reference": "dae214a04348b911e8219ebf125ff1c5589cc878" 1009 | }, 1010 | "dist": { 1011 | "type": "zip", 1012 | "url": "https://api.github.com/repos/pmmp/ErrorHandler/zipball/dae214a04348b911e8219ebf125ff1c5589cc878", 1013 | "reference": "dae214a04348b911e8219ebf125ff1c5589cc878", 1014 | "shasum": "" 1015 | }, 1016 | "require": { 1017 | "php": "^8.0" 1018 | }, 1019 | "require-dev": { 1020 | "phpstan/phpstan": "0.12.99", 1021 | "phpstan/phpstan-strict-rules": "^0.12.2", 1022 | "phpunit/phpunit": "^9.5" 1023 | }, 1024 | "type": "library", 1025 | "autoload": { 1026 | "psr-4": { 1027 | "pocketmine\\errorhandler\\": "src/" 1028 | } 1029 | }, 1030 | "notification-url": "https://packagist.org/downloads/", 1031 | "license": [ 1032 | "LGPL-3.0" 1033 | ], 1034 | "description": "Utilities to handle nasty PHP E_* errors in a usable way", 1035 | "support": { 1036 | "issues": "https://github.com/pmmp/ErrorHandler/issues", 1037 | "source": "https://github.com/pmmp/ErrorHandler/tree/0.6.0" 1038 | }, 1039 | "time": "2022-01-08T21:05:46+00:00" 1040 | }, 1041 | { 1042 | "name": "pocketmine/locale-data", 1043 | "version": "2.19.5", 1044 | "source": { 1045 | "type": "git", 1046 | "url": "https://github.com/pmmp/Language.git", 1047 | "reference": "71af5f9bd23b4e4bad8920dac7f4fe08e5205f7d" 1048 | }, 1049 | "dist": { 1050 | "type": "zip", 1051 | "url": "https://api.github.com/repos/pmmp/Language/zipball/71af5f9bd23b4e4bad8920dac7f4fe08e5205f7d", 1052 | "reference": "71af5f9bd23b4e4bad8920dac7f4fe08e5205f7d", 1053 | "shasum": "" 1054 | }, 1055 | "type": "library", 1056 | "notification-url": "https://packagist.org/downloads/", 1057 | "description": "Language resources used by PocketMine-MP", 1058 | "support": { 1059 | "issues": "https://github.com/pmmp/Language/issues", 1060 | "source": "https://github.com/pmmp/Language/tree/2.19.5" 1061 | }, 1062 | "time": "2023-03-19T16:45:15+00:00" 1063 | }, 1064 | { 1065 | "name": "pocketmine/log", 1066 | "version": "0.4.0", 1067 | "source": { 1068 | "type": "git", 1069 | "url": "https://github.com/pmmp/Log.git", 1070 | "reference": "e6c912c0f9055c81d23108ec2d179b96f404c043" 1071 | }, 1072 | "dist": { 1073 | "type": "zip", 1074 | "url": "https://api.github.com/repos/pmmp/Log/zipball/e6c912c0f9055c81d23108ec2d179b96f404c043", 1075 | "reference": "e6c912c0f9055c81d23108ec2d179b96f404c043", 1076 | "shasum": "" 1077 | }, 1078 | "require": { 1079 | "php": "^7.4 || ^8.0" 1080 | }, 1081 | "conflict": { 1082 | "pocketmine/spl": "<0.4" 1083 | }, 1084 | "require-dev": { 1085 | "phpstan/phpstan": "0.12.88", 1086 | "phpstan/phpstan-strict-rules": "^0.12.2" 1087 | }, 1088 | "type": "library", 1089 | "autoload": { 1090 | "classmap": [ 1091 | "./src" 1092 | ] 1093 | }, 1094 | "notification-url": "https://packagist.org/downloads/", 1095 | "license": [ 1096 | "LGPL-3.0" 1097 | ], 1098 | "description": "Logging components used by PocketMine-MP and related projects", 1099 | "support": { 1100 | "issues": "https://github.com/pmmp/Log/issues", 1101 | "source": "https://github.com/pmmp/Log/tree/0.4.0" 1102 | }, 1103 | "time": "2021-06-18T19:08:09+00:00" 1104 | }, 1105 | { 1106 | "name": "pocketmine/math", 1107 | "version": "0.4.3", 1108 | "source": { 1109 | "type": "git", 1110 | "url": "https://github.com/pmmp/Math.git", 1111 | "reference": "47a243d320b01c8099d65309967934c188111549" 1112 | }, 1113 | "dist": { 1114 | "type": "zip", 1115 | "url": "https://api.github.com/repos/pmmp/Math/zipball/47a243d320b01c8099d65309967934c188111549", 1116 | "reference": "47a243d320b01c8099d65309967934c188111549", 1117 | "shasum": "" 1118 | }, 1119 | "require": { 1120 | "php": "^8.0", 1121 | "php-64bit": "*" 1122 | }, 1123 | "require-dev": { 1124 | "phpstan/extension-installer": "^1.0", 1125 | "phpstan/phpstan": "1.8.2", 1126 | "phpstan/phpstan-strict-rules": "^1.0", 1127 | "phpunit/phpunit": "^8.5 || ^9.5" 1128 | }, 1129 | "type": "library", 1130 | "autoload": { 1131 | "psr-4": { 1132 | "pocketmine\\math\\": "src/" 1133 | } 1134 | }, 1135 | "notification-url": "https://packagist.org/downloads/", 1136 | "license": [ 1137 | "LGPL-3.0" 1138 | ], 1139 | "description": "PHP library containing math related code used in PocketMine-MP", 1140 | "support": { 1141 | "issues": "https://github.com/pmmp/Math/issues", 1142 | "source": "https://github.com/pmmp/Math/tree/0.4.3" 1143 | }, 1144 | "time": "2022-08-25T18:43:37+00:00" 1145 | }, 1146 | { 1147 | "name": "pocketmine/nbt", 1148 | "version": "0.3.4", 1149 | "source": { 1150 | "type": "git", 1151 | "url": "https://github.com/pmmp/NBT.git", 1152 | "reference": "62c02464c6708b2467c1e1a2af01af09d5114eda" 1153 | }, 1154 | "dist": { 1155 | "type": "zip", 1156 | "url": "https://api.github.com/repos/pmmp/NBT/zipball/62c02464c6708b2467c1e1a2af01af09d5114eda", 1157 | "reference": "62c02464c6708b2467c1e1a2af01af09d5114eda", 1158 | "shasum": "" 1159 | }, 1160 | "require": { 1161 | "php": "^7.4 || ^8.0", 1162 | "php-64bit": "*", 1163 | "pocketmine/binaryutils": "^0.2.0" 1164 | }, 1165 | "require-dev": { 1166 | "phpstan/extension-installer": "^1.0", 1167 | "phpstan/phpstan": "1.10.3", 1168 | "phpstan/phpstan-strict-rules": "^1.0", 1169 | "phpunit/phpunit": "^9.5" 1170 | }, 1171 | "type": "library", 1172 | "autoload": { 1173 | "psr-4": { 1174 | "pocketmine\\nbt\\": "src/" 1175 | } 1176 | }, 1177 | "notification-url": "https://packagist.org/downloads/", 1178 | "license": [ 1179 | "LGPL-3.0" 1180 | ], 1181 | "description": "PHP library for working with Named Binary Tags", 1182 | "support": { 1183 | "issues": "https://github.com/pmmp/NBT/issues", 1184 | "source": "https://github.com/pmmp/NBT/tree/0.3.4" 1185 | }, 1186 | "time": "2023-04-10T11:31:20+00:00" 1187 | }, 1188 | { 1189 | "name": "pocketmine/netresearch-jsonmapper", 1190 | "version": "v4.2.1000", 1191 | "source": { 1192 | "type": "git", 1193 | "url": "https://github.com/pmmp/netresearch-jsonmapper.git", 1194 | "reference": "078764e869e9b732f97206ec9363480a77c35532" 1195 | }, 1196 | "dist": { 1197 | "type": "zip", 1198 | "url": "https://api.github.com/repos/pmmp/netresearch-jsonmapper/zipball/078764e869e9b732f97206ec9363480a77c35532", 1199 | "reference": "078764e869e9b732f97206ec9363480a77c35532", 1200 | "shasum": "" 1201 | }, 1202 | "require": { 1203 | "ext-json": "*", 1204 | "ext-pcre": "*", 1205 | "ext-reflection": "*", 1206 | "ext-spl": "*", 1207 | "php": ">=7.1" 1208 | }, 1209 | "replace": { 1210 | "netresearch/jsonmapper": "~4.2.0" 1211 | }, 1212 | "require-dev": { 1213 | "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0", 1214 | "squizlabs/php_codesniffer": "~3.5" 1215 | }, 1216 | "type": "library", 1217 | "autoload": { 1218 | "psr-0": { 1219 | "JsonMapper": "src/" 1220 | } 1221 | }, 1222 | "notification-url": "https://packagist.org/downloads/", 1223 | "license": [ 1224 | "OSL-3.0" 1225 | ], 1226 | "authors": [ 1227 | { 1228 | "name": "Christian Weiske", 1229 | "email": "cweiske@cweiske.de", 1230 | "homepage": "http://github.com/cweiske/jsonmapper/", 1231 | "role": "Developer" 1232 | } 1233 | ], 1234 | "description": "Fork of netresearch/jsonmapper with security fixes needed by pocketmine/pocketmine-mp", 1235 | "support": { 1236 | "email": "cweiske@cweiske.de", 1237 | "issues": "https://github.com/cweiske/jsonmapper/issues", 1238 | "source": "https://github.com/pmmp/netresearch-jsonmapper/tree/v4.2.1000" 1239 | }, 1240 | "time": "2023-07-14T10:44:14+00:00" 1241 | }, 1242 | { 1243 | "name": "pocketmine/pocketmine-mp", 1244 | "version": "5.4.0", 1245 | "source": { 1246 | "type": "git", 1247 | "url": "https://github.com/pmmp/PocketMine-MP.git", 1248 | "reference": "01664d2e81eadb65a076fb665ba7c67cbd8e90a9" 1249 | }, 1250 | "dist": { 1251 | "type": "zip", 1252 | "url": "https://api.github.com/repos/pmmp/PocketMine-MP/zipball/01664d2e81eadb65a076fb665ba7c67cbd8e90a9", 1253 | "reference": "01664d2e81eadb65a076fb665ba7c67cbd8e90a9", 1254 | "shasum": "" 1255 | }, 1256 | "require": { 1257 | "adhocore/json-comment": "~1.2.0", 1258 | "composer-runtime-api": "^2.0", 1259 | "ext-chunkutils2": "^0.3.1", 1260 | "ext-crypto": "^0.3.1", 1261 | "ext-ctype": "*", 1262 | "ext-curl": "*", 1263 | "ext-date": "*", 1264 | "ext-gmp": "*", 1265 | "ext-hash": "*", 1266 | "ext-igbinary": "^3.0.1", 1267 | "ext-json": "*", 1268 | "ext-leveldb": "^0.2.1 || ^0.3.0", 1269 | "ext-mbstring": "*", 1270 | "ext-morton": "^0.1.0", 1271 | "ext-openssl": "*", 1272 | "ext-pcre": "*", 1273 | "ext-phar": "*", 1274 | "ext-pmmpthread": "^6.0.4", 1275 | "ext-reflection": "*", 1276 | "ext-simplexml": "*", 1277 | "ext-sockets": "*", 1278 | "ext-spl": "*", 1279 | "ext-yaml": ">=2.0.0", 1280 | "ext-zip": "*", 1281 | "ext-zlib": ">=1.2.11", 1282 | "php": "^8.1", 1283 | "php-64bit": "*", 1284 | "pocketmine/bedrock-block-upgrade-schema": "~3.1.0+bedrock-1.20.10", 1285 | "pocketmine/bedrock-data": "~2.4.0+bedrock-1.20.10", 1286 | "pocketmine/bedrock-item-upgrade-schema": "~1.4.0+bedrock-1.20.10", 1287 | "pocketmine/bedrock-protocol": "~23.0.2+bedrock-1.20.10", 1288 | "pocketmine/binaryutils": "^0.2.1", 1289 | "pocketmine/callback-validator": "^1.0.2", 1290 | "pocketmine/color": "^0.3.0", 1291 | "pocketmine/errorhandler": "^0.6.0", 1292 | "pocketmine/locale-data": "~2.19.0", 1293 | "pocketmine/log": "^0.4.0", 1294 | "pocketmine/math": "^0.4.0", 1295 | "pocketmine/nbt": "^0.3.2", 1296 | "pocketmine/netresearch-jsonmapper": "~v4.2.1000", 1297 | "pocketmine/raklib": "^0.15.0", 1298 | "pocketmine/raklib-ipc": "^0.2.0", 1299 | "pocketmine/snooze": "^0.5.0", 1300 | "ramsey/uuid": "~4.7.0", 1301 | "symfony/filesystem": "~6.3.0" 1302 | }, 1303 | "require-dev": { 1304 | "phpstan/phpstan": "1.10.16", 1305 | "phpstan/phpstan-phpunit": "^1.1.0", 1306 | "phpstan/phpstan-strict-rules": "^1.2.0", 1307 | "phpunit/phpunit": "^10.1" 1308 | }, 1309 | "type": "project", 1310 | "autoload": { 1311 | "files": [ 1312 | "src/CoreConstants.php" 1313 | ], 1314 | "psr-4": { 1315 | "pocketmine\\": "src/" 1316 | } 1317 | }, 1318 | "notification-url": "https://packagist.org/downloads/", 1319 | "license": [ 1320 | "LGPL-3.0" 1321 | ], 1322 | "description": "A server software for Minecraft: Bedrock Edition written in PHP", 1323 | "homepage": "https://pmmp.io", 1324 | "support": { 1325 | "issues": "https://github.com/pmmp/PocketMine-MP/issues", 1326 | "source": "https://github.com/pmmp/PocketMine-MP/tree/5.4.0" 1327 | }, 1328 | "funding": [ 1329 | { 1330 | "url": "https://github.com/pmmp/PocketMine-MP#donate", 1331 | "type": "custom" 1332 | }, 1333 | { 1334 | "url": "https://www.patreon.com/pocketminemp", 1335 | "type": "patreon" 1336 | } 1337 | ], 1338 | "time": "2023-08-01T11:46:53+00:00" 1339 | }, 1340 | { 1341 | "name": "pocketmine/raklib", 1342 | "version": "0.15.1", 1343 | "source": { 1344 | "type": "git", 1345 | "url": "https://github.com/pmmp/RakLib.git", 1346 | "reference": "79b7b4d1d7516dc6e322514453645ad9452b20ca" 1347 | }, 1348 | "dist": { 1349 | "type": "zip", 1350 | "url": "https://api.github.com/repos/pmmp/RakLib/zipball/79b7b4d1d7516dc6e322514453645ad9452b20ca", 1351 | "reference": "79b7b4d1d7516dc6e322514453645ad9452b20ca", 1352 | "shasum": "" 1353 | }, 1354 | "require": { 1355 | "ext-sockets": "*", 1356 | "php": "^8.0", 1357 | "php-64bit": "*", 1358 | "php-ipv6": "*", 1359 | "pocketmine/binaryutils": "^0.2.0", 1360 | "pocketmine/log": "^0.3.0 || ^0.4.0" 1361 | }, 1362 | "require-dev": { 1363 | "phpstan/phpstan": "1.9.17", 1364 | "phpstan/phpstan-strict-rules": "^1.0" 1365 | }, 1366 | "type": "library", 1367 | "autoload": { 1368 | "psr-4": { 1369 | "raklib\\": "src/" 1370 | } 1371 | }, 1372 | "notification-url": "https://packagist.org/downloads/", 1373 | "license": [ 1374 | "GPL-3.0" 1375 | ], 1376 | "description": "A RakNet server implementation written in PHP", 1377 | "support": { 1378 | "issues": "https://github.com/pmmp/RakLib/issues", 1379 | "source": "https://github.com/pmmp/RakLib/tree/0.15.1" 1380 | }, 1381 | "time": "2023-03-07T15:10:34+00:00" 1382 | }, 1383 | { 1384 | "name": "pocketmine/raklib-ipc", 1385 | "version": "0.2.0", 1386 | "source": { 1387 | "type": "git", 1388 | "url": "https://github.com/pmmp/RakLibIpc.git", 1389 | "reference": "26ed56fa9db06e4ca6e8920c0ede2e01e219bb9c" 1390 | }, 1391 | "dist": { 1392 | "type": "zip", 1393 | "url": "https://api.github.com/repos/pmmp/RakLibIpc/zipball/26ed56fa9db06e4ca6e8920c0ede2e01e219bb9c", 1394 | "reference": "26ed56fa9db06e4ca6e8920c0ede2e01e219bb9c", 1395 | "shasum": "" 1396 | }, 1397 | "require": { 1398 | "php": "^8.0", 1399 | "php-64bit": "*", 1400 | "pocketmine/binaryutils": "^0.2.0", 1401 | "pocketmine/raklib": "^0.15.0" 1402 | }, 1403 | "require-dev": { 1404 | "phpstan/phpstan": "1.9.17", 1405 | "phpstan/phpstan-strict-rules": "^1.0.0" 1406 | }, 1407 | "type": "library", 1408 | "autoload": { 1409 | "psr-4": { 1410 | "raklib\\server\\ipc\\": "src/" 1411 | } 1412 | }, 1413 | "notification-url": "https://packagist.org/downloads/", 1414 | "license": [ 1415 | "GPL-3.0" 1416 | ], 1417 | "description": "Channel-based protocols for inter-thread/inter-process communication with RakLib", 1418 | "support": { 1419 | "issues": "https://github.com/pmmp/RakLibIpc/issues", 1420 | "source": "https://github.com/pmmp/RakLibIpc/tree/0.2.0" 1421 | }, 1422 | "time": "2023-02-13T13:40:40+00:00" 1423 | }, 1424 | { 1425 | "name": "pocketmine/snooze", 1426 | "version": "0.5.0", 1427 | "source": { 1428 | "type": "git", 1429 | "url": "https://github.com/pmmp/Snooze.git", 1430 | "reference": "a86d9ee60ce44755d166d3c7ba4b8b8be8360915" 1431 | }, 1432 | "dist": { 1433 | "type": "zip", 1434 | "url": "https://api.github.com/repos/pmmp/Snooze/zipball/a86d9ee60ce44755d166d3c7ba4b8b8be8360915", 1435 | "reference": "a86d9ee60ce44755d166d3c7ba4b8b8be8360915", 1436 | "shasum": "" 1437 | }, 1438 | "require": { 1439 | "ext-pmmpthread": "^6.0", 1440 | "php-64bit": "^8.1" 1441 | }, 1442 | "require-dev": { 1443 | "phpstan/extension-installer": "^1.0", 1444 | "phpstan/phpstan": "1.10.3", 1445 | "phpstan/phpstan-strict-rules": "^1.0" 1446 | }, 1447 | "type": "library", 1448 | "autoload": { 1449 | "psr-4": { 1450 | "pocketmine\\snooze\\": "src/" 1451 | } 1452 | }, 1453 | "notification-url": "https://packagist.org/downloads/", 1454 | "license": [ 1455 | "LGPL-3.0" 1456 | ], 1457 | "description": "Thread notification management library for code using the pthreads extension", 1458 | "support": { 1459 | "issues": "https://github.com/pmmp/Snooze/issues", 1460 | "source": "https://github.com/pmmp/Snooze/tree/0.5.0" 1461 | }, 1462 | "time": "2023-05-22T23:43:01+00:00" 1463 | }, 1464 | { 1465 | "name": "psr/cache", 1466 | "version": "3.0.0", 1467 | "source": { 1468 | "type": "git", 1469 | "url": "https://github.com/php-fig/cache.git", 1470 | "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" 1471 | }, 1472 | "dist": { 1473 | "type": "zip", 1474 | "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", 1475 | "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", 1476 | "shasum": "" 1477 | }, 1478 | "require": { 1479 | "php": ">=8.0.0" 1480 | }, 1481 | "type": "library", 1482 | "extra": { 1483 | "branch-alias": { 1484 | "dev-master": "1.0.x-dev" 1485 | } 1486 | }, 1487 | "autoload": { 1488 | "psr-4": { 1489 | "Psr\\Cache\\": "src/" 1490 | } 1491 | }, 1492 | "notification-url": "https://packagist.org/downloads/", 1493 | "license": [ 1494 | "MIT" 1495 | ], 1496 | "authors": [ 1497 | { 1498 | "name": "PHP-FIG", 1499 | "homepage": "https://www.php-fig.org/" 1500 | } 1501 | ], 1502 | "description": "Common interface for caching libraries", 1503 | "keywords": [ 1504 | "cache", 1505 | "psr", 1506 | "psr-6" 1507 | ], 1508 | "support": { 1509 | "source": "https://github.com/php-fig/cache/tree/3.0.0" 1510 | }, 1511 | "time": "2021-02-03T23:26:27+00:00" 1512 | }, 1513 | { 1514 | "name": "psr/container", 1515 | "version": "2.0.2", 1516 | "source": { 1517 | "type": "git", 1518 | "url": "https://github.com/php-fig/container.git", 1519 | "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" 1520 | }, 1521 | "dist": { 1522 | "type": "zip", 1523 | "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", 1524 | "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", 1525 | "shasum": "" 1526 | }, 1527 | "require": { 1528 | "php": ">=7.4.0" 1529 | }, 1530 | "type": "library", 1531 | "extra": { 1532 | "branch-alias": { 1533 | "dev-master": "2.0.x-dev" 1534 | } 1535 | }, 1536 | "autoload": { 1537 | "psr-4": { 1538 | "Psr\\Container\\": "src/" 1539 | } 1540 | }, 1541 | "notification-url": "https://packagist.org/downloads/", 1542 | "license": [ 1543 | "MIT" 1544 | ], 1545 | "authors": [ 1546 | { 1547 | "name": "PHP-FIG", 1548 | "homepage": "https://www.php-fig.org/" 1549 | } 1550 | ], 1551 | "description": "Common Container Interface (PHP FIG PSR-11)", 1552 | "homepage": "https://github.com/php-fig/container", 1553 | "keywords": [ 1554 | "PSR-11", 1555 | "container", 1556 | "container-interface", 1557 | "container-interop", 1558 | "psr" 1559 | ], 1560 | "support": { 1561 | "issues": "https://github.com/php-fig/container/issues", 1562 | "source": "https://github.com/php-fig/container/tree/2.0.2" 1563 | }, 1564 | "time": "2021-11-05T16:47:00+00:00" 1565 | }, 1566 | { 1567 | "name": "psr/event-dispatcher", 1568 | "version": "1.0.0", 1569 | "source": { 1570 | "type": "git", 1571 | "url": "https://github.com/php-fig/event-dispatcher.git", 1572 | "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" 1573 | }, 1574 | "dist": { 1575 | "type": "zip", 1576 | "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", 1577 | "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", 1578 | "shasum": "" 1579 | }, 1580 | "require": { 1581 | "php": ">=7.2.0" 1582 | }, 1583 | "type": "library", 1584 | "extra": { 1585 | "branch-alias": { 1586 | "dev-master": "1.0.x-dev" 1587 | } 1588 | }, 1589 | "autoload": { 1590 | "psr-4": { 1591 | "Psr\\EventDispatcher\\": "src/" 1592 | } 1593 | }, 1594 | "notification-url": "https://packagist.org/downloads/", 1595 | "license": [ 1596 | "MIT" 1597 | ], 1598 | "authors": [ 1599 | { 1600 | "name": "PHP-FIG", 1601 | "homepage": "http://www.php-fig.org/" 1602 | } 1603 | ], 1604 | "description": "Standard interfaces for event handling.", 1605 | "keywords": [ 1606 | "events", 1607 | "psr", 1608 | "psr-14" 1609 | ], 1610 | "support": { 1611 | "issues": "https://github.com/php-fig/event-dispatcher/issues", 1612 | "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" 1613 | }, 1614 | "time": "2019-01-08T18:20:26+00:00" 1615 | }, 1616 | { 1617 | "name": "psr/log", 1618 | "version": "3.0.0", 1619 | "source": { 1620 | "type": "git", 1621 | "url": "https://github.com/php-fig/log.git", 1622 | "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" 1623 | }, 1624 | "dist": { 1625 | "type": "zip", 1626 | "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", 1627 | "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", 1628 | "shasum": "" 1629 | }, 1630 | "require": { 1631 | "php": ">=8.0.0" 1632 | }, 1633 | "type": "library", 1634 | "extra": { 1635 | "branch-alias": { 1636 | "dev-master": "3.x-dev" 1637 | } 1638 | }, 1639 | "autoload": { 1640 | "psr-4": { 1641 | "Psr\\Log\\": "src" 1642 | } 1643 | }, 1644 | "notification-url": "https://packagist.org/downloads/", 1645 | "license": [ 1646 | "MIT" 1647 | ], 1648 | "authors": [ 1649 | { 1650 | "name": "PHP-FIG", 1651 | "homepage": "https://www.php-fig.org/" 1652 | } 1653 | ], 1654 | "description": "Common interface for logging libraries", 1655 | "homepage": "https://github.com/php-fig/log", 1656 | "keywords": [ 1657 | "log", 1658 | "psr", 1659 | "psr-3" 1660 | ], 1661 | "support": { 1662 | "source": "https://github.com/php-fig/log/tree/3.0.0" 1663 | }, 1664 | "time": "2021-07-14T16:46:02+00:00" 1665 | }, 1666 | { 1667 | "name": "ramsey/collection", 1668 | "version": "2.0.0", 1669 | "source": { 1670 | "type": "git", 1671 | "url": "https://github.com/ramsey/collection.git", 1672 | "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" 1673 | }, 1674 | "dist": { 1675 | "type": "zip", 1676 | "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", 1677 | "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", 1678 | "shasum": "" 1679 | }, 1680 | "require": { 1681 | "php": "^8.1" 1682 | }, 1683 | "require-dev": { 1684 | "captainhook/plugin-composer": "^5.3", 1685 | "ergebnis/composer-normalize": "^2.28.3", 1686 | "fakerphp/faker": "^1.21", 1687 | "hamcrest/hamcrest-php": "^2.0", 1688 | "jangregor/phpstan-prophecy": "^1.0", 1689 | "mockery/mockery": "^1.5", 1690 | "php-parallel-lint/php-console-highlighter": "^1.0", 1691 | "php-parallel-lint/php-parallel-lint": "^1.3", 1692 | "phpcsstandards/phpcsutils": "^1.0.0-rc1", 1693 | "phpspec/prophecy-phpunit": "^2.0", 1694 | "phpstan/extension-installer": "^1.2", 1695 | "phpstan/phpstan": "^1.9", 1696 | "phpstan/phpstan-mockery": "^1.1", 1697 | "phpstan/phpstan-phpunit": "^1.3", 1698 | "phpunit/phpunit": "^9.5", 1699 | "psalm/plugin-mockery": "^1.1", 1700 | "psalm/plugin-phpunit": "^0.18.4", 1701 | "ramsey/coding-standard": "^2.0.3", 1702 | "ramsey/conventional-commits": "^1.3", 1703 | "vimeo/psalm": "^5.4" 1704 | }, 1705 | "type": "library", 1706 | "extra": { 1707 | "captainhook": { 1708 | "force-install": true 1709 | }, 1710 | "ramsey/conventional-commits": { 1711 | "configFile": "conventional-commits.json" 1712 | } 1713 | }, 1714 | "autoload": { 1715 | "psr-4": { 1716 | "Ramsey\\Collection\\": "src/" 1717 | } 1718 | }, 1719 | "notification-url": "https://packagist.org/downloads/", 1720 | "license": [ 1721 | "MIT" 1722 | ], 1723 | "authors": [ 1724 | { 1725 | "name": "Ben Ramsey", 1726 | "email": "ben@benramsey.com", 1727 | "homepage": "https://benramsey.com" 1728 | } 1729 | ], 1730 | "description": "A PHP library for representing and manipulating collections.", 1731 | "keywords": [ 1732 | "array", 1733 | "collection", 1734 | "hash", 1735 | "map", 1736 | "queue", 1737 | "set" 1738 | ], 1739 | "support": { 1740 | "issues": "https://github.com/ramsey/collection/issues", 1741 | "source": "https://github.com/ramsey/collection/tree/2.0.0" 1742 | }, 1743 | "funding": [ 1744 | { 1745 | "url": "https://github.com/ramsey", 1746 | "type": "github" 1747 | }, 1748 | { 1749 | "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", 1750 | "type": "tidelift" 1751 | } 1752 | ], 1753 | "time": "2022-12-31T21:50:55+00:00" 1754 | }, 1755 | { 1756 | "name": "ramsey/uuid", 1757 | "version": "4.7.4", 1758 | "source": { 1759 | "type": "git", 1760 | "url": "https://github.com/ramsey/uuid.git", 1761 | "reference": "60a4c63ab724854332900504274f6150ff26d286" 1762 | }, 1763 | "dist": { 1764 | "type": "zip", 1765 | "url": "https://api.github.com/repos/ramsey/uuid/zipball/60a4c63ab724854332900504274f6150ff26d286", 1766 | "reference": "60a4c63ab724854332900504274f6150ff26d286", 1767 | "shasum": "" 1768 | }, 1769 | "require": { 1770 | "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11", 1771 | "ext-json": "*", 1772 | "php": "^8.0", 1773 | "ramsey/collection": "^1.2 || ^2.0" 1774 | }, 1775 | "replace": { 1776 | "rhumsaa/uuid": "self.version" 1777 | }, 1778 | "require-dev": { 1779 | "captainhook/captainhook": "^5.10", 1780 | "captainhook/plugin-composer": "^5.3", 1781 | "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", 1782 | "doctrine/annotations": "^1.8", 1783 | "ergebnis/composer-normalize": "^2.15", 1784 | "mockery/mockery": "^1.3", 1785 | "paragonie/random-lib": "^2", 1786 | "php-mock/php-mock": "^2.2", 1787 | "php-mock/php-mock-mockery": "^1.3", 1788 | "php-parallel-lint/php-parallel-lint": "^1.1", 1789 | "phpbench/phpbench": "^1.0", 1790 | "phpstan/extension-installer": "^1.1", 1791 | "phpstan/phpstan": "^1.8", 1792 | "phpstan/phpstan-mockery": "^1.1", 1793 | "phpstan/phpstan-phpunit": "^1.1", 1794 | "phpunit/phpunit": "^8.5 || ^9", 1795 | "ramsey/composer-repl": "^1.4", 1796 | "slevomat/coding-standard": "^8.4", 1797 | "squizlabs/php_codesniffer": "^3.5", 1798 | "vimeo/psalm": "^4.9" 1799 | }, 1800 | "suggest": { 1801 | "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", 1802 | "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", 1803 | "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", 1804 | "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", 1805 | "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." 1806 | }, 1807 | "type": "library", 1808 | "extra": { 1809 | "captainhook": { 1810 | "force-install": true 1811 | } 1812 | }, 1813 | "autoload": { 1814 | "files": [ 1815 | "src/functions.php" 1816 | ], 1817 | "psr-4": { 1818 | "Ramsey\\Uuid\\": "src/" 1819 | } 1820 | }, 1821 | "notification-url": "https://packagist.org/downloads/", 1822 | "license": [ 1823 | "MIT" 1824 | ], 1825 | "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", 1826 | "keywords": [ 1827 | "guid", 1828 | "identifier", 1829 | "uuid" 1830 | ], 1831 | "support": { 1832 | "issues": "https://github.com/ramsey/uuid/issues", 1833 | "source": "https://github.com/ramsey/uuid/tree/4.7.4" 1834 | }, 1835 | "funding": [ 1836 | { 1837 | "url": "https://github.com/ramsey", 1838 | "type": "github" 1839 | }, 1840 | { 1841 | "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", 1842 | "type": "tidelift" 1843 | } 1844 | ], 1845 | "time": "2023-04-15T23:01:58+00:00" 1846 | }, 1847 | { 1848 | "name": "sebastian/diff", 1849 | "version": "5.0.3", 1850 | "source": { 1851 | "type": "git", 1852 | "url": "https://github.com/sebastianbergmann/diff.git", 1853 | "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b" 1854 | }, 1855 | "dist": { 1856 | "type": "zip", 1857 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/912dc2fbe3e3c1e7873313cc801b100b6c68c87b", 1858 | "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b", 1859 | "shasum": "" 1860 | }, 1861 | "require": { 1862 | "php": ">=8.1" 1863 | }, 1864 | "require-dev": { 1865 | "phpunit/phpunit": "^10.0", 1866 | "symfony/process": "^4.2 || ^5" 1867 | }, 1868 | "type": "library", 1869 | "extra": { 1870 | "branch-alias": { 1871 | "dev-main": "5.0-dev" 1872 | } 1873 | }, 1874 | "autoload": { 1875 | "classmap": [ 1876 | "src/" 1877 | ] 1878 | }, 1879 | "notification-url": "https://packagist.org/downloads/", 1880 | "license": [ 1881 | "BSD-3-Clause" 1882 | ], 1883 | "authors": [ 1884 | { 1885 | "name": "Sebastian Bergmann", 1886 | "email": "sebastian@phpunit.de" 1887 | }, 1888 | { 1889 | "name": "Kore Nordmann", 1890 | "email": "mail@kore-nordmann.de" 1891 | } 1892 | ], 1893 | "description": "Diff implementation", 1894 | "homepage": "https://github.com/sebastianbergmann/diff", 1895 | "keywords": [ 1896 | "diff", 1897 | "udiff", 1898 | "unidiff", 1899 | "unified diff" 1900 | ], 1901 | "support": { 1902 | "issues": "https://github.com/sebastianbergmann/diff/issues", 1903 | "security": "https://github.com/sebastianbergmann/diff/security/policy", 1904 | "source": "https://github.com/sebastianbergmann/diff/tree/5.0.3" 1905 | }, 1906 | "funding": [ 1907 | { 1908 | "url": "https://github.com/sebastianbergmann", 1909 | "type": "github" 1910 | } 1911 | ], 1912 | "time": "2023-05-01T07:48:21+00:00" 1913 | }, 1914 | { 1915 | "name": "symfony/console", 1916 | "version": "v6.3.2", 1917 | "source": { 1918 | "type": "git", 1919 | "url": "https://github.com/symfony/console.git", 1920 | "reference": "aa5d64ad3f63f2e48964fc81ee45cb318a723898" 1921 | }, 1922 | "dist": { 1923 | "type": "zip", 1924 | "url": "https://api.github.com/repos/symfony/console/zipball/aa5d64ad3f63f2e48964fc81ee45cb318a723898", 1925 | "reference": "aa5d64ad3f63f2e48964fc81ee45cb318a723898", 1926 | "shasum": "" 1927 | }, 1928 | "require": { 1929 | "php": ">=8.1", 1930 | "symfony/deprecation-contracts": "^2.5|^3", 1931 | "symfony/polyfill-mbstring": "~1.0", 1932 | "symfony/service-contracts": "^2.5|^3", 1933 | "symfony/string": "^5.4|^6.0" 1934 | }, 1935 | "conflict": { 1936 | "symfony/dependency-injection": "<5.4", 1937 | "symfony/dotenv": "<5.4", 1938 | "symfony/event-dispatcher": "<5.4", 1939 | "symfony/lock": "<5.4", 1940 | "symfony/process": "<5.4" 1941 | }, 1942 | "provide": { 1943 | "psr/log-implementation": "1.0|2.0|3.0" 1944 | }, 1945 | "require-dev": { 1946 | "psr/log": "^1|^2|^3", 1947 | "symfony/config": "^5.4|^6.0", 1948 | "symfony/dependency-injection": "^5.4|^6.0", 1949 | "symfony/event-dispatcher": "^5.4|^6.0", 1950 | "symfony/lock": "^5.4|^6.0", 1951 | "symfony/process": "^5.4|^6.0", 1952 | "symfony/var-dumper": "^5.4|^6.0" 1953 | }, 1954 | "type": "library", 1955 | "autoload": { 1956 | "psr-4": { 1957 | "Symfony\\Component\\Console\\": "" 1958 | }, 1959 | "exclude-from-classmap": [ 1960 | "/Tests/" 1961 | ] 1962 | }, 1963 | "notification-url": "https://packagist.org/downloads/", 1964 | "license": [ 1965 | "MIT" 1966 | ], 1967 | "authors": [ 1968 | { 1969 | "name": "Fabien Potencier", 1970 | "email": "fabien@symfony.com" 1971 | }, 1972 | { 1973 | "name": "Symfony Community", 1974 | "homepage": "https://symfony.com/contributors" 1975 | } 1976 | ], 1977 | "description": "Eases the creation of beautiful and testable command line interfaces", 1978 | "homepage": "https://symfony.com", 1979 | "keywords": [ 1980 | "cli", 1981 | "command-line", 1982 | "console", 1983 | "terminal" 1984 | ], 1985 | "support": { 1986 | "source": "https://github.com/symfony/console/tree/v6.3.2" 1987 | }, 1988 | "funding": [ 1989 | { 1990 | "url": "https://symfony.com/sponsor", 1991 | "type": "custom" 1992 | }, 1993 | { 1994 | "url": "https://github.com/fabpot", 1995 | "type": "github" 1996 | }, 1997 | { 1998 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1999 | "type": "tidelift" 2000 | } 2001 | ], 2002 | "time": "2023-07-19T20:17:28+00:00" 2003 | }, 2004 | { 2005 | "name": "symfony/deprecation-contracts", 2006 | "version": "v3.3.0", 2007 | "source": { 2008 | "type": "git", 2009 | "url": "https://github.com/symfony/deprecation-contracts.git", 2010 | "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" 2011 | }, 2012 | "dist": { 2013 | "type": "zip", 2014 | "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", 2015 | "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", 2016 | "shasum": "" 2017 | }, 2018 | "require": { 2019 | "php": ">=8.1" 2020 | }, 2021 | "type": "library", 2022 | "extra": { 2023 | "branch-alias": { 2024 | "dev-main": "3.4-dev" 2025 | }, 2026 | "thanks": { 2027 | "name": "symfony/contracts", 2028 | "url": "https://github.com/symfony/contracts" 2029 | } 2030 | }, 2031 | "autoload": { 2032 | "files": [ 2033 | "function.php" 2034 | ] 2035 | }, 2036 | "notification-url": "https://packagist.org/downloads/", 2037 | "license": [ 2038 | "MIT" 2039 | ], 2040 | "authors": [ 2041 | { 2042 | "name": "Nicolas Grekas", 2043 | "email": "p@tchwork.com" 2044 | }, 2045 | { 2046 | "name": "Symfony Community", 2047 | "homepage": "https://symfony.com/contributors" 2048 | } 2049 | ], 2050 | "description": "A generic function and convention to trigger deprecation notices", 2051 | "homepage": "https://symfony.com", 2052 | "support": { 2053 | "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" 2054 | }, 2055 | "funding": [ 2056 | { 2057 | "url": "https://symfony.com/sponsor", 2058 | "type": "custom" 2059 | }, 2060 | { 2061 | "url": "https://github.com/fabpot", 2062 | "type": "github" 2063 | }, 2064 | { 2065 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2066 | "type": "tidelift" 2067 | } 2068 | ], 2069 | "time": "2023-05-23T14:45:45+00:00" 2070 | }, 2071 | { 2072 | "name": "symfony/event-dispatcher", 2073 | "version": "v6.3.2", 2074 | "source": { 2075 | "type": "git", 2076 | "url": "https://github.com/symfony/event-dispatcher.git", 2077 | "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e" 2078 | }, 2079 | "dist": { 2080 | "type": "zip", 2081 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/adb01fe097a4ee930db9258a3cc906b5beb5cf2e", 2082 | "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e", 2083 | "shasum": "" 2084 | }, 2085 | "require": { 2086 | "php": ">=8.1", 2087 | "symfony/event-dispatcher-contracts": "^2.5|^3" 2088 | }, 2089 | "conflict": { 2090 | "symfony/dependency-injection": "<5.4", 2091 | "symfony/service-contracts": "<2.5" 2092 | }, 2093 | "provide": { 2094 | "psr/event-dispatcher-implementation": "1.0", 2095 | "symfony/event-dispatcher-implementation": "2.0|3.0" 2096 | }, 2097 | "require-dev": { 2098 | "psr/log": "^1|^2|^3", 2099 | "symfony/config": "^5.4|^6.0", 2100 | "symfony/dependency-injection": "^5.4|^6.0", 2101 | "symfony/error-handler": "^5.4|^6.0", 2102 | "symfony/expression-language": "^5.4|^6.0", 2103 | "symfony/http-foundation": "^5.4|^6.0", 2104 | "symfony/service-contracts": "^2.5|^3", 2105 | "symfony/stopwatch": "^5.4|^6.0" 2106 | }, 2107 | "type": "library", 2108 | "autoload": { 2109 | "psr-4": { 2110 | "Symfony\\Component\\EventDispatcher\\": "" 2111 | }, 2112 | "exclude-from-classmap": [ 2113 | "/Tests/" 2114 | ] 2115 | }, 2116 | "notification-url": "https://packagist.org/downloads/", 2117 | "license": [ 2118 | "MIT" 2119 | ], 2120 | "authors": [ 2121 | { 2122 | "name": "Fabien Potencier", 2123 | "email": "fabien@symfony.com" 2124 | }, 2125 | { 2126 | "name": "Symfony Community", 2127 | "homepage": "https://symfony.com/contributors" 2128 | } 2129 | ], 2130 | "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", 2131 | "homepage": "https://symfony.com", 2132 | "support": { 2133 | "source": "https://github.com/symfony/event-dispatcher/tree/v6.3.2" 2134 | }, 2135 | "funding": [ 2136 | { 2137 | "url": "https://symfony.com/sponsor", 2138 | "type": "custom" 2139 | }, 2140 | { 2141 | "url": "https://github.com/fabpot", 2142 | "type": "github" 2143 | }, 2144 | { 2145 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2146 | "type": "tidelift" 2147 | } 2148 | ], 2149 | "time": "2023-07-06T06:56:43+00:00" 2150 | }, 2151 | { 2152 | "name": "symfony/event-dispatcher-contracts", 2153 | "version": "v3.3.0", 2154 | "source": { 2155 | "type": "git", 2156 | "url": "https://github.com/symfony/event-dispatcher-contracts.git", 2157 | "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" 2158 | }, 2159 | "dist": { 2160 | "type": "zip", 2161 | "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", 2162 | "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", 2163 | "shasum": "" 2164 | }, 2165 | "require": { 2166 | "php": ">=8.1", 2167 | "psr/event-dispatcher": "^1" 2168 | }, 2169 | "type": "library", 2170 | "extra": { 2171 | "branch-alias": { 2172 | "dev-main": "3.4-dev" 2173 | }, 2174 | "thanks": { 2175 | "name": "symfony/contracts", 2176 | "url": "https://github.com/symfony/contracts" 2177 | } 2178 | }, 2179 | "autoload": { 2180 | "psr-4": { 2181 | "Symfony\\Contracts\\EventDispatcher\\": "" 2182 | } 2183 | }, 2184 | "notification-url": "https://packagist.org/downloads/", 2185 | "license": [ 2186 | "MIT" 2187 | ], 2188 | "authors": [ 2189 | { 2190 | "name": "Nicolas Grekas", 2191 | "email": "p@tchwork.com" 2192 | }, 2193 | { 2194 | "name": "Symfony Community", 2195 | "homepage": "https://symfony.com/contributors" 2196 | } 2197 | ], 2198 | "description": "Generic abstractions related to dispatching event", 2199 | "homepage": "https://symfony.com", 2200 | "keywords": [ 2201 | "abstractions", 2202 | "contracts", 2203 | "decoupling", 2204 | "interfaces", 2205 | "interoperability", 2206 | "standards" 2207 | ], 2208 | "support": { 2209 | "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0" 2210 | }, 2211 | "funding": [ 2212 | { 2213 | "url": "https://symfony.com/sponsor", 2214 | "type": "custom" 2215 | }, 2216 | { 2217 | "url": "https://github.com/fabpot", 2218 | "type": "github" 2219 | }, 2220 | { 2221 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2222 | "type": "tidelift" 2223 | } 2224 | ], 2225 | "time": "2023-05-23T14:45:45+00:00" 2226 | }, 2227 | { 2228 | "name": "symfony/filesystem", 2229 | "version": "v6.3.1", 2230 | "source": { 2231 | "type": "git", 2232 | "url": "https://github.com/symfony/filesystem.git", 2233 | "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae" 2234 | }, 2235 | "dist": { 2236 | "type": "zip", 2237 | "url": "https://api.github.com/repos/symfony/filesystem/zipball/edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", 2238 | "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", 2239 | "shasum": "" 2240 | }, 2241 | "require": { 2242 | "php": ">=8.1", 2243 | "symfony/polyfill-ctype": "~1.8", 2244 | "symfony/polyfill-mbstring": "~1.8" 2245 | }, 2246 | "type": "library", 2247 | "autoload": { 2248 | "psr-4": { 2249 | "Symfony\\Component\\Filesystem\\": "" 2250 | }, 2251 | "exclude-from-classmap": [ 2252 | "/Tests/" 2253 | ] 2254 | }, 2255 | "notification-url": "https://packagist.org/downloads/", 2256 | "license": [ 2257 | "MIT" 2258 | ], 2259 | "authors": [ 2260 | { 2261 | "name": "Fabien Potencier", 2262 | "email": "fabien@symfony.com" 2263 | }, 2264 | { 2265 | "name": "Symfony Community", 2266 | "homepage": "https://symfony.com/contributors" 2267 | } 2268 | ], 2269 | "description": "Provides basic utilities for the filesystem", 2270 | "homepage": "https://symfony.com", 2271 | "support": { 2272 | "source": "https://github.com/symfony/filesystem/tree/v6.3.1" 2273 | }, 2274 | "funding": [ 2275 | { 2276 | "url": "https://symfony.com/sponsor", 2277 | "type": "custom" 2278 | }, 2279 | { 2280 | "url": "https://github.com/fabpot", 2281 | "type": "github" 2282 | }, 2283 | { 2284 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2285 | "type": "tidelift" 2286 | } 2287 | ], 2288 | "time": "2023-06-01T08:30:39+00:00" 2289 | }, 2290 | { 2291 | "name": "symfony/finder", 2292 | "version": "v6.3.3", 2293 | "source": { 2294 | "type": "git", 2295 | "url": "https://github.com/symfony/finder.git", 2296 | "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e" 2297 | }, 2298 | "dist": { 2299 | "type": "zip", 2300 | "url": "https://api.github.com/repos/symfony/finder/zipball/9915db259f67d21eefee768c1abcf1cc61b1fc9e", 2301 | "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e", 2302 | "shasum": "" 2303 | }, 2304 | "require": { 2305 | "php": ">=8.1" 2306 | }, 2307 | "require-dev": { 2308 | "symfony/filesystem": "^6.0" 2309 | }, 2310 | "type": "library", 2311 | "autoload": { 2312 | "psr-4": { 2313 | "Symfony\\Component\\Finder\\": "" 2314 | }, 2315 | "exclude-from-classmap": [ 2316 | "/Tests/" 2317 | ] 2318 | }, 2319 | "notification-url": "https://packagist.org/downloads/", 2320 | "license": [ 2321 | "MIT" 2322 | ], 2323 | "authors": [ 2324 | { 2325 | "name": "Fabien Potencier", 2326 | "email": "fabien@symfony.com" 2327 | }, 2328 | { 2329 | "name": "Symfony Community", 2330 | "homepage": "https://symfony.com/contributors" 2331 | } 2332 | ], 2333 | "description": "Finds files and directories via an intuitive fluent interface", 2334 | "homepage": "https://symfony.com", 2335 | "support": { 2336 | "source": "https://github.com/symfony/finder/tree/v6.3.3" 2337 | }, 2338 | "funding": [ 2339 | { 2340 | "url": "https://symfony.com/sponsor", 2341 | "type": "custom" 2342 | }, 2343 | { 2344 | "url": "https://github.com/fabpot", 2345 | "type": "github" 2346 | }, 2347 | { 2348 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2349 | "type": "tidelift" 2350 | } 2351 | ], 2352 | "time": "2023-07-31T08:31:44+00:00" 2353 | }, 2354 | { 2355 | "name": "symfony/options-resolver", 2356 | "version": "v6.3.0", 2357 | "source": { 2358 | "type": "git", 2359 | "url": "https://github.com/symfony/options-resolver.git", 2360 | "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd" 2361 | }, 2362 | "dist": { 2363 | "type": "zip", 2364 | "url": "https://api.github.com/repos/symfony/options-resolver/zipball/a10f19f5198d589d5c33333cffe98dc9820332dd", 2365 | "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd", 2366 | "shasum": "" 2367 | }, 2368 | "require": { 2369 | "php": ">=8.1", 2370 | "symfony/deprecation-contracts": "^2.5|^3" 2371 | }, 2372 | "type": "library", 2373 | "autoload": { 2374 | "psr-4": { 2375 | "Symfony\\Component\\OptionsResolver\\": "" 2376 | }, 2377 | "exclude-from-classmap": [ 2378 | "/Tests/" 2379 | ] 2380 | }, 2381 | "notification-url": "https://packagist.org/downloads/", 2382 | "license": [ 2383 | "MIT" 2384 | ], 2385 | "authors": [ 2386 | { 2387 | "name": "Fabien Potencier", 2388 | "email": "fabien@symfony.com" 2389 | }, 2390 | { 2391 | "name": "Symfony Community", 2392 | "homepage": "https://symfony.com/contributors" 2393 | } 2394 | ], 2395 | "description": "Provides an improved replacement for the array_replace PHP function", 2396 | "homepage": "https://symfony.com", 2397 | "keywords": [ 2398 | "config", 2399 | "configuration", 2400 | "options" 2401 | ], 2402 | "support": { 2403 | "source": "https://github.com/symfony/options-resolver/tree/v6.3.0" 2404 | }, 2405 | "funding": [ 2406 | { 2407 | "url": "https://symfony.com/sponsor", 2408 | "type": "custom" 2409 | }, 2410 | { 2411 | "url": "https://github.com/fabpot", 2412 | "type": "github" 2413 | }, 2414 | { 2415 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2416 | "type": "tidelift" 2417 | } 2418 | ], 2419 | "time": "2023-05-12T14:21:09+00:00" 2420 | }, 2421 | { 2422 | "name": "symfony/polyfill-ctype", 2423 | "version": "v1.27.0", 2424 | "source": { 2425 | "type": "git", 2426 | "url": "https://github.com/symfony/polyfill-ctype.git", 2427 | "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" 2428 | }, 2429 | "dist": { 2430 | "type": "zip", 2431 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", 2432 | "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", 2433 | "shasum": "" 2434 | }, 2435 | "require": { 2436 | "php": ">=7.1" 2437 | }, 2438 | "provide": { 2439 | "ext-ctype": "*" 2440 | }, 2441 | "suggest": { 2442 | "ext-ctype": "For best performance" 2443 | }, 2444 | "type": "library", 2445 | "extra": { 2446 | "branch-alias": { 2447 | "dev-main": "1.27-dev" 2448 | }, 2449 | "thanks": { 2450 | "name": "symfony/polyfill", 2451 | "url": "https://github.com/symfony/polyfill" 2452 | } 2453 | }, 2454 | "autoload": { 2455 | "files": [ 2456 | "bootstrap.php" 2457 | ], 2458 | "psr-4": { 2459 | "Symfony\\Polyfill\\Ctype\\": "" 2460 | } 2461 | }, 2462 | "notification-url": "https://packagist.org/downloads/", 2463 | "license": [ 2464 | "MIT" 2465 | ], 2466 | "authors": [ 2467 | { 2468 | "name": "Gert de Pagter", 2469 | "email": "BackEndTea@gmail.com" 2470 | }, 2471 | { 2472 | "name": "Symfony Community", 2473 | "homepage": "https://symfony.com/contributors" 2474 | } 2475 | ], 2476 | "description": "Symfony polyfill for ctype functions", 2477 | "homepage": "https://symfony.com", 2478 | "keywords": [ 2479 | "compatibility", 2480 | "ctype", 2481 | "polyfill", 2482 | "portable" 2483 | ], 2484 | "support": { 2485 | "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" 2486 | }, 2487 | "funding": [ 2488 | { 2489 | "url": "https://symfony.com/sponsor", 2490 | "type": "custom" 2491 | }, 2492 | { 2493 | "url": "https://github.com/fabpot", 2494 | "type": "github" 2495 | }, 2496 | { 2497 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2498 | "type": "tidelift" 2499 | } 2500 | ], 2501 | "time": "2022-11-03T14:55:06+00:00" 2502 | }, 2503 | { 2504 | "name": "symfony/polyfill-intl-grapheme", 2505 | "version": "v1.27.0", 2506 | "source": { 2507 | "type": "git", 2508 | "url": "https://github.com/symfony/polyfill-intl-grapheme.git", 2509 | "reference": "511a08c03c1960e08a883f4cffcacd219b758354" 2510 | }, 2511 | "dist": { 2512 | "type": "zip", 2513 | "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", 2514 | "reference": "511a08c03c1960e08a883f4cffcacd219b758354", 2515 | "shasum": "" 2516 | }, 2517 | "require": { 2518 | "php": ">=7.1" 2519 | }, 2520 | "suggest": { 2521 | "ext-intl": "For best performance" 2522 | }, 2523 | "type": "library", 2524 | "extra": { 2525 | "branch-alias": { 2526 | "dev-main": "1.27-dev" 2527 | }, 2528 | "thanks": { 2529 | "name": "symfony/polyfill", 2530 | "url": "https://github.com/symfony/polyfill" 2531 | } 2532 | }, 2533 | "autoload": { 2534 | "files": [ 2535 | "bootstrap.php" 2536 | ], 2537 | "psr-4": { 2538 | "Symfony\\Polyfill\\Intl\\Grapheme\\": "" 2539 | } 2540 | }, 2541 | "notification-url": "https://packagist.org/downloads/", 2542 | "license": [ 2543 | "MIT" 2544 | ], 2545 | "authors": [ 2546 | { 2547 | "name": "Nicolas Grekas", 2548 | "email": "p@tchwork.com" 2549 | }, 2550 | { 2551 | "name": "Symfony Community", 2552 | "homepage": "https://symfony.com/contributors" 2553 | } 2554 | ], 2555 | "description": "Symfony polyfill for intl's grapheme_* functions", 2556 | "homepage": "https://symfony.com", 2557 | "keywords": [ 2558 | "compatibility", 2559 | "grapheme", 2560 | "intl", 2561 | "polyfill", 2562 | "portable", 2563 | "shim" 2564 | ], 2565 | "support": { 2566 | "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" 2567 | }, 2568 | "funding": [ 2569 | { 2570 | "url": "https://symfony.com/sponsor", 2571 | "type": "custom" 2572 | }, 2573 | { 2574 | "url": "https://github.com/fabpot", 2575 | "type": "github" 2576 | }, 2577 | { 2578 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2579 | "type": "tidelift" 2580 | } 2581 | ], 2582 | "time": "2022-11-03T14:55:06+00:00" 2583 | }, 2584 | { 2585 | "name": "symfony/polyfill-intl-normalizer", 2586 | "version": "v1.27.0", 2587 | "source": { 2588 | "type": "git", 2589 | "url": "https://github.com/symfony/polyfill-intl-normalizer.git", 2590 | "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" 2591 | }, 2592 | "dist": { 2593 | "type": "zip", 2594 | "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", 2595 | "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", 2596 | "shasum": "" 2597 | }, 2598 | "require": { 2599 | "php": ">=7.1" 2600 | }, 2601 | "suggest": { 2602 | "ext-intl": "For best performance" 2603 | }, 2604 | "type": "library", 2605 | "extra": { 2606 | "branch-alias": { 2607 | "dev-main": "1.27-dev" 2608 | }, 2609 | "thanks": { 2610 | "name": "symfony/polyfill", 2611 | "url": "https://github.com/symfony/polyfill" 2612 | } 2613 | }, 2614 | "autoload": { 2615 | "files": [ 2616 | "bootstrap.php" 2617 | ], 2618 | "psr-4": { 2619 | "Symfony\\Polyfill\\Intl\\Normalizer\\": "" 2620 | }, 2621 | "classmap": [ 2622 | "Resources/stubs" 2623 | ] 2624 | }, 2625 | "notification-url": "https://packagist.org/downloads/", 2626 | "license": [ 2627 | "MIT" 2628 | ], 2629 | "authors": [ 2630 | { 2631 | "name": "Nicolas Grekas", 2632 | "email": "p@tchwork.com" 2633 | }, 2634 | { 2635 | "name": "Symfony Community", 2636 | "homepage": "https://symfony.com/contributors" 2637 | } 2638 | ], 2639 | "description": "Symfony polyfill for intl's Normalizer class and related functions", 2640 | "homepage": "https://symfony.com", 2641 | "keywords": [ 2642 | "compatibility", 2643 | "intl", 2644 | "normalizer", 2645 | "polyfill", 2646 | "portable", 2647 | "shim" 2648 | ], 2649 | "support": { 2650 | "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" 2651 | }, 2652 | "funding": [ 2653 | { 2654 | "url": "https://symfony.com/sponsor", 2655 | "type": "custom" 2656 | }, 2657 | { 2658 | "url": "https://github.com/fabpot", 2659 | "type": "github" 2660 | }, 2661 | { 2662 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2663 | "type": "tidelift" 2664 | } 2665 | ], 2666 | "time": "2022-11-03T14:55:06+00:00" 2667 | }, 2668 | { 2669 | "name": "symfony/polyfill-mbstring", 2670 | "version": "v1.27.0", 2671 | "source": { 2672 | "type": "git", 2673 | "url": "https://github.com/symfony/polyfill-mbstring.git", 2674 | "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" 2675 | }, 2676 | "dist": { 2677 | "type": "zip", 2678 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", 2679 | "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", 2680 | "shasum": "" 2681 | }, 2682 | "require": { 2683 | "php": ">=7.1" 2684 | }, 2685 | "provide": { 2686 | "ext-mbstring": "*" 2687 | }, 2688 | "suggest": { 2689 | "ext-mbstring": "For best performance" 2690 | }, 2691 | "type": "library", 2692 | "extra": { 2693 | "branch-alias": { 2694 | "dev-main": "1.27-dev" 2695 | }, 2696 | "thanks": { 2697 | "name": "symfony/polyfill", 2698 | "url": "https://github.com/symfony/polyfill" 2699 | } 2700 | }, 2701 | "autoload": { 2702 | "files": [ 2703 | "bootstrap.php" 2704 | ], 2705 | "psr-4": { 2706 | "Symfony\\Polyfill\\Mbstring\\": "" 2707 | } 2708 | }, 2709 | "notification-url": "https://packagist.org/downloads/", 2710 | "license": [ 2711 | "MIT" 2712 | ], 2713 | "authors": [ 2714 | { 2715 | "name": "Nicolas Grekas", 2716 | "email": "p@tchwork.com" 2717 | }, 2718 | { 2719 | "name": "Symfony Community", 2720 | "homepage": "https://symfony.com/contributors" 2721 | } 2722 | ], 2723 | "description": "Symfony polyfill for the Mbstring extension", 2724 | "homepage": "https://symfony.com", 2725 | "keywords": [ 2726 | "compatibility", 2727 | "mbstring", 2728 | "polyfill", 2729 | "portable", 2730 | "shim" 2731 | ], 2732 | "support": { 2733 | "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" 2734 | }, 2735 | "funding": [ 2736 | { 2737 | "url": "https://symfony.com/sponsor", 2738 | "type": "custom" 2739 | }, 2740 | { 2741 | "url": "https://github.com/fabpot", 2742 | "type": "github" 2743 | }, 2744 | { 2745 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2746 | "type": "tidelift" 2747 | } 2748 | ], 2749 | "time": "2022-11-03T14:55:06+00:00" 2750 | }, 2751 | { 2752 | "name": "symfony/polyfill-php80", 2753 | "version": "v1.27.0", 2754 | "source": { 2755 | "type": "git", 2756 | "url": "https://github.com/symfony/polyfill-php80.git", 2757 | "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" 2758 | }, 2759 | "dist": { 2760 | "type": "zip", 2761 | "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", 2762 | "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", 2763 | "shasum": "" 2764 | }, 2765 | "require": { 2766 | "php": ">=7.1" 2767 | }, 2768 | "type": "library", 2769 | "extra": { 2770 | "branch-alias": { 2771 | "dev-main": "1.27-dev" 2772 | }, 2773 | "thanks": { 2774 | "name": "symfony/polyfill", 2775 | "url": "https://github.com/symfony/polyfill" 2776 | } 2777 | }, 2778 | "autoload": { 2779 | "files": [ 2780 | "bootstrap.php" 2781 | ], 2782 | "psr-4": { 2783 | "Symfony\\Polyfill\\Php80\\": "" 2784 | }, 2785 | "classmap": [ 2786 | "Resources/stubs" 2787 | ] 2788 | }, 2789 | "notification-url": "https://packagist.org/downloads/", 2790 | "license": [ 2791 | "MIT" 2792 | ], 2793 | "authors": [ 2794 | { 2795 | "name": "Ion Bazan", 2796 | "email": "ion.bazan@gmail.com" 2797 | }, 2798 | { 2799 | "name": "Nicolas Grekas", 2800 | "email": "p@tchwork.com" 2801 | }, 2802 | { 2803 | "name": "Symfony Community", 2804 | "homepage": "https://symfony.com/contributors" 2805 | } 2806 | ], 2807 | "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", 2808 | "homepage": "https://symfony.com", 2809 | "keywords": [ 2810 | "compatibility", 2811 | "polyfill", 2812 | "portable", 2813 | "shim" 2814 | ], 2815 | "support": { 2816 | "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" 2817 | }, 2818 | "funding": [ 2819 | { 2820 | "url": "https://symfony.com/sponsor", 2821 | "type": "custom" 2822 | }, 2823 | { 2824 | "url": "https://github.com/fabpot", 2825 | "type": "github" 2826 | }, 2827 | { 2828 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2829 | "type": "tidelift" 2830 | } 2831 | ], 2832 | "time": "2022-11-03T14:55:06+00:00" 2833 | }, 2834 | { 2835 | "name": "symfony/polyfill-php81", 2836 | "version": "v1.27.0", 2837 | "source": { 2838 | "type": "git", 2839 | "url": "https://github.com/symfony/polyfill-php81.git", 2840 | "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" 2841 | }, 2842 | "dist": { 2843 | "type": "zip", 2844 | "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", 2845 | "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", 2846 | "shasum": "" 2847 | }, 2848 | "require": { 2849 | "php": ">=7.1" 2850 | }, 2851 | "type": "library", 2852 | "extra": { 2853 | "branch-alias": { 2854 | "dev-main": "1.27-dev" 2855 | }, 2856 | "thanks": { 2857 | "name": "symfony/polyfill", 2858 | "url": "https://github.com/symfony/polyfill" 2859 | } 2860 | }, 2861 | "autoload": { 2862 | "files": [ 2863 | "bootstrap.php" 2864 | ], 2865 | "psr-4": { 2866 | "Symfony\\Polyfill\\Php81\\": "" 2867 | }, 2868 | "classmap": [ 2869 | "Resources/stubs" 2870 | ] 2871 | }, 2872 | "notification-url": "https://packagist.org/downloads/", 2873 | "license": [ 2874 | "MIT" 2875 | ], 2876 | "authors": [ 2877 | { 2878 | "name": "Nicolas Grekas", 2879 | "email": "p@tchwork.com" 2880 | }, 2881 | { 2882 | "name": "Symfony Community", 2883 | "homepage": "https://symfony.com/contributors" 2884 | } 2885 | ], 2886 | "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", 2887 | "homepage": "https://symfony.com", 2888 | "keywords": [ 2889 | "compatibility", 2890 | "polyfill", 2891 | "portable", 2892 | "shim" 2893 | ], 2894 | "support": { 2895 | "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" 2896 | }, 2897 | "funding": [ 2898 | { 2899 | "url": "https://symfony.com/sponsor", 2900 | "type": "custom" 2901 | }, 2902 | { 2903 | "url": "https://github.com/fabpot", 2904 | "type": "github" 2905 | }, 2906 | { 2907 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2908 | "type": "tidelift" 2909 | } 2910 | ], 2911 | "time": "2022-11-03T14:55:06+00:00" 2912 | }, 2913 | { 2914 | "name": "symfony/process", 2915 | "version": "v6.3.2", 2916 | "source": { 2917 | "type": "git", 2918 | "url": "https://github.com/symfony/process.git", 2919 | "reference": "c5ce962db0d9b6e80247ca5eb9af6472bd4d7b5d" 2920 | }, 2921 | "dist": { 2922 | "type": "zip", 2923 | "url": "https://api.github.com/repos/symfony/process/zipball/c5ce962db0d9b6e80247ca5eb9af6472bd4d7b5d", 2924 | "reference": "c5ce962db0d9b6e80247ca5eb9af6472bd4d7b5d", 2925 | "shasum": "" 2926 | }, 2927 | "require": { 2928 | "php": ">=8.1" 2929 | }, 2930 | "type": "library", 2931 | "autoload": { 2932 | "psr-4": { 2933 | "Symfony\\Component\\Process\\": "" 2934 | }, 2935 | "exclude-from-classmap": [ 2936 | "/Tests/" 2937 | ] 2938 | }, 2939 | "notification-url": "https://packagist.org/downloads/", 2940 | "license": [ 2941 | "MIT" 2942 | ], 2943 | "authors": [ 2944 | { 2945 | "name": "Fabien Potencier", 2946 | "email": "fabien@symfony.com" 2947 | }, 2948 | { 2949 | "name": "Symfony Community", 2950 | "homepage": "https://symfony.com/contributors" 2951 | } 2952 | ], 2953 | "description": "Executes commands in sub-processes", 2954 | "homepage": "https://symfony.com", 2955 | "support": { 2956 | "source": "https://github.com/symfony/process/tree/v6.3.2" 2957 | }, 2958 | "funding": [ 2959 | { 2960 | "url": "https://symfony.com/sponsor", 2961 | "type": "custom" 2962 | }, 2963 | { 2964 | "url": "https://github.com/fabpot", 2965 | "type": "github" 2966 | }, 2967 | { 2968 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2969 | "type": "tidelift" 2970 | } 2971 | ], 2972 | "time": "2023-07-12T16:00:22+00:00" 2973 | }, 2974 | { 2975 | "name": "symfony/service-contracts", 2976 | "version": "v3.3.0", 2977 | "source": { 2978 | "type": "git", 2979 | "url": "https://github.com/symfony/service-contracts.git", 2980 | "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4" 2981 | }, 2982 | "dist": { 2983 | "type": "zip", 2984 | "url": "https://api.github.com/repos/symfony/service-contracts/zipball/40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", 2985 | "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", 2986 | "shasum": "" 2987 | }, 2988 | "require": { 2989 | "php": ">=8.1", 2990 | "psr/container": "^2.0" 2991 | }, 2992 | "conflict": { 2993 | "ext-psr": "<1.1|>=2" 2994 | }, 2995 | "type": "library", 2996 | "extra": { 2997 | "branch-alias": { 2998 | "dev-main": "3.4-dev" 2999 | }, 3000 | "thanks": { 3001 | "name": "symfony/contracts", 3002 | "url": "https://github.com/symfony/contracts" 3003 | } 3004 | }, 3005 | "autoload": { 3006 | "psr-4": { 3007 | "Symfony\\Contracts\\Service\\": "" 3008 | }, 3009 | "exclude-from-classmap": [ 3010 | "/Test/" 3011 | ] 3012 | }, 3013 | "notification-url": "https://packagist.org/downloads/", 3014 | "license": [ 3015 | "MIT" 3016 | ], 3017 | "authors": [ 3018 | { 3019 | "name": "Nicolas Grekas", 3020 | "email": "p@tchwork.com" 3021 | }, 3022 | { 3023 | "name": "Symfony Community", 3024 | "homepage": "https://symfony.com/contributors" 3025 | } 3026 | ], 3027 | "description": "Generic abstractions related to writing services", 3028 | "homepage": "https://symfony.com", 3029 | "keywords": [ 3030 | "abstractions", 3031 | "contracts", 3032 | "decoupling", 3033 | "interfaces", 3034 | "interoperability", 3035 | "standards" 3036 | ], 3037 | "support": { 3038 | "source": "https://github.com/symfony/service-contracts/tree/v3.3.0" 3039 | }, 3040 | "funding": [ 3041 | { 3042 | "url": "https://symfony.com/sponsor", 3043 | "type": "custom" 3044 | }, 3045 | { 3046 | "url": "https://github.com/fabpot", 3047 | "type": "github" 3048 | }, 3049 | { 3050 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3051 | "type": "tidelift" 3052 | } 3053 | ], 3054 | "time": "2023-05-23T14:45:45+00:00" 3055 | }, 3056 | { 3057 | "name": "symfony/stopwatch", 3058 | "version": "v6.3.0", 3059 | "source": { 3060 | "type": "git", 3061 | "url": "https://github.com/symfony/stopwatch.git", 3062 | "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2" 3063 | }, 3064 | "dist": { 3065 | "type": "zip", 3066 | "url": "https://api.github.com/repos/symfony/stopwatch/zipball/fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2", 3067 | "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2", 3068 | "shasum": "" 3069 | }, 3070 | "require": { 3071 | "php": ">=8.1", 3072 | "symfony/service-contracts": "^2.5|^3" 3073 | }, 3074 | "type": "library", 3075 | "autoload": { 3076 | "psr-4": { 3077 | "Symfony\\Component\\Stopwatch\\": "" 3078 | }, 3079 | "exclude-from-classmap": [ 3080 | "/Tests/" 3081 | ] 3082 | }, 3083 | "notification-url": "https://packagist.org/downloads/", 3084 | "license": [ 3085 | "MIT" 3086 | ], 3087 | "authors": [ 3088 | { 3089 | "name": "Fabien Potencier", 3090 | "email": "fabien@symfony.com" 3091 | }, 3092 | { 3093 | "name": "Symfony Community", 3094 | "homepage": "https://symfony.com/contributors" 3095 | } 3096 | ], 3097 | "description": "Provides a way to profile code", 3098 | "homepage": "https://symfony.com", 3099 | "support": { 3100 | "source": "https://github.com/symfony/stopwatch/tree/v6.3.0" 3101 | }, 3102 | "funding": [ 3103 | { 3104 | "url": "https://symfony.com/sponsor", 3105 | "type": "custom" 3106 | }, 3107 | { 3108 | "url": "https://github.com/fabpot", 3109 | "type": "github" 3110 | }, 3111 | { 3112 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3113 | "type": "tidelift" 3114 | } 3115 | ], 3116 | "time": "2023-02-16T10:14:28+00:00" 3117 | }, 3118 | { 3119 | "name": "symfony/string", 3120 | "version": "v6.3.2", 3121 | "source": { 3122 | "type": "git", 3123 | "url": "https://github.com/symfony/string.git", 3124 | "reference": "53d1a83225002635bca3482fcbf963001313fb68" 3125 | }, 3126 | "dist": { 3127 | "type": "zip", 3128 | "url": "https://api.github.com/repos/symfony/string/zipball/53d1a83225002635bca3482fcbf963001313fb68", 3129 | "reference": "53d1a83225002635bca3482fcbf963001313fb68", 3130 | "shasum": "" 3131 | }, 3132 | "require": { 3133 | "php": ">=8.1", 3134 | "symfony/polyfill-ctype": "~1.8", 3135 | "symfony/polyfill-intl-grapheme": "~1.0", 3136 | "symfony/polyfill-intl-normalizer": "~1.0", 3137 | "symfony/polyfill-mbstring": "~1.0" 3138 | }, 3139 | "conflict": { 3140 | "symfony/translation-contracts": "<2.5" 3141 | }, 3142 | "require-dev": { 3143 | "symfony/error-handler": "^5.4|^6.0", 3144 | "symfony/http-client": "^5.4|^6.0", 3145 | "symfony/intl": "^6.2", 3146 | "symfony/translation-contracts": "^2.5|^3.0", 3147 | "symfony/var-exporter": "^5.4|^6.0" 3148 | }, 3149 | "type": "library", 3150 | "autoload": { 3151 | "files": [ 3152 | "Resources/functions.php" 3153 | ], 3154 | "psr-4": { 3155 | "Symfony\\Component\\String\\": "" 3156 | }, 3157 | "exclude-from-classmap": [ 3158 | "/Tests/" 3159 | ] 3160 | }, 3161 | "notification-url": "https://packagist.org/downloads/", 3162 | "license": [ 3163 | "MIT" 3164 | ], 3165 | "authors": [ 3166 | { 3167 | "name": "Nicolas Grekas", 3168 | "email": "p@tchwork.com" 3169 | }, 3170 | { 3171 | "name": "Symfony Community", 3172 | "homepage": "https://symfony.com/contributors" 3173 | } 3174 | ], 3175 | "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", 3176 | "homepage": "https://symfony.com", 3177 | "keywords": [ 3178 | "grapheme", 3179 | "i18n", 3180 | "string", 3181 | "unicode", 3182 | "utf-8", 3183 | "utf8" 3184 | ], 3185 | "support": { 3186 | "source": "https://github.com/symfony/string/tree/v6.3.2" 3187 | }, 3188 | "funding": [ 3189 | { 3190 | "url": "https://symfony.com/sponsor", 3191 | "type": "custom" 3192 | }, 3193 | { 3194 | "url": "https://github.com/fabpot", 3195 | "type": "github" 3196 | }, 3197 | { 3198 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3199 | "type": "tidelift" 3200 | } 3201 | ], 3202 | "time": "2023-07-05T08:41:27+00:00" 3203 | } 3204 | ], 3205 | "aliases": [], 3206 | "minimum-stability": "beta", 3207 | "stability-flags": [], 3208 | "prefer-stable": true, 3209 | "prefer-lowest": false, 3210 | "platform": [], 3211 | "platform-dev": [], 3212 | "plugin-api-version": "2.3.0" 3213 | } 3214 | --------------------------------------------------------------------------------