├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── config.yml │ ├── crash.md │ └── security-vulnerability.md ├── PULL_REQUEST_TEMPLATE.md ├── dependabot.yml └── workflows │ ├── draft-release.yml │ ├── main.yml │ └── support.yml ├── .php-cs-fixer.php ├── .poggit.yml ├── LICENSE ├── README.md ├── composer.json ├── composer.lock ├── phpstan-baseline.php ├── phpstan.neon.dist ├── src └── libCustomPack.php └── virion.yml /.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/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 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /.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) -------------------------------------------------------------------------------- /.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/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/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 | -------------------------------------------------------------------------------- /.github/workflows/draft-release.yml: -------------------------------------------------------------------------------- 1 | name: Draft release 2 | 3 | on: 4 | workflow_dispatch: 5 | push: 6 | tags: "*" 7 | 8 | jobs: 9 | draft: 10 | name: Create GitHub Draft Release 11 | if: "startsWith(github.event.head_commit.message, 'Release ')" 12 | runs-on: ubuntu-latest 13 | strategy: 14 | fail-fast: false 15 | 16 | steps: 17 | - uses: actions/checkout@v4 18 | 19 | - name: Setup PHP 20 | uses: shivammathur/setup-php@v2 21 | with: 22 | php-version: 8.1 23 | ini-values: phar.readonly=0 24 | coverage: none 25 | 26 | - name: Get composer cache directory 27 | id: composer-cache 28 | run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT 29 | 30 | - name: Cache composer dependencies 31 | uses: actions/cache@v3 32 | with: 33 | path: ${{ steps.composer-cache.outputs.dir }} 34 | # Use composer.json for key, if composer.lock is not committed. 35 | # key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }} 36 | key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} 37 | restore-keys: ${{ runner.os }}-composer- 38 | 39 | - name: Install Composer dependencies 40 | run: composer install --no-progress --no-dev --prefer-dist --optimize-autoloader --ignore-platform-reqs 41 | 42 | - name: Download Pharynx phar builder 43 | run: wget https://github.com/SOF3/pharynx/releases/latest/download/pharynx.phar -O pharynx.phar 44 | 45 | - id: get-manifest 46 | run: | 47 | echo "NAME=$(grep '^name:' virion.yml | cut -d' ' -f2- | xargs)" >> $GITHUB_OUTPUT 48 | echo "PRERELEASE=$(grep '^version:' virion.yml | cut -d' ' -f2- | xargs | grep -E 'alpha|beta|pre' && echo 'true')" >> $GITHUB_OUTPUT 49 | sed -i "s/version: .*/version: ${{ github.ref_name }}/g" virion.yml 50 | 51 | - name: Build plugin archive 52 | run: php pharynx.phar -s src -f LICENSE -c -p=${{ github.workspace }}/${{ steps.get-manifest.outputs.NAME }}.phar 53 | 54 | - name: Upload release artifacts 55 | uses: actions/upload-artifact@v3 56 | with: 57 | name: release_artifacts 58 | path: | 59 | ${{ github.workspace }}/${{ steps.get-manifest.outputs.NAME }}.phar 60 | 61 | - name: Create draft release 62 | uses: ncipollo/release-action@v1 63 | with: 64 | artifacts: ${{ github.workspace }}/${{ steps.get-manifest.outputs.NAME }}.phar 65 | commit: ${{ github.sha }} 66 | draft: true 67 | name: ${{ steps.get-manifest.outputs.NAME }} v${{ github.ref_name }} 68 | prerelease: ${{ steps.get-manifest.outputs.PRERELEASE }} 69 | tag: ${{ github.ref_name }} 70 | #token: ${{ secrets.GITHUB_TOKEN }} -------------------------------------------------------------------------------- /.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@v4 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@v3 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@v4 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 -------------------------------------------------------------------------------- /.github/workflows/support.yml: -------------------------------------------------------------------------------- 1 | name: 'Manage support request issues' 2 | 3 | on: 4 | issues: 5 | types: [ labeled, unlabeled, reopened ] 6 | 7 | jobs: 8 | support: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: dessant/support-requests@v3 12 | with: 13 | github-token: ${{ github.token }} 14 | support-label: "Support request" 15 | issue-comment: > 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 | -------------------------------------------------------------------------------- /.php-cs-fixer.php: -------------------------------------------------------------------------------- 1 | in(__DIR__ . '/src'); 5 | 6 | return (new PhpCsFixer\Config) 7 | ->setRiskyAllowed(true) 8 | ->setRules([ 9 | 'align_multiline_comment' => [ 10 | 'comment_type' => 'phpdocs_only' 11 | ], 12 | 'array_indentation' => true, 13 | 'array_syntax' => [ 14 | 'syntax' => 'short' 15 | ], 16 | 'binary_operator_spaces' => [ 17 | 'default' => 'single_space' 18 | ], 19 | 'blank_line_after_namespace' => true, 20 | 'blank_line_after_opening_tag' => true, 21 | 'blank_line_before_statement' => [ 22 | 'statements' => [ 23 | 'declare' 24 | ] 25 | ], 26 | 'cast_spaces' => [ 27 | 'space' => 'single' 28 | ], 29 | 'concat_space' => [ 30 | 'spacing' => 'one' 31 | ], 32 | 'declare_strict_types' => true, 33 | 'elseif' => true, 34 | 'fully_qualified_strict_types' => true, 35 | 'global_namespace_import' => [ 36 | 'import_constants' => true, 37 | 'import_functions' => true, 38 | 'import_classes' => null, 39 | ], 40 | 'indentation_type' => true, 41 | 'logical_operators' => true, 42 | 'native_constant_invocation' => [ 43 | 'scope' => 'namespaced' 44 | ], 45 | 'native_function_invocation' => [ 46 | 'scope' => 'namespaced', 47 | 'include' => ['@all'], 48 | ], 49 | 'new_with_braces' => [ 50 | 'named_class' => true, 51 | 'anonymous_class' => false, 52 | ], 53 | 'no_closing_tag' => true, 54 | 'no_empty_phpdoc' => true, 55 | 'no_extra_blank_lines' => true, 56 | 'no_superfluous_phpdoc_tags' => [ 57 | 'allow_mixed' => true, 58 | ], 59 | 'no_trailing_whitespace' => true, 60 | 'no_trailing_whitespace_in_comment' => true, 61 | 'no_whitespace_in_blank_line' => true, 62 | 'no_unused_imports' => true, 63 | 'ordered_imports' => [ 64 | 'imports_order' => [ 65 | 'class', 66 | 'function', 67 | 'const', 68 | ], 69 | 'sort_algorithm' => 'alpha' 70 | ], 71 | 'phpdoc_align' => [ 72 | 'align' => 'vertical', 73 | 'tags' => [ 74 | 'param', 75 | ] 76 | ], 77 | 'phpdoc_line_span' => [ 78 | 'property' => 'single', 79 | 'method' => null, 80 | 'const' => null 81 | ], 82 | 'phpdoc_trim' => true, 83 | 'phpdoc_trim_consecutive_blank_line_separation' => true, 84 | 'return_type_declaration' => [ 85 | 'space_before' => 'one' 86 | ], 87 | 'single_blank_line_at_eof' => true, 88 | 'single_import_per_statement' => true, 89 | 'strict_param' => true, 90 | 'unary_operator_spaces' => true, 91 | ]) 92 | ->setFinder($finder) 93 | ->setIndent("\t") 94 | ->setLineEnding("\n"); 95 | -------------------------------------------------------------------------------- /.poggit.yml: -------------------------------------------------------------------------------- 1 | --- # Poggit-CI Manifest. Open the CI at https://poggit.pmmp.io/ci/jasonw4331/libCustomPack 2 | projects: 3 | libCustomPack: 4 | type: library 5 | model: virion 6 | ... 7 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # libCustomPack 2 | 3 | [![Poggit-Ci](https://poggit.pmmp.io/ci.shield/jasonw4331/libCustomPack/libCustomPack)](https://poggit.pmmp.io/ci/jasonw4331/libCustomPack/libCustomPack) 4 | 5 | A small library for building and registering resource packs with PocketMine-MP 6 | ## Usage 7 | This viron was made for developers to build resource packs from plugin resources or from files on the disk, and allows adding new resource packs to the stack without requiring a server restart. 8 | *NOTE*: New resource packs are not automatically updated for previously loaded players. Only new players will see new resource packs. 9 | 10 | #### Required imports 11 | The following imports are necessary to use the virion library: 12 | ```php 13 | use libCustomPack\libCustomPack; 14 | ``` 15 | 16 | ### API 17 | #### Building a resource pack 18 | 2 methods are added which allow build a resource pack using the plugin's resource directory or any other given path. 19 | ```php 20 | libCustomPack::generatePackFromResources($plugin); 21 | //OR 22 | libCustomPack::generatePackFromPath($plugin, $MyFullFolderPath); 23 | ``` 24 | #### Registering a resource pack 25 | A resource pack can be added to the resource stack using the `registerResourcePack()` method. 26 | ```php 27 | libCustomPack::registerResourcePack($resoucePackInstance); 28 | ``` 29 | #### Unregistering a resource pack 30 | During a plugin's onDisable() method, it is recommended to call the `unregisterResourcePack()` method to be removed from the resource stack. 31 | ```php 32 | libCustomPack::unregisterResourcePack($resoucePackInstance); 33 | ``` 34 | 35 | ### SubFolders 36 | If the resource pack is a folder we don't know the exact location of within the given folder, we can use the `$packFolderName` parameter to specify the name of the folder to be found. 37 | The default subfolder name is the plugin's name followed by " Pack". 38 | ```php 39 | libCustomPack::generatePackFromResources($plugin, $packFolderName); 40 | //OR 41 | libCustomPack::generatePackFromPath($plugin, $MyFullFolderPath, $packFolderName); 42 | ``` -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jasonw4331/libcustompack", 3 | "description": "A library for compiling and registering resource packs with PocketMine", 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 | "classmap": [ 14 | "src" 15 | ] 16 | }, 17 | "require": { 18 | "php": "^8.0" 19 | }, 20 | "require-dev": { 21 | "phpstan/phpstan": "^1.4.6", 22 | "pocketmine/pocketmine-mp": "^4.12.3|^5.0.0", 23 | "phpstan/phpstan-strict-rules": "^1.0", 24 | "phpstan/extension-installer": "^1.0", 25 | "symfony/filesystem": "^5.4", 26 | "friendsofphp/php-cs-fixer": "^3.11" 27 | }, 28 | "config": { 29 | "allow-plugins": { 30 | "phpstan/extension-installer": true 31 | } 32 | }, 33 | "scripts": { 34 | "make-baseline": "@php ./vendor/bin/phpstan analyze -b phpstan-baseline.php -c phpstan.neon.dist --allow-empty-baseline", 35 | "fix-codestyle": "@php ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.php --verbose --diff" 36 | }, 37 | "extra": { 38 | "virion": { 39 | "spec": "3.0", 40 | "namespace-root": "libCustomPack" 41 | } 42 | } 43 | } -------------------------------------------------------------------------------- /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": "c8f4a45f9f77d5ffa975f31d877f5582", 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": "fgrosse/phpasn1", 497 | "version": "v2.5.0", 498 | "source": { 499 | "type": "git", 500 | "url": "https://github.com/fgrosse/PHPASN1.git", 501 | "reference": "42060ed45344789fb9f21f9f1864fc47b9e3507b" 502 | }, 503 | "dist": { 504 | "type": "zip", 505 | "url": "https://api.github.com/repos/fgrosse/PHPASN1/zipball/42060ed45344789fb9f21f9f1864fc47b9e3507b", 506 | "reference": "42060ed45344789fb9f21f9f1864fc47b9e3507b", 507 | "shasum": "" 508 | }, 509 | "require": { 510 | "php": "^7.1 || ^8.0" 511 | }, 512 | "require-dev": { 513 | "php-coveralls/php-coveralls": "~2.0", 514 | "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" 515 | }, 516 | "suggest": { 517 | "ext-bcmath": "BCmath is the fallback extension for big integer calculations", 518 | "ext-curl": "For loading OID information from the web if they have not bee defined statically", 519 | "ext-gmp": "GMP is the preferred extension for big integer calculations", 520 | "phpseclib/bcmath_compat": "BCmath polyfill for servers where neither GMP nor BCmath is available" 521 | }, 522 | "type": "library", 523 | "extra": { 524 | "branch-alias": { 525 | "dev-master": "2.0.x-dev" 526 | } 527 | }, 528 | "autoload": { 529 | "psr-4": { 530 | "FG\\": "lib/" 531 | } 532 | }, 533 | "notification-url": "https://packagist.org/downloads/", 534 | "license": [ 535 | "MIT" 536 | ], 537 | "authors": [ 538 | { 539 | "name": "Friedrich Große", 540 | "email": "friedrich.grosse@gmail.com", 541 | "homepage": "https://github.com/FGrosse", 542 | "role": "Author" 543 | }, 544 | { 545 | "name": "All contributors", 546 | "homepage": "https://github.com/FGrosse/PHPASN1/contributors" 547 | } 548 | ], 549 | "description": "A PHP Framework that allows you to encode and decode arbitrary ASN.1 structures using the ITU-T X.690 Encoding Rules.", 550 | "homepage": "https://github.com/FGrosse/PHPASN1", 551 | "keywords": [ 552 | "DER", 553 | "asn.1", 554 | "asn1", 555 | "ber", 556 | "binary", 557 | "decoding", 558 | "encoding", 559 | "x.509", 560 | "x.690", 561 | "x509", 562 | "x690" 563 | ], 564 | "support": { 565 | "issues": "https://github.com/fgrosse/PHPASN1/issues", 566 | "source": "https://github.com/fgrosse/PHPASN1/tree/v2.5.0" 567 | }, 568 | "abandoned": true, 569 | "time": "2022-12-19T11:08:26+00:00" 570 | }, 571 | { 572 | "name": "friendsofphp/php-cs-fixer", 573 | "version": "v3.16.0", 574 | "source": { 575 | "type": "git", 576 | "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", 577 | "reference": "d40f9436e1c448d309fa995ab9c14c5c7a96f2dc" 578 | }, 579 | "dist": { 580 | "type": "zip", 581 | "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/d40f9436e1c448d309fa995ab9c14c5c7a96f2dc", 582 | "reference": "d40f9436e1c448d309fa995ab9c14c5c7a96f2dc", 583 | "shasum": "" 584 | }, 585 | "require": { 586 | "composer/semver": "^3.3", 587 | "composer/xdebug-handler": "^3.0.3", 588 | "doctrine/annotations": "^2", 589 | "doctrine/lexer": "^2 || ^3", 590 | "ext-json": "*", 591 | "ext-tokenizer": "*", 592 | "php": "^7.4 || ^8.0", 593 | "sebastian/diff": "^4.0 || ^5.0", 594 | "symfony/console": "^5.4 || ^6.0", 595 | "symfony/event-dispatcher": "^5.4 || ^6.0", 596 | "symfony/filesystem": "^5.4 || ^6.0", 597 | "symfony/finder": "^5.4 || ^6.0", 598 | "symfony/options-resolver": "^5.4 || ^6.0", 599 | "symfony/polyfill-mbstring": "^1.27", 600 | "symfony/polyfill-php80": "^1.27", 601 | "symfony/polyfill-php81": "^1.27", 602 | "symfony/process": "^5.4 || ^6.0", 603 | "symfony/stopwatch": "^5.4 || ^6.0" 604 | }, 605 | "require-dev": { 606 | "justinrainbow/json-schema": "^5.2", 607 | "keradus/cli-executor": "^2.0", 608 | "mikey179/vfsstream": "^1.6.11", 609 | "php-coveralls/php-coveralls": "^2.5.3", 610 | "php-cs-fixer/accessible-object": "^1.1", 611 | "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", 612 | "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", 613 | "phpspec/prophecy": "^1.16", 614 | "phpspec/prophecy-phpunit": "^2.0", 615 | "phpunit/phpunit": "^9.5", 616 | "phpunitgoodpractices/polyfill": "^1.6", 617 | "phpunitgoodpractices/traits": "^1.9.2", 618 | "symfony/phpunit-bridge": "^6.2.3", 619 | "symfony/yaml": "^5.4 || ^6.0" 620 | }, 621 | "suggest": { 622 | "ext-dom": "For handling output formats in XML", 623 | "ext-mbstring": "For handling non-UTF8 characters." 624 | }, 625 | "bin": [ 626 | "php-cs-fixer" 627 | ], 628 | "type": "application", 629 | "autoload": { 630 | "psr-4": { 631 | "PhpCsFixer\\": "src/" 632 | } 633 | }, 634 | "notification-url": "https://packagist.org/downloads/", 635 | "license": [ 636 | "MIT" 637 | ], 638 | "authors": [ 639 | { 640 | "name": "Fabien Potencier", 641 | "email": "fabien@symfony.com" 642 | }, 643 | { 644 | "name": "Dariusz Rumiński", 645 | "email": "dariusz.ruminski@gmail.com" 646 | } 647 | ], 648 | "description": "A tool to automatically fix PHP code style", 649 | "keywords": [ 650 | "Static code analysis", 651 | "fixer", 652 | "standards", 653 | "static analysis" 654 | ], 655 | "support": { 656 | "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", 657 | "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.16.0" 658 | }, 659 | "funding": [ 660 | { 661 | "url": "https://github.com/keradus", 662 | "type": "github" 663 | } 664 | ], 665 | "time": "2023-04-02T19:30:06+00:00" 666 | }, 667 | { 668 | "name": "netresearch/jsonmapper", 669 | "version": "v4.2.0", 670 | "source": { 671 | "type": "git", 672 | "url": "https://github.com/cweiske/jsonmapper.git", 673 | "reference": "f60565f8c0566a31acf06884cdaa591867ecc956" 674 | }, 675 | "dist": { 676 | "type": "zip", 677 | "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/f60565f8c0566a31acf06884cdaa591867ecc956", 678 | "reference": "f60565f8c0566a31acf06884cdaa591867ecc956", 679 | "shasum": "" 680 | }, 681 | "require": { 682 | "ext-json": "*", 683 | "ext-pcre": "*", 684 | "ext-reflection": "*", 685 | "ext-spl": "*", 686 | "php": ">=7.1" 687 | }, 688 | "require-dev": { 689 | "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0", 690 | "squizlabs/php_codesniffer": "~3.5" 691 | }, 692 | "type": "library", 693 | "autoload": { 694 | "psr-0": { 695 | "JsonMapper": "src/" 696 | } 697 | }, 698 | "notification-url": "https://packagist.org/downloads/", 699 | "license": [ 700 | "OSL-3.0" 701 | ], 702 | "authors": [ 703 | { 704 | "name": "Christian Weiske", 705 | "email": "cweiske@cweiske.de", 706 | "homepage": "http://github.com/cweiske/jsonmapper/", 707 | "role": "Developer" 708 | } 709 | ], 710 | "description": "Map nested JSON structures onto PHP classes", 711 | "support": { 712 | "email": "cweiske@cweiske.de", 713 | "issues": "https://github.com/cweiske/jsonmapper/issues", 714 | "source": "https://github.com/cweiske/jsonmapper/tree/v4.2.0" 715 | }, 716 | "time": "2023-04-09T17:37:40+00:00" 717 | }, 718 | { 719 | "name": "phpstan/extension-installer", 720 | "version": "1.3.0", 721 | "source": { 722 | "type": "git", 723 | "url": "https://github.com/phpstan/extension-installer.git", 724 | "reference": "f5e02d40f277d28513001976f444d9ff1dc15e9a" 725 | }, 726 | "dist": { 727 | "type": "zip", 728 | "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f5e02d40f277d28513001976f444d9ff1dc15e9a", 729 | "reference": "f5e02d40f277d28513001976f444d9ff1dc15e9a", 730 | "shasum": "" 731 | }, 732 | "require": { 733 | "composer-plugin-api": "^2.0", 734 | "php": "^7.2 || ^8.0", 735 | "phpstan/phpstan": "^1.8.0" 736 | }, 737 | "require-dev": { 738 | "composer/composer": "^2.0", 739 | "php-parallel-lint/php-parallel-lint": "^1.2.0", 740 | "phpstan/phpstan-strict-rules": "^0.11 || ^0.12 || ^1.0" 741 | }, 742 | "type": "composer-plugin", 743 | "extra": { 744 | "class": "PHPStan\\ExtensionInstaller\\Plugin", 745 | "phpstan/extension-installer": { 746 | "ignore": [ 747 | "phpstan/phpstan-phpunit" 748 | ] 749 | } 750 | }, 751 | "autoload": { 752 | "psr-4": { 753 | "PHPStan\\ExtensionInstaller\\": "src/" 754 | } 755 | }, 756 | "notification-url": "https://packagist.org/downloads/", 757 | "license": [ 758 | "MIT" 759 | ], 760 | "description": "Composer plugin for automatic installation of PHPStan extensions", 761 | "support": { 762 | "issues": "https://github.com/phpstan/extension-installer/issues", 763 | "source": "https://github.com/phpstan/extension-installer/tree/1.3.0" 764 | }, 765 | "time": "2023-04-18T13:08:02+00:00" 766 | }, 767 | { 768 | "name": "phpstan/phpstan", 769 | "version": "1.10.15", 770 | "source": { 771 | "type": "git", 772 | "url": "https://github.com/phpstan/phpstan.git", 773 | "reference": "762c4dac4da6f8756eebb80e528c3a47855da9bd" 774 | }, 775 | "dist": { 776 | "type": "zip", 777 | "url": "https://api.github.com/repos/phpstan/phpstan/zipball/762c4dac4da6f8756eebb80e528c3a47855da9bd", 778 | "reference": "762c4dac4da6f8756eebb80e528c3a47855da9bd", 779 | "shasum": "" 780 | }, 781 | "require": { 782 | "php": "^7.2|^8.0" 783 | }, 784 | "conflict": { 785 | "phpstan/phpstan-shim": "*" 786 | }, 787 | "bin": [ 788 | "phpstan", 789 | "phpstan.phar" 790 | ], 791 | "type": "library", 792 | "autoload": { 793 | "files": [ 794 | "bootstrap.php" 795 | ] 796 | }, 797 | "notification-url": "https://packagist.org/downloads/", 798 | "license": [ 799 | "MIT" 800 | ], 801 | "description": "PHPStan - PHP Static Analysis Tool", 802 | "keywords": [ 803 | "dev", 804 | "static analysis" 805 | ], 806 | "support": { 807 | "docs": "https://phpstan.org/user-guide/getting-started", 808 | "forum": "https://github.com/phpstan/phpstan/discussions", 809 | "issues": "https://github.com/phpstan/phpstan/issues", 810 | "security": "https://github.com/phpstan/phpstan/security/policy", 811 | "source": "https://github.com/phpstan/phpstan-src" 812 | }, 813 | "funding": [ 814 | { 815 | "url": "https://github.com/ondrejmirtes", 816 | "type": "github" 817 | }, 818 | { 819 | "url": "https://github.com/phpstan", 820 | "type": "github" 821 | }, 822 | { 823 | "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", 824 | "type": "tidelift" 825 | } 826 | ], 827 | "time": "2023-05-09T15:28:01+00:00" 828 | }, 829 | { 830 | "name": "phpstan/phpstan-strict-rules", 831 | "version": "1.5.1", 832 | "source": { 833 | "type": "git", 834 | "url": "https://github.com/phpstan/phpstan-strict-rules.git", 835 | "reference": "b21c03d4f6f3a446e4311155f4be9d65048218e6" 836 | }, 837 | "dist": { 838 | "type": "zip", 839 | "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/b21c03d4f6f3a446e4311155f4be9d65048218e6", 840 | "reference": "b21c03d4f6f3a446e4311155f4be9d65048218e6", 841 | "shasum": "" 842 | }, 843 | "require": { 844 | "php": "^7.2 || ^8.0", 845 | "phpstan/phpstan": "^1.10" 846 | }, 847 | "require-dev": { 848 | "nikic/php-parser": "^4.13.0", 849 | "php-parallel-lint/php-parallel-lint": "^1.2", 850 | "phpstan/phpstan-deprecation-rules": "^1.1", 851 | "phpstan/phpstan-phpunit": "^1.0", 852 | "phpunit/phpunit": "^9.5" 853 | }, 854 | "type": "phpstan-extension", 855 | "extra": { 856 | "phpstan": { 857 | "includes": [ 858 | "rules.neon" 859 | ] 860 | } 861 | }, 862 | "autoload": { 863 | "psr-4": { 864 | "PHPStan\\": "src/" 865 | } 866 | }, 867 | "notification-url": "https://packagist.org/downloads/", 868 | "license": [ 869 | "MIT" 870 | ], 871 | "description": "Extra strict and opinionated rules for PHPStan", 872 | "support": { 873 | "issues": "https://github.com/phpstan/phpstan-strict-rules/issues", 874 | "source": "https://github.com/phpstan/phpstan-strict-rules/tree/1.5.1" 875 | }, 876 | "time": "2023-03-29T14:47:40+00:00" 877 | }, 878 | { 879 | "name": "pocketmine/bedrock-block-upgrade-schema", 880 | "version": "2.1.0", 881 | "source": { 882 | "type": "git", 883 | "url": "https://github.com/pmmp/BedrockBlockUpgradeSchema.git", 884 | "reference": "1c07ced86be7d185551082441b5a2b9b7fbd6b21" 885 | }, 886 | "dist": { 887 | "type": "zip", 888 | "url": "https://api.github.com/repos/pmmp/BedrockBlockUpgradeSchema/zipball/1c07ced86be7d185551082441b5a2b9b7fbd6b21", 889 | "reference": "1c07ced86be7d185551082441b5a2b9b7fbd6b21", 890 | "shasum": "" 891 | }, 892 | "type": "library", 893 | "notification-url": "https://packagist.org/downloads/", 894 | "license": [ 895 | "CC0-1.0" 896 | ], 897 | "description": "Schemas describing how to upgrade saved block data in older Minecraft: Bedrock Edition world saves", 898 | "support": { 899 | "issues": "https://github.com/pmmp/BedrockBlockUpgradeSchema/issues", 900 | "source": "https://github.com/pmmp/BedrockBlockUpgradeSchema/tree/2.1.0" 901 | }, 902 | "time": "2023-04-19T17:58:49+00:00" 903 | }, 904 | { 905 | "name": "pocketmine/bedrock-data", 906 | "version": "2.2.0+bedrock-1.19.80", 907 | "source": { 908 | "type": "git", 909 | "url": "https://github.com/pmmp/BedrockData.git", 910 | "reference": "33dd83601442b377af42ac91473278243cafd576" 911 | }, 912 | "dist": { 913 | "type": "zip", 914 | "url": "https://api.github.com/repos/pmmp/BedrockData/zipball/33dd83601442b377af42ac91473278243cafd576", 915 | "reference": "33dd83601442b377af42ac91473278243cafd576", 916 | "shasum": "" 917 | }, 918 | "type": "library", 919 | "notification-url": "https://packagist.org/downloads/", 920 | "license": [ 921 | "CC0-1.0" 922 | ], 923 | "description": "Blobs of data generated from Minecraft: Bedrock Edition, used by PocketMine-MP", 924 | "support": { 925 | "issues": "https://github.com/pmmp/BedrockData/issues", 926 | "source": "https://github.com/pmmp/BedrockData/tree/bedrock-1.19.80" 927 | }, 928 | "time": "2023-04-26T20:00:35+00:00" 929 | }, 930 | { 931 | "name": "pocketmine/bedrock-item-upgrade-schema", 932 | "version": "1.2.0", 933 | "source": { 934 | "type": "git", 935 | "url": "https://github.com/pmmp/BedrockItemUpgradeSchema.git", 936 | "reference": "dd804c3f2b1e8990434812627e62eb5bde9670a5" 937 | }, 938 | "dist": { 939 | "type": "zip", 940 | "url": "https://api.github.com/repos/pmmp/BedrockItemUpgradeSchema/zipball/dd804c3f2b1e8990434812627e62eb5bde9670a5", 941 | "reference": "dd804c3f2b1e8990434812627e62eb5bde9670a5", 942 | "shasum": "" 943 | }, 944 | "type": "library", 945 | "notification-url": "https://packagist.org/downloads/", 946 | "license": [ 947 | "CC0-1.0" 948 | ], 949 | "description": "JSON schemas for upgrading items found in older Minecraft: Bedrock world saves", 950 | "support": { 951 | "issues": "https://github.com/pmmp/BedrockItemUpgradeSchema/issues", 952 | "source": "https://github.com/pmmp/BedrockItemUpgradeSchema/tree/1.2.0" 953 | }, 954 | "time": "2023-04-19T18:16:14+00:00" 955 | }, 956 | { 957 | "name": "pocketmine/bedrock-protocol", 958 | "version": "21.0.1+bedrock-1.19.80", 959 | "source": { 960 | "type": "git", 961 | "url": "https://github.com/pmmp/BedrockProtocol.git", 962 | "reference": "981ea2e76e207a25c1361df858c639feba5cf348" 963 | }, 964 | "dist": { 965 | "type": "zip", 966 | "url": "https://api.github.com/repos/pmmp/BedrockProtocol/zipball/981ea2e76e207a25c1361df858c639feba5cf348", 967 | "reference": "981ea2e76e207a25c1361df858c639feba5cf348", 968 | "shasum": "" 969 | }, 970 | "require": { 971 | "ext-json": "*", 972 | "netresearch/jsonmapper": "^4.0", 973 | "php": "^8.0", 974 | "pocketmine/binaryutils": "^0.2.0", 975 | "pocketmine/color": "^0.2.0 || ^0.3.0", 976 | "pocketmine/math": "^0.3.0 || ^0.4.0", 977 | "pocketmine/nbt": "^0.3.0", 978 | "ramsey/uuid": "^4.1" 979 | }, 980 | "require-dev": { 981 | "phpstan/phpstan": "1.10.7", 982 | "phpstan/phpstan-phpunit": "^1.0.0", 983 | "phpstan/phpstan-strict-rules": "^1.0.0", 984 | "phpunit/phpunit": "^9.5" 985 | }, 986 | "type": "library", 987 | "autoload": { 988 | "psr-4": { 989 | "pocketmine\\network\\mcpe\\protocol\\": "src/" 990 | } 991 | }, 992 | "notification-url": "https://packagist.org/downloads/", 993 | "license": [ 994 | "LGPL-3.0" 995 | ], 996 | "description": "An implementation of the Minecraft: Bedrock Edition protocol in PHP", 997 | "support": { 998 | "issues": "https://github.com/pmmp/BedrockProtocol/issues", 999 | "source": "https://github.com/pmmp/BedrockProtocol/tree/21.0.1+bedrock-1.19.80" 1000 | }, 1001 | "time": "2023-04-26T21:00:01+00:00" 1002 | }, 1003 | { 1004 | "name": "pocketmine/binaryutils", 1005 | "version": "0.2.4", 1006 | "source": { 1007 | "type": "git", 1008 | "url": "https://github.com/pmmp/BinaryUtils.git", 1009 | "reference": "5ac7eea91afbad8dc498f5ce34ce6297d5e6ea9a" 1010 | }, 1011 | "dist": { 1012 | "type": "zip", 1013 | "url": "https://api.github.com/repos/pmmp/BinaryUtils/zipball/5ac7eea91afbad8dc498f5ce34ce6297d5e6ea9a", 1014 | "reference": "5ac7eea91afbad8dc498f5ce34ce6297d5e6ea9a", 1015 | "shasum": "" 1016 | }, 1017 | "require": { 1018 | "php": "^7.4 || ^8.0", 1019 | "php-64bit": "*" 1020 | }, 1021 | "require-dev": { 1022 | "phpstan/extension-installer": "^1.0", 1023 | "phpstan/phpstan": "1.3.0", 1024 | "phpstan/phpstan-phpunit": "^1.0", 1025 | "phpstan/phpstan-strict-rules": "^1.0.0", 1026 | "phpunit/phpunit": "^9.5" 1027 | }, 1028 | "type": "library", 1029 | "autoload": { 1030 | "psr-4": { 1031 | "pocketmine\\utils\\": "src/" 1032 | } 1033 | }, 1034 | "notification-url": "https://packagist.org/downloads/", 1035 | "license": [ 1036 | "LGPL-3.0" 1037 | ], 1038 | "description": "Classes and methods for conveniently handling binary data", 1039 | "support": { 1040 | "issues": "https://github.com/pmmp/BinaryUtils/issues", 1041 | "source": "https://github.com/pmmp/BinaryUtils/tree/0.2.4" 1042 | }, 1043 | "time": "2022-01-12T18:06:33+00:00" 1044 | }, 1045 | { 1046 | "name": "pocketmine/callback-validator", 1047 | "version": "1.0.3", 1048 | "source": { 1049 | "type": "git", 1050 | "url": "https://github.com/pmmp/CallbackValidator.git", 1051 | "reference": "64787469766bcaa7e5885242e85c23c25e8c55a2" 1052 | }, 1053 | "dist": { 1054 | "type": "zip", 1055 | "url": "https://api.github.com/repos/pmmp/CallbackValidator/zipball/64787469766bcaa7e5885242e85c23c25e8c55a2", 1056 | "reference": "64787469766bcaa7e5885242e85c23c25e8c55a2", 1057 | "shasum": "" 1058 | }, 1059 | "require": { 1060 | "ext-reflection": "*", 1061 | "php": "^7.1 || ^8.0" 1062 | }, 1063 | "replace": { 1064 | "daverandom/callback-validator": "*" 1065 | }, 1066 | "require-dev": { 1067 | "phpstan/extension-installer": "^1.0", 1068 | "phpstan/phpstan": "0.12.59", 1069 | "phpstan/phpstan-strict-rules": "^0.12.4", 1070 | "phpunit/phpunit": "^7.5 || ^8.5 || ^9.0" 1071 | }, 1072 | "type": "library", 1073 | "autoload": { 1074 | "psr-4": { 1075 | "DaveRandom\\CallbackValidator\\": "src/" 1076 | } 1077 | }, 1078 | "notification-url": "https://packagist.org/downloads/", 1079 | "license": [ 1080 | "MIT" 1081 | ], 1082 | "authors": [ 1083 | { 1084 | "name": "Chris Wright", 1085 | "email": "cw@daverandom.com" 1086 | } 1087 | ], 1088 | "description": "Fork of daverandom/callback-validator - Tools for validating callback signatures", 1089 | "support": { 1090 | "issues": "https://github.com/pmmp/CallbackValidator/issues", 1091 | "source": "https://github.com/pmmp/CallbackValidator/tree/1.0.3" 1092 | }, 1093 | "time": "2020-12-11T01:45:37+00:00" 1094 | }, 1095 | { 1096 | "name": "pocketmine/classloader", 1097 | "version": "0.2.0", 1098 | "source": { 1099 | "type": "git", 1100 | "url": "https://github.com/pmmp/ClassLoader.git", 1101 | "reference": "49ea303993efdfb39cd302e2156d50aa78209e78" 1102 | }, 1103 | "dist": { 1104 | "type": "zip", 1105 | "url": "https://api.github.com/repos/pmmp/ClassLoader/zipball/49ea303993efdfb39cd302e2156d50aa78209e78", 1106 | "reference": "49ea303993efdfb39cd302e2156d50aa78209e78", 1107 | "shasum": "" 1108 | }, 1109 | "require": { 1110 | "ext-pthreads": "~3.2.0 || ^4.0", 1111 | "ext-reflection": "*", 1112 | "php": "^8.0" 1113 | }, 1114 | "conflict": { 1115 | "pocketmine/spl": "<0.4" 1116 | }, 1117 | "require-dev": { 1118 | "phpstan/extension-installer": "^1.0", 1119 | "phpstan/phpstan": "0.12.99", 1120 | "phpstan/phpstan-strict-rules": "^0.12.4", 1121 | "phpunit/phpunit": "^9.5" 1122 | }, 1123 | "type": "library", 1124 | "autoload": { 1125 | "classmap": [ 1126 | "./src" 1127 | ] 1128 | }, 1129 | "notification-url": "https://packagist.org/downloads/", 1130 | "license": [ 1131 | "LGPL-3.0" 1132 | ], 1133 | "description": "Ad-hoc autoloading components used by PocketMine-MP", 1134 | "support": { 1135 | "issues": "https://github.com/pmmp/ClassLoader/issues", 1136 | "source": "https://github.com/pmmp/ClassLoader/tree/0.2.0" 1137 | }, 1138 | "time": "2021-11-01T20:17:27+00:00" 1139 | }, 1140 | { 1141 | "name": "pocketmine/color", 1142 | "version": "0.3.1", 1143 | "source": { 1144 | "type": "git", 1145 | "url": "https://github.com/pmmp/Color.git", 1146 | "reference": "a0421f1e9e0b0c619300fb92d593283378f6a5e1" 1147 | }, 1148 | "dist": { 1149 | "type": "zip", 1150 | "url": "https://api.github.com/repos/pmmp/Color/zipball/a0421f1e9e0b0c619300fb92d593283378f6a5e1", 1151 | "reference": "a0421f1e9e0b0c619300fb92d593283378f6a5e1", 1152 | "shasum": "" 1153 | }, 1154 | "require": { 1155 | "php": "^8.0" 1156 | }, 1157 | "require-dev": { 1158 | "phpstan/phpstan": "1.10.3", 1159 | "phpstan/phpstan-strict-rules": "^1.2.0" 1160 | }, 1161 | "type": "library", 1162 | "autoload": { 1163 | "psr-4": { 1164 | "pocketmine\\color\\": "src/" 1165 | } 1166 | }, 1167 | "notification-url": "https://packagist.org/downloads/", 1168 | "license": [ 1169 | "LGPL-3.0" 1170 | ], 1171 | "description": "Color handling library used by PocketMine-MP and related projects", 1172 | "support": { 1173 | "issues": "https://github.com/pmmp/Color/issues", 1174 | "source": "https://github.com/pmmp/Color/tree/0.3.1" 1175 | }, 1176 | "time": "2023-04-10T11:38:05+00:00" 1177 | }, 1178 | { 1179 | "name": "pocketmine/errorhandler", 1180 | "version": "0.6.0", 1181 | "source": { 1182 | "type": "git", 1183 | "url": "https://github.com/pmmp/ErrorHandler.git", 1184 | "reference": "dae214a04348b911e8219ebf125ff1c5589cc878" 1185 | }, 1186 | "dist": { 1187 | "type": "zip", 1188 | "url": "https://api.github.com/repos/pmmp/ErrorHandler/zipball/dae214a04348b911e8219ebf125ff1c5589cc878", 1189 | "reference": "dae214a04348b911e8219ebf125ff1c5589cc878", 1190 | "shasum": "" 1191 | }, 1192 | "require": { 1193 | "php": "^8.0" 1194 | }, 1195 | "require-dev": { 1196 | "phpstan/phpstan": "0.12.99", 1197 | "phpstan/phpstan-strict-rules": "^0.12.2", 1198 | "phpunit/phpunit": "^9.5" 1199 | }, 1200 | "type": "library", 1201 | "autoload": { 1202 | "psr-4": { 1203 | "pocketmine\\errorhandler\\": "src/" 1204 | } 1205 | }, 1206 | "notification-url": "https://packagist.org/downloads/", 1207 | "license": [ 1208 | "LGPL-3.0" 1209 | ], 1210 | "description": "Utilities to handle nasty PHP E_* errors in a usable way", 1211 | "support": { 1212 | "issues": "https://github.com/pmmp/ErrorHandler/issues", 1213 | "source": "https://github.com/pmmp/ErrorHandler/tree/0.6.0" 1214 | }, 1215 | "time": "2022-01-08T21:05:46+00:00" 1216 | }, 1217 | { 1218 | "name": "pocketmine/locale-data", 1219 | "version": "2.19.5", 1220 | "source": { 1221 | "type": "git", 1222 | "url": "https://github.com/pmmp/Language.git", 1223 | "reference": "71af5f9bd23b4e4bad8920dac7f4fe08e5205f7d" 1224 | }, 1225 | "dist": { 1226 | "type": "zip", 1227 | "url": "https://api.github.com/repos/pmmp/Language/zipball/71af5f9bd23b4e4bad8920dac7f4fe08e5205f7d", 1228 | "reference": "71af5f9bd23b4e4bad8920dac7f4fe08e5205f7d", 1229 | "shasum": "" 1230 | }, 1231 | "type": "library", 1232 | "notification-url": "https://packagist.org/downloads/", 1233 | "description": "Language resources used by PocketMine-MP", 1234 | "support": { 1235 | "issues": "https://github.com/pmmp/Language/issues", 1236 | "source": "https://github.com/pmmp/Language/tree/2.19.5" 1237 | }, 1238 | "time": "2023-03-19T16:45:15+00:00" 1239 | }, 1240 | { 1241 | "name": "pocketmine/log", 1242 | "version": "0.4.0", 1243 | "source": { 1244 | "type": "git", 1245 | "url": "https://github.com/pmmp/Log.git", 1246 | "reference": "e6c912c0f9055c81d23108ec2d179b96f404c043" 1247 | }, 1248 | "dist": { 1249 | "type": "zip", 1250 | "url": "https://api.github.com/repos/pmmp/Log/zipball/e6c912c0f9055c81d23108ec2d179b96f404c043", 1251 | "reference": "e6c912c0f9055c81d23108ec2d179b96f404c043", 1252 | "shasum": "" 1253 | }, 1254 | "require": { 1255 | "php": "^7.4 || ^8.0" 1256 | }, 1257 | "conflict": { 1258 | "pocketmine/spl": "<0.4" 1259 | }, 1260 | "require-dev": { 1261 | "phpstan/phpstan": "0.12.88", 1262 | "phpstan/phpstan-strict-rules": "^0.12.2" 1263 | }, 1264 | "type": "library", 1265 | "autoload": { 1266 | "classmap": [ 1267 | "./src" 1268 | ] 1269 | }, 1270 | "notification-url": "https://packagist.org/downloads/", 1271 | "license": [ 1272 | "LGPL-3.0" 1273 | ], 1274 | "description": "Logging components used by PocketMine-MP and related projects", 1275 | "support": { 1276 | "issues": "https://github.com/pmmp/Log/issues", 1277 | "source": "https://github.com/pmmp/Log/tree/0.4.0" 1278 | }, 1279 | "time": "2021-06-18T19:08:09+00:00" 1280 | }, 1281 | { 1282 | "name": "pocketmine/log-pthreads", 1283 | "version": "0.4.0", 1284 | "source": { 1285 | "type": "git", 1286 | "url": "https://github.com/pmmp/LogPthreads.git", 1287 | "reference": "61f709e8cf36bcc24e4efe02acded680a1ce23cd" 1288 | }, 1289 | "dist": { 1290 | "type": "zip", 1291 | "url": "https://api.github.com/repos/pmmp/LogPthreads/zipball/61f709e8cf36bcc24e4efe02acded680a1ce23cd", 1292 | "reference": "61f709e8cf36bcc24e4efe02acded680a1ce23cd", 1293 | "shasum": "" 1294 | }, 1295 | "require": { 1296 | "ext-pthreads": "~3.2.0 || ^4.0", 1297 | "php": "^7.4 || ^8.0", 1298 | "pocketmine/log": "^0.4.0" 1299 | }, 1300 | "conflict": { 1301 | "pocketmine/spl": "<0.4" 1302 | }, 1303 | "require-dev": { 1304 | "phpstan/extension-installer": "^1.0", 1305 | "phpstan/phpstan": "0.12.88", 1306 | "phpstan/phpstan-strict-rules": "^0.12.4" 1307 | }, 1308 | "type": "library", 1309 | "autoload": { 1310 | "classmap": [ 1311 | "./src" 1312 | ] 1313 | }, 1314 | "notification-url": "https://packagist.org/downloads/", 1315 | "license": [ 1316 | "LGPL-3.0" 1317 | ], 1318 | "description": "Logging components specialized for pthreads used by PocketMine-MP and related projects", 1319 | "support": { 1320 | "issues": "https://github.com/pmmp/LogPthreads/issues", 1321 | "source": "https://github.com/pmmp/LogPthreads/tree/0.4.0" 1322 | }, 1323 | "time": "2021-11-01T21:42:09+00:00" 1324 | }, 1325 | { 1326 | "name": "pocketmine/math", 1327 | "version": "0.4.3", 1328 | "source": { 1329 | "type": "git", 1330 | "url": "https://github.com/pmmp/Math.git", 1331 | "reference": "47a243d320b01c8099d65309967934c188111549" 1332 | }, 1333 | "dist": { 1334 | "type": "zip", 1335 | "url": "https://api.github.com/repos/pmmp/Math/zipball/47a243d320b01c8099d65309967934c188111549", 1336 | "reference": "47a243d320b01c8099d65309967934c188111549", 1337 | "shasum": "" 1338 | }, 1339 | "require": { 1340 | "php": "^8.0", 1341 | "php-64bit": "*" 1342 | }, 1343 | "require-dev": { 1344 | "phpstan/extension-installer": "^1.0", 1345 | "phpstan/phpstan": "1.8.2", 1346 | "phpstan/phpstan-strict-rules": "^1.0", 1347 | "phpunit/phpunit": "^8.5 || ^9.5" 1348 | }, 1349 | "type": "library", 1350 | "autoload": { 1351 | "psr-4": { 1352 | "pocketmine\\math\\": "src/" 1353 | } 1354 | }, 1355 | "notification-url": "https://packagist.org/downloads/", 1356 | "license": [ 1357 | "LGPL-3.0" 1358 | ], 1359 | "description": "PHP library containing math related code used in PocketMine-MP", 1360 | "support": { 1361 | "issues": "https://github.com/pmmp/Math/issues", 1362 | "source": "https://github.com/pmmp/Math/tree/0.4.3" 1363 | }, 1364 | "time": "2022-08-25T18:43:37+00:00" 1365 | }, 1366 | { 1367 | "name": "pocketmine/nbt", 1368 | "version": "0.3.4", 1369 | "source": { 1370 | "type": "git", 1371 | "url": "https://github.com/pmmp/NBT.git", 1372 | "reference": "62c02464c6708b2467c1e1a2af01af09d5114eda" 1373 | }, 1374 | "dist": { 1375 | "type": "zip", 1376 | "url": "https://api.github.com/repos/pmmp/NBT/zipball/62c02464c6708b2467c1e1a2af01af09d5114eda", 1377 | "reference": "62c02464c6708b2467c1e1a2af01af09d5114eda", 1378 | "shasum": "" 1379 | }, 1380 | "require": { 1381 | "php": "^7.4 || ^8.0", 1382 | "php-64bit": "*", 1383 | "pocketmine/binaryutils": "^0.2.0" 1384 | }, 1385 | "require-dev": { 1386 | "phpstan/extension-installer": "^1.0", 1387 | "phpstan/phpstan": "1.10.3", 1388 | "phpstan/phpstan-strict-rules": "^1.0", 1389 | "phpunit/phpunit": "^9.5" 1390 | }, 1391 | "type": "library", 1392 | "autoload": { 1393 | "psr-4": { 1394 | "pocketmine\\nbt\\": "src/" 1395 | } 1396 | }, 1397 | "notification-url": "https://packagist.org/downloads/", 1398 | "license": [ 1399 | "LGPL-3.0" 1400 | ], 1401 | "description": "PHP library for working with Named Binary Tags", 1402 | "support": { 1403 | "issues": "https://github.com/pmmp/NBT/issues", 1404 | "source": "https://github.com/pmmp/NBT/tree/0.3.4" 1405 | }, 1406 | "time": "2023-04-10T11:31:20+00:00" 1407 | }, 1408 | { 1409 | "name": "pocketmine/pocketmine-mp", 1410 | "version": "4.20.4", 1411 | "source": { 1412 | "type": "git", 1413 | "url": "https://github.com/pmmp/PocketMine-MP.git", 1414 | "reference": "c3ceeeace712f4eac380b78d1851e7dfb89f557c" 1415 | }, 1416 | "dist": { 1417 | "type": "zip", 1418 | "url": "https://api.github.com/repos/pmmp/PocketMine-MP/zipball/c3ceeeace712f4eac380b78d1851e7dfb89f557c", 1419 | "reference": "c3ceeeace712f4eac380b78d1851e7dfb89f557c", 1420 | "shasum": "" 1421 | }, 1422 | "require": { 1423 | "adhocore/json-comment": "^1.1", 1424 | "composer-runtime-api": "^2.0", 1425 | "ext-chunkutils2": "^0.3.1", 1426 | "ext-crypto": "^0.3.1", 1427 | "ext-ctype": "*", 1428 | "ext-curl": "*", 1429 | "ext-date": "*", 1430 | "ext-gmp": "*", 1431 | "ext-hash": "*", 1432 | "ext-igbinary": "^3.0.1", 1433 | "ext-json": "*", 1434 | "ext-leveldb": "^0.2.1 || ^0.3.0", 1435 | "ext-mbstring": "*", 1436 | "ext-morton": "^0.1.0", 1437 | "ext-openssl": "*", 1438 | "ext-pcre": "*", 1439 | "ext-phar": "*", 1440 | "ext-pthreads": "^4.0", 1441 | "ext-reflection": "*", 1442 | "ext-simplexml": "*", 1443 | "ext-sockets": "*", 1444 | "ext-spl": "*", 1445 | "ext-yaml": ">=2.0.0", 1446 | "ext-zip": "*", 1447 | "ext-zlib": ">=1.2.11", 1448 | "fgrosse/phpasn1": "^2.3", 1449 | "netresearch/jsonmapper": "^4.0", 1450 | "php": "^8.0", 1451 | "php-64bit": "*", 1452 | "pocketmine/bedrock-block-upgrade-schema": "~2.1.0+bedrock-1.19.80", 1453 | "pocketmine/bedrock-data": "~2.2.0+bedrock-1.19.80", 1454 | "pocketmine/bedrock-item-upgrade-schema": "~1.2.0+bedrock-1.19.80", 1455 | "pocketmine/bedrock-protocol": "~21.0.0+bedrock-1.19.80", 1456 | "pocketmine/binaryutils": "^0.2.1", 1457 | "pocketmine/callback-validator": "^1.0.2", 1458 | "pocketmine/classloader": "^0.2.0", 1459 | "pocketmine/color": "^0.3.0", 1460 | "pocketmine/errorhandler": "^0.6.0", 1461 | "pocketmine/locale-data": "~2.19.0", 1462 | "pocketmine/log": "^0.4.0", 1463 | "pocketmine/log-pthreads": "^0.4.0", 1464 | "pocketmine/math": "^0.4.0", 1465 | "pocketmine/nbt": "^0.3.2", 1466 | "pocketmine/raklib": "^0.14.2", 1467 | "pocketmine/raklib-ipc": "^0.1.0", 1468 | "pocketmine/snooze": "^0.3.0", 1469 | "ramsey/uuid": "^4.1", 1470 | "symfony/filesystem": "^5.4", 1471 | "webmozart/path-util": "^2.3" 1472 | }, 1473 | "require-dev": { 1474 | "phpstan/phpstan": "1.10.14", 1475 | "phpstan/phpstan-phpunit": "^1.1.0", 1476 | "phpstan/phpstan-strict-rules": "^1.2.0", 1477 | "phpunit/phpunit": "^9.2" 1478 | }, 1479 | "type": "project", 1480 | "autoload": { 1481 | "files": [ 1482 | "src/CoreConstants.php" 1483 | ], 1484 | "psr-4": { 1485 | "pocketmine\\": "src/" 1486 | } 1487 | }, 1488 | "notification-url": "https://packagist.org/downloads/", 1489 | "license": [ 1490 | "LGPL-3.0" 1491 | ], 1492 | "description": "A server software for Minecraft: Bedrock Edition written in PHP", 1493 | "homepage": "https://pmmp.io", 1494 | "support": { 1495 | "issues": "https://github.com/pmmp/PocketMine-MP/issues", 1496 | "source": "https://github.com/pmmp/PocketMine-MP/tree/4.20.4" 1497 | }, 1498 | "funding": [ 1499 | { 1500 | "url": "https://github.com/pmmp/PocketMine-MP#donate", 1501 | "type": "custom" 1502 | }, 1503 | { 1504 | "url": "https://www.patreon.com/pocketminemp", 1505 | "type": "patreon" 1506 | } 1507 | ], 1508 | "time": "2023-05-06T17:20:18+00:00" 1509 | }, 1510 | { 1511 | "name": "pocketmine/raklib", 1512 | "version": "0.14.6", 1513 | "source": { 1514 | "type": "git", 1515 | "url": "https://github.com/pmmp/RakLib.git", 1516 | "reference": "aeca667d5ecc4cc18fded612f29e3511bbf62f42" 1517 | }, 1518 | "dist": { 1519 | "type": "zip", 1520 | "url": "https://api.github.com/repos/pmmp/RakLib/zipball/aeca667d5ecc4cc18fded612f29e3511bbf62f42", 1521 | "reference": "aeca667d5ecc4cc18fded612f29e3511bbf62f42", 1522 | "shasum": "" 1523 | }, 1524 | "require": { 1525 | "ext-sockets": "*", 1526 | "php": "^8.0", 1527 | "php-64bit": "*", 1528 | "php-ipv6": "*", 1529 | "pocketmine/binaryutils": "^0.2.0", 1530 | "pocketmine/log": "^0.3.0 || ^0.4.0" 1531 | }, 1532 | "require-dev": { 1533 | "phpstan/phpstan": "1.9.17", 1534 | "phpstan/phpstan-strict-rules": "^1.0" 1535 | }, 1536 | "type": "library", 1537 | "autoload": { 1538 | "psr-4": { 1539 | "raklib\\": "src/" 1540 | } 1541 | }, 1542 | "notification-url": "https://packagist.org/downloads/", 1543 | "license": [ 1544 | "GPL-3.0" 1545 | ], 1546 | "description": "A RakNet server implementation written in PHP", 1547 | "support": { 1548 | "issues": "https://github.com/pmmp/RakLib/issues", 1549 | "source": "https://github.com/pmmp/RakLib/tree/0.14.6" 1550 | }, 1551 | "time": "2023-03-07T15:10:23+00:00" 1552 | }, 1553 | { 1554 | "name": "pocketmine/raklib-ipc", 1555 | "version": "0.1.1", 1556 | "source": { 1557 | "type": "git", 1558 | "url": "https://github.com/pmmp/RakLibIpc.git", 1559 | "reference": "922a6444b0c6c7daaa5aa5a832107e1ec4738aed" 1560 | }, 1561 | "dist": { 1562 | "type": "zip", 1563 | "url": "https://api.github.com/repos/pmmp/RakLibIpc/zipball/922a6444b0c6c7daaa5aa5a832107e1ec4738aed", 1564 | "reference": "922a6444b0c6c7daaa5aa5a832107e1ec4738aed", 1565 | "shasum": "" 1566 | }, 1567 | "require": { 1568 | "php": "^7.4 || ^8.0", 1569 | "php-64bit": "*", 1570 | "pocketmine/binaryutils": "^0.2.0", 1571 | "pocketmine/raklib": "^0.13.1 || ^0.14.0" 1572 | }, 1573 | "require-dev": { 1574 | "phpstan/phpstan": "0.12.81", 1575 | "phpstan/phpstan-strict-rules": "^0.12.2" 1576 | }, 1577 | "type": "library", 1578 | "autoload": { 1579 | "psr-4": { 1580 | "raklib\\server\\ipc\\": "src/" 1581 | } 1582 | }, 1583 | "notification-url": "https://packagist.org/downloads/", 1584 | "license": [ 1585 | "GPL-3.0" 1586 | ], 1587 | "description": "Channel-based protocols for inter-thread/inter-process communication with RakLib", 1588 | "support": { 1589 | "issues": "https://github.com/pmmp/RakLibIpc/issues", 1590 | "source": "https://github.com/pmmp/RakLibIpc/tree/0.1.1" 1591 | }, 1592 | "time": "2021-09-22T17:01:12+00:00" 1593 | }, 1594 | { 1595 | "name": "pocketmine/snooze", 1596 | "version": "0.3.1", 1597 | "source": { 1598 | "type": "git", 1599 | "url": "https://github.com/pmmp/Snooze.git", 1600 | "reference": "0ac8fc2a781c419a1f64ebca4d5835028f59e29b" 1601 | }, 1602 | "dist": { 1603 | "type": "zip", 1604 | "url": "https://api.github.com/repos/pmmp/Snooze/zipball/0ac8fc2a781c419a1f64ebca4d5835028f59e29b", 1605 | "reference": "0ac8fc2a781c419a1f64ebca4d5835028f59e29b", 1606 | "shasum": "" 1607 | }, 1608 | "require": { 1609 | "ext-pthreads": "~3.2.0 || ^4.0", 1610 | "php-64bit": "^7.3 || ^8.0" 1611 | }, 1612 | "require-dev": { 1613 | "phpstan/extension-installer": "^1.0", 1614 | "phpstan/phpstan": "0.12.99", 1615 | "phpstan/phpstan-strict-rules": "^0.12.4" 1616 | }, 1617 | "type": "library", 1618 | "autoload": { 1619 | "psr-4": { 1620 | "pocketmine\\snooze\\": "src/" 1621 | } 1622 | }, 1623 | "notification-url": "https://packagist.org/downloads/", 1624 | "license": [ 1625 | "LGPL-3.0" 1626 | ], 1627 | "description": "Thread notification management library for code using the pthreads extension", 1628 | "support": { 1629 | "issues": "https://github.com/pmmp/Snooze/issues", 1630 | "source": "https://github.com/pmmp/Snooze/tree/0.3.1" 1631 | }, 1632 | "time": "2021-11-01T20:50:08+00:00" 1633 | }, 1634 | { 1635 | "name": "psr/cache", 1636 | "version": "3.0.0", 1637 | "source": { 1638 | "type": "git", 1639 | "url": "https://github.com/php-fig/cache.git", 1640 | "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" 1641 | }, 1642 | "dist": { 1643 | "type": "zip", 1644 | "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", 1645 | "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", 1646 | "shasum": "" 1647 | }, 1648 | "require": { 1649 | "php": ">=8.0.0" 1650 | }, 1651 | "type": "library", 1652 | "extra": { 1653 | "branch-alias": { 1654 | "dev-master": "1.0.x-dev" 1655 | } 1656 | }, 1657 | "autoload": { 1658 | "psr-4": { 1659 | "Psr\\Cache\\": "src/" 1660 | } 1661 | }, 1662 | "notification-url": "https://packagist.org/downloads/", 1663 | "license": [ 1664 | "MIT" 1665 | ], 1666 | "authors": [ 1667 | { 1668 | "name": "PHP-FIG", 1669 | "homepage": "https://www.php-fig.org/" 1670 | } 1671 | ], 1672 | "description": "Common interface for caching libraries", 1673 | "keywords": [ 1674 | "cache", 1675 | "psr", 1676 | "psr-6" 1677 | ], 1678 | "support": { 1679 | "source": "https://github.com/php-fig/cache/tree/3.0.0" 1680 | }, 1681 | "time": "2021-02-03T23:26:27+00:00" 1682 | }, 1683 | { 1684 | "name": "psr/container", 1685 | "version": "2.0.2", 1686 | "source": { 1687 | "type": "git", 1688 | "url": "https://github.com/php-fig/container.git", 1689 | "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" 1690 | }, 1691 | "dist": { 1692 | "type": "zip", 1693 | "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", 1694 | "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", 1695 | "shasum": "" 1696 | }, 1697 | "require": { 1698 | "php": ">=7.4.0" 1699 | }, 1700 | "type": "library", 1701 | "extra": { 1702 | "branch-alias": { 1703 | "dev-master": "2.0.x-dev" 1704 | } 1705 | }, 1706 | "autoload": { 1707 | "psr-4": { 1708 | "Psr\\Container\\": "src/" 1709 | } 1710 | }, 1711 | "notification-url": "https://packagist.org/downloads/", 1712 | "license": [ 1713 | "MIT" 1714 | ], 1715 | "authors": [ 1716 | { 1717 | "name": "PHP-FIG", 1718 | "homepage": "https://www.php-fig.org/" 1719 | } 1720 | ], 1721 | "description": "Common Container Interface (PHP FIG PSR-11)", 1722 | "homepage": "https://github.com/php-fig/container", 1723 | "keywords": [ 1724 | "PSR-11", 1725 | "container", 1726 | "container-interface", 1727 | "container-interop", 1728 | "psr" 1729 | ], 1730 | "support": { 1731 | "issues": "https://github.com/php-fig/container/issues", 1732 | "source": "https://github.com/php-fig/container/tree/2.0.2" 1733 | }, 1734 | "time": "2021-11-05T16:47:00+00:00" 1735 | }, 1736 | { 1737 | "name": "psr/event-dispatcher", 1738 | "version": "1.0.0", 1739 | "source": { 1740 | "type": "git", 1741 | "url": "https://github.com/php-fig/event-dispatcher.git", 1742 | "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" 1743 | }, 1744 | "dist": { 1745 | "type": "zip", 1746 | "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", 1747 | "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", 1748 | "shasum": "" 1749 | }, 1750 | "require": { 1751 | "php": ">=7.2.0" 1752 | }, 1753 | "type": "library", 1754 | "extra": { 1755 | "branch-alias": { 1756 | "dev-master": "1.0.x-dev" 1757 | } 1758 | }, 1759 | "autoload": { 1760 | "psr-4": { 1761 | "Psr\\EventDispatcher\\": "src/" 1762 | } 1763 | }, 1764 | "notification-url": "https://packagist.org/downloads/", 1765 | "license": [ 1766 | "MIT" 1767 | ], 1768 | "authors": [ 1769 | { 1770 | "name": "PHP-FIG", 1771 | "homepage": "http://www.php-fig.org/" 1772 | } 1773 | ], 1774 | "description": "Standard interfaces for event handling.", 1775 | "keywords": [ 1776 | "events", 1777 | "psr", 1778 | "psr-14" 1779 | ], 1780 | "support": { 1781 | "issues": "https://github.com/php-fig/event-dispatcher/issues", 1782 | "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" 1783 | }, 1784 | "time": "2019-01-08T18:20:26+00:00" 1785 | }, 1786 | { 1787 | "name": "psr/log", 1788 | "version": "3.0.0", 1789 | "source": { 1790 | "type": "git", 1791 | "url": "https://github.com/php-fig/log.git", 1792 | "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" 1793 | }, 1794 | "dist": { 1795 | "type": "zip", 1796 | "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", 1797 | "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", 1798 | "shasum": "" 1799 | }, 1800 | "require": { 1801 | "php": ">=8.0.0" 1802 | }, 1803 | "type": "library", 1804 | "extra": { 1805 | "branch-alias": { 1806 | "dev-master": "3.x-dev" 1807 | } 1808 | }, 1809 | "autoload": { 1810 | "psr-4": { 1811 | "Psr\\Log\\": "src" 1812 | } 1813 | }, 1814 | "notification-url": "https://packagist.org/downloads/", 1815 | "license": [ 1816 | "MIT" 1817 | ], 1818 | "authors": [ 1819 | { 1820 | "name": "PHP-FIG", 1821 | "homepage": "https://www.php-fig.org/" 1822 | } 1823 | ], 1824 | "description": "Common interface for logging libraries", 1825 | "homepage": "https://github.com/php-fig/log", 1826 | "keywords": [ 1827 | "log", 1828 | "psr", 1829 | "psr-3" 1830 | ], 1831 | "support": { 1832 | "source": "https://github.com/php-fig/log/tree/3.0.0" 1833 | }, 1834 | "time": "2021-07-14T16:46:02+00:00" 1835 | }, 1836 | { 1837 | "name": "ramsey/collection", 1838 | "version": "2.0.0", 1839 | "source": { 1840 | "type": "git", 1841 | "url": "https://github.com/ramsey/collection.git", 1842 | "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" 1843 | }, 1844 | "dist": { 1845 | "type": "zip", 1846 | "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", 1847 | "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", 1848 | "shasum": "" 1849 | }, 1850 | "require": { 1851 | "php": "^8.1" 1852 | }, 1853 | "require-dev": { 1854 | "captainhook/plugin-composer": "^5.3", 1855 | "ergebnis/composer-normalize": "^2.28.3", 1856 | "fakerphp/faker": "^1.21", 1857 | "hamcrest/hamcrest-php": "^2.0", 1858 | "jangregor/phpstan-prophecy": "^1.0", 1859 | "mockery/mockery": "^1.5", 1860 | "php-parallel-lint/php-console-highlighter": "^1.0", 1861 | "php-parallel-lint/php-parallel-lint": "^1.3", 1862 | "phpcsstandards/phpcsutils": "^1.0.0-rc1", 1863 | "phpspec/prophecy-phpunit": "^2.0", 1864 | "phpstan/extension-installer": "^1.2", 1865 | "phpstan/phpstan": "^1.9", 1866 | "phpstan/phpstan-mockery": "^1.1", 1867 | "phpstan/phpstan-phpunit": "^1.3", 1868 | "phpunit/phpunit": "^9.5", 1869 | "psalm/plugin-mockery": "^1.1", 1870 | "psalm/plugin-phpunit": "^0.18.4", 1871 | "ramsey/coding-standard": "^2.0.3", 1872 | "ramsey/conventional-commits": "^1.3", 1873 | "vimeo/psalm": "^5.4" 1874 | }, 1875 | "type": "library", 1876 | "extra": { 1877 | "captainhook": { 1878 | "force-install": true 1879 | }, 1880 | "ramsey/conventional-commits": { 1881 | "configFile": "conventional-commits.json" 1882 | } 1883 | }, 1884 | "autoload": { 1885 | "psr-4": { 1886 | "Ramsey\\Collection\\": "src/" 1887 | } 1888 | }, 1889 | "notification-url": "https://packagist.org/downloads/", 1890 | "license": [ 1891 | "MIT" 1892 | ], 1893 | "authors": [ 1894 | { 1895 | "name": "Ben Ramsey", 1896 | "email": "ben@benramsey.com", 1897 | "homepage": "https://benramsey.com" 1898 | } 1899 | ], 1900 | "description": "A PHP library for representing and manipulating collections.", 1901 | "keywords": [ 1902 | "array", 1903 | "collection", 1904 | "hash", 1905 | "map", 1906 | "queue", 1907 | "set" 1908 | ], 1909 | "support": { 1910 | "issues": "https://github.com/ramsey/collection/issues", 1911 | "source": "https://github.com/ramsey/collection/tree/2.0.0" 1912 | }, 1913 | "funding": [ 1914 | { 1915 | "url": "https://github.com/ramsey", 1916 | "type": "github" 1917 | }, 1918 | { 1919 | "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", 1920 | "type": "tidelift" 1921 | } 1922 | ], 1923 | "time": "2022-12-31T21:50:55+00:00" 1924 | }, 1925 | { 1926 | "name": "ramsey/uuid", 1927 | "version": "4.7.4", 1928 | "source": { 1929 | "type": "git", 1930 | "url": "https://github.com/ramsey/uuid.git", 1931 | "reference": "60a4c63ab724854332900504274f6150ff26d286" 1932 | }, 1933 | "dist": { 1934 | "type": "zip", 1935 | "url": "https://api.github.com/repos/ramsey/uuid/zipball/60a4c63ab724854332900504274f6150ff26d286", 1936 | "reference": "60a4c63ab724854332900504274f6150ff26d286", 1937 | "shasum": "" 1938 | }, 1939 | "require": { 1940 | "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11", 1941 | "ext-json": "*", 1942 | "php": "^8.0", 1943 | "ramsey/collection": "^1.2 || ^2.0" 1944 | }, 1945 | "replace": { 1946 | "rhumsaa/uuid": "self.version" 1947 | }, 1948 | "require-dev": { 1949 | "captainhook/captainhook": "^5.10", 1950 | "captainhook/plugin-composer": "^5.3", 1951 | "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", 1952 | "doctrine/annotations": "^1.8", 1953 | "ergebnis/composer-normalize": "^2.15", 1954 | "mockery/mockery": "^1.3", 1955 | "paragonie/random-lib": "^2", 1956 | "php-mock/php-mock": "^2.2", 1957 | "php-mock/php-mock-mockery": "^1.3", 1958 | "php-parallel-lint/php-parallel-lint": "^1.1", 1959 | "phpbench/phpbench": "^1.0", 1960 | "phpstan/extension-installer": "^1.1", 1961 | "phpstan/phpstan": "^1.8", 1962 | "phpstan/phpstan-mockery": "^1.1", 1963 | "phpstan/phpstan-phpunit": "^1.1", 1964 | "phpunit/phpunit": "^8.5 || ^9", 1965 | "ramsey/composer-repl": "^1.4", 1966 | "slevomat/coding-standard": "^8.4", 1967 | "squizlabs/php_codesniffer": "^3.5", 1968 | "vimeo/psalm": "^4.9" 1969 | }, 1970 | "suggest": { 1971 | "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", 1972 | "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", 1973 | "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", 1974 | "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", 1975 | "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." 1976 | }, 1977 | "type": "library", 1978 | "extra": { 1979 | "captainhook": { 1980 | "force-install": true 1981 | } 1982 | }, 1983 | "autoload": { 1984 | "files": [ 1985 | "src/functions.php" 1986 | ], 1987 | "psr-4": { 1988 | "Ramsey\\Uuid\\": "src/" 1989 | } 1990 | }, 1991 | "notification-url": "https://packagist.org/downloads/", 1992 | "license": [ 1993 | "MIT" 1994 | ], 1995 | "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", 1996 | "keywords": [ 1997 | "guid", 1998 | "identifier", 1999 | "uuid" 2000 | ], 2001 | "support": { 2002 | "issues": "https://github.com/ramsey/uuid/issues", 2003 | "source": "https://github.com/ramsey/uuid/tree/4.7.4" 2004 | }, 2005 | "funding": [ 2006 | { 2007 | "url": "https://github.com/ramsey", 2008 | "type": "github" 2009 | }, 2010 | { 2011 | "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", 2012 | "type": "tidelift" 2013 | } 2014 | ], 2015 | "time": "2023-04-15T23:01:58+00:00" 2016 | }, 2017 | { 2018 | "name": "sebastian/diff", 2019 | "version": "5.0.3", 2020 | "source": { 2021 | "type": "git", 2022 | "url": "https://github.com/sebastianbergmann/diff.git", 2023 | "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b" 2024 | }, 2025 | "dist": { 2026 | "type": "zip", 2027 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/912dc2fbe3e3c1e7873313cc801b100b6c68c87b", 2028 | "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b", 2029 | "shasum": "" 2030 | }, 2031 | "require": { 2032 | "php": ">=8.1" 2033 | }, 2034 | "require-dev": { 2035 | "phpunit/phpunit": "^10.0", 2036 | "symfony/process": "^4.2 || ^5" 2037 | }, 2038 | "type": "library", 2039 | "extra": { 2040 | "branch-alias": { 2041 | "dev-main": "5.0-dev" 2042 | } 2043 | }, 2044 | "autoload": { 2045 | "classmap": [ 2046 | "src/" 2047 | ] 2048 | }, 2049 | "notification-url": "https://packagist.org/downloads/", 2050 | "license": [ 2051 | "BSD-3-Clause" 2052 | ], 2053 | "authors": [ 2054 | { 2055 | "name": "Sebastian Bergmann", 2056 | "email": "sebastian@phpunit.de" 2057 | }, 2058 | { 2059 | "name": "Kore Nordmann", 2060 | "email": "mail@kore-nordmann.de" 2061 | } 2062 | ], 2063 | "description": "Diff implementation", 2064 | "homepage": "https://github.com/sebastianbergmann/diff", 2065 | "keywords": [ 2066 | "diff", 2067 | "udiff", 2068 | "unidiff", 2069 | "unified diff" 2070 | ], 2071 | "support": { 2072 | "issues": "https://github.com/sebastianbergmann/diff/issues", 2073 | "security": "https://github.com/sebastianbergmann/diff/security/policy", 2074 | "source": "https://github.com/sebastianbergmann/diff/tree/5.0.3" 2075 | }, 2076 | "funding": [ 2077 | { 2078 | "url": "https://github.com/sebastianbergmann", 2079 | "type": "github" 2080 | } 2081 | ], 2082 | "time": "2023-05-01T07:48:21+00:00" 2083 | }, 2084 | { 2085 | "name": "symfony/console", 2086 | "version": "v6.2.10", 2087 | "source": { 2088 | "type": "git", 2089 | "url": "https://github.com/symfony/console.git", 2090 | "reference": "12288d9f4500f84a4d02254d4aa968b15488476f" 2091 | }, 2092 | "dist": { 2093 | "type": "zip", 2094 | "url": "https://api.github.com/repos/symfony/console/zipball/12288d9f4500f84a4d02254d4aa968b15488476f", 2095 | "reference": "12288d9f4500f84a4d02254d4aa968b15488476f", 2096 | "shasum": "" 2097 | }, 2098 | "require": { 2099 | "php": ">=8.1", 2100 | "symfony/deprecation-contracts": "^2.1|^3", 2101 | "symfony/polyfill-mbstring": "~1.0", 2102 | "symfony/service-contracts": "^1.1|^2|^3", 2103 | "symfony/string": "^5.4|^6.0" 2104 | }, 2105 | "conflict": { 2106 | "symfony/dependency-injection": "<5.4", 2107 | "symfony/dotenv": "<5.4", 2108 | "symfony/event-dispatcher": "<5.4", 2109 | "symfony/lock": "<5.4", 2110 | "symfony/process": "<5.4" 2111 | }, 2112 | "provide": { 2113 | "psr/log-implementation": "1.0|2.0|3.0" 2114 | }, 2115 | "require-dev": { 2116 | "psr/log": "^1|^2|^3", 2117 | "symfony/config": "^5.4|^6.0", 2118 | "symfony/dependency-injection": "^5.4|^6.0", 2119 | "symfony/event-dispatcher": "^5.4|^6.0", 2120 | "symfony/lock": "^5.4|^6.0", 2121 | "symfony/process": "^5.4|^6.0", 2122 | "symfony/var-dumper": "^5.4|^6.0" 2123 | }, 2124 | "suggest": { 2125 | "psr/log": "For using the console logger", 2126 | "symfony/event-dispatcher": "", 2127 | "symfony/lock": "", 2128 | "symfony/process": "" 2129 | }, 2130 | "type": "library", 2131 | "autoload": { 2132 | "psr-4": { 2133 | "Symfony\\Component\\Console\\": "" 2134 | }, 2135 | "exclude-from-classmap": [ 2136 | "/Tests/" 2137 | ] 2138 | }, 2139 | "notification-url": "https://packagist.org/downloads/", 2140 | "license": [ 2141 | "MIT" 2142 | ], 2143 | "authors": [ 2144 | { 2145 | "name": "Fabien Potencier", 2146 | "email": "fabien@symfony.com" 2147 | }, 2148 | { 2149 | "name": "Symfony Community", 2150 | "homepage": "https://symfony.com/contributors" 2151 | } 2152 | ], 2153 | "description": "Eases the creation of beautiful and testable command line interfaces", 2154 | "homepage": "https://symfony.com", 2155 | "keywords": [ 2156 | "cli", 2157 | "command-line", 2158 | "console", 2159 | "terminal" 2160 | ], 2161 | "support": { 2162 | "source": "https://github.com/symfony/console/tree/v6.2.10" 2163 | }, 2164 | "funding": [ 2165 | { 2166 | "url": "https://symfony.com/sponsor", 2167 | "type": "custom" 2168 | }, 2169 | { 2170 | "url": "https://github.com/fabpot", 2171 | "type": "github" 2172 | }, 2173 | { 2174 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2175 | "type": "tidelift" 2176 | } 2177 | ], 2178 | "time": "2023-04-28T13:37:43+00:00" 2179 | }, 2180 | { 2181 | "name": "symfony/deprecation-contracts", 2182 | "version": "v3.2.1", 2183 | "source": { 2184 | "type": "git", 2185 | "url": "https://github.com/symfony/deprecation-contracts.git", 2186 | "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e" 2187 | }, 2188 | "dist": { 2189 | "type": "zip", 2190 | "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", 2191 | "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", 2192 | "shasum": "" 2193 | }, 2194 | "require": { 2195 | "php": ">=8.1" 2196 | }, 2197 | "type": "library", 2198 | "extra": { 2199 | "branch-alias": { 2200 | "dev-main": "3.3-dev" 2201 | }, 2202 | "thanks": { 2203 | "name": "symfony/contracts", 2204 | "url": "https://github.com/symfony/contracts" 2205 | } 2206 | }, 2207 | "autoload": { 2208 | "files": [ 2209 | "function.php" 2210 | ] 2211 | }, 2212 | "notification-url": "https://packagist.org/downloads/", 2213 | "license": [ 2214 | "MIT" 2215 | ], 2216 | "authors": [ 2217 | { 2218 | "name": "Nicolas Grekas", 2219 | "email": "p@tchwork.com" 2220 | }, 2221 | { 2222 | "name": "Symfony Community", 2223 | "homepage": "https://symfony.com/contributors" 2224 | } 2225 | ], 2226 | "description": "A generic function and convention to trigger deprecation notices", 2227 | "homepage": "https://symfony.com", 2228 | "support": { 2229 | "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.1" 2230 | }, 2231 | "funding": [ 2232 | { 2233 | "url": "https://symfony.com/sponsor", 2234 | "type": "custom" 2235 | }, 2236 | { 2237 | "url": "https://github.com/fabpot", 2238 | "type": "github" 2239 | }, 2240 | { 2241 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2242 | "type": "tidelift" 2243 | } 2244 | ], 2245 | "time": "2023-03-01T10:25:55+00:00" 2246 | }, 2247 | { 2248 | "name": "symfony/event-dispatcher", 2249 | "version": "v6.2.8", 2250 | "source": { 2251 | "type": "git", 2252 | "url": "https://github.com/symfony/event-dispatcher.git", 2253 | "reference": "04046f35fd7d72f9646e721fc2ecb8f9c67d3339" 2254 | }, 2255 | "dist": { 2256 | "type": "zip", 2257 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/04046f35fd7d72f9646e721fc2ecb8f9c67d3339", 2258 | "reference": "04046f35fd7d72f9646e721fc2ecb8f9c67d3339", 2259 | "shasum": "" 2260 | }, 2261 | "require": { 2262 | "php": ">=8.1", 2263 | "symfony/event-dispatcher-contracts": "^2|^3" 2264 | }, 2265 | "conflict": { 2266 | "symfony/dependency-injection": "<5.4" 2267 | }, 2268 | "provide": { 2269 | "psr/event-dispatcher-implementation": "1.0", 2270 | "symfony/event-dispatcher-implementation": "2.0|3.0" 2271 | }, 2272 | "require-dev": { 2273 | "psr/log": "^1|^2|^3", 2274 | "symfony/config": "^5.4|^6.0", 2275 | "symfony/dependency-injection": "^5.4|^6.0", 2276 | "symfony/error-handler": "^5.4|^6.0", 2277 | "symfony/expression-language": "^5.4|^6.0", 2278 | "symfony/http-foundation": "^5.4|^6.0", 2279 | "symfony/service-contracts": "^1.1|^2|^3", 2280 | "symfony/stopwatch": "^5.4|^6.0" 2281 | }, 2282 | "suggest": { 2283 | "symfony/dependency-injection": "", 2284 | "symfony/http-kernel": "" 2285 | }, 2286 | "type": "library", 2287 | "autoload": { 2288 | "psr-4": { 2289 | "Symfony\\Component\\EventDispatcher\\": "" 2290 | }, 2291 | "exclude-from-classmap": [ 2292 | "/Tests/" 2293 | ] 2294 | }, 2295 | "notification-url": "https://packagist.org/downloads/", 2296 | "license": [ 2297 | "MIT" 2298 | ], 2299 | "authors": [ 2300 | { 2301 | "name": "Fabien Potencier", 2302 | "email": "fabien@symfony.com" 2303 | }, 2304 | { 2305 | "name": "Symfony Community", 2306 | "homepage": "https://symfony.com/contributors" 2307 | } 2308 | ], 2309 | "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", 2310 | "homepage": "https://symfony.com", 2311 | "support": { 2312 | "source": "https://github.com/symfony/event-dispatcher/tree/v6.2.8" 2313 | }, 2314 | "funding": [ 2315 | { 2316 | "url": "https://symfony.com/sponsor", 2317 | "type": "custom" 2318 | }, 2319 | { 2320 | "url": "https://github.com/fabpot", 2321 | "type": "github" 2322 | }, 2323 | { 2324 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2325 | "type": "tidelift" 2326 | } 2327 | ], 2328 | "time": "2023-03-20T16:06:02+00:00" 2329 | }, 2330 | { 2331 | "name": "symfony/event-dispatcher-contracts", 2332 | "version": "v3.2.1", 2333 | "source": { 2334 | "type": "git", 2335 | "url": "https://github.com/symfony/event-dispatcher-contracts.git", 2336 | "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd" 2337 | }, 2338 | "dist": { 2339 | "type": "zip", 2340 | "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ad3b6f1e4e2da5690fefe075cd53a238646d8dd", 2341 | "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd", 2342 | "shasum": "" 2343 | }, 2344 | "require": { 2345 | "php": ">=8.1", 2346 | "psr/event-dispatcher": "^1" 2347 | }, 2348 | "suggest": { 2349 | "symfony/event-dispatcher-implementation": "" 2350 | }, 2351 | "type": "library", 2352 | "extra": { 2353 | "branch-alias": { 2354 | "dev-main": "3.3-dev" 2355 | }, 2356 | "thanks": { 2357 | "name": "symfony/contracts", 2358 | "url": "https://github.com/symfony/contracts" 2359 | } 2360 | }, 2361 | "autoload": { 2362 | "psr-4": { 2363 | "Symfony\\Contracts\\EventDispatcher\\": "" 2364 | } 2365 | }, 2366 | "notification-url": "https://packagist.org/downloads/", 2367 | "license": [ 2368 | "MIT" 2369 | ], 2370 | "authors": [ 2371 | { 2372 | "name": "Nicolas Grekas", 2373 | "email": "p@tchwork.com" 2374 | }, 2375 | { 2376 | "name": "Symfony Community", 2377 | "homepage": "https://symfony.com/contributors" 2378 | } 2379 | ], 2380 | "description": "Generic abstractions related to dispatching event", 2381 | "homepage": "https://symfony.com", 2382 | "keywords": [ 2383 | "abstractions", 2384 | "contracts", 2385 | "decoupling", 2386 | "interfaces", 2387 | "interoperability", 2388 | "standards" 2389 | ], 2390 | "support": { 2391 | "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.2.1" 2392 | }, 2393 | "funding": [ 2394 | { 2395 | "url": "https://symfony.com/sponsor", 2396 | "type": "custom" 2397 | }, 2398 | { 2399 | "url": "https://github.com/fabpot", 2400 | "type": "github" 2401 | }, 2402 | { 2403 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2404 | "type": "tidelift" 2405 | } 2406 | ], 2407 | "time": "2023-03-01T10:32:47+00:00" 2408 | }, 2409 | { 2410 | "name": "symfony/filesystem", 2411 | "version": "v5.4.23", 2412 | "source": { 2413 | "type": "git", 2414 | "url": "https://github.com/symfony/filesystem.git", 2415 | "reference": "b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5" 2416 | }, 2417 | "dist": { 2418 | "type": "zip", 2419 | "url": "https://api.github.com/repos/symfony/filesystem/zipball/b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5", 2420 | "reference": "b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5", 2421 | "shasum": "" 2422 | }, 2423 | "require": { 2424 | "php": ">=7.2.5", 2425 | "symfony/polyfill-ctype": "~1.8", 2426 | "symfony/polyfill-mbstring": "~1.8", 2427 | "symfony/polyfill-php80": "^1.16" 2428 | }, 2429 | "type": "library", 2430 | "autoload": { 2431 | "psr-4": { 2432 | "Symfony\\Component\\Filesystem\\": "" 2433 | }, 2434 | "exclude-from-classmap": [ 2435 | "/Tests/" 2436 | ] 2437 | }, 2438 | "notification-url": "https://packagist.org/downloads/", 2439 | "license": [ 2440 | "MIT" 2441 | ], 2442 | "authors": [ 2443 | { 2444 | "name": "Fabien Potencier", 2445 | "email": "fabien@symfony.com" 2446 | }, 2447 | { 2448 | "name": "Symfony Community", 2449 | "homepage": "https://symfony.com/contributors" 2450 | } 2451 | ], 2452 | "description": "Provides basic utilities for the filesystem", 2453 | "homepage": "https://symfony.com", 2454 | "support": { 2455 | "source": "https://github.com/symfony/filesystem/tree/v5.4.23" 2456 | }, 2457 | "funding": [ 2458 | { 2459 | "url": "https://symfony.com/sponsor", 2460 | "type": "custom" 2461 | }, 2462 | { 2463 | "url": "https://github.com/fabpot", 2464 | "type": "github" 2465 | }, 2466 | { 2467 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2468 | "type": "tidelift" 2469 | } 2470 | ], 2471 | "time": "2023-03-02T11:38:35+00:00" 2472 | }, 2473 | { 2474 | "name": "symfony/finder", 2475 | "version": "v6.2.7", 2476 | "source": { 2477 | "type": "git", 2478 | "url": "https://github.com/symfony/finder.git", 2479 | "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb" 2480 | }, 2481 | "dist": { 2482 | "type": "zip", 2483 | "url": "https://api.github.com/repos/symfony/finder/zipball/20808dc6631aecafbe67c186af5dcb370be3a0eb", 2484 | "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb", 2485 | "shasum": "" 2486 | }, 2487 | "require": { 2488 | "php": ">=8.1" 2489 | }, 2490 | "require-dev": { 2491 | "symfony/filesystem": "^6.0" 2492 | }, 2493 | "type": "library", 2494 | "autoload": { 2495 | "psr-4": { 2496 | "Symfony\\Component\\Finder\\": "" 2497 | }, 2498 | "exclude-from-classmap": [ 2499 | "/Tests/" 2500 | ] 2501 | }, 2502 | "notification-url": "https://packagist.org/downloads/", 2503 | "license": [ 2504 | "MIT" 2505 | ], 2506 | "authors": [ 2507 | { 2508 | "name": "Fabien Potencier", 2509 | "email": "fabien@symfony.com" 2510 | }, 2511 | { 2512 | "name": "Symfony Community", 2513 | "homepage": "https://symfony.com/contributors" 2514 | } 2515 | ], 2516 | "description": "Finds files and directories via an intuitive fluent interface", 2517 | "homepage": "https://symfony.com", 2518 | "support": { 2519 | "source": "https://github.com/symfony/finder/tree/v6.2.7" 2520 | }, 2521 | "funding": [ 2522 | { 2523 | "url": "https://symfony.com/sponsor", 2524 | "type": "custom" 2525 | }, 2526 | { 2527 | "url": "https://github.com/fabpot", 2528 | "type": "github" 2529 | }, 2530 | { 2531 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2532 | "type": "tidelift" 2533 | } 2534 | ], 2535 | "time": "2023-02-16T09:57:23+00:00" 2536 | }, 2537 | { 2538 | "name": "symfony/options-resolver", 2539 | "version": "v6.2.7", 2540 | "source": { 2541 | "type": "git", 2542 | "url": "https://github.com/symfony/options-resolver.git", 2543 | "reference": "aa0e85b53bbb2b4951960efd61d295907eacd629" 2544 | }, 2545 | "dist": { 2546 | "type": "zip", 2547 | "url": "https://api.github.com/repos/symfony/options-resolver/zipball/aa0e85b53bbb2b4951960efd61d295907eacd629", 2548 | "reference": "aa0e85b53bbb2b4951960efd61d295907eacd629", 2549 | "shasum": "" 2550 | }, 2551 | "require": { 2552 | "php": ">=8.1", 2553 | "symfony/deprecation-contracts": "^2.1|^3" 2554 | }, 2555 | "type": "library", 2556 | "autoload": { 2557 | "psr-4": { 2558 | "Symfony\\Component\\OptionsResolver\\": "" 2559 | }, 2560 | "exclude-from-classmap": [ 2561 | "/Tests/" 2562 | ] 2563 | }, 2564 | "notification-url": "https://packagist.org/downloads/", 2565 | "license": [ 2566 | "MIT" 2567 | ], 2568 | "authors": [ 2569 | { 2570 | "name": "Fabien Potencier", 2571 | "email": "fabien@symfony.com" 2572 | }, 2573 | { 2574 | "name": "Symfony Community", 2575 | "homepage": "https://symfony.com/contributors" 2576 | } 2577 | ], 2578 | "description": "Provides an improved replacement for the array_replace PHP function", 2579 | "homepage": "https://symfony.com", 2580 | "keywords": [ 2581 | "config", 2582 | "configuration", 2583 | "options" 2584 | ], 2585 | "support": { 2586 | "source": "https://github.com/symfony/options-resolver/tree/v6.2.7" 2587 | }, 2588 | "funding": [ 2589 | { 2590 | "url": "https://symfony.com/sponsor", 2591 | "type": "custom" 2592 | }, 2593 | { 2594 | "url": "https://github.com/fabpot", 2595 | "type": "github" 2596 | }, 2597 | { 2598 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2599 | "type": "tidelift" 2600 | } 2601 | ], 2602 | "time": "2023-02-14T08:44:56+00:00" 2603 | }, 2604 | { 2605 | "name": "symfony/polyfill-ctype", 2606 | "version": "v1.27.0", 2607 | "source": { 2608 | "type": "git", 2609 | "url": "https://github.com/symfony/polyfill-ctype.git", 2610 | "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" 2611 | }, 2612 | "dist": { 2613 | "type": "zip", 2614 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", 2615 | "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", 2616 | "shasum": "" 2617 | }, 2618 | "require": { 2619 | "php": ">=7.1" 2620 | }, 2621 | "provide": { 2622 | "ext-ctype": "*" 2623 | }, 2624 | "suggest": { 2625 | "ext-ctype": "For best performance" 2626 | }, 2627 | "type": "library", 2628 | "extra": { 2629 | "branch-alias": { 2630 | "dev-main": "1.27-dev" 2631 | }, 2632 | "thanks": { 2633 | "name": "symfony/polyfill", 2634 | "url": "https://github.com/symfony/polyfill" 2635 | } 2636 | }, 2637 | "autoload": { 2638 | "files": [ 2639 | "bootstrap.php" 2640 | ], 2641 | "psr-4": { 2642 | "Symfony\\Polyfill\\Ctype\\": "" 2643 | } 2644 | }, 2645 | "notification-url": "https://packagist.org/downloads/", 2646 | "license": [ 2647 | "MIT" 2648 | ], 2649 | "authors": [ 2650 | { 2651 | "name": "Gert de Pagter", 2652 | "email": "BackEndTea@gmail.com" 2653 | }, 2654 | { 2655 | "name": "Symfony Community", 2656 | "homepage": "https://symfony.com/contributors" 2657 | } 2658 | ], 2659 | "description": "Symfony polyfill for ctype functions", 2660 | "homepage": "https://symfony.com", 2661 | "keywords": [ 2662 | "compatibility", 2663 | "ctype", 2664 | "polyfill", 2665 | "portable" 2666 | ], 2667 | "support": { 2668 | "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" 2669 | }, 2670 | "funding": [ 2671 | { 2672 | "url": "https://symfony.com/sponsor", 2673 | "type": "custom" 2674 | }, 2675 | { 2676 | "url": "https://github.com/fabpot", 2677 | "type": "github" 2678 | }, 2679 | { 2680 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2681 | "type": "tidelift" 2682 | } 2683 | ], 2684 | "time": "2022-11-03T14:55:06+00:00" 2685 | }, 2686 | { 2687 | "name": "symfony/polyfill-intl-grapheme", 2688 | "version": "v1.27.0", 2689 | "source": { 2690 | "type": "git", 2691 | "url": "https://github.com/symfony/polyfill-intl-grapheme.git", 2692 | "reference": "511a08c03c1960e08a883f4cffcacd219b758354" 2693 | }, 2694 | "dist": { 2695 | "type": "zip", 2696 | "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", 2697 | "reference": "511a08c03c1960e08a883f4cffcacd219b758354", 2698 | "shasum": "" 2699 | }, 2700 | "require": { 2701 | "php": ">=7.1" 2702 | }, 2703 | "suggest": { 2704 | "ext-intl": "For best performance" 2705 | }, 2706 | "type": "library", 2707 | "extra": { 2708 | "branch-alias": { 2709 | "dev-main": "1.27-dev" 2710 | }, 2711 | "thanks": { 2712 | "name": "symfony/polyfill", 2713 | "url": "https://github.com/symfony/polyfill" 2714 | } 2715 | }, 2716 | "autoload": { 2717 | "files": [ 2718 | "bootstrap.php" 2719 | ], 2720 | "psr-4": { 2721 | "Symfony\\Polyfill\\Intl\\Grapheme\\": "" 2722 | } 2723 | }, 2724 | "notification-url": "https://packagist.org/downloads/", 2725 | "license": [ 2726 | "MIT" 2727 | ], 2728 | "authors": [ 2729 | { 2730 | "name": "Nicolas Grekas", 2731 | "email": "p@tchwork.com" 2732 | }, 2733 | { 2734 | "name": "Symfony Community", 2735 | "homepage": "https://symfony.com/contributors" 2736 | } 2737 | ], 2738 | "description": "Symfony polyfill for intl's grapheme_* functions", 2739 | "homepage": "https://symfony.com", 2740 | "keywords": [ 2741 | "compatibility", 2742 | "grapheme", 2743 | "intl", 2744 | "polyfill", 2745 | "portable", 2746 | "shim" 2747 | ], 2748 | "support": { 2749 | "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" 2750 | }, 2751 | "funding": [ 2752 | { 2753 | "url": "https://symfony.com/sponsor", 2754 | "type": "custom" 2755 | }, 2756 | { 2757 | "url": "https://github.com/fabpot", 2758 | "type": "github" 2759 | }, 2760 | { 2761 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2762 | "type": "tidelift" 2763 | } 2764 | ], 2765 | "time": "2022-11-03T14:55:06+00:00" 2766 | }, 2767 | { 2768 | "name": "symfony/polyfill-intl-normalizer", 2769 | "version": "v1.27.0", 2770 | "source": { 2771 | "type": "git", 2772 | "url": "https://github.com/symfony/polyfill-intl-normalizer.git", 2773 | "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" 2774 | }, 2775 | "dist": { 2776 | "type": "zip", 2777 | "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", 2778 | "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", 2779 | "shasum": "" 2780 | }, 2781 | "require": { 2782 | "php": ">=7.1" 2783 | }, 2784 | "suggest": { 2785 | "ext-intl": "For best performance" 2786 | }, 2787 | "type": "library", 2788 | "extra": { 2789 | "branch-alias": { 2790 | "dev-main": "1.27-dev" 2791 | }, 2792 | "thanks": { 2793 | "name": "symfony/polyfill", 2794 | "url": "https://github.com/symfony/polyfill" 2795 | } 2796 | }, 2797 | "autoload": { 2798 | "files": [ 2799 | "bootstrap.php" 2800 | ], 2801 | "psr-4": { 2802 | "Symfony\\Polyfill\\Intl\\Normalizer\\": "" 2803 | }, 2804 | "classmap": [ 2805 | "Resources/stubs" 2806 | ] 2807 | }, 2808 | "notification-url": "https://packagist.org/downloads/", 2809 | "license": [ 2810 | "MIT" 2811 | ], 2812 | "authors": [ 2813 | { 2814 | "name": "Nicolas Grekas", 2815 | "email": "p@tchwork.com" 2816 | }, 2817 | { 2818 | "name": "Symfony Community", 2819 | "homepage": "https://symfony.com/contributors" 2820 | } 2821 | ], 2822 | "description": "Symfony polyfill for intl's Normalizer class and related functions", 2823 | "homepage": "https://symfony.com", 2824 | "keywords": [ 2825 | "compatibility", 2826 | "intl", 2827 | "normalizer", 2828 | "polyfill", 2829 | "portable", 2830 | "shim" 2831 | ], 2832 | "support": { 2833 | "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" 2834 | }, 2835 | "funding": [ 2836 | { 2837 | "url": "https://symfony.com/sponsor", 2838 | "type": "custom" 2839 | }, 2840 | { 2841 | "url": "https://github.com/fabpot", 2842 | "type": "github" 2843 | }, 2844 | { 2845 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2846 | "type": "tidelift" 2847 | } 2848 | ], 2849 | "time": "2022-11-03T14:55:06+00:00" 2850 | }, 2851 | { 2852 | "name": "symfony/polyfill-mbstring", 2853 | "version": "v1.27.0", 2854 | "source": { 2855 | "type": "git", 2856 | "url": "https://github.com/symfony/polyfill-mbstring.git", 2857 | "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" 2858 | }, 2859 | "dist": { 2860 | "type": "zip", 2861 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", 2862 | "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", 2863 | "shasum": "" 2864 | }, 2865 | "require": { 2866 | "php": ">=7.1" 2867 | }, 2868 | "provide": { 2869 | "ext-mbstring": "*" 2870 | }, 2871 | "suggest": { 2872 | "ext-mbstring": "For best performance" 2873 | }, 2874 | "type": "library", 2875 | "extra": { 2876 | "branch-alias": { 2877 | "dev-main": "1.27-dev" 2878 | }, 2879 | "thanks": { 2880 | "name": "symfony/polyfill", 2881 | "url": "https://github.com/symfony/polyfill" 2882 | } 2883 | }, 2884 | "autoload": { 2885 | "files": [ 2886 | "bootstrap.php" 2887 | ], 2888 | "psr-4": { 2889 | "Symfony\\Polyfill\\Mbstring\\": "" 2890 | } 2891 | }, 2892 | "notification-url": "https://packagist.org/downloads/", 2893 | "license": [ 2894 | "MIT" 2895 | ], 2896 | "authors": [ 2897 | { 2898 | "name": "Nicolas Grekas", 2899 | "email": "p@tchwork.com" 2900 | }, 2901 | { 2902 | "name": "Symfony Community", 2903 | "homepage": "https://symfony.com/contributors" 2904 | } 2905 | ], 2906 | "description": "Symfony polyfill for the Mbstring extension", 2907 | "homepage": "https://symfony.com", 2908 | "keywords": [ 2909 | "compatibility", 2910 | "mbstring", 2911 | "polyfill", 2912 | "portable", 2913 | "shim" 2914 | ], 2915 | "support": { 2916 | "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" 2917 | }, 2918 | "funding": [ 2919 | { 2920 | "url": "https://symfony.com/sponsor", 2921 | "type": "custom" 2922 | }, 2923 | { 2924 | "url": "https://github.com/fabpot", 2925 | "type": "github" 2926 | }, 2927 | { 2928 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2929 | "type": "tidelift" 2930 | } 2931 | ], 2932 | "time": "2022-11-03T14:55:06+00:00" 2933 | }, 2934 | { 2935 | "name": "symfony/polyfill-php80", 2936 | "version": "v1.27.0", 2937 | "source": { 2938 | "type": "git", 2939 | "url": "https://github.com/symfony/polyfill-php80.git", 2940 | "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" 2941 | }, 2942 | "dist": { 2943 | "type": "zip", 2944 | "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", 2945 | "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", 2946 | "shasum": "" 2947 | }, 2948 | "require": { 2949 | "php": ">=7.1" 2950 | }, 2951 | "type": "library", 2952 | "extra": { 2953 | "branch-alias": { 2954 | "dev-main": "1.27-dev" 2955 | }, 2956 | "thanks": { 2957 | "name": "symfony/polyfill", 2958 | "url": "https://github.com/symfony/polyfill" 2959 | } 2960 | }, 2961 | "autoload": { 2962 | "files": [ 2963 | "bootstrap.php" 2964 | ], 2965 | "psr-4": { 2966 | "Symfony\\Polyfill\\Php80\\": "" 2967 | }, 2968 | "classmap": [ 2969 | "Resources/stubs" 2970 | ] 2971 | }, 2972 | "notification-url": "https://packagist.org/downloads/", 2973 | "license": [ 2974 | "MIT" 2975 | ], 2976 | "authors": [ 2977 | { 2978 | "name": "Ion Bazan", 2979 | "email": "ion.bazan@gmail.com" 2980 | }, 2981 | { 2982 | "name": "Nicolas Grekas", 2983 | "email": "p@tchwork.com" 2984 | }, 2985 | { 2986 | "name": "Symfony Community", 2987 | "homepage": "https://symfony.com/contributors" 2988 | } 2989 | ], 2990 | "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", 2991 | "homepage": "https://symfony.com", 2992 | "keywords": [ 2993 | "compatibility", 2994 | "polyfill", 2995 | "portable", 2996 | "shim" 2997 | ], 2998 | "support": { 2999 | "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" 3000 | }, 3001 | "funding": [ 3002 | { 3003 | "url": "https://symfony.com/sponsor", 3004 | "type": "custom" 3005 | }, 3006 | { 3007 | "url": "https://github.com/fabpot", 3008 | "type": "github" 3009 | }, 3010 | { 3011 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3012 | "type": "tidelift" 3013 | } 3014 | ], 3015 | "time": "2022-11-03T14:55:06+00:00" 3016 | }, 3017 | { 3018 | "name": "symfony/polyfill-php81", 3019 | "version": "v1.27.0", 3020 | "source": { 3021 | "type": "git", 3022 | "url": "https://github.com/symfony/polyfill-php81.git", 3023 | "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" 3024 | }, 3025 | "dist": { 3026 | "type": "zip", 3027 | "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", 3028 | "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", 3029 | "shasum": "" 3030 | }, 3031 | "require": { 3032 | "php": ">=7.1" 3033 | }, 3034 | "type": "library", 3035 | "extra": { 3036 | "branch-alias": { 3037 | "dev-main": "1.27-dev" 3038 | }, 3039 | "thanks": { 3040 | "name": "symfony/polyfill", 3041 | "url": "https://github.com/symfony/polyfill" 3042 | } 3043 | }, 3044 | "autoload": { 3045 | "files": [ 3046 | "bootstrap.php" 3047 | ], 3048 | "psr-4": { 3049 | "Symfony\\Polyfill\\Php81\\": "" 3050 | }, 3051 | "classmap": [ 3052 | "Resources/stubs" 3053 | ] 3054 | }, 3055 | "notification-url": "https://packagist.org/downloads/", 3056 | "license": [ 3057 | "MIT" 3058 | ], 3059 | "authors": [ 3060 | { 3061 | "name": "Nicolas Grekas", 3062 | "email": "p@tchwork.com" 3063 | }, 3064 | { 3065 | "name": "Symfony Community", 3066 | "homepage": "https://symfony.com/contributors" 3067 | } 3068 | ], 3069 | "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", 3070 | "homepage": "https://symfony.com", 3071 | "keywords": [ 3072 | "compatibility", 3073 | "polyfill", 3074 | "portable", 3075 | "shim" 3076 | ], 3077 | "support": { 3078 | "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" 3079 | }, 3080 | "funding": [ 3081 | { 3082 | "url": "https://symfony.com/sponsor", 3083 | "type": "custom" 3084 | }, 3085 | { 3086 | "url": "https://github.com/fabpot", 3087 | "type": "github" 3088 | }, 3089 | { 3090 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3091 | "type": "tidelift" 3092 | } 3093 | ], 3094 | "time": "2022-11-03T14:55:06+00:00" 3095 | }, 3096 | { 3097 | "name": "symfony/process", 3098 | "version": "v6.2.10", 3099 | "source": { 3100 | "type": "git", 3101 | "url": "https://github.com/symfony/process.git", 3102 | "reference": "b34cdbc9c5e75d45a3703e63a48ad07aafa8bf2e" 3103 | }, 3104 | "dist": { 3105 | "type": "zip", 3106 | "url": "https://api.github.com/repos/symfony/process/zipball/b34cdbc9c5e75d45a3703e63a48ad07aafa8bf2e", 3107 | "reference": "b34cdbc9c5e75d45a3703e63a48ad07aafa8bf2e", 3108 | "shasum": "" 3109 | }, 3110 | "require": { 3111 | "php": ">=8.1" 3112 | }, 3113 | "type": "library", 3114 | "autoload": { 3115 | "psr-4": { 3116 | "Symfony\\Component\\Process\\": "" 3117 | }, 3118 | "exclude-from-classmap": [ 3119 | "/Tests/" 3120 | ] 3121 | }, 3122 | "notification-url": "https://packagist.org/downloads/", 3123 | "license": [ 3124 | "MIT" 3125 | ], 3126 | "authors": [ 3127 | { 3128 | "name": "Fabien Potencier", 3129 | "email": "fabien@symfony.com" 3130 | }, 3131 | { 3132 | "name": "Symfony Community", 3133 | "homepage": "https://symfony.com/contributors" 3134 | } 3135 | ], 3136 | "description": "Executes commands in sub-processes", 3137 | "homepage": "https://symfony.com", 3138 | "support": { 3139 | "source": "https://github.com/symfony/process/tree/v6.2.10" 3140 | }, 3141 | "funding": [ 3142 | { 3143 | "url": "https://symfony.com/sponsor", 3144 | "type": "custom" 3145 | }, 3146 | { 3147 | "url": "https://github.com/fabpot", 3148 | "type": "github" 3149 | }, 3150 | { 3151 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3152 | "type": "tidelift" 3153 | } 3154 | ], 3155 | "time": "2023-04-18T13:56:57+00:00" 3156 | }, 3157 | { 3158 | "name": "symfony/service-contracts", 3159 | "version": "v3.2.1", 3160 | "source": { 3161 | "type": "git", 3162 | "url": "https://github.com/symfony/service-contracts.git", 3163 | "reference": "a8c9cedf55f314f3a186041d19537303766df09a" 3164 | }, 3165 | "dist": { 3166 | "type": "zip", 3167 | "url": "https://api.github.com/repos/symfony/service-contracts/zipball/a8c9cedf55f314f3a186041d19537303766df09a", 3168 | "reference": "a8c9cedf55f314f3a186041d19537303766df09a", 3169 | "shasum": "" 3170 | }, 3171 | "require": { 3172 | "php": ">=8.1", 3173 | "psr/container": "^2.0" 3174 | }, 3175 | "conflict": { 3176 | "ext-psr": "<1.1|>=2" 3177 | }, 3178 | "suggest": { 3179 | "symfony/service-implementation": "" 3180 | }, 3181 | "type": "library", 3182 | "extra": { 3183 | "branch-alias": { 3184 | "dev-main": "3.3-dev" 3185 | }, 3186 | "thanks": { 3187 | "name": "symfony/contracts", 3188 | "url": "https://github.com/symfony/contracts" 3189 | } 3190 | }, 3191 | "autoload": { 3192 | "psr-4": { 3193 | "Symfony\\Contracts\\Service\\": "" 3194 | }, 3195 | "exclude-from-classmap": [ 3196 | "/Test/" 3197 | ] 3198 | }, 3199 | "notification-url": "https://packagist.org/downloads/", 3200 | "license": [ 3201 | "MIT" 3202 | ], 3203 | "authors": [ 3204 | { 3205 | "name": "Nicolas Grekas", 3206 | "email": "p@tchwork.com" 3207 | }, 3208 | { 3209 | "name": "Symfony Community", 3210 | "homepage": "https://symfony.com/contributors" 3211 | } 3212 | ], 3213 | "description": "Generic abstractions related to writing services", 3214 | "homepage": "https://symfony.com", 3215 | "keywords": [ 3216 | "abstractions", 3217 | "contracts", 3218 | "decoupling", 3219 | "interfaces", 3220 | "interoperability", 3221 | "standards" 3222 | ], 3223 | "support": { 3224 | "source": "https://github.com/symfony/service-contracts/tree/v3.2.1" 3225 | }, 3226 | "funding": [ 3227 | { 3228 | "url": "https://symfony.com/sponsor", 3229 | "type": "custom" 3230 | }, 3231 | { 3232 | "url": "https://github.com/fabpot", 3233 | "type": "github" 3234 | }, 3235 | { 3236 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3237 | "type": "tidelift" 3238 | } 3239 | ], 3240 | "time": "2023-03-01T10:32:47+00:00" 3241 | }, 3242 | { 3243 | "name": "symfony/stopwatch", 3244 | "version": "v6.2.7", 3245 | "source": { 3246 | "type": "git", 3247 | "url": "https://github.com/symfony/stopwatch.git", 3248 | "reference": "f3adc98c1061875dd2edcd45e5b04e63d0e29f8f" 3249 | }, 3250 | "dist": { 3251 | "type": "zip", 3252 | "url": "https://api.github.com/repos/symfony/stopwatch/zipball/f3adc98c1061875dd2edcd45e5b04e63d0e29f8f", 3253 | "reference": "f3adc98c1061875dd2edcd45e5b04e63d0e29f8f", 3254 | "shasum": "" 3255 | }, 3256 | "require": { 3257 | "php": ">=8.1", 3258 | "symfony/service-contracts": "^1|^2|^3" 3259 | }, 3260 | "type": "library", 3261 | "autoload": { 3262 | "psr-4": { 3263 | "Symfony\\Component\\Stopwatch\\": "" 3264 | }, 3265 | "exclude-from-classmap": [ 3266 | "/Tests/" 3267 | ] 3268 | }, 3269 | "notification-url": "https://packagist.org/downloads/", 3270 | "license": [ 3271 | "MIT" 3272 | ], 3273 | "authors": [ 3274 | { 3275 | "name": "Fabien Potencier", 3276 | "email": "fabien@symfony.com" 3277 | }, 3278 | { 3279 | "name": "Symfony Community", 3280 | "homepage": "https://symfony.com/contributors" 3281 | } 3282 | ], 3283 | "description": "Provides a way to profile code", 3284 | "homepage": "https://symfony.com", 3285 | "support": { 3286 | "source": "https://github.com/symfony/stopwatch/tree/v6.2.7" 3287 | }, 3288 | "funding": [ 3289 | { 3290 | "url": "https://symfony.com/sponsor", 3291 | "type": "custom" 3292 | }, 3293 | { 3294 | "url": "https://github.com/fabpot", 3295 | "type": "github" 3296 | }, 3297 | { 3298 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3299 | "type": "tidelift" 3300 | } 3301 | ], 3302 | "time": "2023-02-14T08:44:56+00:00" 3303 | }, 3304 | { 3305 | "name": "symfony/string", 3306 | "version": "v6.2.8", 3307 | "source": { 3308 | "type": "git", 3309 | "url": "https://github.com/symfony/string.git", 3310 | "reference": "193e83bbd6617d6b2151c37fff10fa7168ebddef" 3311 | }, 3312 | "dist": { 3313 | "type": "zip", 3314 | "url": "https://api.github.com/repos/symfony/string/zipball/193e83bbd6617d6b2151c37fff10fa7168ebddef", 3315 | "reference": "193e83bbd6617d6b2151c37fff10fa7168ebddef", 3316 | "shasum": "" 3317 | }, 3318 | "require": { 3319 | "php": ">=8.1", 3320 | "symfony/polyfill-ctype": "~1.8", 3321 | "symfony/polyfill-intl-grapheme": "~1.0", 3322 | "symfony/polyfill-intl-normalizer": "~1.0", 3323 | "symfony/polyfill-mbstring": "~1.0" 3324 | }, 3325 | "conflict": { 3326 | "symfony/translation-contracts": "<2.0" 3327 | }, 3328 | "require-dev": { 3329 | "symfony/error-handler": "^5.4|^6.0", 3330 | "symfony/http-client": "^5.4|^6.0", 3331 | "symfony/intl": "^6.2", 3332 | "symfony/translation-contracts": "^2.0|^3.0", 3333 | "symfony/var-exporter": "^5.4|^6.0" 3334 | }, 3335 | "type": "library", 3336 | "autoload": { 3337 | "files": [ 3338 | "Resources/functions.php" 3339 | ], 3340 | "psr-4": { 3341 | "Symfony\\Component\\String\\": "" 3342 | }, 3343 | "exclude-from-classmap": [ 3344 | "/Tests/" 3345 | ] 3346 | }, 3347 | "notification-url": "https://packagist.org/downloads/", 3348 | "license": [ 3349 | "MIT" 3350 | ], 3351 | "authors": [ 3352 | { 3353 | "name": "Nicolas Grekas", 3354 | "email": "p@tchwork.com" 3355 | }, 3356 | { 3357 | "name": "Symfony Community", 3358 | "homepage": "https://symfony.com/contributors" 3359 | } 3360 | ], 3361 | "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", 3362 | "homepage": "https://symfony.com", 3363 | "keywords": [ 3364 | "grapheme", 3365 | "i18n", 3366 | "string", 3367 | "unicode", 3368 | "utf-8", 3369 | "utf8" 3370 | ], 3371 | "support": { 3372 | "source": "https://github.com/symfony/string/tree/v6.2.8" 3373 | }, 3374 | "funding": [ 3375 | { 3376 | "url": "https://symfony.com/sponsor", 3377 | "type": "custom" 3378 | }, 3379 | { 3380 | "url": "https://github.com/fabpot", 3381 | "type": "github" 3382 | }, 3383 | { 3384 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3385 | "type": "tidelift" 3386 | } 3387 | ], 3388 | "time": "2023-03-20T16:06:02+00:00" 3389 | }, 3390 | { 3391 | "name": "webmozart/assert", 3392 | "version": "1.11.0", 3393 | "source": { 3394 | "type": "git", 3395 | "url": "https://github.com/webmozarts/assert.git", 3396 | "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" 3397 | }, 3398 | "dist": { 3399 | "type": "zip", 3400 | "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", 3401 | "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", 3402 | "shasum": "" 3403 | }, 3404 | "require": { 3405 | "ext-ctype": "*", 3406 | "php": "^7.2 || ^8.0" 3407 | }, 3408 | "conflict": { 3409 | "phpstan/phpstan": "<0.12.20", 3410 | "vimeo/psalm": "<4.6.1 || 4.6.2" 3411 | }, 3412 | "require-dev": { 3413 | "phpunit/phpunit": "^8.5.13" 3414 | }, 3415 | "type": "library", 3416 | "extra": { 3417 | "branch-alias": { 3418 | "dev-master": "1.10-dev" 3419 | } 3420 | }, 3421 | "autoload": { 3422 | "psr-4": { 3423 | "Webmozart\\Assert\\": "src/" 3424 | } 3425 | }, 3426 | "notification-url": "https://packagist.org/downloads/", 3427 | "license": [ 3428 | "MIT" 3429 | ], 3430 | "authors": [ 3431 | { 3432 | "name": "Bernhard Schussek", 3433 | "email": "bschussek@gmail.com" 3434 | } 3435 | ], 3436 | "description": "Assertions to validate method input/output with nice error messages.", 3437 | "keywords": [ 3438 | "assert", 3439 | "check", 3440 | "validate" 3441 | ], 3442 | "support": { 3443 | "issues": "https://github.com/webmozarts/assert/issues", 3444 | "source": "https://github.com/webmozarts/assert/tree/1.11.0" 3445 | }, 3446 | "time": "2022-06-03T18:03:27+00:00" 3447 | }, 3448 | { 3449 | "name": "webmozart/path-util", 3450 | "version": "2.3.0", 3451 | "source": { 3452 | "type": "git", 3453 | "url": "https://github.com/webmozart/path-util.git", 3454 | "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725" 3455 | }, 3456 | "dist": { 3457 | "type": "zip", 3458 | "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725", 3459 | "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725", 3460 | "shasum": "" 3461 | }, 3462 | "require": { 3463 | "php": ">=5.3.3", 3464 | "webmozart/assert": "~1.0" 3465 | }, 3466 | "require-dev": { 3467 | "phpunit/phpunit": "^4.6", 3468 | "sebastian/version": "^1.0.1" 3469 | }, 3470 | "type": "library", 3471 | "extra": { 3472 | "branch-alias": { 3473 | "dev-master": "2.3-dev" 3474 | } 3475 | }, 3476 | "autoload": { 3477 | "psr-4": { 3478 | "Webmozart\\PathUtil\\": "src/" 3479 | } 3480 | }, 3481 | "notification-url": "https://packagist.org/downloads/", 3482 | "license": [ 3483 | "MIT" 3484 | ], 3485 | "authors": [ 3486 | { 3487 | "name": "Bernhard Schussek", 3488 | "email": "bschussek@gmail.com" 3489 | } 3490 | ], 3491 | "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.", 3492 | "support": { 3493 | "issues": "https://github.com/webmozart/path-util/issues", 3494 | "source": "https://github.com/webmozart/path-util/tree/2.3.0" 3495 | }, 3496 | "abandoned": "symfony/filesystem", 3497 | "time": "2015-12-17T08:42:14+00:00" 3498 | } 3499 | ], 3500 | "aliases": [], 3501 | "minimum-stability": "beta", 3502 | "stability-flags": [], 3503 | "prefer-stable": true, 3504 | "prefer-lowest": false, 3505 | "platform": { 3506 | "php": "^8.0" 3507 | }, 3508 | "platform-dev": [], 3509 | "plugin-api-version": "2.3.0" 3510 | } 3511 | -------------------------------------------------------------------------------- /phpstan-baseline.php: -------------------------------------------------------------------------------- 1 | getName() . ' Pack'; 27 | $packFolderRegex = str_replace(' ', '\h', $packFolderName); 28 | 29 | $zip = new \ZipArchive(); 30 | $outputFilePath = Path::join($plugin->getDataFolder(), $plugin->getName() . '.mcpack'); 31 | $zip->open($outputFilePath, \ZipArchive::CREATE | \ZipArchive::OVERWRITE); 32 | foreach($plugin->getResources() as $resource){ 33 | if($resource->isFile() && str_contains($resource->getPathname(), $packFolderName)){ 34 | $found = preg_replace("/.*[\/\\\\]{$packFolderRegex}[\/\\\\].*/U", '', $resource->getPathname()); 35 | if(!is_string($found)){ 36 | throw new \InvalidArgumentException("Invalid path: $packFolderName"); 37 | } 38 | $relativePath = Path::normalize($found); 39 | $plugin->saveResource(Path::join($packFolderName, $relativePath), false); 40 | $zip->addFile(Path::join($plugin->getDataFolder(), $packFolderName, $relativePath), $relativePath); 41 | } 42 | } 43 | $zip->close(); 44 | Filesystem::recursiveUnlink(Path::join($plugin->getDataFolder(), $packFolderName)); // clean up 45 | 46 | $newFileName = (new ZippedResourcePack($outputFilePath))->getPackName() . '.mcpack'; 47 | assert(rename($outputFilePath, $newFileName)); 48 | 49 | return new ZippedResourcePack(Path::join($plugin->getDataFolder(), $newFileName)); 50 | } 51 | 52 | final public static function generatePackFromPath(PluginBase $plugin, string $inputFilePath, ?string $packFolderName = null) : ZippedResourcePack{ 53 | $packFolderName ??= $plugin->getName() . ' Pack'; 54 | $packFolderRegex = str_replace(' ', '\h', $packFolderName); 55 | 56 | $zip = new \ZipArchive(); 57 | $outputFilePath = Path::join($plugin->getDataFolder(), $plugin->getName() . '.mcpack'); 58 | $zip->open($outputFilePath, \ZipArchive::CREATE | \ZipArchive::OVERWRITE); 59 | /** 60 | * @var \SplFileInfo $resource 61 | */ 62 | foreach(new \RecursiveDirectoryIterator($inputFilePath, 63 | \FilesystemIterator::KEY_AS_PATHNAME | \FilesystemIterator::CURRENT_AS_FILEINFO | \FilesystemIterator::SKIP_DOTS) as 64 | $resource 65 | ){ 66 | if($resource->isFile() && str_contains($resource->getPathname(), $packFolderName)){ 67 | $found = preg_replace("/.*[\/\\\\]{$packFolderRegex}[\/\\\\].*/U", '', $resource->getPathname()); 68 | if(!is_string($found)){ 69 | throw new \InvalidArgumentException("Invalid path: $packFolderName"); 70 | } 71 | $relativePath = Path::normalize($found); 72 | copy(Path::join($packFolderName, $relativePath), Path::join($plugin->getDataFolder(), $packFolderName, $relativePath)); 73 | $zip->addFile(Path::join($plugin->getDataFolder(), $packFolderName, $relativePath), $relativePath); 74 | } 75 | } 76 | $zip->close(); 77 | Filesystem::recursiveUnlink(Path::join($plugin->getDataFolder(), $packFolderName)); // clean up 78 | 79 | $newFileName = (new ZippedResourcePack($outputFilePath))->getPackName() . '.mcpack'; 80 | Utils::assumeNotFalse(rename($outputFilePath, $newFileName)); // TODO: does the ZippedResourcePack get freed before this happens? 81 | 82 | return new ZippedResourcePack($newFileName); 83 | } 84 | 85 | final public static function registerResourcePack(ResourcePack $resourcePack, ?string $encryptionKey = null) : void{ 86 | $manager = Server::getInstance()->getResourcePackManager(); 87 | $manager->setResourceStack($manager->getResourceStack() + [$resourcePack]); 88 | $manager->setPackEncryptionKey($resourcePack->getPackId(), $encryptionKey); 89 | } 90 | 91 | final public static function unregisterResourcePack(ResourcePack $resourcePack) : void{ 92 | $manager = Server::getInstance()->getResourcePackManager(); 93 | $stack = $manager->getResourceStack(); 94 | $key = array_search($resourcePack, $stack, true); 95 | if($key !== false){ 96 | unset($stack[$key]); 97 | $manager->setResourceStack($stack); 98 | $manager->setPackEncryptionKey($resourcePack->getPackId(), null); 99 | } 100 | } 101 | 102 | } 103 | -------------------------------------------------------------------------------- /virion.yml: -------------------------------------------------------------------------------- 1 | name: libCustomPack 2 | version: 1.0.1 3 | antigen: libCustomPack 4 | api: 5 | - 4.12.3 6 | - 5.0.0 7 | author: "jasonw4331" --------------------------------------------------------------------------------