diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 23c3a77..051b804 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -37,11 +37,11 @@ A clear and concise description of what you expected to happen. If applicable, add screenshots to help explain your problem. **Details** - - Phalcon version - - PHP Version: (`php -v`) - - Operating System: - - Server: Nginx | Apache | Other - - Other related info (Database, table schema): +- Phalcon version +- PHP Version: (`php -v`) +- Operating System: +- Server: Nginx | Apache | Other +- Other related info (Database, table schema): **Additional context** Add any other context about the problem here. diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 54aba57..37ac6bc 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -4,11 +4,10 @@ Hello! **In raising this pull request, I confirm the following:** -- [ ] I have read and understood the [Contributing Guidelines](https://github.com/phalcon/traits/blob/master/CONTRIBUTING.md) +- [ ] I have read and understood the Contributing Guidelines - [ ] I have checked that another pull request for this purpose does not exist - [ ] I wrote some tests for this PR - [ ] I have updated the relevant CHANGELOG -- [ ] I have created a PR for the [documentation](https://github.com/phalcon/docs) about this change Small description of change: diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml deleted file mode 100644 index 8b39dc7..0000000 --- a/.github/workflows/build-and-test.yml +++ /dev/null @@ -1,139 +0,0 @@ -name: Phalcon CI - -on: - schedule: - - cron: '0 2 * * *' # Daily at 02:00 runs only on default branch - push: - paths-ignore: - - '**.md' - - '**.txt' - pull_request: - -env: - LANG: en_US.UTF-8 - LANGUAGE: en_US.UTF-8 - LC_ALL: en_US.UTF-8 - -jobs: - phpcs: - name: Validate Tests code style - if: "!contains(github.event.head_commit.message, 'ci skip')" - - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v2 - - - name: Run PHP_CodeSniffer - run: docker run --rm -v $(pwd):/data cytopia/phpcs --standard=./config/phpcs.xml - -# stubs: -# name: PHP ${{ matrix.php-versions }} Stubs validation -# if: "!contains(github.event.head_commit.message, 'ci skip')" -# -# runs-on: ubuntu-20.04 -# -# strategy: -# fail-fast: false -# matrix: -# php-versions: ['7.4', '8.0'] -# -# steps: -# - uses: actions/checkout@v2 -# -# - name: Validate stubs -# if: always() -# run: vendor/bin/psalm ide/ -# - generate: - name: Setup Environments - # To prevent build a particular commit use - # git commit -m "......... [ci skip]" - if: "!contains(github.event.head_commit.message, 'ci skip')" - - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v2 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: '8.0' - extensions: mbstring, intl, json, psr - tools: pecl - env: - COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Setup APT Repositories - run: | - # We don't need this at all, and our - # builds often fails because Microsoft - # servers are unstable or even offline. - sudo rm -f /etc/apt/sources.list.d/dotnetdev.list - sudo rm -f /etc/apt/sources.list.d/azure*.list - - - name: Install System Dependencies - run: | - sudo apt-get update --quiet --yes 1>/dev/null - - build-and-test-linux: - name: PHP ${{ matrix.php-versions }} Test on ${{ matrix.operating-system }} - # To prevent build a particular commit use - # git commit -m "......... [ci skip]" - # git commit -m "......... [linux skip] - to skip only linux builds" - if: "!contains(github.event.head_commit.message, '[linux skip]') || !contains(github.event.head_commit.message, 'ci skip')" - - needs: [generate] - runs-on: ${{ matrix.operating-system }} - strategy: - fail-fast: false - matrix: - operating-system: [ubuntu-20.04] - php-versions: ['7.4', '8.0'] - - steps: - - name: Checkout Code - uses: actions/checkout@v2 - with: - fetch-depth: 1 - - - name: Validate composer - run: composer validate --no-check-all --no-check-publish - - - name: Get Composer Cache Directory - id: composer-cache - run: echo "::set-output name=dir::$(composer config cache-files-dir)" - - - name: Setup Composer Cache - uses: actions/cache@v2 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }} - restore-keys: ${{ runner.os }}-composer- - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php-versions }} - extensions: mbstring, json, yaml - ini-values: apc.enable_cli=on, session.save_path=/tmp - tools: pecl - env: - COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Install Composer Packages - run: composer install --prefer-dist - - - name: Setup Tests - run: | - cp config/.env.example .env - vendor/bin/codecept build - - - name: Run Unit Tests - if: always() - run: vendor/bin/codecept run --coverage-xml=coverage-unit-${{ matrix.php-versions }}.xml --ext DotReporter unit - - - name: Upload Code Coverage on ${{ matrix.php-versions }} for unit - uses: codecov/codecov-action@v2 - with: - token: ${{ secrets.CODECOV_TOKEN }} - directory: ./tests/_output/ diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..0550144 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,198 @@ +# This file is part of Phalcon. +# +# (c) Phalcon Team +# +# For the full copyright and license information, please view +# the LICENSE file that was distributed with this source code. + +name: "Phalcon CI" + +on: + schedule: + - cron: '0 2 * * *' # Daily at 02:00 runs only on default branch + push: + paths-ignore: + - '**.md' + - '**.txt' + pull_request: + workflow_dispatch: + +env: + fail-fast: true + + # For tests + LANG: en_US.UTF-8 + LANGUAGE: en_US.UTF-8 + LC_ALL: en_US.UTF-8 + + # Windows specific + TOOLS_DIR: 'C:\tools' + + # PHP extensions required by Composer + EXTENSIONS: intl, json, mbstring, msgpack + +permissions: { } +jobs: + # PHP CodeSniffer inspection + phpcs: + name: "Validate Tests code style" + if: "!contains(github.event.head_commit.message, 'ci skip')" + + # needs: [ generate ] + + permissions: + contents: read + + runs-on: ubuntu-20.04 + + strategy: + fail-fast: true + matrix: + php: + - '8.0' + - '8.1' + - '8.2' + steps: + - uses: actions/checkout@v3 + + - name: "Setup PHP" + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + extensions: ${{ env.EXTENSIONS }} + ini-values: apc.enable_cli=on, session.save_path=/tmp + tools: pecl, composer:v2 + env: + COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: "Install development dependencies with Composer" + uses: "ramsey/composer-install@v2" + with: + composer-options: "--prefer-dist" + + - name: "PHPCS" + run: | + vendor/bin/phpcs --standard=./phpcs.xml + + + unit-tests: + needs: phpcs + + permissions: + contents: read # to fetch code (actions/checkout) + + name: Unit tests / PHP-${{ matrix.php }}-${{ matrix.ts }}-${{ matrix.name }} + runs-on: ${{ matrix.os }} + + strategy: + matrix: + php: + - '8.0' + - '8.1' + - '8.2' + ts: + - 'nts' + - 'ts' + name: + - ubuntu-gcc + - macos-clang + # matrix names should be in next format: + # {php}-{ts}-{os.name}-{compiler}-{arch} + include: + # Linux + - { name: ubuntu-gcc, os: ubuntu-20.04, compiler: gcc } + # macOS + - { name: macos-clang, os: macos-11, compiler: clang } + # Windows + - { php: '8.0', ts: 'ts', arch: 'x64', name: 'windows2019-vs16', os: 'windows-2019', compiler: 'vs16' } + - { php: '8.0', ts: 'nts', arch: 'x64', name: 'windows2019-vs16', os: 'windows-2019', compiler: 'vs16' } + - { php: '8.1', ts: 'ts', arch: 'x64', name: 'windows2019-vs16', os: 'windows-2019', compiler: 'vs16' } + - { php: '8.1', ts: 'nts', arch: 'x64', name: 'windows2019-vs16', os: 'windows-2019', compiler: 'vs16' } + + steps: + - uses: actions/checkout@v3 + - name: "Setup platform specific environment" + shell: pwsh + run: | + git config --global core.autocrlf false + $SessionSavePath = if ("${{ runner.os }}" -eq "Windows") { 'C:\temp' } else { '/tmp' } + Write-Output "SESSION_SAVE_PATH=$SessionSavePath" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + + - name: "Setup PHP" + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + extensions: ${{ env.EXTENSIONS }} + ini-values: apc.enable_cli=on, session.save_path=${{ env.SESSION_SAVE_PATH }} + tools: pecl, composer:v2 + coverage: pcov + env: + PHPTS: ${{ matrix.ts }} + COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: "Validate composer" + run: composer validate --no-check-all --no-check-publish + + - name: "Install development dependencies with Composer" + uses: "ramsey/composer-install@v2" + with: + composer-options: "--prefer-dist" + + - name: "Setup Tests" + shell: bash + run: | + cp config/.env.example .env + vendor/bin/codecept build + + - name: "Run Unit Tests" + if: always() + run: | + vendor/bin/codecept run --coverage-xml=coverage.xml --ext DotReporter unit + + - name: "Upload coverage file artifact" + uses: "actions/upload-artifact@v3" + with: + name: "unit-${{ matrix.php }}-${{ matrix.ts }}-${{ matrix.name }}.coverage" + path: "tests/_output/coverage.xml" + + upload-coverage: + permissions: + contents: read + + name: "Upload coverage to Codecov/Codacy" + runs-on: "ubuntu-22.04" + needs: + - "unit-tests" + + steps: + - name: "Checkout" + uses: "actions/checkout@v3" + with: + fetch-depth: 2 + + - name: "Display structure of downloaded files" + run: | + mkdir -p reports + + - name: "Download coverage files" + uses: "actions/download-artifact@v3" + with: + path: "reports" + + - name: "Display structure of downloaded files" + run: ls -R + working-directory: reports + + - name: "Upload to Codecov" + uses: "codecov/codecov-action@v3" + with: + token: ${{ secrets.CODECOV_TOKEN }} + directory: reports + fail_ci_if_error: true + verbose: true + + - name: "Upload to Codacy" + uses: codacy/codacy-coverage-reporter-action@v1 + with: + project-token: ${{ secrets.CODACY_PROJECT_TOKEN }} + coverage-reports: reports/unit-8.0-ts-ubuntu-gcc.coverage/coverage.xml, reports/unit-8.1-ts-ubuntu-gcc.coverage/coverage.xml, reports/unit-8.2-ts-ubuntu-gcc.coverage/coverage.xml diff --git a/CHANGELOG.md b/CHANGELOG.md index a8fdc6b..f5bd3d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## 2.0.0 (2023-01-01) + +### Feat + +- **php/initrait**: added ini trait and relevant tests + ## 1.3.0 (2022-10-04) ### Feat diff --git a/README.md b/README.md index 9f30119..0901072 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ ## Phalcon Traits -[![Phalcon CI](https://github.com/phalcon/traits/actions/workflows/build-and-test.yml/badge.svg?branch=1.x)](https://github.com/niden/traits/actions/workflows/build-and-test.yml) +[![Phalcon CI](https://github.com/phalcon/traits/actions/workflows/main.yml/badge.svg?branch=1.x)](https://github.com/phalcon/traits/actions/workflows/main.yml) [![PDS Skeleton](https://img.shields.io/badge/pds-skeleton-blue.svg?style=flat-square)](https://github.com/php-pds/skeleton) [![codecov](https://codecov.io/gh/phalcon/traits/branch/1.x/graph/badge.svg?token=I4bgs0E168)](https://codecov.io/gh/phalcon/traits) -[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/) +[![Codacy Badge](https://app.codacy.com/project/badge/Grade/049cb6c1c06342579ebffb8e78ab9dd1)](https://www.codacy.com/gh/phalcon/traits/dashboard?utm_source=github.com&utm_medium=referral&utm_content=phalcon/traits&utm_campaign=Badge_Grade) This package contains traits with methods that are used for Phalcon v6 onward. diff --git a/codeception.yml b/codeception.yml index 0be4c88..ad02fe3 100644 --- a/codeception.yml +++ b/codeception.yml @@ -1,14 +1,12 @@ actor_suffix: Tester paths: - # where the modules stored - tests: tests + tests : tests # where the tests stored + data : tests/_data # directory for fixture data + support: tests/_support # directory for support code + output : tests/_output # directory for output + envs : tests/_envs # directory for environment configuration log: tests/_output - # directory for fixture data - data: tests/_data - # directory for custom modules (helpers) - support: tests/_support - envs: tests/_envs settings: colors: true diff --git a/composer.json b/composer.json index 8138980..c9a5692 100644 --- a/composer.json +++ b/composer.json @@ -8,7 +8,7 @@ ], "license": "MIT", "require": { - "php": ">=7.4 <9.0", + "php": ">=8.0 <9.0", "ext-json": "*", "ext-mbstring": "*" }, @@ -29,14 +29,14 @@ "sort-packages": true }, "require-dev": { - "codeception/codeception": "^4.0", - "codeception/module-asserts": "^1.0.0", - "codeception/module-filesystem": "^1.0", - "codeception/module-phpbrowser": "^1.0.0", + "codeception/codeception": "^5.0", + "codeception/module-asserts": "^3.0", + "codeception/module-filesystem": "^3.0", + "codeception/module-phpbrowser": "^3.0", "pds/skeleton": "^1.0", - "phpstan/phpstan": "^0.12", - "squizlabs/php_codesniffer": "^3.4", - "vimeo/psalm": "^4.10", - "vlucas/phpdotenv": "^5.3" + "phpstan/phpstan": "^1.9", + "squizlabs/php_codesniffer": "^3.7", + "vimeo/psalm": "^5.4", + "vlucas/phpdotenv": "^5.5" } } diff --git a/composer.lock b/composer.lock index 7954f44..be0beb6 100644 --- a/composer.lock +++ b/composer.lock @@ -4,21 +4,21 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "c20db4ce01d222612775a082af5107a1", + "content-hash": "6a36ff9ed6e459f22e77d2afc196e6d7", "packages": [], "packages-dev": [ { "name": "amphp/amp", - "version": "v2.6.1", + "version": "v2.6.2", "source": { "type": "git", "url": "https://github.com/amphp/amp.git", - "reference": "c5fc66a78ee38d7ac9195a37bacaf940eb3f65ae" + "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/amp/zipball/c5fc66a78ee38d7ac9195a37bacaf940eb3f65ae", - "reference": "c5fc66a78ee38d7ac9195a37bacaf940eb3f65ae", + "url": "https://api.github.com/repos/amphp/amp/zipball/9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", + "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", "shasum": "" }, "require": { @@ -40,13 +40,13 @@ } }, "autoload": { - "psr-4": { - "Amp\\": "lib" - }, "files": [ "lib/functions.php", "lib/Internal/functions.php" - ] + ], + "psr-4": { + "Amp\\": "lib" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -71,7 +71,7 @@ } ], "description": "A non-blocking concurrency framework for PHP applications.", - "homepage": "http://amphp.org/amp", + "homepage": "https://amphp.org/amp", "keywords": [ "async", "asynchronous", @@ -86,7 +86,7 @@ "support": { "irc": "irc://irc.freenode.org/amphp", "issues": "https://github.com/amphp/amp/issues", - "source": "https://github.com/amphp/amp/tree/v2.6.1" + "source": "https://github.com/amphp/amp/tree/v2.6.2" }, "funding": [ { @@ -94,7 +94,7 @@ "type": "github" } ], - "time": "2021-09-23T18:43:08+00:00" + "time": "2022-02-20T17:52:18+00:00" }, { "name": "amphp/byte-stream", @@ -129,12 +129,12 @@ } }, "autoload": { - "psr-4": { - "Amp\\ByteStream\\": "lib" - }, "files": [ "lib/functions.php" - ] + ], + "psr-4": { + "Amp\\ByteStream\\": "lib" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -238,66 +238,87 @@ }, { "name": "codeception/codeception", - "version": "4.1.22", + "version": "5.0.6", "source": { "type": "git", "url": "https://github.com/Codeception/Codeception.git", - "reference": "9777ec3690ceedc4bce2ed13af7af4ca4ee3088f" + "reference": "994ca6c553eb126fefda6eb5375d2ad1b93d4795" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Codeception/zipball/9777ec3690ceedc4bce2ed13af7af4ca4ee3088f", - "reference": "9777ec3690ceedc4bce2ed13af7af4ca4ee3088f", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/994ca6c553eb126fefda6eb5375d2ad1b93d4795", + "reference": "994ca6c553eb126fefda6eb5375d2ad1b93d4795", "shasum": "" }, "require": { - "behat/gherkin": "^4.4.0", - "codeception/lib-asserts": "^1.0", - "codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.1.1 | ^9.0", - "codeception/stub": "^2.0 | ^3.0", + "behat/gherkin": "^4.6.2", + "codeception/lib-asserts": "2.0.*@dev", + "codeception/stub": "^4.1", "ext-curl": "*", "ext-json": "*", "ext-mbstring": "*", - "guzzlehttp/psr7": "^1.4 | ^2.0", - "php": ">=5.6.0 <9.0", - "symfony/console": ">=2.7 <6.0", - "symfony/css-selector": ">=2.7 <6.0", - "symfony/event-dispatcher": ">=2.7 <6.0", - "symfony/finder": ">=2.7 <6.0", - "symfony/yaml": ">=2.7 <6.0" + "php": "^8.0", + "phpunit/php-code-coverage": "^9.2", + "phpunit/php-text-template": "^2.0", + "phpunit/php-timer": "^5.0.3", + "phpunit/phpunit": "^9.5", + "psy/psysh": "^0.11.2", + "sebastian/comparator": "^4.0.5", + "sebastian/diff": "^4.0.3", + "symfony/console": ">=4.4.24 <7.0", + "symfony/css-selector": ">=4.4.24 <7.0", + "symfony/event-dispatcher": ">=4.4.24 <7.0", + "symfony/finder": ">=4.4.24 <7.0", + "symfony/var-dumper": ">=4.4.24 < 7.0", + "symfony/yaml": ">=4.4.24 <7.0" + }, + "conflict": { + "codeception/lib-innerbrowser": "<3.1", + "codeception/module-filesystem": "<3.0", + "codeception/module-phpbrowser": "<2.5" + }, + "replace": { + "codeception/phpunit-wrapper": "*" }, "require-dev": { - "codeception/module-asserts": "1.*@dev", - "codeception/module-cli": "1.*@dev", - "codeception/module-db": "1.*@dev", - "codeception/module-filesystem": "1.*@dev", - "codeception/module-phpbrowser": "1.*@dev", - "codeception/specify": "~0.3", + "codeception/lib-innerbrowser": "*@dev", + "codeception/lib-web": "^1.0", + "codeception/module-asserts": "*@dev", + "codeception/module-cli": "*@dev", + "codeception/module-db": "*@dev", + "codeception/module-filesystem": "*@dev", + "codeception/module-phpbrowser": "*@dev", "codeception/util-universalframework": "*@dev", - "monolog/monolog": "~1.8", - "squizlabs/php_codesniffer": "~2.0", - "symfony/process": ">=2.7 <6.0", - "vlucas/phpdotenv": "^2.0 | ^3.0 | ^4.0 | ^5.0" + "ext-simplexml": "*", + "jetbrains/phpstorm-attributes": "^1.0", + "symfony/dotenv": ">=4.4.24 <7.0", + "symfony/process": ">=4.4.24 <7.0", + "vlucas/phpdotenv": "^5.1" }, "suggest": { "codeception/specify": "BDD-style code blocks", "codeception/verify": "BDD-style assertions", - "hoa/console": "For interactive console functionality", + "ext-simplexml": "For loading params from XML files", "stecman/symfony-console-completion": "For BASH autocompletion", - "symfony/phpunit-bridge": "For phpunit-bridge support" + "symfony/dotenv": "For loading params from .env files", + "symfony/phpunit-bridge": "For phpunit-bridge support", + "vlucas/phpdotenv": "For loading params from .env files" }, "bin": [ "codecept" ], "type": "library", - "extra": { - "branch-alias": [] - }, "autoload": { + "files": [ + "functions.php" + ], "psr-4": { "Codeception\\": "src/Codeception", "Codeception\\Extension\\": "ext" - } + }, + "classmap": [ + "src/PHPUnit/TestCase.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -306,12 +327,12 @@ "authors": [ { "name": "Michael Bodnarchuk", - "email": "davert@mail.ua", - "homepage": "http://codegyre.com" + "email": "davert.ua@gmail.com", + "homepage": "https://codeception.com" } ], "description": "BDD-style testing framework", - "homepage": "http://codeception.com/", + "homepage": "https://codeception.com/", "keywords": [ "BDD", "TDD", @@ -321,7 +342,7 @@ ], "support": { "issues": "https://github.com/Codeception/Codeception/issues", - "source": "https://github.com/Codeception/Codeception/tree/4.1.22" + "source": "https://github.com/Codeception/Codeception/tree/5.0.6" }, "funding": [ { @@ -329,26 +350,26 @@ "type": "open_collective" } ], - "time": "2021-08-06T17:15:34+00:00" + "time": "2022-12-28T13:41:37+00:00" }, { "name": "codeception/lib-asserts", - "version": "1.13.2", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/Codeception/lib-asserts.git", - "reference": "184231d5eab66bc69afd6b9429344d80c67a33b6" + "reference": "78c55044611437988b54e1daecf13f247a742bf8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/lib-asserts/zipball/184231d5eab66bc69afd6b9429344d80c67a33b6", - "reference": "184231d5eab66bc69afd6b9429344d80c67a33b6", + "url": "https://api.github.com/repos/Codeception/lib-asserts/zipball/78c55044611437988b54e1daecf13f247a742bf8", + "reference": "78c55044611437988b54e1daecf13f247a742bf8", "shasum": "" }, "require": { - "codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.0.3 | ^9.0", + "codeception/phpunit-wrapper": "^7.7.1 | ^8.0.3 | ^9.0", "ext-dom": "*", - "php": ">=5.6.0 <9.0" + "php": "^7.4 | ^8.0" }, "type": "library", "autoload": { @@ -381,35 +402,34 @@ ], "support": { "issues": "https://github.com/Codeception/lib-asserts/issues", - "source": "https://github.com/Codeception/lib-asserts/tree/1.13.2" + "source": "https://github.com/Codeception/lib-asserts/tree/2.0.1" }, - "time": "2020-10-21T16:26:20+00:00" + "time": "2022-09-27T06:17:39+00:00" }, { "name": "codeception/lib-innerbrowser", - "version": "1.5.1", + "version": "3.1.3", "source": { "type": "git", "url": "https://github.com/Codeception/lib-innerbrowser.git", - "reference": "31b4b56ad53c3464fcb2c0a14d55a51a201bd3c2" + "reference": "10482f7e34c0537bf5b87bc82a3d65a1842a8b4f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/lib-innerbrowser/zipball/31b4b56ad53c3464fcb2c0a14d55a51a201bd3c2", - "reference": "31b4b56ad53c3464fcb2c0a14d55a51a201bd3c2", + "url": "https://api.github.com/repos/Codeception/lib-innerbrowser/zipball/10482f7e34c0537bf5b87bc82a3d65a1842a8b4f", + "reference": "10482f7e34c0537bf5b87bc82a3d65a1842a8b4f", "shasum": "" }, "require": { - "codeception/codeception": "4.*@dev", + "codeception/codeception": "^5.0", + "codeception/lib-web": "^1.0.1", "ext-dom": "*", "ext-json": "*", "ext-mbstring": "*", - "php": ">=5.6.0 <9.0", - "symfony/browser-kit": ">=2.7 <6.0", - "symfony/dom-crawler": ">=2.7 <6.0" - }, - "conflict": { - "codeception/codeception": "<4.0" + "php": "^8.0", + "phpunit/phpunit": "^9.5", + "symfony/browser-kit": "^4.4.24 || ^5.4 || ^6.0", + "symfony/dom-crawler": "^4.4.30 || ^5.4 || ^6.0" }, "require-dev": { "codeception/util-universalframework": "dev-master" @@ -428,7 +448,7 @@ { "name": "Michael Bodnarchuk", "email": "davert@mail.ua", - "homepage": "http://codegyre.com" + "homepage": "https://codegyre.com" }, { "name": "Gintautas Miselis" @@ -441,31 +461,84 @@ ], "support": { "issues": "https://github.com/Codeception/lib-innerbrowser/issues", - "source": "https://github.com/Codeception/lib-innerbrowser/tree/1.5.1" + "source": "https://github.com/Codeception/lib-innerbrowser/tree/3.1.3" + }, + "time": "2022-10-03T15:33:34+00:00" + }, + { + "name": "codeception/lib-web", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/Codeception/lib-web.git", + "reference": "91e35c5a849479a626f79daf4754ca4ba4e3227f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/lib-web/zipball/91e35c5a849479a626f79daf4754ca4ba4e3227f", + "reference": "91e35c5a849479a626f79daf4754ca4ba4e3227f", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "guzzlehttp/psr7": "^2.0", + "php": "^8.0", + "symfony/css-selector": ">=4.4.24 <7.0" + }, + "conflict": { + "codeception/codeception": "<5.0.0-alpha3" + }, + "require-dev": { + "php-webdriver/webdriver": "^1.12", + "phpunit/phpunit": "^9.5 | ^10.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gintautas Miselis" + } + ], + "description": "Library containing files used by module-webdriver and lib-innerbrowser or module-phpbrowser", + "homepage": "https://codeception.com/", + "keywords": [ + "codeception" + ], + "support": { + "issues": "https://github.com/Codeception/lib-web/issues", + "source": "https://github.com/Codeception/lib-web/tree/1.0.1" }, - "time": "2021-08-30T15:21:42+00:00" + "time": "2022-04-09T08:17:46+00:00" }, { "name": "codeception/module-asserts", - "version": "1.3.1", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/Codeception/module-asserts.git", - "reference": "59374f2fef0cabb9e8ddb53277e85cdca74328de" + "reference": "1b6b150b30586c3614e7e5761b31834ed7968603" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/module-asserts/zipball/59374f2fef0cabb9e8ddb53277e85cdca74328de", - "reference": "59374f2fef0cabb9e8ddb53277e85cdca74328de", + "url": "https://api.github.com/repos/Codeception/module-asserts/zipball/1b6b150b30586c3614e7e5761b31834ed7968603", + "reference": "1b6b150b30586c3614e7e5761b31834ed7968603", "shasum": "" }, "require": { "codeception/codeception": "*@dev", - "codeception/lib-asserts": "^1.13.1", - "php": ">=5.6.0 <9.0" + "codeception/lib-asserts": "^2.0", + "php": "^8.0" }, "conflict": { - "codeception/codeception": "<4.0" + "codeception/codeception": "<5.0" }, "type": "library", "autoload": { @@ -498,31 +571,31 @@ ], "support": { "issues": "https://github.com/Codeception/module-asserts/issues", - "source": "https://github.com/Codeception/module-asserts/tree/1.3.1" + "source": "https://github.com/Codeception/module-asserts/tree/3.0.0" }, - "time": "2020-10-21T16:48:15+00:00" + "time": "2022-02-16T19:48:08+00:00" }, { "name": "codeception/module-filesystem", - "version": "1.0.3", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/Codeception/module-filesystem.git", - "reference": "781be167fb1557bfc9b61e0a4eac60a32c534ec1" + "reference": "326ef1c1edf90f52ceec2965ff240a8d93c1ba63" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/module-filesystem/zipball/781be167fb1557bfc9b61e0a4eac60a32c534ec1", - "reference": "781be167fb1557bfc9b61e0a4eac60a32c534ec1", + "url": "https://api.github.com/repos/Codeception/module-filesystem/zipball/326ef1c1edf90f52ceec2965ff240a8d93c1ba63", + "reference": "326ef1c1edf90f52ceec2965ff240a8d93c1ba63", "shasum": "" }, "require": { - "codeception/codeception": "^4.0", - "php": ">=5.6.0 <9.0", - "symfony/finder": ">=2.7 <6.0" + "codeception/codeception": "*@dev", + "php": "^8.0", + "symfony/finder": "^4.4 || ^5.4 || ^6.0" }, "conflict": { - "codeception/codeception": "<4.0" + "codeception/codeception": "<5.0" }, "type": "library", "autoload": { @@ -543,42 +616,47 @@ } ], "description": "Codeception module for testing local filesystem", - "homepage": "http://codeception.com/", + "homepage": "https://codeception.com/", "keywords": [ "codeception", "filesystem" ], "support": { "issues": "https://github.com/Codeception/module-filesystem/issues", - "source": "https://github.com/Codeception/module-filesystem/tree/1.0.3" + "source": "https://github.com/Codeception/module-filesystem/tree/3.0.0" }, - "time": "2020-10-24T14:46:40+00:00" + "time": "2022-03-14T18:48:55+00:00" }, { "name": "codeception/module-phpbrowser", - "version": "1.0.2", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/Codeception/module-phpbrowser.git", - "reference": "770a6be4160a5c0c08d100dd51bff35f6056bbf1" + "reference": "8e1fdcc85e182e6b61399b35a35a562862c3be62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/module-phpbrowser/zipball/770a6be4160a5c0c08d100dd51bff35f6056bbf1", - "reference": "770a6be4160a5c0c08d100dd51bff35f6056bbf1", + "url": "https://api.github.com/repos/Codeception/module-phpbrowser/zipball/8e1fdcc85e182e6b61399b35a35a562862c3be62", + "reference": "8e1fdcc85e182e6b61399b35a35a562862c3be62", "shasum": "" }, "require": { - "codeception/codeception": "^4.0", - "codeception/lib-innerbrowser": "^1.3", - "guzzlehttp/guzzle": "^6.3|^7.0", - "php": ">=5.6.0 <9.0" + "codeception/codeception": "*@dev", + "codeception/lib-innerbrowser": "*@dev", + "ext-json": "*", + "guzzlehttp/guzzle": "^7.4", + "php": "^8.0", + "symfony/browser-kit": "^5.4 || ^6.0" }, "conflict": { - "codeception/codeception": "<4.0" + "codeception/codeception": "<5.0", + "codeception/lib-innerbrowser": "<3.0" }, "require-dev": { - "codeception/module-rest": "^1.0" + "aws/aws-sdk-php": "^3.199", + "codeception/module-rest": "^2.0 || *@dev", + "ext-curl": "*" }, "suggest": { "codeception/phpbuiltinserver": "Start and stop PHP built-in web server for your tests" @@ -602,7 +680,7 @@ } ], "description": "Codeception module for testing web application over HTTP", - "homepage": "http://codeception.com/", + "homepage": "https://codeception.com/", "keywords": [ "codeception", "functional-testing", @@ -610,75 +688,33 @@ ], "support": { "issues": "https://github.com/Codeception/module-phpbrowser/issues", - "source": "https://github.com/Codeception/module-phpbrowser/tree/1.0.2" - }, - "time": "2020-10-24T15:29:28+00:00" - }, - { - "name": "codeception/phpunit-wrapper", - "version": "9.0.6", - "source": { - "type": "git", - "url": "https://github.com/Codeception/phpunit-wrapper.git", - "reference": "b0c06abb3181eedca690170f7ed0fd26a70bfacc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/b0c06abb3181eedca690170f7ed0fd26a70bfacc", - "reference": "b0c06abb3181eedca690170f7ed0fd26a70bfacc", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "phpunit/phpunit": "^9.0" - }, - "require-dev": { - "codeception/specify": "*", - "consolidation/robo": "^3.0.0-alpha3", - "vlucas/phpdotenv": "^3.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Codeception\\PHPUnit\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Davert", - "email": "davert.php@resend.cc" - }, - { - "name": "Naktibalda" - } - ], - "description": "PHPUnit classes used by Codeception", - "support": { - "issues": "https://github.com/Codeception/phpunit-wrapper/issues", - "source": "https://github.com/Codeception/phpunit-wrapper/tree/9.0.6" + "source": "https://github.com/Codeception/module-phpbrowser/tree/3.0.0" }, - "time": "2020-12-28T13:59:47+00:00" + "time": "2022-02-19T18:22:27+00:00" }, { "name": "codeception/stub", - "version": "3.7.0", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/Codeception/Stub.git", - "reference": "468dd5fe659f131fc997f5196aad87512f9b1304" + "reference": "58751aed08a68ae960a952fd3fe74ee9a56cdb1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Stub/zipball/468dd5fe659f131fc997f5196aad87512f9b1304", - "reference": "468dd5fe659f131fc997f5196aad87512f9b1304", + "url": "https://api.github.com/repos/Codeception/Stub/zipball/58751aed08a68ae960a952fd3fe74ee9a56cdb1b", + "reference": "58751aed08a68ae960a952fd3fe74ee9a56cdb1b", "shasum": "" }, "require": { - "phpunit/phpunit": "^8.4 | ^9.0" + "php": "^7.4 | ^8.0", + "phpunit/phpunit": "^8.4 | ^9.0 | ^10.0 | 10.0.x-dev" + }, + "conflict": { + "codeception/codeception": "<5.0.6" + }, + "require-dev": { + "consolidation/robo": "^3.0" }, "type": "library", "autoload": { @@ -693,22 +729,22 @@ "description": "Flexible Stub wrapper for PHPUnit's Mock Builder", "support": { "issues": "https://github.com/Codeception/Stub/issues", - "source": "https://github.com/Codeception/Stub/tree/3.7.0" + "source": "https://github.com/Codeception/Stub/tree/4.1.0" }, - "time": "2020-07-03T15:54:43+00:00" + "time": "2022-12-27T18:41:43+00:00" }, { "name": "composer/package-versions-deprecated", - "version": "1.11.99.4", + "version": "1.11.99.5", "source": { "type": "git", "url": "https://github.com/composer/package-versions-deprecated.git", - "reference": "b174585d1fe49ceed21928a945138948cb394600" + "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b174585d1fe49ceed21928a945138948cb394600", - "reference": "b174585d1fe49ceed21928a945138948cb394600", + "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b4f54f74ef3453349c24a845d22392cd31e65f1d", + "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d", "shasum": "" }, "require": { @@ -752,7 +788,78 @@ "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", "support": { "issues": "https://github.com/composer/package-versions-deprecated/issues", - "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.4" + "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.5" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-01-17T14:14:24+00:00" + }, + { + "name": "composer/pcre", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/composer/pcre.git", + "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", + "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.3", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Pcre\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "PCRE wrapping library that offers type-safe preg_* replacements.", + "keywords": [ + "PCRE", + "preg", + "regex", + "regular expression" + ], + "support": { + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/3.1.0" }, "funding": [ { @@ -768,27 +875,27 @@ "type": "tidelift" } ], - "time": "2021-09-13T08:41:34+00:00" + "time": "2022-11-17T09:50:14+00:00" }, { "name": "composer/semver", - "version": "3.2.6", + "version": "3.3.2", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "83e511e247de329283478496f7a1e114c9517506" + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/83e511e247de329283478496f7a1e114c9517506", - "reference": "83e511e247de329283478496f7a1e114c9517506", + "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", "shasum": "" }, "require": { "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^0.12.54", + "phpstan/phpstan": "^1.4", "symfony/phpunit-bridge": "^4.2 || ^5" }, "type": "library", @@ -833,7 +940,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.2.6" + "source": "https://github.com/composer/semver/tree/3.3.2" }, "funding": [ { @@ -849,29 +956,31 @@ "type": "tidelift" } ], - "time": "2021-10-25T11:34:17+00:00" + "time": "2022-04-01T19:23:25+00:00" }, { "name": "composer/xdebug-handler", - "version": "2.0.2", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339" + "reference": "ced299686f41dce890debac69273b47ffe98a40c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/84674dd3a7575ba617f5a76d7e9e29a7d3891339", - "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c", + "reference": "ced299686f41dce890debac69273b47ffe98a40c", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0 || ^8.0", + "composer/pcre": "^1 || ^2 || ^3", + "php": "^7.2.5 || ^8.0", "psr/log": "^1 || ^2 || ^3" }, "require-dev": { - "phpstan/phpstan": "^0.12.55", - "symfony/phpunit-bridge": "^4.2 || ^5" + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^6.0" }, "type": "library", "autoload": { @@ -897,7 +1006,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/2.0.2" + "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" }, "funding": [ { @@ -913,7 +1022,7 @@ "type": "tidelift" } ], - "time": "2021-07-31T17:03:58+00:00" + "time": "2022-02-25T21:32:43+00:00" }, { "name": "dnoegel/php-xdg-base-dir", @@ -954,29 +1063,30 @@ }, { "name": "doctrine/instantiator", - "version": "1.4.0", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b", + "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^8.0", + "doctrine/coding-standard": "^9 || ^11", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpbench/phpbench": "^0.16 || ^1", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.30 || ^5.4" }, "type": "library", "autoload": { @@ -1003,7 +1113,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + "source": "https://github.com/doctrine/instantiator/tree/1.5.0" }, "funding": [ { @@ -1019,7 +1129,7 @@ "type": "tidelift" } ], - "time": "2020-11-10T18:47:58+00:00" + "time": "2022-12-30T00:15:36+00:00" }, { "name": "felixfbecker/advanced-json-rpc", @@ -1068,16 +1178,16 @@ }, { "name": "felixfbecker/language-server-protocol", - "version": "1.5.1", + "version": "v1.5.2", "source": { "type": "git", "url": "https://github.com/felixfbecker/php-language-server-protocol.git", - "reference": "9d846d1f5cf101deee7a61c8ba7caa0a975cd730" + "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/9d846d1f5cf101deee7a61c8ba7caa0a975cd730", - "reference": "9d846d1f5cf101deee7a61c8ba7caa0a975cd730", + "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/6e82196ffd7c62f7794d778ca52b69feec9f2842", + "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842", "shasum": "" }, "require": { @@ -1118,30 +1228,91 @@ ], "support": { "issues": "https://github.com/felixfbecker/php-language-server-protocol/issues", - "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/1.5.1" + "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/v1.5.2" + }, + "time": "2022-03-02T22:36:06+00:00" + }, + { + "name": "fidry/cpu-core-counter", + "version": "0.4.1", + "source": { + "type": "git", + "url": "https://github.com/theofidry/cpu-core-counter.git", + "reference": "79261cc280aded96d098e1b0e0ba0c4881b432c2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/79261cc280aded96d098e1b0e0ba0c4881b432c2", + "reference": "79261cc280aded96d098e1b0e0ba0c4881b432c2", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "fidry/makefile": "^0.2.0", + "phpstan/extension-installer": "^1.2.0", + "phpstan/phpstan": "^1.9.2", + "phpstan/phpstan-deprecation-rules": "^1.0.0", + "phpstan/phpstan-phpunit": "^1.2.2", + "phpstan/phpstan-strict-rules": "^1.4.4", + "phpunit/phpunit": "^9.5.26 || ^8.5.31", + "theofidry/php-cs-fixer-config": "^1.0", + "webmozarts/strict-phpunit": "^7.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Fidry\\CpuCoreCounter\\": "src/" + } }, - "time": "2021-02-22T14:02:09+00:00" + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Théo FIDRY", + "email": "theo.fidry@gmail.com" + } + ], + "description": "Tiny utility to get the number of CPU cores.", + "keywords": [ + "CPU", + "core" + ], + "support": { + "issues": "https://github.com/theofidry/cpu-core-counter/issues", + "source": "https://github.com/theofidry/cpu-core-counter/tree/0.4.1" + }, + "funding": [ + { + "url": "https://github.com/theofidry", + "type": "github" + } + ], + "time": "2022-12-16T22:01:02+00:00" }, { "name": "graham-campbell/result-type", - "version": "v1.0.3", + "version": "v1.1.0", "source": { "type": "git", "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "296c015dc30ec4322168c5ad3ee5cc11dae827ac" + "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/296c015dc30ec4322168c5ad3ee5cc11dae827ac", - "reference": "296c015dc30ec4322168c5ad3ee5cc11dae827ac", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/a878d45c1914464426dc94da61c9e1d36ae262a8", + "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8", "shasum": "" }, "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9" }, "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" + "phpunit/phpunit": "^8.5.28 || ^9.5.21" }, "type": "library", "autoload": { @@ -1156,7 +1327,8 @@ "authors": [ { "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk" + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" } ], "description": "An Implementation Of The Result Type", @@ -1169,7 +1341,7 @@ ], "support": { "issues": "https://github.com/GrahamCampbell/Result-Type/issues", - "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.0.3" + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.0" }, "funding": [ { @@ -1181,38 +1353,38 @@ "type": "tidelift" } ], - "time": "2021-10-17T19:48:54+00:00" + "time": "2022-07-30T15:56:11+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.4.0", + "version": "7.5.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "868b3571a039f0ebc11ac8f344f4080babe2cb94" + "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/868b3571a039f0ebc11ac8f344f4080babe2cb94", - "reference": "868b3571a039f0ebc11ac8f344f4080babe2cb94", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b50a2a1251152e43f6a37f0fa053e730a67d25ba", + "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba", "shasum": "" }, "require": { "ext-json": "*", "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.1", + "guzzlehttp/psr7": "^1.9 || ^2.4", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", - "symfony/deprecation-contracts": "^2.2" + "symfony/deprecation-contracts": "^2.2 || ^3.0" }, "provide": { "psr/http-client-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", + "bamarni/composer-bin-plugin": "^1.8.1", "ext-curl": "*", "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", + "phpunit/phpunit": "^8.5.29 || ^9.5.23", "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { @@ -1222,17 +1394,21 @@ }, "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, "branch-alias": { - "dev-master": "7.4-dev" + "dev-master": "7.5-dev" } }, "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, "files": [ "src/functions_include.php" - ] + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1289,7 +1465,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.4.0" + "source": "https://github.com/guzzle/guzzle/tree/7.5.0" }, "funding": [ { @@ -1305,20 +1481,20 @@ "type": "tidelift" } ], - "time": "2021-10-18T09:52:00+00:00" + "time": "2022-08-28T15:39:27+00:00" }, { "name": "guzzlehttp/promises", - "version": "1.5.1", + "version": "1.5.2", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" + "reference": "b94b2807d85443f9719887892882d0329d1e2598" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", + "url": "https://api.github.com/repos/guzzle/promises/zipball/b94b2807d85443f9719887892882d0329d1e2598", + "reference": "b94b2807d85443f9719887892882d0329d1e2598", "shasum": "" }, "require": { @@ -1334,12 +1510,12 @@ } }, "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, "files": [ "src/functions_include.php" - ] + ], + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1373,7 +1549,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.5.1" + "source": "https://github.com/guzzle/promises/tree/1.5.2" }, "funding": [ { @@ -1389,20 +1565,20 @@ "type": "tidelift" } ], - "time": "2021-10-22T20:56:57+00:00" + "time": "2022-08-28T14:55:35+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.1.0", + "version": "2.4.3", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" + "reference": "67c26b443f348a51926030c83481b85718457d3d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/67c26b443f348a51926030c83481b85718457d3d", + "reference": "67c26b443f348a51926030c83481b85718457d3d", "shasum": "" }, "require": { @@ -1416,17 +1592,21 @@ "psr/http-message-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", + "bamarni/composer-bin-plugin": "^1.8.1", "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" + "phpunit/phpunit": "^8.5.29 || ^9.5.23" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" }, "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, "branch-alias": { - "dev-master": "2.1-dev" + "dev-master": "2.4-dev" } }, "autoload": { @@ -1488,7 +1668,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.1.0" + "source": "https://github.com/guzzle/psr7/tree/2.4.3" }, "funding": [ { @@ -1504,41 +1684,42 @@ "type": "tidelift" } ], - "time": "2021-10-06T17:43:30+00:00" + "time": "2022-10-26T14:07:24+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.10.2", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, - "replace": { - "myclabs/deep-copy": "self.version" + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" }, "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, "files": [ "src/DeepCopy/deep_copy.php" - ] + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1554,7 +1735,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" }, "funding": [ { @@ -1562,20 +1743,20 @@ "type": "tidelift" } ], - "time": "2020-11-13T09:40:50+00:00" + "time": "2022-03-03T13:19:32+00:00" }, { "name": "netresearch/jsonmapper", - "version": "v4.0.0", + "version": "v4.1.0", "source": { "type": "git", "url": "https://github.com/cweiske/jsonmapper.git", - "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d" + "reference": "cfa81ea1d35294d64adb9c68aa4cb9e92400e53f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d", - "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d", + "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/cfa81ea1d35294d64adb9c68aa4cb9e92400e53f", + "reference": "cfa81ea1d35294d64adb9c68aa4cb9e92400e53f", "shasum": "" }, "require": { @@ -1611,22 +1792,22 @@ "support": { "email": "cweiske@cweiske.de", "issues": "https://github.com/cweiske/jsonmapper/issues", - "source": "https://github.com/cweiske/jsonmapper/tree/v4.0.0" + "source": "https://github.com/cweiske/jsonmapper/tree/v4.1.0" }, - "time": "2020-12-01T19:48:11+00:00" + "time": "2022-12-08T20:46:14+00:00" }, { "name": "nikic/php-parser", - "version": "v4.13.1", + "version": "v4.15.2", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "63a79e8daa781cac14e5195e63ed8ae231dd10fd" + "reference": "f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/63a79e8daa781cac14e5195e63ed8ae231dd10fd", - "reference": "63a79e8daa781cac14e5195e63ed8ae231dd10fd", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc", + "reference": "f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc", "shasum": "" }, "require": { @@ -1667,81 +1848,28 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.2" }, - "time": "2021-11-03T20:52:16+00:00" + "time": "2022-11-12T15:38:23+00:00" }, { - "name": "openlss/lib-array2xml", + "name": "pds/skeleton", "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/nullivex/lib-array2xml.git", - "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90" + "url": "https://github.com/php-pds/skeleton.git", + "reference": "95e476e5d629eadacbd721c5a9553e537514a231" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nullivex/lib-array2xml/zipball/a91f18a8dfc69ffabe5f9b068bc39bb202c81d90", - "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90", + "url": "https://api.github.com/repos/php-pds/skeleton/zipball/95e476e5d629eadacbd721c5a9553e537514a231", + "reference": "95e476e5d629eadacbd721c5a9553e537514a231", "shasum": "" }, - "require": { - "php": ">=5.3.2" - }, - "type": "library", - "autoload": { - "psr-0": { - "LSS": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Bryan Tong", - "email": "bryan@nullivex.com", - "homepage": "https://www.nullivex.com" - }, - { - "name": "Tony Butler", - "email": "spudz76@gmail.com", - "homepage": "https://www.nullivex.com" - } - ], - "description": "Array2XML conversion library credit to lalit.org", - "homepage": "https://www.nullivex.com", - "keywords": [ - "array", - "array conversion", - "xml", - "xml conversion" - ], - "support": { - "issues": "https://github.com/nullivex/lib-array2xml/issues", - "source": "https://github.com/nullivex/lib-array2xml/tree/master" - }, - "time": "2019-03-29T20:06:56+00:00" - }, - { - "name": "pds/skeleton", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-pds/skeleton.git", - "reference": "95e476e5d629eadacbd721c5a9553e537514a231" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-pds/skeleton/zipball/95e476e5d629eadacbd721c5a9553e537514a231", - "reference": "95e476e5d629eadacbd721c5a9553e537514a231", - "shasum": "" - }, - "bin": [ - "bin/pds-skeleton" - ], - "type": "standard", + "bin": [ + "bin/pds-skeleton" + ], + "type": "standard", "autoload": { "psr-4": { "Pds\\Skeleton\\": "src/" @@ -1821,16 +1949,16 @@ }, { "name": "phar-io/version", - "version": "3.1.0", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "bae7c545bef187884426f042434e561ab1ddb182" + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", - "reference": "bae7c545bef187884426f042434e561ab1ddb182", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", "shasum": "" }, "require": { @@ -1866,9 +1994,9 @@ "description": "Library for handling version information and constraints", "support": { "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.1.0" + "source": "https://github.com/phar-io/version/tree/3.2.1" }, - "time": "2021-02-23T14:00:09+00:00" + "time": "2022-02-21T01:04:05+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -1982,25 +2110,30 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.5.1", + "version": "1.6.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae" + "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/a12f7e301eb7258bb68acd89d4aefa05c2906cae", - "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/48f445a408c131e38cab1c235aa6d2bb7a0bb20d", + "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", + "php": "^7.4 || ^8.0", "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { "ext-tokenizer": "*", - "psalm/phar": "^4.8" + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^9.5", + "rector/rector": "^0.13.9", + "vimeo/psalm": "^4.25" }, "type": "library", "extra": { @@ -2026,35 +2159,39 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.5.1" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.2" }, - "time": "2021-10-02T14:08:47+00:00" + "time": "2022-10-14T12:47:21+00:00" }, { "name": "phpoption/phpoption", - "version": "1.8.0", + "version": "1.9.0", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "5455cb38aed4523f99977c4a12ef19da4bfe2a28" + "reference": "dc5ff11e274a90cc1c743f66c9ad700ce50db9ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/5455cb38aed4523f99977c4a12ef19da4bfe2a28", - "reference": "5455cb38aed4523f99977c4a12ef19da4bfe2a28", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dc5ff11e274a90cc1c743f66c9ad700ce50db9ab", + "reference": "dc5ff11e274a90cc1c743f66c9ad700ce50db9ab", "shasum": "" }, "require": { - "php": "^7.0 || ^8.0" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.0.20 || ^8.5.19 || ^9.5.8" + "bamarni/composer-bin-plugin": "^1.8", + "phpunit/phpunit": "^8.5.28 || ^9.5.21" }, "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, "branch-alias": { - "dev-master": "1.8-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -2069,11 +2206,13 @@ "authors": [ { "name": "Johannes M. Schmitt", - "email": "schmittjoh@gmail.com" + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" }, { "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk" + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" } ], "description": "Option Type for PHP", @@ -2085,7 +2224,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.8.0" + "source": "https://github.com/schmittjoh/php-option/tree/1.9.0" }, "funding": [ { @@ -2097,91 +2236,24 @@ "type": "tidelift" } ], - "time": "2021-08-28T21:27:29+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "1.14.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e", - "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/1.14.0" - }, - "time": "2021-09-10T09:02:12+00:00" + "time": "2022-07-30T15:51:26+00:00" }, { "name": "phpstan/phpstan", - "version": "0.12.99", + "version": "1.9.4", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "b4d40f1d759942f523be267a1bab6884f46ca3f7" + "reference": "d03bccee595e2146b7c9d174486b84f4dc61b0f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/b4d40f1d759942f523be267a1bab6884f46ca3f7", - "reference": "b4d40f1d759942f523be267a1bab6884f46ca3f7", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/d03bccee595e2146b7c9d174486b84f4dc61b0f2", + "reference": "d03bccee595e2146b7c9d174486b84f4dc61b0f2", "shasum": "" }, "require": { - "php": "^7.1|^8.0" + "php": "^7.2|^8.0" }, "conflict": { "phpstan/phpstan-shim": "*" @@ -2191,11 +2263,6 @@ "phpstan.phar" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.12-dev" - } - }, "autoload": { "files": [ "bootstrap.php" @@ -2206,9 +2273,13 @@ "MIT" ], "description": "PHPStan - PHP Static Analysis Tool", + "keywords": [ + "dev", + "static analysis" + ], "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/0.12.99" + "source": "https://github.com/phpstan/phpstan/tree/1.9.4" }, "funding": [ { @@ -2219,36 +2290,32 @@ "url": "https://github.com/phpstan", "type": "github" }, - { - "url": "https://www.patreon.com/phpstan", - "type": "patreon" - }, { "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", "type": "tidelift" } ], - "time": "2021-09-12T20:09:55+00:00" + "time": "2022-12-17T13:33:52+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.8", + "version": "9.2.23", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "cf04e88a2e3c56fc1a65488afd493325b4c1bc3e" + "reference": "9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/cf04e88a2e3c56fc1a65488afd493325b4c1bc3e", - "reference": "cf04e88a2e3c56fc1a65488afd493325b4c1bc3e", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c", + "reference": "9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", + "nikic/php-parser": "^4.14", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -2297,7 +2364,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.8" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.23" }, "funding": [ { @@ -2305,20 +2372,20 @@ "type": "github" } ], - "time": "2021-10-30T08:01:38+00:00" + "time": "2022-12-28T12:41:10+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "3.0.5", + "version": "3.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", "shasum": "" }, "require": { @@ -2357,7 +2424,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" }, "funding": [ { @@ -2365,7 +2432,7 @@ "type": "github" } ], - "time": "2020-09-28T05:57:25+00:00" + "time": "2021-12-02T12:48:52+00:00" }, { "name": "phpunit/php-invoker", @@ -2550,16 +2617,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.10", + "version": "9.5.27", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "c814a05837f2edb0d1471d6e3f4ab3501ca3899a" + "reference": "a2bc7ffdca99f92d959b3f2270529334030bba38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c814a05837f2edb0d1471d6e3f4ab3501ca3899a", - "reference": "c814a05837f2edb0d1471d6e3f4ab3501ca3899a", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a2bc7ffdca99f92d959b3f2270529334030bba38", + "reference": "a2bc7ffdca99f92d959b3f2270529334030bba38", "shasum": "" }, "require": { @@ -2574,28 +2641,23 @@ "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", + "phpunit/php-code-coverage": "^9.2.13", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", "phpunit/php-text-template": "^2.0.3", "phpunit/php-timer": "^5.0.2", "sebastian/cli-parser": "^1.0.1", "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", + "sebastian/comparator": "^4.0.8", "sebastian/diff": "^4.0.3", "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", + "sebastian/exporter": "^4.0.5", "sebastian/global-state": "^5.0.1", "sebastian/object-enumerator": "^4.0.3", "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", + "sebastian/type": "^3.2", "sebastian/version": "^3.0.2" }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, "suggest": { "ext-soap": "*", "ext-xdebug": "*" @@ -2610,11 +2672,11 @@ } }, "autoload": { - "classmap": [ - "src/" - ], "files": [ "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2637,38 +2699,47 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.10" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.27" }, "funding": [ { - "url": "https://phpunit.de/donate.html", + "url": "https://phpunit.de/sponsors.html", "type": "custom" }, { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" } ], - "time": "2021-09-25T07:38:51+00:00" + "time": "2022-12-09T07:31:23+00:00" }, { "name": "psr/container", - "version": "1.1.2", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", - "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", "shasum": "" }, "require": { "php": ">=7.4.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { "psr-4": { "Psr\\Container\\": "src/" @@ -2695,9 +2766,9 @@ ], "support": { "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.2" + "source": "https://github.com/php-fig/container/tree/2.0.2" }, - "time": "2021-11-05T16:50:12+00:00" + "time": "2021-11-05T16:47:00+00:00" }, { "name": "psr/event-dispatcher", @@ -2911,30 +2982,30 @@ }, { "name": "psr/log", - "version": "1.1.4", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "3.x-dev" } }, "autoload": { "psr-4": { - "Psr\\Log\\": "Psr/Log/" + "Psr\\Log\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2955,9 +3026,85 @@ "psr-3" ], "support": { - "source": "https://github.com/php-fig/log/tree/1.1.4" + "source": "https://github.com/php-fig/log/tree/3.0.0" }, - "time": "2021-05-03T11:20:27+00:00" + "time": "2021-07-14T16:46:02+00:00" + }, + { + "name": "psy/psysh", + "version": "v0.11.10", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "e9eadffbed9c9deb5426fd107faae0452bf20a36" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/e9eadffbed9c9deb5426fd107faae0452bf20a36", + "reference": "e9eadffbed9c9deb5426fd107faae0452bf20a36", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-tokenizer": "*", + "nikic/php-parser": "^4.0 || ^3.1", + "php": "^8.0 || ^7.0.8", + "symfony/console": "^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^6.0 || ^5.0 || ^4.0 || ^3.4" + }, + "conflict": { + "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.2" + }, + "suggest": { + "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", + "ext-pdo-sqlite": "The doc command requires SQLite to work.", + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", + "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history." + }, + "bin": [ + "bin/psysh" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.11.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Psy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Justin Hileman", + "email": "justin@justinhileman.info", + "homepage": "http://justinhileman.com" + } + ], + "description": "An interactive shell for modern PHP.", + "homepage": "http://psysh.org", + "keywords": [ + "REPL", + "console", + "interactive", + "shell" + ], + "support": { + "issues": "https://github.com/bobthecow/psysh/issues", + "source": "https://github.com/bobthecow/psysh/tree/v0.11.10" + }, + "time": "2022-12-23T17:47:18+00:00" }, { "name": "ralouphie/getallheaders", @@ -3172,16 +3319,16 @@ }, { "name": "sebastian/comparator", - "version": "4.0.6", + "version": "4.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + "reference": "fa0f136dd2334583309d32b62544682ee972b51a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a", "shasum": "" }, "require": { @@ -3234,7 +3381,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" }, "funding": [ { @@ -3242,7 +3389,7 @@ "type": "github" } ], - "time": "2020-10-26T15:49:45+00:00" + "time": "2022-09-14T12:41:17+00:00" }, { "name": "sebastian/complexity", @@ -3369,16 +3516,16 @@ }, { "name": "sebastian/environment", - "version": "5.1.3", + "version": "5.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", "shasum": "" }, "require": { @@ -3420,7 +3567,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" }, "funding": [ { @@ -3428,20 +3575,20 @@ "type": "github" } ], - "time": "2020-09-28T05:52:38+00:00" + "time": "2022-04-03T09:37:03+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", "shasum": "" }, "require": { @@ -3497,7 +3644,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" }, "funding": [ { @@ -3505,20 +3652,20 @@ "type": "github" } ], - "time": "2021-11-11T14:18:36+00:00" + "time": "2022-09-14T06:03:37+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.3", + "version": "5.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", "shasum": "" }, "require": { @@ -3561,7 +3708,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" }, "funding": [ { @@ -3569,7 +3716,7 @@ "type": "github" } ], - "time": "2021-06-11T13:31:12+00:00" + "time": "2022-02-14T08:28:10+00:00" }, { "name": "sebastian/lines-of-code", @@ -3860,28 +4007,28 @@ }, { "name": "sebastian/type", - "version": "2.3.4", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" + "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", + "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", "shasum": "" }, "require": { "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^9.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -3904,7 +4051,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/2.3.4" + "source": "https://github.com/sebastianbergmann/type/tree/3.2.0" }, "funding": [ { @@ -3912,7 +4059,7 @@ "type": "github" } ], - "time": "2021-06-15T12:49:02+00:00" + "time": "2022-09-12T14:47:03+00:00" }, { "name": "sebastian/version", @@ -3967,18 +4114,82 @@ ], "time": "2020-09-28T06:39:44+00:00" }, + { + "name": "spatie/array-to-xml", + "version": "2.17.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/array-to-xml.git", + "reference": "5cbec9c6ab17e320c58a259f0cebe88bde4a7c46" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/5cbec9c6ab17e320c58a259f0cebe88bde4a7c46", + "reference": "5cbec9c6ab17e320c58a259f0cebe88bde4a7c46", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "php": "^7.4|^8.0" + }, + "require-dev": { + "mockery/mockery": "^1.2", + "pestphp/pest": "^1.21", + "phpunit/phpunit": "^9.0", + "spatie/pest-plugin-snapshots": "^1.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\ArrayToXml\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://freek.dev", + "role": "Developer" + } + ], + "description": "Convert an array to xml", + "homepage": "https://github.com/spatie/array-to-xml", + "keywords": [ + "array", + "convert", + "xml" + ], + "support": { + "source": "https://github.com/spatie/array-to-xml/tree/2.17.1" + }, + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + }, + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2022-12-26T08:22:07+00:00" + }, { "name": "squizlabs/php_codesniffer", - "version": "3.6.1", + "version": "3.7.1", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "f268ca40d54617c6e06757f83f699775c9b3ff2e" + "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/f268ca40d54617c6e06757f83f699775c9b3ff2e", - "reference": "f268ca40d54617c6e06757f83f699775c9b3ff2e", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/1359e176e9307e906dc3d890bcc9603ff6d90619", + "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619", "shasum": "" }, "require": { @@ -4021,32 +4232,31 @@ "source": "https://github.com/squizlabs/PHP_CodeSniffer", "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" }, - "time": "2021-10-11T04:00:11+00:00" + "time": "2022-06-18T07:21:10+00:00" }, { "name": "symfony/browser-kit", - "version": "v5.3.4", + "version": "v6.0.11", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "c1e3f64fcc631c96e2c5843b666db66679ced11c" + "reference": "92e4b59bf2ef0f7a01d2620c4c87108e5c143d36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/c1e3f64fcc631c96e2c5843b666db66679ced11c", - "reference": "c1e3f64fcc631c96e2c5843b666db66679ced11c", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/92e4b59bf2ef0f7a01d2620c4c87108e5c143d36", + "reference": "92e4b59bf2ef0f7a01d2620c4c87108e5c143d36", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/dom-crawler": "^4.4|^5.0", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.0.2", + "symfony/dom-crawler": "^5.4|^6.0" }, "require-dev": { - "symfony/css-selector": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0" + "symfony/css-selector": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/mime": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0" }, "suggest": { "symfony/process": "" @@ -4077,7 +4287,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v5.3.4" + "source": "https://github.com/symfony/browser-kit/tree/v6.0.11" }, "funding": [ { @@ -4093,50 +4303,46 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:40:44+00:00" + "time": "2022-07-27T15:50:26+00:00" }, { "name": "symfony/console", - "version": "v5.3.10", + "version": "v6.0.17", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "d4e409d9fbcfbf71af0e5a940abb7b0b4bad0bd3" + "reference": "2ab307342a7233b9a260edd5ef94087aaca57d18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/d4e409d9fbcfbf71af0e5a940abb7b0b4bad0bd3", - "reference": "d4e409d9fbcfbf71af0e5a940abb7b0b4bad0bd3", + "url": "https://api.github.com/repos/symfony/console/zipball/2ab307342a7233b9a260edd5ef94087aaca57d18", + "reference": "2ab307342a7233b9a260edd5ef94087aaca57d18", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "php": ">=8.0.2", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2", - "symfony/string": "^5.1" + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.4|^6.0" }, "conflict": { - "psr/log": ">=3", - "symfony/dependency-injection": "<4.4", - "symfony/dotenv": "<5.1", - "symfony/event-dispatcher": "<4.4", - "symfony/lock": "<4.4", - "symfony/process": "<4.4" + "symfony/dependency-injection": "<5.4", + "symfony/dotenv": "<5.4", + "symfony/event-dispatcher": "<5.4", + "symfony/lock": "<5.4", + "symfony/process": "<5.4" }, "provide": { - "psr/log-implementation": "1.0|2.0" + "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { - "psr/log": "^1|^2", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", - "symfony/var-dumper": "^4.4|^5.0" + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/lock": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/var-dumper": "^5.4|^6.0" }, "suggest": { "psr/log": "For using the console logger", @@ -4176,7 +4382,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.3.10" + "source": "https://github.com/symfony/console/tree/v6.0.17" }, "funding": [ { @@ -4192,25 +4398,24 @@ "type": "tidelift" } ], - "time": "2021-10-26T09:30:15+00:00" + "time": "2022-12-28T14:21:34+00:00" }, { "name": "symfony/css-selector", - "version": "v5.3.4", + "version": "v6.0.17", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "7fb120adc7f600a59027775b224c13a33530dd90" + "reference": "3e526b732295b5d4c16c38d557b74ba8498a92b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/7fb120adc7f600a59027775b224c13a33530dd90", - "reference": "7fb120adc7f600a59027775b224c13a33530dd90", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/3e526b732295b5d4c16c38d557b74ba8498a92b4", + "reference": "3e526b732295b5d4c16c38d557b74ba8498a92b4", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.0.2" }, "type": "library", "autoload": { @@ -4242,7 +4447,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v5.3.4" + "source": "https://github.com/symfony/css-selector/tree/v6.0.17" }, "funding": [ { @@ -4258,29 +4463,29 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:38:00+00:00" + "time": "2022-12-28T14:21:34+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v2.4.0", + "version": "v3.0.2", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627" + "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", + "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.0.2" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" + "dev-main": "3.0-dev" }, "thanks": { "name": "symfony/contracts", @@ -4309,7 +4514,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.2" }, "funding": [ { @@ -4325,35 +4530,33 @@ "type": "tidelift" } ], - "time": "2021-03-23T23:28:01+00:00" + "time": "2022-01-02T09:55:41+00:00" }, { "name": "symfony/dom-crawler", - "version": "v5.3.7", + "version": "v6.0.17", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "c7eef3a60ccfdd8eafe07f81652e769ac9c7146c" + "reference": "281d13dfd1a2ac4ca8be8c60b0af208ffdac95fe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/c7eef3a60ccfdd8eafe07f81652e769ac9c7146c", - "reference": "c7eef3a60ccfdd8eafe07f81652e769ac9c7146c", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/281d13dfd1a2ac4ca8be8c60b0af208ffdac95fe", + "reference": "281d13dfd1a2ac4ca8be8c60b0af208ffdac95fe", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "php": ">=8.0.2", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16" + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { "masterminds/html5": "<2.6" }, "require-dev": { "masterminds/html5": "^2.6", - "symfony/css-selector": "^4.4|^5.0" + "symfony/css-selector": "^5.4|^6.0" }, "suggest": { "symfony/css-selector": "" @@ -4384,7 +4587,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v5.3.7" + "source": "https://github.com/symfony/dom-crawler/tree/v6.0.17" }, "funding": [ { @@ -4400,44 +4603,42 @@ "type": "tidelift" } ], - "time": "2021-08-29T19:32:13+00:00" + "time": "2022-12-22T17:53:58+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v5.3.7", + "version": "v6.0.17", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "ce7b20d69c66a20939d8952b617506a44d102130" + "reference": "42b3985aa07837c9df36013ec5b965e9f2d480bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/ce7b20d69c66a20939d8952b617506a44d102130", - "reference": "ce7b20d69c66a20939d8952b617506a44d102130", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/42b3985aa07837c9df36013ec5b965e9f2d480bc", + "reference": "42b3985aa07837c9df36013ec5b965e9f2d480bc", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/event-dispatcher-contracts": "^2", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.0.2", + "symfony/event-dispatcher-contracts": "^2|^3" }, "conflict": { - "symfony/dependency-injection": "<4.4" + "symfony/dependency-injection": "<5.4" }, "provide": { "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0" + "symfony/event-dispatcher-implementation": "2.0|3.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/error-handler": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^4.4|^5.0" + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/error-handler": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/stopwatch": "^5.4|^6.0" }, "suggest": { "symfony/dependency-injection": "", @@ -4469,7 +4670,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v5.3.7" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.17" }, "funding": [ { @@ -4485,24 +4686,24 @@ "type": "tidelift" } ], - "time": "2021-08-04T21:20:46+00:00" + "time": "2022-12-14T15:52:41+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v2.4.0", + "version": "v3.0.2", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "69fee1ad2332a7cbab3aca13591953da9cdb7a11" + "reference": "7bc61cc2db649b4637d331240c5346dcc7708051" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/69fee1ad2332a7cbab3aca13591953da9cdb7a11", - "reference": "69fee1ad2332a7cbab3aca13591953da9cdb7a11", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7bc61cc2db649b4637d331240c5346dcc7708051", + "reference": "7bc61cc2db649b4637d331240c5346dcc7708051", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.0.2", "psr/event-dispatcher": "^1" }, "suggest": { @@ -4511,7 +4712,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" + "dev-main": "3.0-dev" }, "thanks": { "name": "symfony/contracts", @@ -4548,7 +4749,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.0.2" }, "funding": [ { @@ -4564,30 +4765,31 @@ "type": "tidelift" } ], - "time": "2021-03-23T23:28:01+00:00" + "time": "2022-01-02T09:55:41+00:00" }, { - "name": "symfony/finder", - "version": "v5.3.7", + "name": "symfony/filesystem", + "version": "v6.0.13", "source": { "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "a10000ada1e600d109a6c7632e9ac42e8bf2fb93" + "url": "https://github.com/symfony/filesystem.git", + "reference": "3adca49133bd055ebe6011ed1e012be3c908af79" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/a10000ada1e600d109a6c7632e9ac42e8bf2fb93", - "reference": "a10000ada1e600d109a6c7632e9ac42e8bf2fb93", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/3adca49133bd055ebe6011ed1e012be3c908af79", + "reference": "3adca49133bd055ebe6011ed1e012be3c908af79", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.0.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Finder\\": "" + "Symfony\\Component\\Filesystem\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -4607,10 +4809,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Finds files and directories via an intuitive fluent interface", + "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.3.7" + "source": "https://github.com/symfony/filesystem/tree/v6.0.13" }, "funding": [ { @@ -4626,44 +4828,32 @@ "type": "tidelift" } ], - "time": "2021-08-04T21:20:46+00:00" + "time": "2022-09-21T20:25:27+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.23.0", + "name": "symfony/finder", + "version": "v6.0.17", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" + "url": "https://github.com/symfony/finder.git", + "reference": "d467d625fc88f7cebf96f495e588a7196a669db1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "url": "https://api.github.com/repos/symfony/finder/zipball/d467d625fc88f7cebf96f495e588a7196a669db1", + "reference": "d467d625fc88f7cebf96f495e588a7196a669db1", "shasum": "" }, "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-ctype": "For best performance" + "php": ">=8.0.2" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" + "Symfony\\Component\\Finder\\": "" }, - "files": [ - "bootstrap.php" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -4672,24 +4862,18 @@ ], "authors": [ { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for ctype functions", + "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" + "source": "https://github.com/symfony/finder/tree/v6.0.17" }, "funding": [ { @@ -4705,32 +4889,35 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2022-12-22T17:53:58+00:00" }, { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.23.1", + "name": "symfony/polyfill-ctype", + "version": "v1.27.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "16880ba9c5ebe3642d1995ab866db29270b36535" + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/16880ba9c5ebe3642d1995ab866db29270b36535", - "reference": "16880ba9c5ebe3642d1995ab866db29270b36535", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", "shasum": "" }, "require": { "php": ">=7.1" }, + "provide": { + "ext-ctype": "*" + }, "suggest": { - "ext-intl": "For best performance" + "ext-ctype": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4738,12 +4925,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4751,26 +4938,24 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for intl's grapheme_* functions", + "description": "Symfony polyfill for ctype functions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "grapheme", - "intl", + "ctype", "polyfill", - "portable", - "shim" + "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.1" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" }, "funding": [ { @@ -4786,20 +4971,20 @@ "type": "tidelift" } ], - "time": "2021-05-27T12:26:48+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.23.0", + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.27.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "511a08c03c1960e08a883f4cffcacd219b758354" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", + "reference": "511a08c03c1960e08a883f4cffcacd219b758354", "shasum": "" }, "require": { @@ -4811,7 +4996,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4819,15 +5004,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, "files": [ "bootstrap.php" ], - "classmap": [ - "Resources/stubs" - ] + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4843,18 +5025,18 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", + "description": "Symfony polyfill for intl's grapheme_* functions", "homepage": "https://symfony.com", "keywords": [ "compatibility", + "grapheme", "intl", - "normalizer", "polyfill", "portable", "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" }, "funding": [ { @@ -4870,32 +5052,32 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.23.1", + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.27.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", "shasum": "" }, "require": { "php": ">=7.1" }, "suggest": { - "ext-mbstring": "For best performance" + "ext-intl": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4903,11 +5085,14 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, "files": [ "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -4924,17 +5109,18 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for the Mbstring extension", + "description": "Symfony polyfill for intl's Normalizer class and related functions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "mbstring", + "intl", + "normalizer", "polyfill", "portable", "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" }, "funding": [ { @@ -4950,29 +5136,35 @@ "type": "tidelift" } ], - "time": "2021-05-27T12:26:48+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { - "name": "symfony/polyfill-php73", - "version": "v1.23.0", + "name": "symfony/polyfill-mbstring", + "version": "v1.27.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010", - "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", "shasum": "" }, "require": { "php": ">=7.1" }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4980,15 +5172,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, "files": [ "bootstrap.php" ], - "classmap": [ - "Resources/stubs" - ] + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5004,16 +5193,17 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "description": "Symfony polyfill for the Mbstring extension", "homepage": "https://symfony.com", "keywords": [ "compatibility", + "mbstring", "polyfill", "portable", "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" }, "funding": [ { @@ -5029,20 +5219,20 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.23.1", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be" + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be", - "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", "shasum": "" }, "require": { @@ -5051,7 +5241,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5059,12 +5249,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -5096,7 +5286,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" }, "funding": [ { @@ -5112,25 +5302,28 @@ "type": "tidelift" } ], - "time": "2021-07-28T13:41:28+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.4.0", + "version": "v3.0.2", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb" + "reference": "d78d39c1599bd1188b8e26bb341da52c3c6d8a66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", - "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d78d39c1599bd1188b8e26bb341da52c3c6d8a66", + "reference": "d78d39c1599bd1188b8e26bb341da52c3c6d8a66", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/container": "^1.1" + "php": ">=8.0.2", + "psr/container": "^2.0" + }, + "conflict": { + "ext-psr": "<1.1|>=2" }, "suggest": { "symfony/service-implementation": "" @@ -5138,7 +5331,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" + "dev-main": "3.0-dev" }, "thanks": { "name": "symfony/contracts", @@ -5175,7 +5368,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.0.2" }, "funding": [ { @@ -5191,44 +5384,46 @@ "type": "tidelift" } ], - "time": "2021-04-01T10:43:52+00:00" + "time": "2022-05-30T19:17:58+00:00" }, { "name": "symfony/string", - "version": "v5.3.10", + "version": "v6.0.17", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c" + "reference": "3f57003dd8a67ed76870cc03092f8501db7788d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c", - "reference": "d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c", + "url": "https://api.github.com/repos/symfony/string/zipball/3f57003dd8a67ed76870cc03092f8501db7788d9", + "reference": "3f57003dd8a67ed76870cc03092f8501db7788d9", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.0.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-grapheme": "~1.0", "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "~1.15" + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.0" }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0" + "symfony/error-handler": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/translation-contracts": "^2.0|^3.0", + "symfony/var-exporter": "^5.4|^6.0" }, "type": "library", "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, "files": [ "Resources/functions.php" ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, "exclude-from-classmap": [ "/Tests/" ] @@ -5258,7 +5453,95 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.3.10" + "source": "https://github.com/symfony/string/tree/v6.0.17" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-12-14T15:52:41+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v6.0.17", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "7d8e7c3c67c77790425ebe33691419dada154e65" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7d8e7c3c67c77790425ebe33691419dada154e65", + "reference": "7d8e7c3c67c77790425ebe33691419dada154e65", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "phpunit/phpunit": "<5.4.3", + "symfony/console": "<5.4" + }, + "require-dev": { + "ext-iconv": "*", + "symfony/console": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/uid": "^5.4|^6.0", + "twig/twig": "^2.13|^3.0.4" + }, + "suggest": { + "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", + "ext-intl": "To show region name in time zone dump", + "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides mechanisms for walking through any arbitrary PHP variable", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "support": { + "source": "https://github.com/symfony/var-dumper/tree/v6.0.17" }, "funding": [ { @@ -5274,32 +5557,31 @@ "type": "tidelift" } ], - "time": "2021-10-27T18:21:46+00:00" + "time": "2022-12-22T17:53:58+00:00" }, { "name": "symfony/yaml", - "version": "v5.3.6", + "version": "v6.0.17", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "4500fe63dc9c6ffc32d3b1cb0448c329f9c814b7" + "reference": "76c08913ea1c50541503a4563b2172710189fa29" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/4500fe63dc9c6ffc32d3b1cb0448c329f9c814b7", - "reference": "4500fe63dc9c6ffc32d3b1cb0448c329f9c814b7", + "url": "https://api.github.com/repos/symfony/yaml/zipball/76c08913ea1c50541503a4563b2172710189fa29", + "reference": "76c08913ea1c50541503a4563b2172710189fa29", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-ctype": "~1.8" + "php": ">=8.0.2", + "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<4.4" + "symfony/console": "<5.4" }, "require-dev": { - "symfony/console": "^4.4|^5.0" + "symfony/console": "^5.4|^6.0" }, "suggest": { "symfony/console": "For validating YAML files using the lint command" @@ -5333,7 +5615,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v5.3.6" + "source": "https://github.com/symfony/yaml/tree/v6.0.17" }, "funding": [ { @@ -5349,7 +5631,7 @@ "type": "tidelift" } ], - "time": "2021-07-29T06:20:01+00:00" + "time": "2022-12-14T15:52:41+00:00" }, { "name": "theseer/tokenizer", @@ -5403,24 +5685,24 @@ }, { "name": "vimeo/psalm", - "version": "4.12.0", + "version": "5.4.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "e42bc4a23f67acba28a23bb09c348e2ff38a1d87" + "reference": "62db5d4f6a7ae0a20f7cc5a4952d730272fc0863" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/e42bc4a23f67acba28a23bb09c348e2ff38a1d87", - "reference": "e42bc4a23f67acba28a23bb09c348e2ff38a1d87", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/62db5d4f6a7ae0a20f7cc5a4952d730272fc0863", + "reference": "62db5d4f6a7ae0a20f7cc5a4952d730272fc0863", "shasum": "" }, "require": { "amphp/amp": "^2.4.2", "amphp/byte-stream": "^1.5", - "composer/package-versions-deprecated": "^1.8.0", + "composer/package-versions-deprecated": "^1.10.0", "composer/semver": "^1.4 || ^2.0 || ^3.0", - "composer/xdebug-handler": "^1.1 || ^2.0", + "composer/xdebug-handler": "^2.0 || ^3.0", "dnoegel/php-xdg-base-dir": "^0.1.1", "ext-ctype": "*", "ext-dom": "*", @@ -5429,36 +5711,39 @@ "ext-mbstring": "*", "ext-simplexml": "*", "ext-tokenizer": "*", - "felixfbecker/advanced-json-rpc": "^3.0.3", - "felixfbecker/language-server-protocol": "^1.5", + "felixfbecker/advanced-json-rpc": "^3.1", + "felixfbecker/language-server-protocol": "^1.5.2", + "fidry/cpu-core-counter": "^0.4.0", "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", "nikic/php-parser": "^4.13", - "openlss/lib-array2xml": "^1.0", - "php": "^7.1|^8", - "sebastian/diff": "^3.0 || ^4.0", - "symfony/console": "^3.4.17 || ^4.1.6 || ^5.0 || ^6.0", - "webmozart/path-util": "^2.3" + "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0", + "sebastian/diff": "^4.0", + "spatie/array-to-xml": "^2.17.0", + "symfony/console": "^4.1.6 || ^5.0 || ^6.0", + "symfony/filesystem": "^5.4 || ^6.0", + "symfony/polyfill-php80": "^1.25" }, "provide": { "psalm/psalm": "self.version" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "brianium/paratest": "^4.0||^6.0", + "bamarni/composer-bin-plugin": "^1.4", + "brianium/paratest": "^6.0", "ext-curl": "*", + "mockery/mockery": "^1.5", + "nunomaduro/mock-final-classes": "^1.1", "php-parallel-lint/php-parallel-lint": "^1.2", - "phpdocumentor/reflection-docblock": "^5", - "phpmyadmin/sql-parser": "5.1.0||dev-master", - "phpspec/prophecy": ">=1.9.0", - "phpunit/phpunit": "^9.0", - "psalm/plugin-phpunit": "^0.16", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "symfony/process": "^4.3 || ^5.0 || ^6.0", - "weirdan/prophecy-shim": "^1.0 || ^2.0" + "phpstan/phpdoc-parser": "^1.6", + "phpunit/phpunit": "^9.5", + "psalm/plugin-mockery": "^1.1", + "psalm/plugin-phpunit": "^0.18", + "slevomat/coding-standard": "^8.4", + "squizlabs/php_codesniffer": "^3.6", + "symfony/process": "^4.4 || ^5.0 || ^6.0" }, "suggest": { - "ext-igbinary": "^2.0.5" + "ext-curl": "In order to send data to shepherd", + "ext-igbinary": "^2.0.5 is required, used to serialize caching data" }, "bin": [ "psalm", @@ -5470,7 +5755,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.x-dev", + "dev-master": "5.x-dev", + "dev-4.x": "4.x-dev", "dev-3.x": "3.x-dev", "dev-2.x": "2.x-dev", "dev-1.x": "1.x-dev" @@ -5479,11 +5765,7 @@ "autoload": { "psr-4": { "Psalm\\": "src/Psalm/" - }, - "files": [ - "src/functions.php", - "src/spl_object_id.php" - ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5502,22 +5784,22 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/4.12.0" + "source": "https://github.com/vimeo/psalm/tree/5.4.0" }, - "time": "2021-11-06T10:31:17+00:00" + "time": "2022-12-19T21:31:12+00:00" }, { "name": "vlucas/phpdotenv", - "version": "v5.4.0", + "version": "v5.5.0", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "d4394d044ed69a8f244f3445bcedf8a0d7fe2403" + "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/d4394d044ed69a8f244f3445bcedf8a0d7fe2403", - "reference": "d4394d044ed69a8f244f3445bcedf8a0d7fe2403", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", + "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", "shasum": "" }, "require": { @@ -5532,15 +5814,19 @@ "require-dev": { "bamarni/composer-bin-plugin": "^1.4.1", "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" + "phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25" }, "suggest": { "ext-filter": "Required to use the boolean validator." }, "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, "branch-alias": { - "dev-master": "5.4-dev" + "dev-master": "5.5-dev" } }, "autoload": { @@ -5555,11 +5841,13 @@ "authors": [ { "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk" + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" }, { "name": "Vance Lucas", - "email": "vance@vancelucas.com" + "email": "vance@vancelucas.com", + "homepage": "https://github.com/vlucas" } ], "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", @@ -5570,7 +5858,7 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.4.0" + "source": "https://github.com/vlucas/phpdotenv/tree/v5.5.0" }, "funding": [ { @@ -5582,25 +5870,25 @@ "type": "tidelift" } ], - "time": "2021-11-10T01:08:39+00:00" + "time": "2022-10-16T01:01:54+00:00" }, { "name": "webmozart/assert", - "version": "1.10.0", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" + "ext-ctype": "*", + "php": "^7.2 || ^8.0" }, "conflict": { "phpstan/phpstan": "<0.12.20", @@ -5638,60 +5926,9 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - }, - { - "name": "webmozart/path-util", - "version": "2.3.0", - "source": { - "type": "git", - "url": "https://github.com/webmozart/path-util.git", - "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725", - "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "webmozart/assert": "~1.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\PathUtil\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.", - "support": { - "issues": "https://github.com/webmozart/path-util/issues", - "source": "https://github.com/webmozart/path-util/tree/2.3.0" + "source": "https://github.com/webmozarts/assert/tree/1.11.0" }, - "abandoned": "symfony/filesystem", - "time": "2015-12-17T08:42:14+00:00" + "time": "2022-06-03T18:03:27+00:00" } ], "aliases": [], @@ -5700,10 +5937,10 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": ">=7.4 <9.0", + "php": ">=8.0 <9.0", "ext-json": "*", "ext-mbstring": "*" }, "platform-dev": [], - "plugin-api-version": "2.1.0" + "plugin-api-version": "2.3.0" } diff --git a/docker-compose.yml b/docker-compose.yml index 44cccd2..48fd103 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,13 +3,6 @@ version: '3' services: - phalcon-traits-7.4: - container_name: phalcon-traits-7.4 - hostname: phalcon-74 - build: resources/docker/7.4 - working_dir: /srv - volumes: - - .:/srv phalcon-traits-8.0: container_name: phalcon-traits-8.0 @@ -18,3 +11,19 @@ services: working_dir: /srv volumes: - .:/srv + + phalcon-traits-8.1: + container_name: phalcon-traits-8.1 + hostname: phalcon-81 + build: resources/docker/8.1 + working_dir: /srv + volumes: + - .:/srv + + phalcon-traits-8.2: + container_name: phalcon-traits-8.2 + hostname: phalcon-82 + build: resources/docker/8.2 + working_dir: /srv + volumes: + - .:/srv diff --git a/docs/general.md b/docs/general.md index 6d8f37d..8e700fb 100644 --- a/docs/general.md +++ b/docs/general.md @@ -12,8 +12,8 @@ by the class is going to be interpreted. The available traits are: -### Factory -#### FactoryTrait +## Factory +### FactoryTrait This trait offers the skeleton for creating factories. It contains an array where all the definitions are stored, which can be extended by passing additional definitions as an array in the constructor. The string keys of the @@ -43,7 +43,7 @@ the full namespace). ```php protected function init(array $services = []): void ``` -Initializes services. Called in `__construct` and merges the passed services +Initialize services. Called in `__construct` and merges the passed services with those set in the `getServices()` method. @@ -54,11 +54,11 @@ abstract protected function getExceptionClass(): string; Returns the exception class for the factory (as a string with the full namespace). -### Helper -#### Arr +## Helper +### Arr Namespace containing traits relevant to array manipulation and processing. -##### FilterTrait +#### FilterTrait ```php /** * @param array $collection @@ -85,10 +85,35 @@ $filtered = $this->toFilter( ); ``` -#### Str +### Str Namespace containing traits relevant to string manipulation and processing. -##### DirFromFileTrait +#### CamelizeTrait + +```php +/** + * @param string $text + * @param string|null $delimiters + * @param bool $lowerFirst + * + * @return string + */ +public function toCamelize( + string $text, + string $delimiters = '\-_', + bool $lowerFirst = false +): string +``` +Accepts a string and camelizes it based on the passed delimiter (or the +default one). It also allows the developer to lowercase the first character. + +**Example** +```php +echo $this->toCamelize('came_li_ze'); +// CameLiZe +``` + +#### DirFromFileTrait ```php /** @@ -110,7 +135,7 @@ echo $this->toDirFromFile('abcdef12345.jpg'); // 'ab/cd/ef/12/3/' ``` -##### DirSeparatorTrait +#### DirSeparatorTrait ```php /** * @param string $directory @@ -127,7 +152,7 @@ echo $this->toDirSeparator('/home/phalcon'); // '/home/phalcon/' ``` -##### EndsWithTrait +#### EndsWithTrait Checks if a string ends with a given string ```php @@ -151,7 +176,7 @@ var_dump($this->toEndsWith('Hello', 'O', true); // true ```` -##### InterpolateTrait +#### InterpolateTrait Interpolates context values into the message placeholders [link][psr-3] ```php @@ -182,7 +207,7 @@ echo $this->toInterpolate($input, $context, '[', ']'); // 2020-09-09 is the date AAA is context ```` -##### LowerTrait +#### LowerTrait Converts the passed string to lowercase using the `mbstring` extension. ```php @@ -204,7 +229,7 @@ echo $this->toEndsWith('PhAlcOn'); // phalcon ```` -##### StartsWithTrait +#### StartsWithTrait Checks if a string starts with a given string ```php @@ -228,7 +253,30 @@ var_dump($this->toStartsWith('Hello', 'h', true); // true ```` -##### UpperTrait +#### UncamelizeTrait + +```php +/** + * @param string $text + * @param string $delimiters + * + * @return string + */ +public function toUncamelize( + string $text, + string $delimiter = '_' +): string +``` +Accepts a string and uncamelizes it based on the passed delimiter (or the +default one) + +**Example** +```php +echo $this->toUncamelize('CameLiZe'); +// came_li_ze +``` + +#### UpperTrait Converts the passed string to uppercase using the `mbstring` extension. ```php /** @@ -245,17 +293,17 @@ protected function toUpper( **Example** ```php -echo $this->toEndsWith('PhAlcOn'); +echo $this->toUpper('PhAlcOn'); // PHALCON ```` -#### Php +### Php PHP function wrappers. These are strongly typed (compared to the methods they wrap). They are very useful when testing different paths of an application that rely on these methods. The wrapper method can be easily mocked to ensure high code coverage. -##### FileTrait +#### FileTrait File based wrapper methods. **phpFileExists** @@ -372,32 +420,13 @@ protected function phpIsWritable(string $filename): bool ``` [is_writable][is-writable] -**phpParseIniFile** -```php -/** - * Parse a configuration file - * - * @param string $filename - * @param bool $process_sections - * @param int $scanner_mode - * - * @return array|false - */ -protected function phpParseIniFile( - string $filename, - bool $process_sections = false, - int $scanner_mode = 1 -) -``` -[parse_ini_file][parse-ini-file] - **phpUnlink** ```php /** - * @param string $filename - * - * @return bool - */ +* @param string $filename +* +* @return bool +*/ protected function phpUnlink(string $filename) ``` [unlink][unlink] @@ -427,18 +456,67 @@ protected function phpFunctionExists(string $function) ``` [function_exists][function-exists] -**phpIniGet** + +#### IniTrait +`ini` based wrapper methods. + +**iniGet** ```php /** - * @param string $varname + * @param string $input + * @param string $defaultValue * * @return string */ -protected function phpIniGet(string $varname): string +protected function phpIniGet(string $input, string $defaultValue = ""): bool ``` [ini_get][ini-get], [ini list][ini-list] -##### JsonTrait +**iniGet** +```php +/** + * @param string $input + * @param bool $defaultValue + * + * @return bool + */ +protected function phpIniGetBool(string $input, bool $defaultValue = false): bool +``` +[ini_get][ini-get], [ini list][ini-list] + +**iniGet** +```php +/** + * @param string $input + * @param int $defaultValue + * + * @return int + */ +protected function phpIniGetInt(string $input, int $defaultValue = 0): int +``` +[ini_get][ini-get], [ini list][ini-list] + +**parseIniFile** +```php +/** + * Parse a configuration file + * + * @param string $filename + * @param bool $process_sections + * @param int $scanner_mode + * + * @return array|false + */ +protected function phpParseIniFile( + string $filename, + bool $process_sections = false, + int $scanner_mode = 1 +) +``` +[parse_ini_file][parse-ini-file] + + +#### JsonTrait JSON wrapper methods **phpJsonEncode** @@ -474,8 +552,8 @@ protected function phpJsonDecode( [json_decode][json-decode] -##### JsonTrait -JSON wrapper methods +#### UrlTrait +Url wrapper methods **doBase64DecodeUrl** ```php diff --git a/phpcs.xml b/phpcs.xml new file mode 100644 index 0000000..8828afe --- /dev/null +++ b/phpcs.xml @@ -0,0 +1,12 @@ + + + Phalcon Coding Standards + + + + + + + src + tests/unit + diff --git a/resources/docker/8.0/Dockerfile b/resources/docker/8.0/Dockerfile index a9a70be..f9157b3 100644 --- a/resources/docker/8.0/Dockerfile +++ b/resources/docker/8.0/Dockerfile @@ -1,11 +1,7 @@ FROM composer:latest as composer FROM php:8.0-fpm -# Compilation parameters -RUN CPU_CORES="$(getconf _NPROCESSORS_ONLN)"; -ENV MAKEFLAGS="-j${CPU_CORES}" - -ADD extra.ini /usr/local/etc/php/conf.d/ +COPY extra.ini /usr/local/etc/php/conf.d/ # User/Group globals ENV MY_USER="phalcon" \ diff --git a/resources/docker/7.4/.bashrc b/resources/docker/8.1/.bashrc similarity index 100% rename from resources/docker/7.4/.bashrc rename to resources/docker/8.1/.bashrc diff --git a/resources/docker/7.4/Dockerfile b/resources/docker/8.1/Dockerfile similarity index 80% rename from resources/docker/7.4/Dockerfile rename to resources/docker/8.1/Dockerfile index 7a21606..af244fd 100644 --- a/resources/docker/7.4/Dockerfile +++ b/resources/docker/8.1/Dockerfile @@ -1,18 +1,14 @@ FROM composer:latest as composer -FROM php:7.4-fpm +FROM php:8.1-fpm -# Compilation parameters -RUN CPU_CORES="$(getconf _NPROCESSORS_ONLN)"; -ENV MAKEFLAGS="-j${CPU_CORES}" - -ADD extra.ini /usr/local/etc/php/conf.d/ +COPY extra.ini /usr/local/etc/php/conf.d/ # User/Group globals ENV MY_USER="phalcon" \ MY_GROUP="phalcon" \ MY_UID="1000" \ MY_GID="1000" \ - PHP_VERSION="7.4" + PHP_VERSION="8.1" # User and Group RUN set -eux && \ diff --git a/resources/docker/7.4/extra.ini b/resources/docker/8.1/extra.ini similarity index 100% rename from resources/docker/7.4/extra.ini rename to resources/docker/8.1/extra.ini diff --git a/resources/docker/8.2/.bashrc b/resources/docker/8.2/.bashrc new file mode 100644 index 0000000..78889d1 --- /dev/null +++ b/resources/docker/8.2/.bashrc @@ -0,0 +1,72 @@ +#!/bin/bash + +# Easier navigation: .., ..., ...., ....., ~ and - +alias ..="cd .." +alias ...="cd ../.." +alias ....="cd ../../.." +alias .....="cd ../../../.." +alias ~="cd ~" # `cd` is probably faster to type though +alias -- -="cd -" + +# Shortcuts +alias g="git" +alias h="history" + +# Detect which `ls` flavor is in use +if ls --color > /dev/null 2>&1; then # GNU `ls` + colorflag="--color" +else # OS X `ls` + colorflag="-G" +fi + +# List all files colorized in long format +# shellcheck disable=SC2139 +alias l="ls -lF ${colorflag}" + +# List all files colorized in long format, including dot files +# shellcheck disable=SC2139 +alias la="ls -laF ${colorflag}" + +# List only directories +# shellcheck disable=SC2139 +alias lsd="ls -lF ${colorflag} | grep --color=never '^d'" + +# See: https://superuser.com/a/656746/280737 +alias ll='LC_ALL="C.UTF-8" ls -alF' + +# Always use color output for `ls` +# shellcheck disable=SC2139 +alias ls="command ls ${colorflag}" +export LS_COLORS='no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.ogg=01;35:*.mp3=01;35:*.wav=01;35:' + +# Always enable colored `grep` output +alias grep='grep --color=auto ' + +# Enable aliases to be sudo’ed +alias sudo='sudo ' + +# Get week number +alias week='date +%V' + +# Stopwatch +alias timer='echo "Timer started. Stop with Ctrl-D." && date && time cat && date' + +# Canonical hex dump; some systems have this symlinked +command -v hd > /dev/null || alias hd="hexdump -C" + +# vhosts +alias hosts='sudo nano /etc/hosts' + +# copy working directory +alias cwd='pwd | tr -d "\r\n" | xclip -selection clipboard' + +# copy file interactive +alias cp='cp -i' + +# move file interactive +alias mv='mv -i' + +# untar +alias untar='tar xvf' + +PATH=$PATH:./vendor/bin diff --git a/resources/docker/8.2/Dockerfile b/resources/docker/8.2/Dockerfile new file mode 100644 index 0000000..9112a13 --- /dev/null +++ b/resources/docker/8.2/Dockerfile @@ -0,0 +1,44 @@ +FROM composer:latest as composer +FROM php:8.2-fpm + +COPY extra.ini /usr/local/etc/php/conf.d/ + +# User/Group globals +ENV MY_USER="phalcon" \ + MY_GROUP="phalcon" \ + MY_UID="1000" \ + MY_GID="1000" \ + PHP_VERSION="8.0" + +# User and Group +RUN set -eux && \ + groupadd -g ${MY_GID} -r ${MY_GROUP} && \ + useradd -u ${MY_UID} -m -s /bin/bash -g ${MY_GROUP} ${MY_USER} + +# Update +RUN apt update -y && \ + apt install -y \ + apt-utils \ + git \ + libzip-dev \ + nano \ + sudo \ + wget \ + zip + +# PECL Packages +RUN pecl install xdebug + +RUN docker-php-ext-install \ + zip + +# Install PHP extensions +RUN docker-php-ext-enable \ + xdebug + +# Composer +COPY --from=composer /usr/bin/composer /usr/local/bin/composer +# Bash script with helper aliases +COPY .bashrc /root/.bashrc + +CMD ["php-fpm"] diff --git a/resources/docker/8.2/extra.ini b/resources/docker/8.2/extra.ini new file mode 100644 index 0000000..dd4c161 --- /dev/null +++ b/resources/docker/8.2/extra.ini @@ -0,0 +1,4 @@ +memory_limit=512M +apc.enable_cli="On" +session.save_path="/tmp" +xdebug.mode="coverage" diff --git a/src/Factory/FactoryTrait.php b/src/Factory/FactoryTrait.php index f8ad090..921f75c 100644 --- a/src/Factory/FactoryTrait.php +++ b/src/Factory/FactoryTrait.php @@ -45,7 +45,9 @@ protected function getService(string $name) { if (true !== isset($this->mapper[$name])) { $exceptionClass = $this->getExceptionClass(); - throw new $exceptionClass('Service ' . $name . ' is not registered'); + throw new $exceptionClass( + 'Service ' . $name . ' is not registered' + ); } return $this->mapper[$name]; diff --git a/src/Helper/Str/CamelizeTrait.php b/src/Helper/Str/CamelizeTrait.php new file mode 100644 index 0000000..9e1c517 --- /dev/null +++ b/src/Helper/Str/CamelizeTrait.php @@ -0,0 +1,87 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace Phalcon\Traits\Helper\Str; + +use function array_map; +use function implode; +use function lcfirst; +use function preg_split; +use function str_replace; +use function ucfirst; + +use const PREG_SPLIT_DELIM_CAPTURE; +use const PREG_SPLIT_NO_EMPTY; + +/** + * Converts strings to upperCamelCase or lowerCamelCase + */ +trait CamelizeTrait +{ + /** + * @param string $text + * @param string $delimiters + * @param bool $lowerFirst + * + * @return string + */ + public function toCamelize( + string $text, + string $delimiters = '\-_', + bool $lowerFirst = false + ): string { + $exploded = $this->processArray($text, $delimiters); + + $output = array_map( + function ($element) { + return ucfirst(mb_strtolower($element)); + }, + $exploded + ); + + $result = implode('', $output); + + if (true === $lowerFirst) { + $result = lcfirst($result); + } + + return $result; + } + + /** + * @param string $text + * @param string|null $delimiters + * + * @return array + */ + protected function processArray( + string $text, + string $delimiters = '\-_' + ): array { + /** + * Escape the `-` if it exists so that it does not get interpreted + * as a range. First remove any escaping for the `-` if present and then + * add it again - just to be on the safe side + */ + $delimiters = str_replace(['\-', '-'], ['-', '\-'], $delimiters); + + $result = preg_split( + '/[' . $delimiters . ']+/', + $text, + -1, + PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY + ); + + return (false === $result) ? [] : $result; + } +} diff --git a/src/Helper/Str/UncamelizeTrait.php b/src/Helper/Str/UncamelizeTrait.php new file mode 100644 index 0000000..3d8aeb6 --- /dev/null +++ b/src/Helper/Str/UncamelizeTrait.php @@ -0,0 +1,39 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace Phalcon\Traits\Helper\Str; + +/** + * Converts strings to non camelized style + */ +trait UncamelizeTrait +{ + /** + * @param string $text + * @param string $delimiters + * + * @return string + */ + public function toUncamelize( + string $text, + string $delimiter = '_' + ): string { + $text = (string)preg_replace( + '/[A-Z]/', + $delimiter . '\\0', + lcfirst($text) + ); + + return mb_convert_case($text, MB_CASE_LOWER, 'UTF-8'); + } +} diff --git a/src/Php/FileTrait.php b/src/Php/FileTrait.php index be2e3cb..6e14a5a 100644 --- a/src/Php/FileTrait.php +++ b/src/Php/FileTrait.php @@ -150,25 +150,6 @@ protected function phpIsWritable(string $filename): bool return is_writable($filename); } - /** - * Parse a configuration file - * - * @param string $filename - * @param bool $process_sections - * @param int $scanner_mode - * - * @return array|false - * - * @link https://php.net/manual/en/function.parse-ini-file.php - */ - protected function phpParseIniFile( - string $filename, - bool $process_sections = false, - int $scanner_mode = 1 - ) { - return parse_ini_file($filename, $process_sections, $scanner_mode); - } - /** * @param string $filename * diff --git a/src/Php/InfoTrait.php b/src/Php/InfoTrait.php index 7ebea1a..1fafaeb 100644 --- a/src/Php/InfoTrait.php +++ b/src/Php/InfoTrait.php @@ -15,7 +15,6 @@ use function extension_loaded; use function function_exists; -use function ini_get; /** * Information method wrappers @@ -49,19 +48,4 @@ protected function phpFunctionExists(string $function) { return function_exists($function); } - - /** - * Gets the value of a configuration option - * - * @param string $varname - * - * @return string - * - * @link https://php.net/manual/en/function.ini-get.php - * @link https://php.net/manual/en/ini.list.php - */ - protected function phpIniGet(string $varname): string - { - return ini_get($varname); - } } diff --git a/src/Php/IniTrait.php b/src/Php/IniTrait.php new file mode 100644 index 0000000..b881ffd --- /dev/null +++ b/src/Php/IniTrait.php @@ -0,0 +1,111 @@ + + * + * For the full copyright and license information, please view the LICENSE.txt + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace Phalcon\Traits\Php; + +use function ini_get; +use function parse_ini_file; +use function strtolower; + +trait IniTrait +{ + /** + * Gets the value of a configuration option + * + * @param string $input + * @param string $defaultValue + * + * @return string + * + * @link https://php.net/manual/en/function.ini-get.php + * @link https://php.net/manual/en/ini.list.php + */ + protected function phpIniGet( + string $input, + string $defaultValue = "" + ): string { + $value = ini_get($input); + if (false === $value) { + return $defaultValue; + } + + return $value; + } + + /** + * Query a php.ini value and return it back as boolean + * + * @param string $input + * @param bool $defaultValue + * + * @return bool + * + * @link https://php.net/manual/en/function.ini-get.php + * @link https://php.net/manual/en/ini.list.php + */ + protected function phpIniGetBool( + string $input, + bool $defaultValue = false + ): bool { + $value = ini_get($input); + if (false === $value) { + return $defaultValue; + } + + $value = match (strtolower($value)) { + 'true', + 'on', + 'yes', + 'y', + '1' => true, + default => false, + }; + + return $value; + } + + /** + * Query a php.ini value and return it back as integer + * + * @param string $input + * @param int $defaultValue + * + * @return int + * + * @link https://php.net/manual/en/function.ini-get.php + * @link https://php.net/manual/en/ini.list.php + */ + protected function phpIniGetInt(string $input, int $defaultValue = 0): int + { + return (int)$this->iniGet($input, (string)$defaultValue); + } + + /** + * Parse a configuration file + * + * @param string $filename + * @param bool $processSections + * @param int $scannerMode + * + * @return array|false + * + * @link https://php.net/manual/en/function.parse-ini-file.php + */ + protected function phpParseIniFile( + string $filename, + bool $processSections = false, + int $scannerMode = 1 + ) { + return parse_ini_file($filename, $processSections, $scannerMode); + } +} diff --git a/src/Php/UrlTrait.php b/src/Php/UrlTrait.php index 6c94dc6..71219a7 100644 --- a/src/Php/UrlTrait.php +++ b/src/Php/UrlTrait.php @@ -33,8 +33,10 @@ trait UrlTrait * * @return string */ - protected function doBase64DecodeUrl(string $input, bool $strict = false): string - { + protected function doBase64DecodeUrl( + string $input, + bool $strict = false + ): string { $input = strtr($input, "-_", "+/") . substr("===", (strlen($input) + 3) % 4); diff --git a/tests/_data/fixtures/Helper/Str/CamelizeFixture.php b/tests/_data/fixtures/Helper/Str/CamelizeFixture.php new file mode 100644 index 0000000..4fde570 --- /dev/null +++ b/tests/_data/fixtures/Helper/Str/CamelizeFixture.php @@ -0,0 +1,38 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace Phalcon\Tests\Fixtures\Helper\Str; + +use Phalcon\Traits\Helper\Str\CamelizeTrait; + +class CamelizeFixture +{ + use CamelizeTrait; + + /** + * Camelizes a string + * + * @param string $text + * @param string $delimiters + * @param bool $lowerFirst + * + * @return string + */ + public function camelize( + string $text, + string $delimiters, + bool $lowerFirst + ): string { + return $this->toCamelize($text, $delimiters, $lowerFirst); + } +} diff --git a/tests/_data/fixtures/Helper/Str/UncamelizeFixture.php b/tests/_data/fixtures/Helper/Str/UncamelizeFixture.php new file mode 100644 index 0000000..e1fa0ad --- /dev/null +++ b/tests/_data/fixtures/Helper/Str/UncamelizeFixture.php @@ -0,0 +1,36 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace Phalcon\Tests\Fixtures\Helper\Str; + +use Phalcon\Traits\Helper\Str\UncamelizeTrait; + +class UncamelizeFixture +{ + use UncamelizeTrait; + + /** + * Uncamelizes a string + * + * @param string $text + * @param string $delimiters + * + * @return string + */ + public function Uncamelize( + string $text, + string $delimiter = '_' + ): string { + return $this->toUncamelize($text, $delimiter); + } +} diff --git a/tests/_data/fixtures/Php/FileFixture.php b/tests/_data/fixtures/Php/FileFixture.php index 09dbc58..b10edde 100644 --- a/tests/_data/fixtures/Php/FileFixture.php +++ b/tests/_data/fixtures/Php/FileFixture.php @@ -44,9 +44,9 @@ public function fileGetContents($filename) } /** - * @param string $filename - * @param mixed $data - * @param int $flags + * @param string $filename + * @param mixed $data + * @param int $flags * @param resource $context * * @return int|false @@ -96,7 +96,13 @@ public function fgetCsv( $enclosure = '"', $escape = '\\' ) { - return $this->phpFgetCsv($stream, $length, $separator, $enclosure, $escape); + return $this->phpFgetCsv( + $stream, + $length, + $separator, + $enclosure, + $escape + ); } @@ -142,25 +148,6 @@ public function isWritable($filename): bool return $this->phpIsWritable($filename); } - /** - * Parse a configuration file - * - * @param string $filename - * @param bool $process_sections - * @param int $scanner_mode - * - * @return array|false - * - * @link https://php.net/manual/en/function.parse-ini-file.php - */ - public function parseIniFile( - $filename, - $process_sections = false, - $scanner_mode = 1 - ) { - return $this->phpParseIniFile($filename, $process_sections, $scanner_mode); - } - /** * @param string $filename * diff --git a/tests/_data/fixtures/Php/InfoFixture.php b/tests/_data/fixtures/Php/InfoFixture.php index bb890fe..a526db8 100644 --- a/tests/_data/fixtures/Php/InfoFixture.php +++ b/tests/_data/fixtures/Php/InfoFixture.php @@ -46,19 +46,4 @@ public function functionExists($function) { return $this->phpFunctionExists($function); } - - /** - * Gets the value of a configuration option - * - * @param string $varname - * - * @return string - * - * @link https://php.net/manual/en/function.ini-get.php - * @link https://php.net/manual/en/ini.list.php - */ - public function iniGet($varname): string - { - return $this->phpIniGet($varname); - } } diff --git a/tests/_data/fixtures/Php/IniFixture.php b/tests/_data/fixtures/Php/IniFixture.php new file mode 100644 index 0000000..8927194 --- /dev/null +++ b/tests/_data/fixtures/Php/IniFixture.php @@ -0,0 +1,92 @@ + + * + * For the full copyright and license information, please view the LICENSE.txt + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace Phalcon\Tests\Fixtures\Php; + +use Phalcon\Traits\Php\IniTrait; + +class IniFixture +{ + use IniTrait; + + /** + * Gets the value of a configuration option + * + * @param string $input + * @param string $defaultValue + * + * @return string + * + * @link https://php.net/manual/en/function.ini-get.php + * @link https://php.net/manual/en/ini.list.php + */ + public function iniGet(string $input, string $defaultValue = ""): string + { + return $this->phpIniGet($input, $defaultValue); + } + + /** + * Gets the value of a boolean configuration option + * + * @param string $input + * @param bool $defaultValue + * + * @return bool + * + * @link https://php.net/manual/en/function.ini-get.php + * @link https://php.net/manual/en/ini.list.php + */ + public function iniGetBool(string $input, bool $defaultValue = false): bool + { + return $this->phpIniGetBool($input, $defaultValue); + } + + /** + * Gets the value of an integer configuration option + * + * @param string $input + * @param int $defaultValue + * + * @return int + * + * @link https://php.net/manual/en/function.ini-get.php + * @link https://php.net/manual/en/ini.list.php + */ + public function iniGetInt(string $input, int $defaultValue = 0): int + { + return $this->phpIniGetInt($input, $defaultValue); + } + + /** + * Parse a configuration file + * + * @param string $filename + * @param bool $processSections + * @param int $scannerMode + * + * @return array|false + * + * @link https://php.net/manual/en/function.parse-ini-file.php + */ + public function parseIniFile( + string $filename, + bool $processSections = false, + int $scannerMode = 1 + ) { + return $this->phpParseIniFile( + $filename, + $processSections, + $scannerMode + ); + } +} diff --git a/tests/_support/Helper/Unit.php b/tests/_support/Helper/Unit.php index 06ec5ea..f2a9bb6 100644 --- a/tests/_support/Helper/Unit.php +++ b/tests/_support/Helper/Unit.php @@ -4,9 +4,9 @@ use Codeception\Module; use PHPUnit\Framework\SkippedTestError; - use ReflectionClass; use ReflectionException; + use function array_slice; use function array_unshift; use function call_user_func_array; @@ -39,7 +39,10 @@ public function checkExtensionIsLoaded(string $extension) { if (true !== extension_loaded($extension)) { $this->skipTest( - sprintf("Extension '%s' is not loaded. Skipping test", $extension) + sprintf( + "Extension '%s' is not loaded. Skipping test", + $extension + ) ); } } @@ -104,7 +107,7 @@ public function safeDeleteFile(string $filename) * Calls private or protected method. * * @param string|object $obj - * @param string $method + * @param string $method * * @return mixed * @throws ReflectionException diff --git a/tests/unit/Helper/Arr/FilterTraitCest.php b/tests/unit/Helper/Arr/FilterTraitCest.php index db86750..03e5d44 100644 --- a/tests/unit/Helper/Arr/FilterTraitCest.php +++ b/tests/unit/Helper/Arr/FilterTraitCest.php @@ -33,8 +33,10 @@ class FilterTraitCest * @author Phalcon Team * @since 2021-10-25 */ - public function factoryFilterTraitToFilter(UnitTester $I, Example $example): void - { + public function factoryFilterTraitToFilter( + UnitTester $I, + Example $example + ): void { $I->wantToTest('Arr\FilterTrait - ' . $example['label']); $filter = new FilterFixture(); diff --git a/tests/unit/Helper/Str/CamelizeTraitCest.php b/tests/unit/Helper/Str/CamelizeTraitCest.php new file mode 100644 index 0000000..50d645b --- /dev/null +++ b/tests/unit/Helper/Str/CamelizeTraitCest.php @@ -0,0 +1,81 @@ + + * + * For the full copyright and license information, please view the LICENSE.txt + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace Phalcon\Tests\Unit\Helper\Str; + +use Codeception\Example; +use Phalcon\Tests\Fixtures\Helper\Str\CamelizeFixture; +use UnitTester; + +class CamelizeTraitCest +{ + /** + * Tests Str\CamelizeTrait + * + * @dataProvider getSources + * + * @param UnitTester $I + * @param Example $example + * + * @author Phalcon Team + * @since 2020-09-09 + */ + public function helperStrStrCamelize(UnitTester $I, Example $example) + { + $I->wantToTest('Str\DirFromFileTrait - ' . $example[0]); + + $object = new CamelizeFixture(); + $value = $example[0]; + $expected = $example[1]; + $delimiter = $example[2] ?: '\-_'; + $lowercase = $example[3]; + + $actual = $object->toCamelize($value, $delimiter, $lowercase); + $I->assertSame($expected, $actual); + } + + /** + * @return array + */ + private function getSources(): array + { + return [ + ['camelize', 'Camelize', null, false], + ['CameLiZe', 'Camelize', null, false], + ['cAmeLize', 'Camelize', null, false], + ['123camelize', '123camelize', null, false], + ['c_a_m_e_l_i_z_e', 'CAMELIZE', null, false], + ['Camelize', 'Camelize', null, false], + ['camel_ize', 'CamelIze', null, false], + ['CameLize', 'Camelize', null, false], + ['c_a-m_e-l_i-z_e', 'CAMELIZE', null, false], + ['came_li_ze', 'CameLiZe', null, false], + ['=_camelize', '=Camelize', '_', false], + ['camelize', 'Camelize', '_', false], + ['came_li_ze', 'CameLiZe', '_', false], + ['came#li#ze', 'CameLiZe', '#', false], + ['came li ze', 'CameLiZe', ' ', false], + ['came.li^ze', 'CameLiZe', '.^', false], + ['c_a-m_e-l_i-z_e', 'CAMELIZE', '-_', false], + ['came.li.ze', 'CameLiZe', '.', false], + ['came-li-ze', 'CameLiZe', '-', false], + ['c+a+m+e+l+i+z+e', 'CAMELIZE', '+', false], + ['customer-session', 'CustomerSession', null, false], + ['customer Session', 'CustomerSession', ' -_', false], + ['customer-Session', 'CustomerSession', ' -_', false], + ['customer-session', 'customerSession', null, true], + ['customer Session', 'customerSession', ' -_', true], + ['customer-Session', 'customerSession', ' -_', true], + ]; + } +} diff --git a/tests/unit/Helper/Str/DirFromFileTraitCest.php b/tests/unit/Helper/Str/DirFromFileTraitCest.php index 0b20282..439f580 100644 --- a/tests/unit/Helper/Str/DirFromFileTraitCest.php +++ b/tests/unit/Helper/Str/DirFromFileTraitCest.php @@ -33,8 +33,10 @@ class DirFromFileTraitCest * @author Phalcon Team * @since 2021-10-26 */ - public function helperStrDirFromFileTrait(UnitTester $I, Example $example): void - { + public function helperStrDirFromFileTrait( + UnitTester $I, + Example $example + ): void { $I->wantToTest('Str\DirFromFileTrait - ' . $example['label']); $fileName = $example['fileName']; diff --git a/tests/unit/Helper/Str/DirSeparatorTraitCest.php b/tests/unit/Helper/Str/DirSeparatorTraitCest.php index 428e77f..d8dd9f3 100644 --- a/tests/unit/Helper/Str/DirSeparatorTraitCest.php +++ b/tests/unit/Helper/Str/DirSeparatorTraitCest.php @@ -17,6 +17,8 @@ use Phalcon\Tests\Fixtures\Helper\Str\DirSeparatorFixture; use UnitTester; +use const DIRECTORY_SEPARATOR; + /** * Tests the DirSeparator trait */ @@ -33,8 +35,10 @@ class DirSeparatorTraitCest * @author Phalcon Team * @since 2021-10-26 */ - public function helperStrDirFromFileTrait(UnitTester $I, Example $example): void - { + public function helperStrDirFromFileTrait( + UnitTester $I, + Example $example + ): void { $I->wantToTest('Str\DirFromFileTrait - ' . $example['label']); $directory = $example['directory']; @@ -50,26 +54,31 @@ public function helperStrDirFromFileTrait(UnitTester $I, Example $example): void */ private function getExamples(): array { + $directory = DIRECTORY_SEPARATOR + . 'home' + . DIRECTORY_SEPARATOR + . 'phalcon'; + return [ [ 'label' => 'without trailing slash', - 'directory' => '/home/phalcon', - 'expected' => '/home/phalcon/', + 'directory' => $directory, + 'expected' => $directory . DIRECTORY_SEPARATOR, ], [ 'label' => 'with trailing slash', - 'directory' => '/home/phalcon/', - 'expected' => '/home/phalcon/', + 'directory' => $directory . DIRECTORY_SEPARATOR, + 'expected' => $directory . DIRECTORY_SEPARATOR, ], [ 'label' => 'with double trailing slash', - 'directory' => '/home/phalcon//', - 'expected' => '/home/phalcon/', + 'directory' => $directory . DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR, + 'expected' => $directory . DIRECTORY_SEPARATOR, ], [ 'label' => 'empty directory', 'directory' => '', - 'expected' => '/', + 'expected' => DIRECTORY_SEPARATOR, ], ]; } diff --git a/tests/unit/Helper/Str/EndsWithTraitCest.php b/tests/unit/Helper/Str/EndsWithTraitCest.php index 8aad9bb..4abd5f7 100644 --- a/tests/unit/Helper/Str/EndsWithTraitCest.php +++ b/tests/unit/Helper/Str/EndsWithTraitCest.php @@ -33,8 +33,10 @@ class EndsWithTraitCest * @author Phalcon Team * @since 2021-10-26 */ - public function helperStrEndsWithFilter(UnitTester $I, Example $example): void - { + public function helperStrEndsWithFilter( + UnitTester $I, + Example $example + ): void { $I->wantToTest('Str\EndsWithTrait - ' . $example['label']); $haystack = $example['haystack']; diff --git a/tests/unit/Helper/Str/InterpolateTraitCest.php b/tests/unit/Helper/Str/InterpolateTraitCest.php index 73c3db6..43a2e1a 100644 --- a/tests/unit/Helper/Str/InterpolateTraitCest.php +++ b/tests/unit/Helper/Str/InterpolateTraitCest.php @@ -33,8 +33,10 @@ class InterpolateTraitCest * @author Phalcon Team * @since 2021-10-26 */ - public function helperStrInterpolateFilter(UnitTester $I, Example $example): void - { + public function helperStrInterpolateFilter( + UnitTester $I, + Example $example + ): void { $I->wantToTest('Str\InterpolateTrait - ' . $example['label']); $expected = $example['expected']; @@ -70,7 +72,7 @@ private function getExamples(): array 'format' => '%date% is the date %level% is the level', 'context' => [ 'date' => '2020-09-09', - 'level' => 'CRITICAL' + 'level' => 'CRITICAL', ], 'left' => '%', 'right' => '%', diff --git a/tests/unit/Helper/Str/StartsWithTraitCest.php b/tests/unit/Helper/Str/StartsWithTraitCest.php index c99ef77..8233892 100644 --- a/tests/unit/Helper/Str/StartsWithTraitCest.php +++ b/tests/unit/Helper/Str/StartsWithTraitCest.php @@ -33,8 +33,10 @@ class StartsWithTraitCest * @author Phalcon Team * @since 2021-10-26 */ - public function helperStrStartsWithFilter(UnitTester $I, Example $example): void - { + public function helperStrStartsWithFilter( + UnitTester $I, + Example $example + ): void { $I->wantToTest('Str\StartsWithTrait - ' . $example['label']); $haystack = $example['haystack']; diff --git a/tests/unit/Helper/Str/UncamelizeTraitCest.php b/tests/unit/Helper/Str/UncamelizeTraitCest.php new file mode 100644 index 0000000..62ffef4 --- /dev/null +++ b/tests/unit/Helper/Str/UncamelizeTraitCest.php @@ -0,0 +1,72 @@ + + * + * For the full copyright and license information, please view the LICENSE.txt + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace Phalcon\Tests\Unit\Helper\Str; + +use Codeception\Example; +use Phalcon\Tests\Fixtures\Helper\Str\UncamelizeFixture; +use UnitTester; + +/** + * Class UncamelizeTraitCest + */ +class UncamelizeTraitCest +{ + /** + * Tests Str\CamelizeTrait + * + * @dataProvider getSources + * + * @author Phalcon Team + * @since 2020-09-09 + */ + public function textUncamelize(UnitTester $I, Example $example) + { + $I->wantToTest('Str\UncamelizeTrait - ' . $example[0]); + + $object = new UncamelizeFixture(); + $value = $example[0]; + $expected = $example[1]; + $delimiter = $example[2]; + $actual = $object->toUncamelize($value, $delimiter); + + $I->assertSame($expected, $actual); + } + + /** + * @return array + */ + private function getSources(): array + { + return [ + ['camelize', 'camelize', '_'], + ['CameLiZe', 'came_li_ze', '_'], + ['cAmeLize', 'c_ame_lize', '_'], + ['_camelize', '_camelize', '_'], + ['123camelize', '123camelize', '_'], + ['c_a_m_e_l_i_z_e', 'c_a_m_e_l_i_z_e', '_'], + ['Camelize', 'camelize', '_'], + ['camel_ize', 'camel_ize', '_'], + ['CameLize', 'came_lize', '_'], + ['Camelize', 'camelize', '_'], + ['=Camelize', '=_camelize', '_'], + ['Camelize', 'camelize', '_'], + ['CameLiZe', 'came_li_ze', '_'], + ['CameLiZe', 'came#li#ze', '#'], + ['CameLiZe', 'came li ze', ' '], + ['CameLiZe', 'came.li.ze', '.'], + ['CameLiZe', 'came-li-ze', '-'], + ['CAMELIZE', 'c/a/m/e/l/i/z/e', '/'], + ]; + } +} diff --git a/tests/unit/Php/FileTraitCest.php b/tests/unit/Php/FileTraitCest.php index 17f5c71..46f73a0 100644 --- a/tests/unit/Php/FileTraitCest.php +++ b/tests/unit/Php/FileTraitCest.php @@ -59,26 +59,6 @@ public function phpFileTrait(UnitTester $I): void ]; $I->assertEquals($expected, $actual); - /** - * Parse ini file - */ - $source = dataDir('assets/sample.ini'); - $actual = $file->parseIniFile($source); - $I->assertTrue($result); - $expected = [ - 'parent.property' => 'On', - 'parent.property2' => 'yeah', - 'parent.property3.baseuri' => '/phalcon/', - 'parent.property4.models.metadata' => 'memory', - 'parent.property5.database.adapter' => 'mysql', - 'parent.property5.database.host' => 'localhost', - 'parent.property5.database.username' => 'user', - 'parent.property5.database.password' => 'passwd', - 'parent.property5.database.name' => 'demo', - 'parent.property6.test' => ['a', 'b', 'c',], - ]; - $I->assertEquals($expected, $actual); - /** * Create the file and put data in it */ diff --git a/tests/unit/Php/InfoTraitCest.php b/tests/unit/Php/InfoTraitCest.php index 55d620f..c91856f 100644 --- a/tests/unit/Php/InfoTraitCest.php +++ b/tests/unit/Php/InfoTraitCest.php @@ -40,9 +40,5 @@ public function phpInfoTrait(UnitTester $I): void $actual = $info->functionExists('function_exists'); $I->assertTrue($actual); - - $expected = '/tmp'; - $actual = $info->iniGet('session.save_path'); - $I->assertEquals($expected, $actual); } } diff --git a/tests/unit/Php/IniTraitCest.php b/tests/unit/Php/IniTraitCest.php new file mode 100644 index 0000000..c6c507a --- /dev/null +++ b/tests/unit/Php/IniTraitCest.php @@ -0,0 +1,87 @@ + + * + * For the full copyright and license information, please view the LICENSE.txt + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace Phalcon\Tests\Unit\Php; + +use Phalcon\Tests\Fixtures\Php\IniFixture; +use UnitTester; + +use function dataDir; + +/** + * Tests the Ini trait + */ +class IniTraitCest +{ + /** + * Tests Phalcon\Traits\Php\IniTrait + * + * @param UnitTester $I + * + * @author Phalcon Team + * @since 2023-01-01 + */ + public function phpInfoTrait(UnitTester $I): void + { + $I->wantToTest('Php\IniTrait'); + + $ini = new IniFixture(); + + /** + * Parse ini file + */ + $source = dataDir('assets/sample.ini'); + $actual = $ini->parseIniFile($source); + $expected = [ + 'parent.property' => 'On', + 'parent.property2' => 'yeah', + 'parent.property3.baseuri' => '/phalcon/', + 'parent.property4.models.metadata' => 'memory', + 'parent.property5.database.adapter' => 'mysql', + 'parent.property5.database.host' => 'localhost', + 'parent.property5.database.username' => 'user', + 'parent.property5.database.password' => 'passwd', + 'parent.property5.database.name' => 'demo', + 'parent.property6.test' => ['a', 'b', 'c',], + ]; + $I->assertEquals($expected, $actual); + + // Unknown + $expected = '1234'; + $actual = $ini->iniGet('unknown', '1234'); + $I->assertSame($expected, $actual); + + // Get - This is set in codeception.yml + $expected = '256M'; + $actual = $ini->iniGet('memory_limit'); + $I->assertSame($expected, $actual); + + // Get Bool + $actual = $ini->iniGetBool('expose_php'); + $I->assertTrue($actual); + + // Unknown + $actual = $ini->iniGetBool('unknown', true); + $I->assertTrue($actual); + + // Get Int + $expected = 256; + $actual = $ini->iniGetInt('memory_limit'); + $I->assertSame($expected, $actual); + + // Unknown + $expected = 1234; + $actual = $ini->iniGetInt('unknown', 1234); + $I->assertSame($expected, $actual); + } +} diff --git a/tests/unit/Php/UrlTraitCest.php b/tests/unit/Php/UrlTraitCest.php index c49d3ac..b4008e3 100644 --- a/tests/unit/Php/UrlTraitCest.php +++ b/tests/unit/Php/UrlTraitCest.php @@ -91,7 +91,7 @@ public function phpUrlTraitBase64DecodeError(UnitTester $I): void { $I->wantToTest('Php\UrlTrait :: base64_decode error'); - $url = Stub::make( + $url = Stub::make( UrlFixture::class, [ 'phpBase64Decode' => false, @@ -99,7 +99,7 @@ public function phpUrlTraitBase64DecodeError(UnitTester $I): void ); $source = "Testing-Data/phalcon"; - $actual = $url->base64DecodeUrl($source); + $actual = $url->base64DecodeUrl($source); $I->assertEmpty($actual); } }