diff --git a/.gitattributes b/.gitattributes index 7a91380..f958e9d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2,5 +2,6 @@ /tests export-ignore /*.xml export-ignore /*.yml export-ignore +/*.yaml export-ignore /*.lock export-ignore /*.dist export-ignore diff --git a/.github/.yamllint.yaml b/.github/.yamllint.yaml index e2997f1..c71de00 100644 --- a/.github/.yamllint.yaml +++ b/.github/.yamllint.yaml @@ -3,7 +3,7 @@ extends: default ignore: | - .build/ + runtime/ vendor/ docs/ diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 3e89008..e49bc1f 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -83,15 +83,6 @@ We use a dockerized environment. Follow these steps to start working with the pr make env ``` -3. **Install phive and composer dependencies:** - - ```bash - make phive - make install - ``` - -
- ## ๐Ÿ”ง Using the Makefile This project uses a Makefile to streamline common development tasks. The Makefile includes utilities for managing Docker environments, installing project dependencies, running tests, and linting code. @@ -156,7 +147,7 @@ $ make ssh $ make down ``` -By default, phpunit and phpstan commands will be ran against docker environment. +By default, phpunit commands will be ran against docker environment.
@@ -173,7 +164,7 @@ Our project employs [GitHub Actions](https://github.com/features/actions) for co | [`refactoring.yml`](workflows/refactoring.yml) | Runs rector/rector code check. | | [`security-analysis.yml`](workflows/security-analysis.yml) | Checks for security issues. | | [`shellcheck.yml`](workflows/shellcheck.yml) | Checks shell scripts. | -| [`static-analysis.yml`](workflows/static-analysis.yml) | Runs `psalm` and `phpstan` tools. | +| [`static-analysis.yml`](workflows/static-analysis.yml) | Runs `psalm`. | | [`testing.yml`](workflows/testing.yml) | Runs coverage, mutation and functional tests against SQLite | | [`testing-mysql.yml`](workflows/testing.yml) | Runs functional tests against MySQL | | [`testing-pgsql.yml`](workflows/testing.yml) | Runs functional tests against PostgreSQL | @@ -184,7 +175,7 @@ Our project employs [GitHub Actions](https://github.com/features/actions) for co ## ๐Ÿ“ Before You Contribute * **Tests**: Include tests that cover any new features or bug fixes. -* **Code Quality**: Utilize `make lint` for code style checks and `make lint-stan lint-psalm` for static analysis with [PHPStan](https://phpstan.org) and [Psalm](https://psalm.dev/). +* **Code Quality**: Utilize `make lint` for code style checks and `make lint-stan lint-psalm` for static analysis with [Psalm](https://psalm.dev/). * **Documentation**: Update relevant documentation to reflect your changes, ensuring other developers can understand and use your contributions effectively. * **Commits**: use Conventional Commits standard to create a commit @@ -221,16 +212,6 @@ git commit -am 'fix: something has been fixed'
-## ๐Ÿ“ฆ PHAR Dependencies - -We use [Phive](https://phar.io/) to manage PHAR dependencies. You can install all dependencies using the `make phive` command, which will be executed through the Docker environment. - -```bash -make phive -``` - -
- ## ๐Ÿ” Coding Standards We enforce coding standards to maintain high code quality and readability. Here's a list of tools we use: @@ -348,30 +329,25 @@ to run mutation tests. ## ๐Ÿ” Static Code Analysis -We use both [`phpstan/phpstan`](https://github.com/phpstan/phpstan) and [`vimeo/psalm`](https://github.com/vimeo/psalm) to statically analyze the code. +We use [`vimeo/psalm`](https://github.com/vimeo/psalm) to statically analyze the code. Run ```bash -make lint-stan make lint-psalm ``` to run a static code analysis. -We also use the baseline features of [`phpstan/phpstan`](https://phpstan.org/user-guide/baseline) and [`vimeo/psalm`](https://psalm.dev/docs/running_psalm/dealing_with_code_issues/#using-a-baseline-file) to ignore existing issues. +We also use the baseline features of [`vimeo/psalm`](https://psalm.dev/docs/running_psalm/dealing_with_code_issues/#using-a-baseline-file) to ignore existing issues. Run ```bash -make lint-stan-baseline make lint-psalm-baseline ``` -to regenerate the baselines in: - -* [`../phpstan-baseline.neon`](../phpstan-baseline.neon). -* [`../psalm-baseline.xml`](../psalm-baseline.xml). +to regenerate the baselines in [`../psalm-baseline.xml`](../psalm-baseline.xml). > [!IMPORTANT] > @@ -381,18 +357,18 @@ to regenerate the baselines in: ## ๐Ÿงช Unit and Functional Tests -We use [`phpunit/phpunit`](https://github.com/sebastianbergmann/phpunit) and [`pestphp/pest`](https://github.com/pestphp/pest) to drive the development. +We use [`phpunit/phpunit`](https://github.com/sebastianbergmann/phpunit) to drive the development. Run to run all the tests: ```bash -# To run both, arch (pest) and unit (phpunit) tests +# To run both, all the tests make test -# To run only arch (pest) tests +# To run only arch tests make test-arch -# To run only unit (phpunit) tests +# To run only unit tests make test-unit ``` diff --git a/.github/assets/screenshot.png b/.github/assets/screenshot.png deleted file mode 100644 index 90d5e3d..0000000 Binary files a/.github/assets/screenshot.png and /dev/null differ diff --git a/.github/workflows/coding-standards.yml b/.github/workflows/coding-standards.yml deleted file mode 100644 index b08c5e0..0000000 --- a/.github/workflows/coding-standards.yml +++ /dev/null @@ -1,204 +0,0 @@ ---- - -on: # yamllint disable-line rule:truthy - pull_request: - branches: - - '*.*' - push: - branches: - - '*.*' - -name: ๐Ÿงน Fix PHP coding standards - -jobs: - commit-linting: - timeout-minutes: 4 - runs-on: ubuntu-latest - concurrency: - cancel-in-progress: true - group: commit-linting-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - permissions: - contents: read - pull-requests: read - steps: - - name: ๐Ÿ“ฆ Check out the codebase - uses: actions/checkout@v4.1.6 - - - name: ๐Ÿง Lint commits using "commitlint" - uses: wagoid/commitlint-github-action@v6.0.1 - with: - configFile: ${{ github.workspace }}/.github/.commitlint.config.mjs - failOnWarnings: false - failOnErrors: true - helpURL: 'https://github.com/conventional-changelog/commitlint/#what-is-commitlint' - - yaml-linting: - timeout-minutes: 4 - runs-on: ubuntu-latest - concurrency: - cancel-in-progress: true - group: yaml-linting-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - permissions: - contents: read - pull-requests: read - steps: - - name: ๐Ÿ“ฆ Check out the codebase - uses: actions/checkout@v4.1.6 - - - name: ๐Ÿง Lint YAML files - uses: ibiqlik/action-yamllint@v3.1.1 - with: - config_file: .github/.yamllint.yaml - file_or_dir: '.' - strict: true - - markdown-linting: - timeout-minutes: 4 - runs-on: ubuntu-latest - concurrency: - cancel-in-progress: true - group: markdown-linting-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - steps: - - name: ๐Ÿ“ฆ Check out the codebase - uses: actions/checkout@v4.1.6 - - - name: ๐Ÿง Lint Markdown files - uses: DavidAnson/markdownlint-cli2-action@v16.0.0 - with: - config: '.github/.markdownlint.json' - globs: | - **/*.md - !CHANGELOG.md - !./docs - - composer-linting: - timeout-minutes: 4 - runs-on: ${{ matrix.os }} - concurrency: - cancel-in-progress: true - group: composer-linting-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - strategy: - matrix: - os: - - ubuntu-latest - php-version: - - '8.2' - dependencies: - - locked - permissions: - contents: write - steps: - - name: ๐Ÿ› ๏ธ Setup PHP - uses: shivammathur/setup-php@2.30.5 - with: - php-version: ${{ matrix.php-version }} - extensions: mbstring, pdo, pdo_sqlite - ini-values: error_reporting=E_ALL - coverage: none - tools: phive - - - name: ๐Ÿ“ฆ Check out the codebase - uses: actions/checkout@v4.1.6 - - - name: ๐Ÿ› ๏ธ Setup problem matchers - run: | - echo "::add-matcher::${{ runner.tool_cache }}/php.json" - - - name: ๐Ÿค– Validate composer.json and composer.lock - run: composer validate --ansi --strict - - - name: ๐Ÿ” Get composer cache directory - uses: cycle/gh-actions/actions/composer/get-cache-directory@v4.0.0 - - - name: โ™ป๏ธ Restore cached dependencies installed with composer - uses: actions/cache@v4.0.2 - with: - path: ${{ env.COMPOSER_CACHE_DIR }} - key: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }} - restore-keys: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}- - - - name: ๐Ÿ“ฅ Install "${{ matrix.dependencies }}" dependencies with composer - uses: cycle/gh-actions/actions/composer/install@v4.0.0 - with: - dependencies: ${{ matrix.dependencies }} - - - name: ๐Ÿ“ฅ Install dependencies with phive - uses: cycle/gh-actions/actions/phive/install@v4.0.0 - with: - phive-home: '.phive' - trust-gpg-keys: '0xC00543248C87FB13,0x033E5F8D801A2F8D' - - - name: ๐Ÿ” Run ergebnis/composer-normalize - run: .phive/composer-normalize --ansi --dry-run - - coding-standards: - timeout-minutes: 4 - runs-on: ${{ matrix.os }} - concurrency: - cancel-in-progress: true - group: coding-standards-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - strategy: - matrix: - os: - - ubuntu-latest - php-version: - - '8.2' - dependencies: - - locked - permissions: - contents: write - steps: - - name: โš™๏ธ Set git to use LF line endings - run: | - git config --global core.autocrlf false - git config --global core.eol lf - - - name: ๐Ÿ› ๏ธ Setup PHP - uses: shivammathur/setup-php@2.30.5 - with: - php-version: ${{ matrix.php-version }} - extensions: mbstring, pdo, pdo_sqlite - ini-values: error_reporting=E_ALL - coverage: none - - - name: ๐Ÿ“ฆ Check out the codebase - uses: actions/checkout@v4.1.6 - - - name: ๐Ÿ› ๏ธ Setup problem matchers - run: | - echo "::add-matcher::${{ runner.tool_cache }}/php.json" - - - name: ๐Ÿค– Validate composer.json and composer.lock - run: composer validate --ansi --strict - - - name: ๐Ÿ” Get composer cache directory - uses: cycle/gh-actions/actions/composer/get-cache-directory@v4.0.0 - - - name: โ™ป๏ธ Restore cached dependencies installed with composer - uses: actions/cache@v4.0.2 - with: - path: ${{ env.COMPOSER_CACHE_DIR }} - key: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }} - restore-keys: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}- - - - name: ๐Ÿ“ฅ Install "${{ matrix.dependencies }}" dependencies with composer - uses: cycle/gh-actions/actions/composer/install@v4.0.0 - with: - dependencies: ${{ matrix.dependencies }} - - - name: ๐Ÿ› ๏ธ Prepare environment - run: make prepare - - - name: ๐Ÿšจ Run coding standards task - run: composer cs:fix - env: - PHP_CS_FIXER_IGNORE_ENV: true - - - name: ๐Ÿ“ค Commit and push changed files back to GitHub - uses: stefanzweifel/git-auto-commit-action@v5.0.1 - with: - commit_message: 'style(php-cs-fixer): lint php files and fix coding standards' - branch: ${{ github.head_ref }} - commit_author: 'github-actions ' - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/cs-fix.yml b/.github/workflows/cs-fix.yml new file mode 100644 index 0000000..db5860c --- /dev/null +++ b/.github/workflows/cs-fix.yml @@ -0,0 +1,16 @@ +--- + +on: # yamllint disable-line rule:truthy + push: + branches: + - '*' + +name: Fix Code Style + +jobs: + cs-fix: + permissions: + contents: write + uses: spiral/gh-actions/.github/workflows/cs-fix.yml@master + +... diff --git a/.github/workflows/dependency-analysis.yml b/.github/workflows/dependency-analysis.yml deleted file mode 100644 index 16170a4..0000000 --- a/.github/workflows/dependency-analysis.yml +++ /dev/null @@ -1,81 +0,0 @@ ---- - -on: # yamllint disable-line rule:truthy - push: - branches: - - '*.*' - paths: - - 'src/**' - - 'tests/**' - - '.php-cs-fixer.dist.php' - - 'composer.*' - pull_request: - branches: - - '*.*' - paths: - - 'src/**' - - 'tests/**' - - '.php-cs-fixer.dist.php' - - 'composer.*' - -name: ๐Ÿ” Dependency analysis - -jobs: - dependency-analysis: - timeout-minutes: 4 - runs-on: ${{ matrix.os }} - concurrency: - cancel-in-progress: true - group: dependency-analysis-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - strategy: - fail-fast: true - matrix: - os: - - ubuntu-latest - php-version: - - '8.2' - dependencies: - - locked - - steps: - - name: ๐Ÿ“ฆ Check out the codebase - uses: actions/checkout@v4.1.6 - - - name: ๐Ÿ› ๏ธ Setup PHP - uses: shivammathur/setup-php@2.30.5 - with: - php-version: ${{ matrix.php-version }} - extensions: none, ctype, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter, sockets, fileinfo, pdo - ini-values: error_reporting=E_ALL - coverage: none - tools: phive - - - name: ๐Ÿ› ๏ธ Setup problem matchers - run: echo "::add-matcher::${{ runner.tool_cache }}/php.json" - - - name: ๐Ÿค– Validate composer.json and composer.lock - run: composer validate --ansi --strict - - - name: ๐Ÿ” Get composer cache directory - uses: cycle/gh-actions/actions/composer/get-cache-directory@v4.0.0 - - - name: โ™ป๏ธ Restore cached dependencies installed with composer - uses: actions/cache@v4.0.2 - with: - path: ${{ env.COMPOSER_CACHE_DIR }} - key: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }} - restore-keys: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}- - - - name: ๐Ÿ“ฅ Install "${{ matrix.dependencies }}" dependencies - uses: cycle/gh-actions/actions/composer/install@v4.0.0 - with: - dependencies: ${{ matrix.dependencies }} - - - name: ๐Ÿ“ฅ Install dependencies with phive - uses: cycle/gh-actions/actions/phive/install@v4.0.0 - with: - phive-home: '.phive' - trust-gpg-keys: 0xC00543248C87FB13,0x033E5F8D801A2F8D - - - name: ๐Ÿ”ฌ Run maglnet/composer-require-checker - run: .phive/composer-require-checker check --ansi --config-file="$(pwd)/composer-require-checker.json" --verbose diff --git a/.github/workflows/refactoring.yml b/.github/workflows/refactoring.yml index a98354c..7c99449 100644 --- a/.github/workflows/refactoring.yml +++ b/.github/workflows/refactoring.yml @@ -30,36 +30,23 @@ jobs: - locked steps: - name: ๐Ÿ“ฆ Check out the codebase - uses: actions/checkout@v4.1.6 + uses: actions/checkout@v5 - name: ๐Ÿ› ๏ธ Setup PHP - uses: shivammathur/setup-php@2.30.5 + uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php-version }} extensions: mbstring ini-values: error_reporting=E_ALL coverage: none - - name: ๐Ÿ› ๏ธ Setup problem matchers - run: echo "::add-matcher::${{ runner.tool_cache }}/php.json" - - name: ๐Ÿค– Validate composer.json and composer.lock run: composer validate --ansi --strict - - name: ๐Ÿ” Get composer cache directory - uses: cycle/gh-actions/actions/composer/get-cache-directory@v4.0.0 - - - name: โ™ป๏ธ Restore cached dependencies installed with composer - uses: actions/cache@v4.0.2 - with: - path: ${{ env.COMPOSER_CACHE_DIR }} - key: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }} - restore-keys: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}- - - - name: ๐Ÿ“ฅ Install "${{ matrix.dependencies }}" dependencies - uses: cycle/gh-actions/actions/composer/install@v4.0.0 + - name: ๐Ÿ“ฅ Install dependencies with composer + uses: ramsey/composer-install@v3 with: - dependencies: ${{ matrix.dependencies }} + dependency-versions: "${{ matrix.dependencies }}" - name: โš™๏ธ Run automated refactoring with rector/rector run: composer refactor:ci diff --git a/.github/workflows/security-analysis.yml b/.github/workflows/security-analysis.yml index 42c6adb..55221bd 100644 --- a/.github/workflows/security-analysis.yml +++ b/.github/workflows/security-analysis.yml @@ -28,36 +28,23 @@ jobs: - locked steps: - name: ๐Ÿ“ฆ Check out the codebase - uses: actions/checkout@v4.1.6 + uses: actions/checkout@v5 - name: ๐Ÿ› ๏ธ Setup PHP - uses: shivammathur/setup-php@2.30.5 + uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php-version }} extensions: none, ctype, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter, sockets, pdo, fileinfo ini-values: error_reporting=E_ALL coverage: none - - name: ๐Ÿ› ๏ธ Setup problem matchers - run: echo "::add-matcher::${{ runner.tool_cache }}/php.json" - - name: ๐Ÿค– Validate composer.json and composer.lock run: composer validate --ansi --strict - - name: ๐Ÿ” Get composer cache directory - uses: cycle/gh-actions/actions/composer/get-cache-directory@v4.0.0 - - - name: โ™ป๏ธ Restore cached dependencies installed with composer - uses: actions/cache@v4.0.2 - with: - path: ${{ env.COMPOSER_CACHE_DIR }} - key: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }} - restore-keys: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}- - - - name: ๐Ÿ“ฅ Install "${{ matrix.dependencies }}" dependencies - uses: cycle/gh-actions/actions/composer/install@v4.0.0 + - name: ๐Ÿ“ฅ Install dependencies with composer + uses: ramsey/composer-install@v3 with: - dependencies: ${{ matrix.dependencies }} + dependency-versions: "highest" - name: ๐Ÿ› Check installed packages for security vulnerability advisories run: composer audit --ansi diff --git a/.github/workflows/static-analysis.yml b/.github/workflows/static-analysis.yml index 1c6bed9..66752bc 100644 --- a/.github/workflows/static-analysis.yml +++ b/.github/workflows/static-analysis.yml @@ -5,7 +5,6 @@ on: # yamllint disable-line rule:truthy branches: - '*.*' paths: - - 'phpstan*' - 'psalm*' - 'composer.*' - 'src/**' @@ -15,57 +14,6 @@ on: # yamllint disable-line rule:truthy name: ๐Ÿ” Static analysis jobs: - phpstan: - timeout-minutes: 4 - runs-on: ${{ matrix.os }} - concurrency: - cancel-in-progress: true - group: phpstan-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - strategy: - fail-fast: true - matrix: - os: - - ubuntu-latest - php-version: - - '8.2' - dependencies: - - locked - steps: - - name: ๐Ÿ“ฆ Check out the codebase - uses: actions/checkout@v4.1.6 - - - name: ๐Ÿ› ๏ธ Setup PHP - uses: shivammathur/setup-php@2.30.5 - with: - php-version: ${{ matrix.php-version }} - extensions: none, ctype, curl, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter, opcache, pcntl, posix, pdo, fileinfo, sockets - ini-values: error_reporting=E_ALL - coverage: none - - - name: ๐Ÿ› ๏ธ Setup problem matchers - run: echo "::add-matcher::${{ runner.tool_cache }}/php.json" - - - name: ๐Ÿค– Validate composer.json and composer.lock - run: composer validate --ansi --strict - - - name: ๐Ÿ” Get composer cache directory - uses: cycle/gh-actions/actions/composer/get-cache-directory@v4.0.0 - - - name: โ™ป๏ธ Restore cached dependencies installed with composer - uses: actions/cache@v4.0.2 - with: - path: ${{ env.COMPOSER_CACHE_DIR }} - key: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }} - restore-keys: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}- - - - name: ๐Ÿ“ฅ Install "${{ matrix.dependencies }}" dependencies - uses: cycle/gh-actions/actions/composer/install@v4.0.0 - with: - dependencies: ${{ matrix.dependencies }} - - - name: ๐Ÿ” Run static analysis using phpstan/phpstan - run: composer stan:ci - psalm: timeout-minutes: 4 runs-on: ${{ matrix.os }} @@ -83,10 +31,10 @@ jobs: - locked steps: - name: ๐Ÿ“ฆ Check out the codebase - uses: actions/checkout@v4.1.6 + uses: actions/checkout@v5 - name: ๐Ÿ› ๏ธ Setup PHP - uses: shivammathur/setup-php@2.30.5 + uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php-version }} extensions: none, ctype, curl, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter, opcache, pcntl, posix, pdo, fileinfo, sockets @@ -99,20 +47,10 @@ jobs: - name: ๐Ÿค– Validate composer.json and composer.lock run: composer validate --ansi --strict - - name: ๐Ÿ” Get composer cache directory - uses: cycle/gh-actions/actions/composer/get-cache-directory@v4.0.0 - - - name: โ™ป๏ธ Restore cached dependencies installed with composer - uses: actions/cache@v4.0.2 - with: - path: ${{ env.COMPOSER_CACHE_DIR }} - key: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }} - restore-keys: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}- - - - name: ๐Ÿ“ฅ Install "${{ matrix.dependencies }}" dependencies - uses: cycle/gh-actions/actions/composer/install@v4.0.0 + - name: ๐Ÿ“ฅ Install dependencies with composer + uses: ramsey/composer-install@v3 with: - dependencies: ${{ matrix.dependencies }} + dependency-versions: "highest" - name: ๐Ÿ” Run static analysis using vimeo/psalm run: composer psalm:ci diff --git a/.github/workflows/testing-mysql.yml b/.github/workflows/testing-mysql.yml index d2aecd7..9f06dd0 100644 --- a/.github/workflows/testing-mysql.yml +++ b/.github/workflows/testing-mysql.yml @@ -1,90 +1,18 @@ --- on: # yamllint disable-line rule:truthy - pull_request: - branches: - - '*.*' push: branches: - '*.*' + - '*.*.*' + pull_request: null -name: ๐Ÿ” Continuous integration with MySQL - -env: - DB_HOSTNAME: 127.0.0.1 - DB_PORT: 13306 +name: MSSQL jobs: - test-mysql: - timeout-minutes: 4 - runs-on: ${{ matrix.os }} - strategy: - fail-fast: true - matrix: - os: - - 'ubuntu-latest' - php-version: - - '8.2' - dependencies: - - locked - mysql-version: - - latest - - services: - mysql: - image: mysql:${{ matrix.mysql-version }} - env: - MYSQL_ROOT_HOST: '%' - MYSQL_USER: 'cycle' - MYSQL_PASSWORD: 'SSpaSS__1_123' - MYSQL_ROOT_PASSWORD: 'SSpaSS__1_123' - MYSQL_DATABASE: 'default' - options: >- - --health-cmd="mysqladmin ping" - --health-interval 10s - --health-timeout 5s - --health-retries 5 - ports: - - 13306:3306 - - steps: - - name: ๐Ÿ“ฆ Check out the codebase - uses: actions/checkout@v4.1.5 - - - name: ๐Ÿ› ๏ธ Setup PHP - uses: shivammathur/setup-php@2.30.1 - with: - php-version: ${{ matrix.php-version }} - extensions: mbstring, pdo, pdo_sqlite, pdo_mysql, json - ini-values: error_reporting=E_ALL - coverage: none - - - name: ๐Ÿ› ๏ธ Setup problem matchers - run: | - echo "::add-matcher::${{ runner.tool_cache }}/php.json" - echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" - - - name: ๐Ÿค– Validate composer.json and composer.lock - run: composer validate --ansi --strict - - - name: ๐Ÿ” Get composer cache directory - uses: cycle/gh-actions/actions/composer/get-cache-directory@v4.0.0 - - - name: โ™ป๏ธ Restore cached dependencies installed with composer - uses: actions/cache@v4.0.2 - with: - path: ${{ env.COMPOSER_CACHE_DIR }} - key: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }} - restore-keys: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}- - - - name: ๐Ÿ—‘๏ธ Remove PHP platform configuration - if: "matrix.dependencies != 'locked'" - run: composer config platform.php --ansi --unset - - - name: ๐Ÿ“ฅ Install "${{ matrix.dependencies }}" dependencies - uses: cycle/gh-actions/actions/composer/install@v4.0.0 - with: - dependencies: ${{ matrix.dependencies }} + phpunit: + uses: cycle/gh-actions/.github/workflows/db-mssql.yml@master + with: + php: '["8.1","8.2","8.3","8.4"]' - - name: ๐Ÿงช Run phpunit tests with Pest - run: composer test:mysql +... diff --git a/.github/workflows/testing-pgsql.yml b/.github/workflows/testing-pgsql.yml index 9507cb8..41c7d59 100644 --- a/.github/workflows/testing-pgsql.yml +++ b/.github/workflows/testing-pgsql.yml @@ -1,88 +1,18 @@ --- on: # yamllint disable-line rule:truthy - pull_request: - branches: - - '*.*' push: branches: - '*.*' + - '*.*.*' + pull_request: null -name: ๐Ÿ” Continuous integration with PostgreSQL - -env: - DB_HOSTNAME: 127.0.0.1 - DB_PORT: 15432 +name: Postgres jobs: - test-mysql: - timeout-minutes: 4 - runs-on: ${{ matrix.os }} - strategy: - fail-fast: true - matrix: - os: - - 'ubuntu-latest' - php-version: - - '8.2' - dependencies: - - locked - pgsql-version: - - '13-alpine' - - services: - pgsql: - image: postgres:${{ matrix.pgsql-version }} - env: - POSTGRES_DB: 'default' - POSTGRES_USER: 'cycle' - POSTGRES_PASSWORD: 'SSpaSS__1_123' - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - ports: - - 15432:5432 - - steps: - - name: ๐Ÿ“ฆ Check out the codebase - uses: actions/checkout@v4.1.5 - - - name: ๐Ÿ› ๏ธ Setup PHP - uses: shivammathur/setup-php@2.30.1 - with: - php-version: ${{ matrix.php-version }} - extensions: mbstring, pdo, pdo_sqlite, pdo_mysql, json - ini-values: error_reporting=E_ALL - coverage: none - - - name: ๐Ÿ› ๏ธ Setup problem matchers - run: | - echo "::add-matcher::${{ runner.tool_cache }}/php.json" - echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" - - - name: ๐Ÿค– Validate composer.json and composer.lock - run: composer validate --ansi --strict - - - name: ๐Ÿ” Get composer cache directory - uses: cycle/gh-actions/actions/composer/get-cache-directory@v4.0.0 - - - name: โ™ป๏ธ Restore cached dependencies installed with composer - uses: actions/cache@v4.0.2 - with: - path: ${{ env.COMPOSER_CACHE_DIR }} - key: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }} - restore-keys: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}- - - - name: ๐Ÿ—‘๏ธ Remove PHP platform configuration - if: "matrix.dependencies != 'locked'" - run: composer config platform.php --ansi --unset - - - name: ๐Ÿ“ฅ Install "${{ matrix.dependencies }}" dependencies - uses: cycle/gh-actions/actions/composer/install@v4.0.0 - with: - dependencies: ${{ matrix.dependencies }} + phpunit: + uses: cycle/gh-actions/.github/workflows/db-pgsql.yml@master + with: + php: '["8.1","8.2","8.3","8.4"]' - - name: ๐Ÿงช Run phpunit tests with Pest - run: composer test:pgsql +... diff --git a/.github/workflows/testing-sqlserver.yml b/.github/workflows/testing-sqlserver.yml index 37993a8..9f06dd0 100644 --- a/.github/workflows/testing-sqlserver.yml +++ b/.github/workflows/testing-sqlserver.yml @@ -1,87 +1,18 @@ --- on: # yamllint disable-line rule:truthy - pull_request: - branches: - - '*.*' push: branches: - '*.*' + - '*.*.*' + pull_request: null -name: ๐Ÿ” Continuous integration with SQLServer - -env: - DB_HOSTNAME: 127.0.0.1 - DB_PORT: 11433 +name: MSSQL jobs: - test-mysql: - timeout-minutes: 4 - runs-on: ${{ matrix.os }} - strategy: - fail-fast: true - matrix: - os: - - 'ubuntu-latest' - php-version: - - '8.2' - dependencies: - - locked - sqlserver-version: - - '2022-latest' - - services: - sqlserver: - image: mcr.microsoft.com/mssql/server:${{ matrix.sqlserver-version }} - env: - ACCEPT_EULA: 'Y' - SA_PASSWORD: 'SSpaSS__1_123' - options: >- - --health-cmd "/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'SSpaSS__1_123' -l 30 -Q 'SELECT 1'" - --health-interval 3s - --health-timeout 1s - --health-retries 10 - ports: - - 11433:1433 - - steps: - - name: ๐Ÿ“ฆ Check out the codebase - uses: actions/checkout@v4.1.5 - - - name: ๐Ÿ› ๏ธ Setup PHP - uses: shivammathur/setup-php@2.30.1 - with: - php-version: ${{ matrix.php-version }} - extensions: mbstring, pdo, pdo_sqlite, pdo_mysql, json - ini-values: error_reporting=E_ALL - coverage: none - - - name: ๐Ÿ› ๏ธ Setup problem matchers - run: | - echo "::add-matcher::${{ runner.tool_cache }}/php.json" - echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" - - - name: ๐Ÿค– Validate composer.json and composer.lock - run: composer validate --ansi --strict - - - name: ๐Ÿ” Get composer cache directory - uses: cycle/gh-actions/actions/composer/get-cache-directory@v4.0.0 - - - name: โ™ป๏ธ Restore cached dependencies installed with composer - uses: actions/cache@v4.0.2 - with: - path: ${{ env.COMPOSER_CACHE_DIR }} - key: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }} - restore-keys: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}- - - - name: ๐Ÿ—‘๏ธ Remove PHP platform configuration - if: "matrix.dependencies != 'locked'" - run: composer config platform.php --ansi --unset - - - name: ๐Ÿ“ฅ Install "${{ matrix.dependencies }}" dependencies - uses: cycle/gh-actions/actions/composer/install@v4.0.0 - with: - dependencies: ${{ matrix.dependencies }} + phpunit: + uses: cycle/gh-actions/.github/workflows/db-mssql.yml@master + with: + php: '["8.1","8.2","8.3","8.4"]' - - name: ๐Ÿงช Run phpunit tests with Pest - run: composer test:sqlserver +... diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 9a978c6..5e06ca1 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -27,47 +27,37 @@ jobs: dependencies: - locked steps: + - name: Install ODBC driver. + run: | + sudo curl https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list + sudo ACCEPT_EULA=Y apt-get install -y msodbcsql18 + - name: ๐Ÿ“ฆ Check out the codebase - uses: actions/checkout@v4.1.5 + uses: actions/checkout@v5 - name: ๐Ÿ› ๏ธ Setup PHP - uses: shivammathur/setup-php@2.30.4 + uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php-version }} extensions: mbstring, pdo, pdo_sqlite ini-values: error_reporting=E_ALL coverage: xdebug - - name: ๐Ÿ› ๏ธ Setup problem matchers - run: | - echo "::add-matcher::${{ runner.tool_cache }}/php.json" - echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" - - name: ๐Ÿค– Validate composer.json and composer.lock run: composer validate --ansi --strict - - name: ๐Ÿ” Get composer cache directory - uses: cycle/gh-actions/actions/composer/get-cache-directory@v4.0.0 - - - name: โ™ป๏ธ Restore cached dependencies installed with composer - uses: actions/cache@v4.0.2 - with: - path: ${{ env.COMPOSER_CACHE_DIR }} - key: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }} - restore-keys: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}- - - - name: ๐Ÿ“ฅ Install "${{ matrix.dependencies }}" dependencies - uses: cycle/gh-actions/actions/composer/install@v4.0.0 + - name: ๐Ÿ“ฅ Install dependencies with composer + uses: ramsey/composer-install@v3 with: - dependencies: ${{ matrix.dependencies }} + dependency-versions: "highest" - name: ๐Ÿงช Collect code coverage with Xdebug and phpunit/phpunit run: composer test:cc - name: ๐Ÿ“ค Upload code coverage report to Codecov - uses: codecov/codecov-action@v4.3.0 + uses: codecov/codecov-action@v4 with: - files: .build/phpunit/logs/clover.xml + files: runtime/phpunit/logs/clover.xml token: ${{ secrets.CODECOV_TOKEN }} verbose: true @@ -89,95 +79,23 @@ jobs: - locked steps: - name: ๐Ÿ“ฆ Check out the codebase - uses: actions/checkout@v4.1.6 + uses: actions/checkout@v5 - name: ๐Ÿ› ๏ธ Setup PHP - uses: shivammathur/setup-php@2.30.5 + uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php-version }} extensions: mbstring, pdo, pdo_sqlite ini-values: error_reporting=E_ALL coverage: xdebug - - name: ๐Ÿ› ๏ธ Setup problem matchers - run: | - echo "::add-matcher::${{ runner.tool_cache }}/php.json" - echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" - - name: ๐Ÿค– Validate composer.json and composer.lock run: composer validate --ansi --strict - - name: ๐Ÿ” Get composer cache directory - uses: cycle/gh-actions/actions/composer/get-cache-directory@v4.0.0 - - - name: โ™ป๏ธ Restore cached dependencies installed with composer - uses: actions/cache@v4.0.2 + - name: ๐Ÿ“ฅ Install dependencies with composer + uses: ramsey/composer-install@v3 with: - path: ${{ env.COMPOSER_CACHE_DIR }} - key: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }} - restore-keys: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}- - - - name: โš™๏ธ Remove platform configuration with composer - if: matrix.dependencies != 'locked' - run: composer config platform.php --ansi --unset + dependency-versions: "highest" - - name: ๐Ÿ“ฅ Install "${{ matrix.dependencies }}" dependencies - uses: cycle/gh-actions/actions/composer/install@v4.0.0 - with: - dependencies: ${{ matrix.dependencies }} - - - name: ๐Ÿงช Run architecture tests using pestphp/pest + - name: ๐Ÿš€ Run architecture tests run: composer test:arch - - mutation-testing: - timeout-minutes: 16 - runs-on: ${{ matrix.os }} - concurrency: - cancel-in-progress: true - group: mutation-testing-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - strategy: - fail-fast: true - matrix: - os: - - ubuntu-latest - php-version: - - '8.2' - dependencies: - - locked - steps: - - name: ๐Ÿ“ฆ Check out the codebase - uses: actions/checkout@v4.1.5 - - - name: ๐Ÿ› ๏ธ Setup PHP - uses: shivammathur/setup-php@2.30.4 - with: - php-version: ${{ matrix.php-version }} - extensions: mbstring, pdo, pdo_sqlite - ini-values: error_reporting=E_ALL - coverage: xdebug - - - name: ๐Ÿ› ๏ธ Setup problem matchers - run: echo "::add-matcher::${{ runner.tool_cache }}/php.json" - - - name: ๐Ÿค– Validate composer.json and composer.lock - run: composer validate --ansi --strict - - - name: ๐Ÿ” Get composer cache directory - uses: cycle/gh-actions/actions/composer/get-cache-directory@v4.0.0 - - - name: โ™ป๏ธ Restore cached dependencies installed with composer - uses: actions/cache@v4.0.2 - with: - path: ${{ env.COMPOSER_CACHE_DIR }} - key: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }} - restore-keys: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}- - - - name: ๐Ÿ“ฅ Install "${{ matrix.dependencies }}" dependencies - uses: cycle/gh-actions/actions/composer/install@v4.0.0 - with: - dependencies: ${{ matrix.dependencies }} - - - name: ๐Ÿงช Run mutation testing using Xdebug and infection/infection - run: composer infect:ci - env: - STRYKER_DASHBOARD_API_KEY: ${{ secrets.STRYKER_DASHBOARD_API_KEY }} diff --git a/.gitignore b/.gitignore index a9e45f0..265091e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,12 @@ -/vendor/ -/.build/ -/.idea/ +/.* +!/.github/ +!/.well-known/ +!/.pre-commit-config.yaml +/runtime/ /tests/runtime/ +/vendor/ .env -coverage.xml +composer.lock +*.db +clover.xml +docker-compose.override.yml diff --git a/.phive/.gitignore b/.phive/.gitignore deleted file mode 100644 index 71d2e19..0000000 --- a/.phive/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!.gitignore -!phars.xml diff --git a/.phive/phars.xml b/.phive/phars.xml deleted file mode 100644 index 1817e09..0000000 --- a/.phive/phars.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index 3b0f8ed..45745a1 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -2,18 +2,12 @@ declare(strict_types=1); -use WayOfDev\PhpCsFixer\Config\ConfigBuilder; -use WayOfDev\PhpCsFixer\Config\RuleSets\ExtendedPERSet; - require_once 'vendor/autoload.php'; -$config = ConfigBuilder::createFromRuleSet(new ExtendedPERSet()) - ->inDir(__DIR__ . '/src') - ->inDir(__DIR__ . '/tests') - ->addFiles([__FILE__]) - ->getConfig() -; - -$config->setCacheFile(__DIR__ . '/.build/php-cs-fixer/php-cs-fixer.cache'); - -return $config; +return \Spiral\CodeStyle\Builder::create() + ->include(__DIR__ . '/src') + ->include(__DIR__ . '/tests') + ->include(__FILE__) + ->cache('./runtime/php-cs-fixer.cache') + ->allowRisky(false) + ->build(); diff --git a/Makefile b/Makefile index 07c758a..3d01e4c 100644 --- a/Makefile +++ b/Makefile @@ -51,8 +51,6 @@ MARKDOWN_LINT_RUNNER ?= $(DOCKER) run --rm $$(tty -s && echo "-it" || echo) \ davidanson/markdownlint-cli2-rules:latest \ --config ".github/.markdownlint.json" -PHIVE_RUNNER ?= $(DOCKER_COMPOSE) run --rm --no-deps app - NPM_RUNNER ?= pnpm EXPORT_VARS = '\ @@ -110,7 +108,7 @@ help: ## Show this menu # Default action # Defines default command when `make` is executed without additional parameters # ------------------------------------------------------------------------------------ -all: env prepare install hooks phive up +all: env prepare install hooks up .PHONY: all # @@ -130,7 +128,7 @@ endif .PHONY: env prepare: ## Prepare project for development - mkdir -p .build/php-cs-fixer + mkdir -p runtime/php-cs-fixer .PHONY: prepare # @@ -186,10 +184,6 @@ update: ## Updates composer dependencies by running composer update command $(APP_COMPOSER) update .PHONY: update -phive: ## Installs dependencies with phive - $(APP_RUNNER) /usr/local/bin/phive install --trust-gpg-keys 0xC00543248C87FB13,0x033E5F8D801A2F8D -.PHONY: phive - # # Code Quality, Git, Linting # ------------------------------------------------------------------------------------ @@ -199,7 +193,7 @@ hooks: ## Install git hooks from pre-commit-config pre-commit autoupdate .PHONY: hooks -lint: lint-yaml lint-actions lint-md lint-php lint-stan lint-composer lint-audit ## Runs all linting commands +lint: lint-yaml lint-actions lint-md lint-php lint-audit ## Runs all linting commands .PHONY: lint lint-yaml: ## Lints yaml files inside project @@ -226,18 +220,6 @@ lint-diff: prepare ## Runs php-cs-fixer in dry-run mode and shows diff which wil $(APP_COMPOSER) cs:diff .PHONY: lint-diff -lint-stan: ## Runs phpstan โ€“ static analysis tool - $(APP_COMPOSER) stan -.PHONY: lint-stan - -lint-stan-ci: ## Runs phpstan โ€“ static analysis tool with github output (CI mode) - $(APP_COMPOSER) stan:ci -.PHONY: lint-stan-ci - -lint-stan-baseline: ## Runs phpstan to update its baseline - $(APP_COMPOSER) stan:baseline -.PHONY: lint-stan-baseline - lint-psalm: ## Runs vimeo/psalm โ€“ static analysis tool $(APP_COMPOSER) psalm .PHONY: lint-psalm @@ -250,16 +232,6 @@ lint-psalm-baseline: ## Runs vimeo/psalm to update its baseline $(APP_COMPOSER) psalm:baseline .PHONY: lint-psalm-baseline -lint-deps: ## Runs composer-require-checker โ€“ checks for dependencies that are not used - $(APP_RUNNER) .phive/composer-require-checker check \ - --config-file=/app/composer-require-checker.json \ - --verbose -.PHONY: lint-deps - -lint-composer: ## Normalize composer.json and composer.lock files - $(APP_RUNNER) .phive/composer-normalize normalize -.PHONY: lint-composer - lint-audit: ## Runs security checks for composer dependencies $(APP_COMPOSER) audit .PHONY: lint-security @@ -282,31 +254,31 @@ infect-ci: ## Runs infection โ€“ mutation testing framework with github output ( test-all: test test-arch test-pgsql test-mysql test-sqlite test-sqlserver ## Run all test suites .PHONY: test-all -test: ## Run project php-unit and pest tests +test: ## Run project tests $(APP_COMPOSER) test .PHONY: test -test-arch: ## Run project pest tests with architecture checks +test-arch: ## Run architecture checks $(APP_COMPOSER) test:arch .PHONY: test-arch -test-pgsql: ## Run project php-unit and pest tests over pgsql database +test-pgsql: ## Run project tests over pgsql database $(APP_COMPOSER) test:pgsql .PHONY: test-pgsql -test-mysql: ## Run project php-unit and pest tests over mysql database +test-mysql: ## Run project tests over mysql database $(APP_COMPOSER) test:mysql .PHONY: test-mysql -test-sqlite: ## Run project php-unit and pest tests over sqlite database +test-sqlite: ## Run project tests over sqlite database $(APP_COMPOSER) test:sqlite .PHONY: test-sqlite -test-sqlserver: ## Run project php-unit and pest tests over sqlserver database +test-sqlserver: ## Run project tests over sqlserver database $(APP_COMPOSER) test:sqlserver .PHONY: test-sqlserver -test-cc: ## Run project php-unit and pest tests in coverage mode and build report +test-cc: ## Run project tests in coverage mode and build report $(APP_COMPOSER) test:cc .PHONY: test-cc diff --git a/README.md b/README.md index 2bfb7ca..e18a20e 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,6 @@ [![Codecov Coverage](https://img.shields.io/codecov/c/github/cycle/active-record?style=flat-square&logo=codecov)](https://app.codecov.io/gh/cycle/active-record) [![Type Coverage](https://shepherd.dev/github/cycle/active-record/coverage.svg)](https://shepherd.dev/github/cycle/active-record) [![Mutation testing badge](https://img.shields.io/endpoint?style=flat-square&label=mutation%20score&url=https%3A%2F%2Fbadge-api.stryker-mutator.io%2Fgithub.com%2Fcycle%2Factive-record%2Fmaster)](https://dashboard.stryker-mutator.io/reports/github.com/cycle/active-record/master) -![PHP Stan Level 5 of 9](https://img.shields.io/badge/phpstan%20level-5%20of%209-yellowgreen?style=flat-square) [![Discord](https://img.shields.io/discord/538114875570913290?style=flat-square&logo=discord&labelColor=7289d9&logoColor=white&color=39456d)](https://discord.gg/spiralphp) [![Follow on Twitter (X)](https://img.shields.io/badge/-Follow-black?style=flat-square&logo=X)](https://x.com/intent/follow?screen_name=SpiralPHP) @@ -183,13 +182,7 @@ make infect ### โ†’ Static Analysis -Code quality using PHPStan: - -```bash -make lint-stan -``` - -and using Psalm: +Code quality using Psalm: ```bash make lint-psalm diff --git a/composer.json b/composer.json index 89a5e40..fad8c7e 100644 --- a/composer.json +++ b/composer.json @@ -35,7 +35,7 @@ } ], "require": { - "php": ">=8.2", + "php": ">=8.1", "cycle/database": "^2.11", "cycle/orm": "^2.7", "psr/container": "^2.0" @@ -47,24 +47,18 @@ "fakerphp/faker": "^1.23", "illuminate/support": "^10.48 || ^11.0", "mockery/mockery": "^1.6", - "pestphp/pest": "^2.34", - "phpstan/extension-installer": "^1.3", - "phpstan/phpstan": "^1.10", - "phpstan/phpstan-deprecation-rules": "^1.1", - "phpstan/phpstan-phpunit": "^1.3", - "phpstan/phpstan-strict-rules": "^1.5", "phpunit/phpunit": "^10.5", "psalm/plugin-phpunit": "~0.19.0", "rector/rector": "^1.0", - "roave/infection-static-analysis-plugin": "^1.35", - "roave/security-advisories": "dev-latest", + "infection/infection": ">=0.29", "spiral/boot": "^3.12", + "spiral/code-style": "^2.3", "spiral/cycle-bridge": "^2.9", "spiral/framework": "^3.12", "spiral/logger": "^3.12", "spiral/testing": "^2.7", - "vimeo/psalm": "^5.23", - "wayofdev/cs-fixer-config": "^1.4" + "ta-tikoma/phpunit-architecture-test": "^0.8.5", + "vimeo/psalm": "^6.0" }, "suggest": { "spiral/cycle-bridge": "Provides integration with Spiral Framework", @@ -88,15 +82,13 @@ "allow-plugins": { "ergebnis/composer-normalize": true, "infection/extension-installer": true, - "pestphp/pest-plugin": true, - "phpstan/extension-installer": true, "spiral/composer-publish-plugin": true }, "audit": { "abandoned": "report" }, "platform": { - "php": "8.2.17" + "php": "8.1.17" }, "sort-packages": true }, @@ -125,52 +117,49 @@ "infect": [ "Composer\\Config::disableProcessTimeout", "@putenv XDEBUG_MODE=coverage", - "roave-infection-static-analysis-plugin" + "infection" ], "infect:ci": [ "Composer\\Config::disableProcessTimeout", "@putenv XDEBUG_MODE=coverage", - "roave-infection-static-analysis-plugin --threads=2 --ansi --logger-github --ignore-msi-with-no-mutations --only-covered" + "infection --ansi --logger-github --ignore-msi-with-no-mutations --only-covered" ], "psalm": "psalm --show-info=true", "psalm:baseline": "psalm --set-baseline=psalm-baseline.xml", "psalm:ci": "psalm --output-format=github --shepherd --show-info=false --stats --threads=4", "refactor": "rector process --config=rector.php", "refactor:ci": "rector process --config=rector.php --dry-run --ansi", - "stan": "phpstan analyse --memory-limit=2G", - "stan:baseline": "phpstan analyse --generate-baseline --memory-limit=2G --allow-empty-baseline", - "stan:ci": "phpstan analyse --memory-limit=2G --error-format=github", "test": [ "@putenv XDEBUG_MODE=coverage", - "pest --color=always" + "phpunit --color=always" ], "test:arch": [ "@putenv XDEBUG_MODE=coverage", - "pest --color=always --configuration pest.xml.dist" + "phpunit --color=always" ], "test:cc": [ "@putenv XDEBUG_MODE=coverage", - "pest --coverage --coverage-clover=.build/phpunit/logs/clover.xml --color=always" + "phpunit --coverage-clover=runtime/phpunit/logs/clover.xml --color=always" ], "test:mysql": [ "@putenv XDEBUG_MODE=coverage", "@putenv DB_DRIVER=mysql", - "pest --color=always" + "phpunit --color=always" ], "test:pgsql": [ "@putenv XDEBUG_MODE=coverage", "@putenv DB_DRIVER=pgsql", - "pest --color=always" + "phpunit --color=always" ], "test:sqlite": [ "@putenv XDEBUG_MODE=coverage", "@putenv DB_DRIVER=sqlite", - "pest --color=always" + "phpunit --color=always" ], "test:sqlserver": [ "@putenv XDEBUG_MODE=coverage", "@putenv DB_DRIVER=sqlserver", - "pest --color=always" + "phpunit --color=always" ] } } diff --git a/composer.lock b/composer.lock index 924a13f..e2e8662 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,68 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "4d6c7430510d8dd1b1ea819fc7096aba", + "content-hash": "39a64bf69a855ddea1139bf99c075406", "packages": [ + { + "name": "brick/math", + "version": "0.13.1", + "source": { + "type": "git", + "url": "https://github.com/brick/math.git", + "reference": "fc7ed316430118cc7836bf45faff18d5dfc8de04" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brick/math/zipball/fc7ed316430118cc7836bf45faff18d5dfc8de04", + "reference": "fc7ed316430118cc7836bf45faff18d5dfc8de04", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^10.1", + "vimeo/psalm": "6.8.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "Brick\\Math\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Arbitrary-precision arithmetic library", + "keywords": [ + "Arbitrary-precision", + "BigInteger", + "BigRational", + "arithmetic", + "bigdecimal", + "bignum", + "bignumber", + "brick", + "decimal", + "integer", + "math", + "mathematics", + "rational" + ], + "support": { + "issues": "https://github.com/brick/math/issues", + "source": "https://github.com/brick/math/tree/0.13.1" + }, + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + } + ], + "time": "2025-03-29T13:50:30+00:00" + }, { "name": "cocur/slugify", "version": "v4.6.0", @@ -130,16 +190,16 @@ }, { "name": "cycle/database", - "version": "2.11.3", + "version": "2.15.0", "source": { "type": "git", "url": "https://github.com/cycle/database.git", - "reference": "713122e3495dbced950c795d4835e8e16da4d983" + "reference": "3d7ee3524b299c5897e2b03dc51bad2ddd609a90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cycle/database/zipball/713122e3495dbced950c795d4835e8e16da4d983", - "reference": "713122e3495dbced950c795d4835e8e16da4d983", + "url": "https://api.github.com/repos/cycle/database/zipball/3d7ee3524b299c5897e2b03dc51bad2ddd609a90", + "reference": "3d7ee3524b299c5897e2b03dc51bad2ddd609a90", "shasum": "" }, "require": { @@ -155,12 +215,12 @@ }, "require-dev": { "ergebnis/composer-normalize": "^2.42", - "infection/infection": "^0.26.10", + "infection/infection": ">=0.26.10", "mockery/mockery": "^1.5", "phpunit/phpunit": "^9.5", - "spiral/code-style": "~2.2.0", + "spiral/code-style": "^2.2.0", "spiral/tokenizer": "^2.14 || ^3.0", - "vimeo/psalm": "^5.18" + "vimeo/psalm": "^5.26 || ^6.6" }, "type": "library", "autoload": { @@ -219,20 +279,20 @@ "type": "github" } ], - "time": "2024-12-10T14:03:34+00:00" + "time": "2025-07-22T05:27:52+00:00" }, { "name": "cycle/orm", - "version": "v2.9.1", + "version": "v2.10.1", "source": { "type": "git", "url": "https://github.com/cycle/orm.git", - "reference": "d790848a457d54cce1846ee3d2758fe0ae83537b" + "reference": "0b659067c00c3ffbee05109fa17812754acc2525" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cycle/orm/zipball/d790848a457d54cce1846ee3d2758fe0ae83537b", - "reference": "d790848a457d54cce1846ee3d2758fe0ae83537b", + "url": "https://api.github.com/repos/cycle/orm/zipball/0b659067c00c3ffbee05109fa17812754acc2525", + "reference": "0b659067c00c3ffbee05109fa17812754acc2525", "shasum": "" }, "require": { @@ -252,7 +312,7 @@ "spiral/code-style": "~2.2.0", "spiral/tokenizer": "^2.8 || ^3.0", "symfony/var-dumper": "^5.2 || ^6.0 || ^7.0", - "vimeo/psalm": "5.21" + "vimeo/psalm": "5.21 || ^6.8" }, "type": "library", "autoload": { @@ -306,7 +366,7 @@ "type": "github" } ], - "time": "2024-12-12T10:30:38+00:00" + "time": "2025-03-31T19:41:17+00:00" }, { "name": "defuse/php-encryption", @@ -377,33 +437,32 @@ }, { "name": "doctrine/inflector", - "version": "2.0.10", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", - "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/6d6c96277ea252fc1304627204c3d5e6e15faa3b", + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^11.0", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.3", - "phpunit/phpunit": "^8.5 || ^9.5", - "vimeo/psalm": "^4.25 || ^5.4" + "doctrine/coding-standard": "^12.0 || ^13.0", + "phpstan/phpstan": "^1.12 || ^2.0", + "phpstan/phpstan-phpunit": "^1.4 || ^2.0", + "phpstan/phpstan-strict-rules": "^1.6 || ^2.0", + "phpunit/phpunit": "^8.5 || ^12.2" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + "Doctrine\\Inflector\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -448,7 +507,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.10" + "source": "https://github.com/doctrine/inflector/tree/2.1.0" }, "funding": [ { @@ -464,7 +523,7 @@ "type": "tidelift" } ], - "time": "2024-02-18T20:23:39+00:00" + "time": "2025-08-10T19:31:58+00:00" }, { "name": "doctrine/instantiator", @@ -615,16 +674,16 @@ }, { "name": "egulias/email-validator", - "version": "4.0.2", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e" + "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e", - "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa", + "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa", "shasum": "" }, "require": { @@ -670,7 +729,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/4.0.2" + "source": "https://github.com/egulias/EmailValidator/tree/4.0.4" }, "funding": [ { @@ -678,7 +737,7 @@ "type": "github" } ], - "time": "2023-10-06T06:47:41+00:00" + "time": "2025-03-06T22:45:56+00:00" }, { "name": "graham-campbell/result-type", @@ -744,16 +803,16 @@ }, { "name": "league/flysystem", - "version": "3.29.1", + "version": "3.30.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "edc1bb7c86fab0776c3287dbd19b5fa278347319" + "reference": "2203e3151755d874bb2943649dae1eb8533ac93e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/edc1bb7c86fab0776c3287dbd19b5fa278347319", - "reference": "edc1bb7c86fab0776c3287dbd19b5fa278347319", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/2203e3151755d874bb2943649dae1eb8533ac93e", + "reference": "2203e3151755d874bb2943649dae1eb8533ac93e", "shasum": "" }, "require": { @@ -777,13 +836,13 @@ "composer/semver": "^3.0", "ext-fileinfo": "*", "ext-ftp": "*", - "ext-mongodb": "^1.3", + "ext-mongodb": "^1.3|^2", "ext-zip": "*", "friendsofphp/php-cs-fixer": "^3.5", "google/cloud-storage": "^1.23", "guzzlehttp/psr7": "^2.6", "microsoft/azure-storage-blob": "^1.1", - "mongodb/mongodb": "^1.2", + "mongodb/mongodb": "^1.2|^2", "phpseclib/phpseclib": "^3.0.36", "phpstan/phpstan": "^1.10", "phpunit/phpunit": "^9.5.11|^10.0", @@ -821,22 +880,22 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.29.1" + "source": "https://github.com/thephpleague/flysystem/tree/3.30.0" }, - "time": "2024-10-08T08:58:34+00:00" + "time": "2025-06-25T13:29:59+00:00" }, { "name": "league/flysystem-local", - "version": "3.29.0", + "version": "3.30.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-local.git", - "reference": "e0e8d52ce4b2ed154148453d321e97c8e931bd27" + "reference": "6691915f77c7fb69adfb87dcd550052dc184ee10" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/e0e8d52ce4b2ed154148453d321e97c8e931bd27", - "reference": "e0e8d52ce4b2ed154148453d321e97c8e931bd27", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/6691915f77c7fb69adfb87dcd550052dc184ee10", + "reference": "6691915f77c7fb69adfb87dcd550052dc184ee10", "shasum": "" }, "require": { @@ -870,9 +929,9 @@ "local" ], "support": { - "source": "https://github.com/thephpleague/flysystem-local/tree/3.29.0" + "source": "https://github.com/thephpleague/flysystem-local/tree/3.30.0" }, - "time": "2024-08-09T21:24:39+00:00" + "time": "2025-05-21T10:34:19+00:00" }, { "name": "league/mime-type-detection", @@ -932,16 +991,16 @@ }, { "name": "monolog/monolog", - "version": "3.8.1", + "version": "3.9.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "aef6ee73a77a66e404dd6540934a9ef1b3c855b4" + "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/aef6ee73a77a66e404dd6540934a9ef1b3c855b4", - "reference": "aef6ee73a77a66e404dd6540934a9ef1b3c855b4", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/10d85740180ecba7896c87e06a166e0c95a0e3b6", + "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6", "shasum": "" }, "require": { @@ -1019,7 +1078,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.8.1" + "source": "https://github.com/Seldaek/monolog/tree/3.9.0" }, "funding": [ { @@ -1031,20 +1090,20 @@ "type": "tidelift" } ], - "time": "2024-12-05T17:15:07+00:00" + "time": "2025-03-24T10:02:05+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.12.1", + "version": "1.13.4", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845" + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/123267b2c49fbf30d78a7b2d333f6be754b94845", - "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a", "shasum": "" }, "require": { @@ -1083,7 +1142,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.12.1" + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.4" }, "funding": [ { @@ -1091,31 +1150,31 @@ "type": "tidelift" } ], - "time": "2024-11-08T17:47:46+00:00" + "time": "2025-08-01T08:46:24+00:00" }, { "name": "nette/php-generator", - "version": "v4.1.7", + "version": "v4.2.0", "source": { "type": "git", "url": "https://github.com/nette/php-generator.git", - "reference": "d201c9bc217e0969d1b678d286be49302972fb56" + "reference": "4707546a1f11badd72f5d82af4f8a6bc64bd56ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/php-generator/zipball/d201c9bc217e0969d1b678d286be49302972fb56", - "reference": "d201c9bc217e0969d1b678d286be49302972fb56", + "url": "https://api.github.com/repos/nette/php-generator/zipball/4707546a1f11badd72f5d82af4f8a6bc64bd56ac", + "reference": "4707546a1f11badd72f5d82af4f8a6bc64bd56ac", "shasum": "" }, "require": { - "nette/utils": "^3.2.9 || ^4.0", - "php": "8.0 - 8.4" + "nette/utils": "^4.0.6", + "php": "8.1 - 8.5" }, "require-dev": { - "jetbrains/phpstorm-attributes": "dev-master", + "jetbrains/phpstorm-attributes": "^1.2", "nette/tester": "^2.4", - "nikic/php-parser": "^4.18 || ^5.0", - "phpstan/phpstan": "^1.0", + "nikic/php-parser": "^5.0", + "phpstan/phpstan-nette": "^2.0@stable", "tracy/tracy": "^2.8" }, "suggest": { @@ -1124,10 +1183,13 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.1-dev" + "dev-master": "4.2-dev" } }, "autoload": { + "psr-4": { + "Nette\\": "src" + }, "classmap": [ "src/" ] @@ -1148,7 +1210,7 @@ "homepage": "https://nette.org/contributors" } ], - "description": "๐Ÿ˜ Nette PHP Generator: generates neat PHP code for you. Supports new PHP 8.4 features.", + "description": "๐Ÿ˜ Nette PHP Generator: generates neat PHP code for you. Supports new PHP 8.5 features.", "homepage": "https://nette.org", "keywords": [ "code", @@ -1158,35 +1220,35 @@ ], "support": { "issues": "https://github.com/nette/php-generator/issues", - "source": "https://github.com/nette/php-generator/tree/v4.1.7" + "source": "https://github.com/nette/php-generator/tree/v4.2.0" }, - "time": "2024-11-29T01:41:18+00:00" + "time": "2025-08-06T18:24:31+00:00" }, { "name": "nette/utils", - "version": "v4.0.5", + "version": "v4.0.8", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96" + "reference": "c930ca4e3cf4f17dcfb03037703679d2396d2ede" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/736c567e257dbe0fcf6ce81b4d6dbe05c6899f96", - "reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96", + "url": "https://api.github.com/repos/nette/utils/zipball/c930ca4e3cf4f17dcfb03037703679d2396d2ede", + "reference": "c930ca4e3cf4f17dcfb03037703679d2396d2ede", "shasum": "" }, "require": { - "php": "8.0 - 8.4" + "php": "8.0 - 8.5" }, "conflict": { "nette/finder": "<3", "nette/schema": "<1.2.2" }, "require-dev": { - "jetbrains/phpstorm-attributes": "dev-master", + "jetbrains/phpstorm-attributes": "^1.2", "nette/tester": "^2.5", - "phpstan/phpstan": "^1.0", + "phpstan/phpstan-nette": "^2.0@stable", "tracy/tracy": "^2.9" }, "suggest": { @@ -1204,6 +1266,9 @@ } }, "autoload": { + "psr-4": { + "Nette\\": "src" + }, "classmap": [ "src/" ] @@ -1244,31 +1309,33 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.5" + "source": "https://github.com/nette/utils/tree/v4.0.8" }, - "time": "2024-08-07T15:39:19+00:00" + "time": "2025-08-06T21:43:34+00:00" }, { "name": "nikic/php-parser", - "version": "v4.19.4", + "version": "v5.6.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2" + "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/715f4d25e225bc47b293a8b997fe6ce99bf987d2", - "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2", + "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2", "shasum": "" }, "require": { + "ext-ctype": "*", + "ext-json": "*", "ext-tokenizer": "*", - "php": ">=7.1" + "php": ">=7.4" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^9.0" }, "bin": [ "bin/php-parse" @@ -1276,7 +1343,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.9-dev" + "dev-master": "5.x-dev" } }, "autoload": { @@ -1300,9 +1367,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.4" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.1" }, - "time": "2024-09-29T15:01:53+00:00" + "time": "2025-08-13T20:13:15+00:00" }, { "name": "nyholm/psr7", @@ -1434,16 +1501,16 @@ }, { "name": "phpoption/phpoption", - "version": "1.9.3", + "version": "1.9.4", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54" + "reference": "638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/e3fac8b24f56113f7cb96af14958c0dd16330f54", - "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d", + "reference": "638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d", "shasum": "" }, "require": { @@ -1451,7 +1518,7 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" + "phpunit/phpunit": "^8.5.44 || ^9.6.25 || ^10.5.53 || ^11.5.34" }, "type": "library", "extra": { @@ -1493,7 +1560,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.9.3" + "source": "https://github.com/schmittjoh/php-option/tree/1.9.4" }, "funding": [ { @@ -1505,7 +1572,7 @@ "type": "tidelift" } ], - "time": "2024-07-20T21:41:07+00:00" + "time": "2025-08-21T11:53:16+00:00" }, { "name": "psr/cache", @@ -1981,6 +2048,160 @@ }, "time": "2021-10-29T13:26:27+00:00" }, + { + "name": "ramsey/collection", + "version": "2.1.1", + "source": { + "type": "git", + "url": "https://github.com/ramsey/collection.git", + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/collection/zipball/344572933ad0181accbf4ba763e85a0306a8c5e2", + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.45", + "fakerphp/faker": "^1.24", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^2.1", + "mockery/mockery": "^1.6", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.4", + "phpspec/prophecy-phpunit": "^2.3", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^10.5", + "ramsey/coding-standard": "^2.3", + "ramsey/conventional-commits": "^1.6", + "roave/security-advisories": "dev-latest" + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "A PHP library for representing and manipulating collections.", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "support": { + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/2.1.1" + }, + "time": "2025-03-22T05:38:12+00:00" + }, + { + "name": "ramsey/uuid", + "version": "4.9.0", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "4e0e23cc785f0724a0e838279a9eb03f28b092a0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/4e0e23cc785f0724a0e838279a9eb03f28b092a0", + "reference": "4e0e23cc785f0724a0e838279a9eb03f28b092a0", + "shasum": "" + }, + "require": { + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13", + "php": "^8.0", + "ramsey/collection": "^1.2 || ^2.0" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "captainhook/captainhook": "^5.25", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", + "ergebnis/composer-normalize": "^2.47", + "mockery/mockery": "^1.6", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.6", + "php-mock/php-mock-mockery": "^1.5", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpbench/phpbench": "^1.2.14", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^9.6", + "slevomat/coding-standard": "^8.18", + "squizlabs/php_codesniffer": "^3.13" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", + "keywords": [ + "guid", + "identifier", + "uuid" + ], + "support": { + "issues": "https://github.com/ramsey/uuid/issues", + "source": "https://github.com/ramsey/uuid/tree/4.9.0" + }, + "time": "2025-06-25T14:20:11+00:00" + }, { "name": "spiral/attributes", "version": "v3.1.8", @@ -2113,16 +2334,16 @@ }, { "name": "spiral/framework", - "version": "3.14.8", + "version": "3.15.8", "source": { "type": "git", "url": "https://github.com/spiral/framework.git", - "reference": "838c70a83dcc6ce6ac71e57effc7050f99257a01" + "reference": "a3107e0f848e66974363684e260b3fedc10a17c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spiral/framework/zipball/838c70a83dcc6ce6ac71e57effc7050f99257a01", - "reference": "838c70a83dcc6ce6ac71e57effc7050f99257a01", + "url": "https://api.github.com/repos/spiral/framework/zipball/a3107e0f848e66974363684e260b3fedc10a17c4", + "reference": "a3107e0f848e66974363684e260b3fedc10a17c4", "shasum": "" }, "require": { @@ -2136,8 +2357,8 @@ "league/flysystem": "^2.3.1 || ^3.0", "monolog/monolog": "^2.9.2 || ^3.5", "myclabs/deep-copy": "^1.9", - "nette/php-generator": "^4.1.2", - "nikic/php-parser": "^4.15.5", + "nette/php-generator": "^4.1.7", + "nikic/php-parser": "^5.4", "php": ">=8.1", "psr/container": "^1.1|^2.0", "psr/event-dispatcher": "^1.0", @@ -2147,12 +2368,13 @@ "psr/http-server-middleware": "^1.0", "psr/log": "1 - 3", "psr/simple-cache": "2 - 3", - "spiral/attributes": "^2.8|^3.0", + "ramsey/uuid": "^4.7", + "spiral/attributes": "^3.1.8", "spiral/composer-publish-plugin": "^1.0", - "symfony/console": "^6.1 || ^7.0", - "symfony/finder": "^5.3.7 || ^6.0 || ^7.0", - "symfony/mailer": "^5.1 || ^6.0 || ^7.0", - "symfony/translation": "^5.1 || ^6.0 || ^7.0", + "symfony/console": "^6.4.17 || ^7.2", + "symfony/finder": "^5.4.45 || ^6.4.17 || ^7.2", + "symfony/mailer": "^5.4.45 || ^6.4.17 || ^7.2", + "symfony/translation": "^5.4.45 || ^6.4.17 || ^7.2", "vlucas/phpdotenv": "^5.4" }, "conflict": { @@ -2208,31 +2430,30 @@ "spiral/views": "self.version" }, "require-dev": { - "aws/aws-sdk-php": "^3.270", - "buggregator/trap": "^1.10", - "doctrine/annotations": "^2.0", - "google/protobuf": "^3.25", - "guzzlehttp/psr7": "^1.7|^2.0", - "jetbrains/phpstorm-attributes": "^1.0", - "league/flysystem-async-aws-s3": "^2.0 || ^3.0", - "league/flysystem-aws-s3-v3": "^2.0 || ^3.0", - "mikey179/vfsstream": "^1.6", - "mockery/mockery": "^1.5", - "phpunit/phpunit": "10.5.3", - "ramsey/collection": "^1.2", - "ramsey/uuid": "^4.2.3", - "rector/rector": "1.2.10", - "spiral/code-style": "^2.2", - "spiral/nyholm-bridge": "^1.2", - "spiral/testing": "^2.8", - "spiral/validator": "^1.3", - "symplify/monorepo-builder": "^10.2.7", - "vimeo/psalm": "^5.9" + "aws/aws-sdk-php": "^3.338", + "buggregator/trap": "^1.13.3", + "doctrine/annotations": "^2.0.2", + "google/protobuf": "^3.25|^4.29", + "guzzlehttp/psr7": "^1.7|^2.7", + "jetbrains/phpstorm-attributes": "^1.2", + "league/flysystem-async-aws-s3": "^2.5 || ^3.29", + "league/flysystem-aws-s3-v3": "^2.5 || ^3.29", + "mikey179/vfsstream": "^1.6.12", + "mockery/mockery": "^1.6.12", + "phpunit/phpunit": "^10.5.41", + "ramsey/collection": "^1.3", + "rector/rector": "~2.0.9", + "spiral/code-style": "^2.2.2", + "spiral/nyholm-bridge": "^1.3", + "spiral/testing": "^2.8.3", + "spiral/validator": "^1.5.4", + "symplify/monorepo-builder": "^10.3.3", + "vimeo/psalm": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.14.x-dev" + "dev-master": "3.15.x-dev" } }, "autoload": { @@ -2335,50 +2556,51 @@ "type": "github" } ], - "time": "2024-12-11T19:42:12+00:00" + "time": "2025-04-22T13:51:37+00:00" }, { "name": "symfony/console", - "version": "v7.2.1", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "fefcc18c0f5d0efe3ab3152f15857298868dc2c3" + "reference": "273fd29ff30ba0a88ca5fb83f7cf1ab69306adae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/fefcc18c0f5d0efe3ab3152f15857298868dc2c3", - "reference": "fefcc18c0f5d0efe3ab3152f15857298868dc2c3", + "url": "https://api.github.com/repos/symfony/console/zipball/273fd29ff30ba0a88ca5fb83f7cf1ab69306adae", + "reference": "273fd29ff30ba0a88ca5fb83f7cf1ab69306adae", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^6.4|^7.0" + "symfony/string": "^5.4|^6.0|^7.0" }, "conflict": { - "symfony/dependency-injection": "<6.4", - "symfony/dotenv": "<6.4", - "symfony/event-dispatcher": "<6.4", - "symfony/lock": "<6.4", - "symfony/process": "<6.4" + "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|3.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", "symfony/http-foundation": "^6.4|^7.0", "symfony/http-kernel": "^6.4|^7.0", - "symfony/lock": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/lock": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -2412,7 +2634,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.2.1" + "source": "https://github.com/symfony/console/tree/v6.4.25" }, "funding": [ { @@ -2423,25 +2645,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-12-11T03:49:26+00:00" + "time": "2025-08-22T10:21:53+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.5.1", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", - "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", "shasum": "" }, "require": { @@ -2449,12 +2675,12 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" } }, "autoload": { @@ -2479,7 +2705,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" }, "funding": [ { @@ -2495,28 +2721,28 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.2.0", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "910c5db85a5356d0fea57680defec4e99eb9c8c1" + "reference": "b0cf3162020603587363f0551cd3be43958611ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/910c5db85a5356d0fea57680defec4e99eb9c8c1", - "reference": "910c5db85a5356d0fea57680defec4e99eb9c8c1", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b0cf3162020603587363f0551cd3be43958611ff", + "reference": "b0cf3162020603587363f0551cd3be43958611ff", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.1", "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<6.4", + "symfony/dependency-injection": "<5.4", "symfony/service-contracts": "<2.5" }, "provide": { @@ -2525,13 +2751,13 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/error-handler": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^6.4|^7.0" + "symfony/stopwatch": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -2559,7 +2785,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/v7.2.0" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.25" }, "funding": [ { @@ -2570,25 +2796,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-25T14:21:43+00:00" + "time": "2025-08-13T09:41:44+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.5.1", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f" + "reference": "59eb412e93815df44f05f342958efa9f46b1e586" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7642f5e970b672283b7823222ae8ef8bbc160b9f", - "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586", + "reference": "59eb412e93815df44f05f342958efa9f46b1e586", "shasum": "" }, "require": { @@ -2597,12 +2827,12 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" } }, "autoload": { @@ -2635,7 +2865,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.1" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.6.0" }, "funding": [ { @@ -2651,27 +2881,27 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/finder", - "version": "v7.2.0", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "6de263e5868b9a137602dd1e33e4d48bfae99c49" + "reference": "73089124388c8510efb8d2d1689285d285937b08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/6de263e5868b9a137602dd1e33e4d48bfae99c49", - "reference": "6de263e5868b9a137602dd1e33e4d48bfae99c49", + "url": "https://api.github.com/repos/symfony/finder/zipball/73089124388c8510efb8d2d1689285d285937b08", + "reference": "73089124388c8510efb8d2d1689285d285937b08", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.1" }, "require-dev": { - "symfony/filesystem": "^6.4|^7.0" + "symfony/filesystem": "^6.0|^7.0" }, "type": "library", "autoload": { @@ -2699,7 +2929,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.2.0" + "source": "https://github.com/symfony/finder/tree/v6.4.24" }, "funding": [ { @@ -2710,48 +2940,52 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-10-23T06:56:12+00:00" + "time": "2025-07-15T12:02:45+00:00" }, { "name": "symfony/mailer", - "version": "v7.2.0", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "e4d358702fb66e4c8a2af08e90e7271a62de39cc" + "reference": "628b43b45a3e6b15c8a633fb22df547ed9b492a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/e4d358702fb66e4c8a2af08e90e7271a62de39cc", - "reference": "e4d358702fb66e4c8a2af08e90e7271a62de39cc", + "url": "https://api.github.com/repos/symfony/mailer/zipball/628b43b45a3e6b15c8a633fb22df547ed9b492a2", + "reference": "628b43b45a3e6b15c8a633fb22df547ed9b492a2", "shasum": "" }, "require": { "egulias/email-validator": "^2.1.10|^3|^4", - "php": ">=8.2", + "php": ">=8.1", "psr/event-dispatcher": "^1", "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/mime": "^7.2", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/mime": "^6.2|^7.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { "symfony/http-client-contracts": "<2.5", - "symfony/http-kernel": "<6.4", - "symfony/messenger": "<6.4", - "symfony/mime": "<6.4", - "symfony/twig-bridge": "<6.4" + "symfony/http-kernel": "<5.4", + "symfony/messenger": "<6.2", + "symfony/mime": "<6.2", + "symfony/twig-bridge": "<6.2.1" }, "require-dev": { - "symfony/console": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/twig-bridge": "^6.4|^7.0" + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/messenger": "^6.2|^7.0", + "symfony/twig-bridge": "^6.2|^7.0" }, "type": "library", "autoload": { @@ -2779,7 +3013,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.2.0" + "source": "https://github.com/symfony/mailer/tree/v6.4.25" }, "funding": [ { @@ -2790,29 +3024,34 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-11-25T15:21:05+00:00" + "time": "2025-08-13T09:41:44+00:00" }, { "name": "symfony/mime", - "version": "v7.2.1", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "7f9617fcf15cb61be30f8b252695ed5e2bfac283" + "reference": "664d5e844a2de5e11c8255d0aef6bc15a9660ac7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/7f9617fcf15cb61be30f8b252695ed5e2bfac283", - "reference": "7f9617fcf15cb61be30f8b252695ed5e2bfac283", + "url": "https://api.github.com/repos/symfony/mime/zipball/664d5e844a2de5e11c8255d0aef6bc15a9660ac7", + "reference": "664d5e844a2de5e11c8255d0aef6bc15a9660ac7", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, @@ -2820,17 +3059,17 @@ "egulias/email-validator": "~3.0.0", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<6.4", + "symfony/mailer": "<5.4", "symfony/serializer": "<6.4.3|>7.0,<7.0.3" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1|^4", "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/property-access": "^6.4|^7.0", - "symfony/property-info": "^6.4|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.4|^7.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/property-info": "^5.4|^6.0|^7.0", "symfony/serializer": "^6.4.3|^7.0.3" }, "type": "library", @@ -2863,7 +3102,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.2.1" + "source": "https://github.com/symfony/mime/tree/v6.4.24" }, "funding": [ { @@ -2874,16 +3113,20 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-12-07T08:50:44+00:00" + "time": "2025-07-15T12:02:45+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", @@ -2942,7 +3185,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0" }, "funding": [ { @@ -2953,6 +3196,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -2962,16 +3209,16 @@ }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", - "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70", + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70", "shasum": "" }, "require": { @@ -3020,7 +3267,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0" }, "funding": [ { @@ -3031,25 +3278,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2025-06-27T09:58:17+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773" + "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/c36586dcf89a12315939e00ec9b4474adcb1d773", - "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/9614ac4d8061dc257ecc64cba1b140873dce8ad3", + "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3", "shasum": "" }, "require": { @@ -3103,7 +3354,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.33.0" }, "funding": [ { @@ -3114,16 +3365,20 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2024-09-10T14:38:51+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", @@ -3184,7 +3439,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.0" }, "funding": [ { @@ -3195,6 +3450,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -3204,19 +3463,20 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", - "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", "shasum": "" }, "require": { + "ext-iconv": "*", "php": ">=7.2" }, "provide": { @@ -3264,7 +3524,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0" }, "funding": [ { @@ -3275,25 +3535,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2024-12-23T08:48:59+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", - "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608", "shasum": "" }, "require": { @@ -3344,7 +3608,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0" }, "funding": [ { @@ -3355,25 +3619,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2025-01-02T08:10:11+00:00" }, { "name": "symfony/polyfill-php83", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491" + "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/2fb86d65e2d424369ad2905e83b236a8805ba491", - "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/17f6f9a6b1735c0f163024d959f700cfbc5155e5", + "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5", "shasum": "" }, "require": { @@ -3420,7 +3688,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.33.0" }, "funding": [ { @@ -3431,25 +3699,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2025-07-08T02:45:35+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.5.1", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" + "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", - "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4", + "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4", "shasum": "" }, "require": { @@ -3462,12 +3734,12 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" } }, "autoload": { @@ -3503,7 +3775,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.5.1" + "source": "https://github.com/symfony/service-contracts/tree/v3.6.0" }, "funding": [ { @@ -3519,24 +3791,24 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2025-04-25T09:37:31+00:00" }, { "name": "symfony/string", - "version": "v7.2.0", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82" + "reference": "7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/446e0d146f991dde3e73f45f2c97a9faad773c82", - "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82", + "url": "https://api.github.com/repos/symfony/string/zipball/7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1", + "reference": "7cdec7edfaf2cdd9c18901e35bcf9653d6209ff1", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.1", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-grapheme": "~1.0", "symfony/polyfill-intl-normalizer": "~1.0", @@ -3546,12 +3818,11 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/emoji": "^7.1", - "symfony/error-handler": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/intl": "^6.2|^7.0", "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^6.4|^7.0" + "symfony/var-exporter": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -3590,7 +3861,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.2.0" + "source": "https://github.com/symfony/string/tree/v6.4.25" }, "funding": [ { @@ -3601,42 +3872,46 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-11-13T13:31:26+00:00" + "time": "2025-08-22T12:33:20+00:00" }, { "name": "symfony/translation", - "version": "v7.2.0", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "dc89e16b44048ceecc879054e5b7f38326ab6cc5" + "reference": "300b72643e89de0734d99a9e3f8494a3ef6936e1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/dc89e16b44048ceecc879054e5b7f38326ab6cc5", - "reference": "dc89e16b44048ceecc879054e5b7f38326ab6cc5", + "url": "https://api.github.com/repos/symfony/translation/zipball/300b72643e89de0734d99a9e3f8494a3ef6936e1", + "reference": "300b72643e89de0734d99a9e3f8494a3ef6936e1", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.1", "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/translation-contracts": "^2.5|^3.0" }, "conflict": { - "symfony/config": "<6.4", - "symfony/console": "<6.4", - "symfony/dependency-injection": "<6.4", + "symfony/config": "<5.4", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<5.4", "symfony/http-client-contracts": "<2.5", - "symfony/http-kernel": "<6.4", + "symfony/http-kernel": "<5.4", "symfony/service-contracts": "<2.5", - "symfony/twig-bundle": "<6.4", - "symfony/yaml": "<6.4" + "symfony/twig-bundle": "<5.4", + "symfony/yaml": "<5.4" }, "provide": { "symfony/translation-implementation": "2.3|3.0" @@ -3644,17 +3919,17 @@ "require-dev": { "nikic/php-parser": "^4.18|^5.0", "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", "symfony/http-client-contracts": "^2.5|^3.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/intl": "^5.4|^6.0|^7.0", "symfony/polyfill-intl-icu": "^1.21", - "symfony/routing": "^6.4|^7.0", + "symfony/routing": "^5.4|^6.0|^7.0", "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^6.4|^7.0" + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -3685,7 +3960,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.2.0" + "source": "https://github.com/symfony/translation/tree/v6.4.24" }, "funding": [ { @@ -3696,25 +3971,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-11-12T20:47:56+00:00" + "time": "2025-07-30T17:30:48+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.5.1", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "4667ff3bd513750603a09c8dedbea942487fb07c" + "reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/4667ff3bd513750603a09c8dedbea942487fb07c", - "reference": "4667ff3bd513750603a09c8dedbea942487fb07c", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/df210c7a2573f1913b2d17cc95f90f53a73d8f7d", + "reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d", "shasum": "" }, "require": { @@ -3722,12 +4001,12 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" } }, "autoload": { @@ -3763,7 +4042,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.5.1" + "source": "https://github.com/symfony/translation-contracts/tree/v3.6.0" }, "funding": [ { @@ -3779,20 +4058,20 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-09-27T08:32:26+00:00" }, { "name": "vlucas/phpdotenv", - "version": "v5.6.1", + "version": "v5.6.2", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2" + "reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/a59a13791077fe3d44f90e7133eb68e7d22eaff2", - "reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/24ac4c74f91ee2c193fa1aaa5c249cb0822809af", + "reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af", "shasum": "" }, "require": { @@ -3851,7 +4130,7 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.1" + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.2" }, "funding": [ { @@ -3863,49 +4142,42 @@ "type": "tidelift" } ], - "time": "2024-07-20T21:52:34+00:00" + "time": "2025-04-30T23:37:27+00:00" } ], "packages-dev": [ { "name": "amphp/amp", - "version": "v2.6.4", + "version": "v3.1.1", "source": { "type": "git", "url": "https://github.com/amphp/amp.git", - "reference": "ded3d9be08f526089eb7ee8d9f16a9768f9dec2d" + "reference": "fa0ab33a6f47a82929c38d03ca47ebb71086a93f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/amp/zipball/ded3d9be08f526089eb7ee8d9f16a9768f9dec2d", - "reference": "ded3d9be08f526089eb7ee8d9f16a9768f9dec2d", + "url": "https://api.github.com/repos/amphp/amp/zipball/fa0ab33a6f47a82929c38d03ca47ebb71086a93f", + "reference": "fa0ab33a6f47a82929c38d03ca47ebb71086a93f", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1", + "revolt/event-loop": "^1 || ^0.2" }, "require-dev": { - "amphp/php-cs-fixer-config": "dev-master", - "amphp/phpunit-util": "^1", - "ext-json": "*", - "jetbrains/phpstorm-stubs": "^2019.3", - "phpunit/phpunit": "^7 | ^8 | ^9", - "react/promise": "^2", - "vimeo/psalm": "^3.12" + "amphp/php-cs-fixer-config": "^2", + "phpunit/phpunit": "^9", + "psalm/phar": "5.23.1" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, "autoload": { "files": [ - "lib/functions.php", - "lib/Internal/functions.php" + "src/functions.php", + "src/Future/functions.php", + "src/Internal/functions.php" ], "psr-4": { - "Amp\\": "lib" + "Amp\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -3913,10 +4185,6 @@ "MIT" ], "authors": [ - { - "name": "Daniel Lowrey", - "email": "rdlowrey@php.net" - }, { "name": "Aaron Piotrowski", "email": "aaron@trowski.com" @@ -3928,6 +4196,10 @@ { "name": "Niklas Keller", "email": "me@kelunik.com" + }, + { + "name": "Daniel Lowrey", + "email": "rdlowrey@php.net" } ], "description": "A non-blocking concurrency framework for PHP applications.", @@ -3944,9 +4216,8 @@ "promise" ], "support": { - "irc": "irc://irc.freenode.org/amphp", "issues": "https://github.com/amphp/amp/issues", - "source": "https://github.com/amphp/amp/tree/v2.6.4" + "source": "https://github.com/amphp/amp/tree/v3.1.1" }, "funding": [ { @@ -3954,41 +4225,45 @@ "type": "github" } ], - "time": "2024-03-21T18:52:26+00:00" + "time": "2025-08-27T21:42:00+00:00" }, { "name": "amphp/byte-stream", - "version": "v1.8.2", + "version": "v2.1.2", "source": { "type": "git", "url": "https://github.com/amphp/byte-stream.git", - "reference": "4f0e968ba3798a423730f567b1b50d3441c16ddc" + "reference": "55a6bd071aec26fa2a3e002618c20c35e3df1b46" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/byte-stream/zipball/4f0e968ba3798a423730f567b1b50d3441c16ddc", - "reference": "4f0e968ba3798a423730f567b1b50d3441c16ddc", + "url": "https://api.github.com/repos/amphp/byte-stream/zipball/55a6bd071aec26fa2a3e002618c20c35e3df1b46", + "reference": "55a6bd071aec26fa2a3e002618c20c35e3df1b46", "shasum": "" }, "require": { - "amphp/amp": "^2", - "php": ">=7.1" + "amphp/amp": "^3", + "amphp/parser": "^1.1", + "amphp/pipeline": "^1", + "amphp/serialization": "^1", + "amphp/sync": "^2", + "php": ">=8.1", + "revolt/event-loop": "^1 || ^0.2.3" }, "require-dev": { - "amphp/php-cs-fixer-config": "dev-master", - "amphp/phpunit-util": "^1.4", - "friendsofphp/php-cs-fixer": "^2.3", - "jetbrains/phpstorm-stubs": "^2019.3", - "phpunit/phpunit": "^6 || ^7 || ^8", - "psalm/phar": "^3.11.4" + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "phpunit/phpunit": "^9", + "psalm/phar": "5.22.1" }, "type": "library", "autoload": { "files": [ - "lib/functions.php" + "src/functions.php", + "src/Internal/functions.php" ], "psr-4": { - "Amp\\ByteStream\\": "lib" + "Amp\\ByteStream\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -4017,7 +4292,7 @@ ], "support": { "issues": "https://github.com/amphp/byte-stream/issues", - "source": "https://github.com/amphp/byte-stream/tree/v1.8.2" + "source": "https://github.com/amphp/byte-stream/tree/v2.1.2" }, "funding": [ { @@ -4025,59 +4300,39 @@ "type": "github" } ], - "time": "2024-04-13T18:00:56+00:00" + "time": "2025-03-16T17:10:27+00:00" }, { - "name": "brianium/paratest", - "version": "v7.4.8", + "name": "amphp/cache", + "version": "v2.0.1", "source": { "type": "git", - "url": "https://github.com/paratestphp/paratest.git", - "reference": "cf16fcbb9b8107a7df6b97e497fc91e819774d8b" + "url": "https://github.com/amphp/cache.git", + "reference": "46912e387e6aa94933b61ea1ead9cf7540b7797c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paratestphp/paratest/zipball/cf16fcbb9b8107a7df6b97e497fc91e819774d8b", - "reference": "cf16fcbb9b8107a7df6b97e497fc91e819774d8b", + "url": "https://api.github.com/repos/amphp/cache/zipball/46912e387e6aa94933b61ea1ead9cf7540b7797c", + "reference": "46912e387e6aa94933b61ea1ead9cf7540b7797c", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-simplexml": "*", - "fidry/cpu-core-counter": "^1.2.0", - "jean85/pretty-package-versions": "^2.0.6", - "php": "~8.2.0 || ~8.3.0 || ~8.4.0", - "phpunit/php-code-coverage": "^10.1.16", - "phpunit/php-file-iterator": "^4.1.0", - "phpunit/php-timer": "^6.0.0", - "phpunit/phpunit": "^10.5.36", - "sebastian/environment": "^6.1.0", - "symfony/console": "^6.4.7 || ^7.1.5", - "symfony/process": "^6.4.7 || ^7.1.5" + "amphp/amp": "^3", + "amphp/serialization": "^1", + "amphp/sync": "^2", + "php": ">=8.1", + "revolt/event-loop": "^1 || ^0.2" }, "require-dev": { - "doctrine/coding-standard": "^12.0.0", - "ext-pcov": "*", - "ext-posix": "*", - "phpstan/phpstan": "^1.12.6", - "phpstan/phpstan-deprecation-rules": "^1.2.1", - "phpstan/phpstan-phpunit": "^1.4.0", - "phpstan/phpstan-strict-rules": "^1.6.1", - "squizlabs/php_codesniffer": "^3.10.3", - "symfony/filesystem": "^6.4.3 || ^7.1.5" + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "phpunit/phpunit": "^9", + "psalm/phar": "^5.4" }, - "bin": [ - "bin/paratest", - "bin/paratest_for_phpstorm" - ], "type": "library", "autoload": { "psr-4": { - "ParaTest\\": [ - "src/" - ] + "Amp\\Cache\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -4086,178 +4341,164 @@ ], "authors": [ { - "name": "Brian Scaturro", - "email": "scaturrob@gmail.com", - "role": "Developer" + "name": "Niklas Keller", + "email": "me@kelunik.com" }, { - "name": "Filippo Tessarotto", - "email": "zoeslam@gmail.com", - "role": "Developer" - } - ], - "description": "Parallel testing for PHP", - "homepage": "https://github.com/paratestphp/paratest", - "keywords": [ - "concurrent", - "parallel", - "phpunit", - "testing" + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Daniel Lowrey", + "email": "rdlowrey@php.net" + } ], + "description": "A fiber-aware cache API based on Amp and Revolt.", + "homepage": "https://amphp.org/cache", "support": { - "issues": "https://github.com/paratestphp/paratest/issues", - "source": "https://github.com/paratestphp/paratest/tree/v7.4.8" + "issues": "https://github.com/amphp/cache/issues", + "source": "https://github.com/amphp/cache/tree/v2.0.1" }, "funding": [ { - "url": "https://github.com/sponsors/Slamdunk", + "url": "https://github.com/amphp", "type": "github" - }, - { - "url": "https://paypal.me/filippotessarotto", - "type": "paypal" } ], - "time": "2024-10-15T12:45:19+00:00" + "time": "2024-04-19T03:38:06+00:00" }, { - "name": "buggregator/trap", - "version": "1.11.1", + "name": "amphp/dns", + "version": "v2.4.0", "source": { "type": "git", - "url": "https://github.com/buggregator/trap.git", - "reference": "f59e224e23300a369b0be1f1eae73c31abea58a3" + "url": "https://github.com/amphp/dns.git", + "reference": "78eb3db5fc69bf2fc0cb503c4fcba667bc223c71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/buggregator/trap/zipball/f59e224e23300a369b0be1f1eae73c31abea58a3", - "reference": "f59e224e23300a369b0be1f1eae73c31abea58a3", + "url": "https://api.github.com/repos/amphp/dns/zipball/78eb3db5fc69bf2fc0cb503c4fcba667bc223c71", + "reference": "78eb3db5fc69bf2fc0cb503c4fcba667bc223c71", "shasum": "" }, "require": { - "clue/stream-filter": "^1.6", + "amphp/amp": "^3", + "amphp/byte-stream": "^2", + "amphp/cache": "^2", + "amphp/parser": "^1", + "amphp/process": "^2", + "daverandom/libdns": "^2.0.2", "ext-filter": "*", - "ext-sockets": "*", - "nunomaduro/termwind": "^1.15 || ^2", - "nyholm/psr7": "^1.8", + "ext-json": "*", "php": ">=8.1", - "php-http/message": "^1.15", - "psr/container": "^1.1 || ^2.0", - "psr/http-message": "^1.1 || ^2", - "symfony/console": "^6.4 || ^7", - "symfony/var-dumper": "^6.3 || ^7", - "yiisoft/injector": "^1.2" + "revolt/event-loop": "^1 || ^0.2" }, "require-dev": { - "dereuromark/composer-prefer-lowest": "^0.1.10", - "ergebnis/phpunit-slow-test-detector": "^2.14", - "google/protobuf": "^3.23", - "pestphp/pest": "^2.34", - "phpstan/extension-installer": "^1.3", - "phpstan/phpstan": "^1.10", - "phpstan/phpstan-deprecation-rules": "^1.1", - "phpstan/phpstan-phpunit": "^1.3", - "phpstan/phpstan-strict-rules": "^1.5", - "phpunit/phpunit": "^10.5", - "rector/rector": "^1.1", - "roxblnfk/unpoly": "^1.8.1", - "spiral/code-style": "*", - "vimeo/psalm": "^5.11" - }, - "suggest": { - "ext-simplexml": "To load trap.xml", - "roxblnfk/unpoly": "If you want to remove unnecessary PHP polyfills depend on PHP version." + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "phpunit/phpunit": "^9", + "psalm/phar": "5.20" }, - "bin": [ - "bin/trap" - ], "type": "library", "autoload": { "files": [ "src/functions.php" ], "psr-4": { - "Buggregator\\Trap\\": "src/" + "Amp\\Dns\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Aleksei Gagarin (roxblnfk)", - "homepage": "https://github.com/roxblnfk" + "name": "Chris Wright", + "email": "addr@daverandom.com" }, { - "name": "Pavel Buchnev (butschster)", - "homepage": "https://github.com/butschster" + "name": "Daniel Lowrey", + "email": "rdlowrey@php.net" + }, + { + "name": "Bob Weinand", + "email": "bobwei9@hotmail.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + }, + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" } ], - "description": "A simple and powerful tool for debugging PHP applications.", - "homepage": "https://buggregator.dev/", + "description": "Async DNS resolution for Amp.", + "homepage": "https://github.com/amphp/dns", "keywords": [ - "WebSockets", - "binary dump", - "cli", - "console", - "debug", - "dev", - "dump", - "helper", - "sentry", - "server", - "smtp" + "amp", + "amphp", + "async", + "client", + "dns", + "resolve" ], "support": { - "issues": "https://github.com/buggregator/trap/issues", - "source": "https://github.com/buggregator/trap/tree/1.11.1" + "issues": "https://github.com/amphp/dns/issues", + "source": "https://github.com/amphp/dns/tree/v2.4.0" }, "funding": [ { - "url": "https://github.com/sponsors/buggregator", + "url": "https://github.com/amphp", "type": "github" - }, - { - "url": "https://patreon.com/butschster", - "type": "patreon" - }, - { - "url": "https://patreon.com/roxblnfk", - "type": "patreon" } ], - "time": "2024-12-07T21:20:29+00:00" + "time": "2025-01-19T15:43:40+00:00" }, { - "name": "carbonphp/carbon-doctrine-types", - "version": "3.2.0", + "name": "amphp/parallel", + "version": "v2.3.2", "source": { "type": "git", - "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", - "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d" + "url": "https://github.com/amphp/parallel.git", + "reference": "321b45ae771d9c33a068186b24117e3cd1c48dce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/18ba5ddfec8976260ead6e866180bd5d2f71aa1d", - "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d", + "url": "https://api.github.com/repos/amphp/parallel/zipball/321b45ae771d9c33a068186b24117e3cd1c48dce", + "reference": "321b45ae771d9c33a068186b24117e3cd1c48dce", "shasum": "" }, "require": { - "php": "^8.1" - }, - "conflict": { - "doctrine/dbal": "<4.0.0 || >=5.0.0" + "amphp/amp": "^3", + "amphp/byte-stream": "^2", + "amphp/cache": "^2", + "amphp/parser": "^1", + "amphp/pipeline": "^1", + "amphp/process": "^2", + "amphp/serialization": "^1", + "amphp/socket": "^2", + "amphp/sync": "^2", + "php": ">=8.1", + "revolt/event-loop": "^1" }, "require-dev": { - "doctrine/dbal": "^4.0.0", - "nesbot/carbon": "^2.71.0 || ^3.0.0", - "phpunit/phpunit": "^10.3" + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "phpunit/phpunit": "^9", + "psalm/phar": "^5.18" }, "type": "library", "autoload": { + "files": [ + "src/Context/functions.php", + "src/Context/Internal/functions.php", + "src/Ipc/functions.php", + "src/Worker/functions.php" + ], "psr-4": { - "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" + "Amp\\Parallel\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -4266,64 +4507,65 @@ ], "authors": [ { - "name": "KyleKatarn", - "email": "kylekatarnls@gmail.com" + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + }, + { + "name": "Stephen Coakley", + "email": "me@stephencoakley.com" } ], - "description": "Types to use Carbon in Doctrine", + "description": "Parallel processing component for Amp.", + "homepage": "https://github.com/amphp/parallel", "keywords": [ - "carbon", - "date", - "datetime", - "doctrine", - "time" + "async", + "asynchronous", + "concurrent", + "multi-processing", + "multi-threading" ], "support": { - "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", - "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/3.2.0" + "issues": "https://github.com/amphp/parallel/issues", + "source": "https://github.com/amphp/parallel/tree/v2.3.2" }, "funding": [ { - "url": "https://github.com/kylekatarnls", + "url": "https://github.com/amphp", "type": "github" - }, - { - "url": "https://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" } ], - "time": "2024-02-09T16:56:22+00:00" + "time": "2025-08-27T21:55:40+00:00" }, { - "name": "clue/ndjson-react", - "version": "v1.3.0", + "name": "amphp/parser", + "version": "v1.1.1", "source": { "type": "git", - "url": "https://github.com/clue/reactphp-ndjson.git", - "reference": "392dc165fce93b5bb5c637b67e59619223c931b0" + "url": "https://github.com/amphp/parser.git", + "reference": "3cf1f8b32a0171d4b1bed93d25617637a77cded7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/clue/reactphp-ndjson/zipball/392dc165fce93b5bb5c637b67e59619223c931b0", - "reference": "392dc165fce93b5bb5c637b67e59619223c931b0", + "url": "https://api.github.com/repos/amphp/parser/zipball/3cf1f8b32a0171d4b1bed93d25617637a77cded7", + "reference": "3cf1f8b32a0171d4b1bed93d25617637a77cded7", "shasum": "" }, "require": { - "php": ">=5.3", - "react/stream": "^1.2" + "php": ">=7.4" }, "require-dev": { - "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35", - "react/event-loop": "^1.2" + "amphp/php-cs-fixer-config": "^2", + "phpunit/phpunit": "^9", + "psalm/phar": "^5.4" }, "type": "library", "autoload": { "psr-4": { - "Clue\\React\\NDJson\\": "src/" + "Amp\\Parser\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -4332,63 +4574,63 @@ ], "authors": [ { - "name": "Christian Lรผck", - "email": "christian@clue.engineering" + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" } ], - "description": "Streaming newline-delimited JSON (NDJSON) parser and encoder for ReactPHP.", - "homepage": "https://github.com/clue/reactphp-ndjson", + "description": "A generator parser to make streaming parsers simple.", + "homepage": "https://github.com/amphp/parser", "keywords": [ - "NDJSON", - "json", - "jsonlines", - "newline", - "reactphp", - "streaming" + "async", + "non-blocking", + "parser", + "stream" ], "support": { - "issues": "https://github.com/clue/reactphp-ndjson/issues", - "source": "https://github.com/clue/reactphp-ndjson/tree/v1.3.0" + "issues": "https://github.com/amphp/parser/issues", + "source": "https://github.com/amphp/parser/tree/v1.1.1" }, "funding": [ { - "url": "https://clue.engineering/support", - "type": "custom" - }, - { - "url": "https://github.com/clue", + "url": "https://github.com/amphp", "type": "github" } ], - "time": "2022-12-23T10:58:28+00:00" + "time": "2024-03-21T19:16:53+00:00" }, { - "name": "clue/stream-filter", - "version": "v1.7.0", + "name": "amphp/pipeline", + "version": "v1.2.3", "source": { "type": "git", - "url": "https://github.com/clue/stream-filter.git", - "reference": "049509fef80032cb3f051595029ab75b49a3c2f7" + "url": "https://github.com/amphp/pipeline.git", + "reference": "7b52598c2e9105ebcddf247fc523161581930367" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/clue/stream-filter/zipball/049509fef80032cb3f051595029ab75b49a3c2f7", - "reference": "049509fef80032cb3f051595029ab75b49a3c2f7", + "url": "https://api.github.com/repos/amphp/pipeline/zipball/7b52598c2e9105ebcddf247fc523161581930367", + "reference": "7b52598c2e9105ebcddf247fc523161581930367", "shasum": "" }, "require": { - "php": ">=5.3" + "amphp/amp": "^3", + "php": ">=8.1", + "revolt/event-loop": "^1" }, "require-dev": { - "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "phpunit/phpunit": "^9", + "psalm/phar": "^5.18" }, "type": "library", "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { - "Clue\\StreamFilter\\": "src/" + "Amp\\Pipeline\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -4397,82 +4639,70 @@ ], "authors": [ { - "name": "Christian Lรผck", - "email": "christian@clue.engineering" + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" } ], - "description": "A simple and modern approach to stream filtering in PHP", - "homepage": "https://github.com/clue/stream-filter", + "description": "Asynchronous iterators and operators.", + "homepage": "https://amphp.org/pipeline", "keywords": [ - "bucket brigade", - "callback", - "filter", - "php_user_filter", - "stream", - "stream_filter_append", - "stream_filter_register" + "amp", + "amphp", + "async", + "io", + "iterator", + "non-blocking" ], "support": { - "issues": "https://github.com/clue/stream-filter/issues", - "source": "https://github.com/clue/stream-filter/tree/v1.7.0" + "issues": "https://github.com/amphp/pipeline/issues", + "source": "https://github.com/amphp/pipeline/tree/v1.2.3" }, "funding": [ { - "url": "https://clue.engineering/support", - "type": "custom" - }, - { - "url": "https://github.com/clue", + "url": "https://github.com/amphp", "type": "github" } ], - "time": "2023-12-20T15:40:13+00:00" + "time": "2025-03-16T16:33:53+00:00" }, { - "name": "colinodell/json5", - "version": "v2.3.0", + "name": "amphp/process", + "version": "v2.0.3", "source": { "type": "git", - "url": "https://github.com/colinodell/json5.git", - "reference": "15b063f8cb5e6deb15f0cd39123264ec0d19c710" + "url": "https://github.com/amphp/process.git", + "reference": "52e08c09dec7511d5fbc1fb00d3e4e79fc77d58d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/colinodell/json5/zipball/15b063f8cb5e6deb15f0cd39123264ec0d19c710", - "reference": "15b063f8cb5e6deb15f0cd39123264ec0d19c710", + "url": "https://api.github.com/repos/amphp/process/zipball/52e08c09dec7511d5fbc1fb00d3e4e79fc77d58d", + "reference": "52e08c09dec7511d5fbc1fb00d3e4e79fc77d58d", "shasum": "" }, "require": { - "ext-json": "*", - "ext-mbstring": "*", - "php": "^7.1.3|^8.0" - }, - "conflict": { - "scrutinizer/ocular": "1.7.*" + "amphp/amp": "^3", + "amphp/byte-stream": "^2", + "amphp/sync": "^2", + "php": ">=8.1", + "revolt/event-loop": "^1 || ^0.2" }, "require-dev": { - "mikehaertl/php-shellcommand": "^1.2.5", - "phpstan/phpstan": "^1.4", - "scrutinizer/ocular": "^1.6", - "squizlabs/php_codesniffer": "^2.3 || ^3.0", - "symfony/finder": "^4.4|^5.4|^6.0", - "symfony/phpunit-bridge": "^5.4|^6.0" + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "phpunit/phpunit": "^9", + "psalm/phar": "^5.4" }, - "bin": [ - "bin/json5" - ], "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, "autoload": { "files": [ - "src/global.php" + "src/functions.php" ], "psr-4": { - "ColinODell\\Json5\\": "src" + "Amp\\Process\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -4481,80 +4711,60 @@ ], "authors": [ { - "name": "Colin O'Dell", - "email": "colinodell@gmail.com", - "homepage": "https://www.colinodell.com", - "role": "Developer" + "name": "Bob Weinand", + "email": "bobwei9@hotmail.com" + }, + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" } ], - "description": "UTF-8 compatible JSON5 parser for PHP", - "homepage": "https://github.com/colinodell/json5", - "keywords": [ - "JSON5", - "json", - "json5_decode", - "json_decode" - ], + "description": "A fiber-aware process manager based on Amp and Revolt.", + "homepage": "https://amphp.org/process", "support": { - "issues": "https://github.com/colinodell/json5/issues", - "source": "https://github.com/colinodell/json5/tree/v2.3.0" + "issues": "https://github.com/amphp/process/issues", + "source": "https://github.com/amphp/process/tree/v2.0.3" }, "funding": [ { - "url": "https://www.colinodell.com/sponsor", - "type": "custom" - }, - { - "url": "https://www.paypal.me/colinpodell/10.00", - "type": "custom" - }, - { - "url": "https://github.com/colinodell", + "url": "https://github.com/amphp", "type": "github" - }, - { - "url": "https://www.patreon.com/colinodell", - "type": "patreon" } ], - "time": "2022-12-27T16:44:40+00:00" + "time": "2024-04-19T03:13:44+00:00" }, { - "name": "composer/package-versions-deprecated", - "version": "1.11.99.5", + "name": "amphp/serialization", + "version": "v1.0.0", "source": { "type": "git", - "url": "https://github.com/composer/package-versions-deprecated.git", - "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d" + "url": "https://github.com/amphp/serialization.git", + "reference": "693e77b2fb0b266c3c7d622317f881de44ae94a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b4f54f74ef3453349c24a845d22392cd31e65f1d", - "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d", + "url": "https://api.github.com/repos/amphp/serialization/zipball/693e77b2fb0b266c3c7d622317f881de44ae94a1", + "reference": "693e77b2fb0b266c3c7d622317f881de44ae94a1", "shasum": "" }, "require": { - "composer-plugin-api": "^1.1.0 || ^2.0", - "php": "^7 || ^8" - }, - "replace": { - "ocramius/package-versions": "1.11.99" + "php": ">=7.1" }, "require-dev": { - "composer/composer": "^1.9.3 || ^2.0@dev", - "ext-zip": "^1.13", - "phpunit/phpunit": "^6.5 || ^7" - }, - "type": "composer-plugin", - "extra": { - "class": "PackageVersions\\Installer", - "branch-alias": { - "dev-master": "1.x-dev" - } + "amphp/php-cs-fixer-config": "dev-master", + "phpunit/phpunit": "^9 || ^8 || ^7" }, + "type": "library", "autoload": { + "files": [ + "src/functions.php" + ], "psr-4": { - "PackageVersions\\": "src/PackageVersions" + "Amp\\Serialization\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -4563,74 +4773,69 @@ ], "authors": [ { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" }, { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" + "name": "Niklas Keller", + "email": "me@kelunik.com" } ], - "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", + "description": "Serialization tools for IPC and data storage in PHP.", + "homepage": "https://github.com/amphp/serialization", + "keywords": [ + "async", + "asynchronous", + "serialization", + "serialize" + ], "support": { - "issues": "https://github.com/composer/package-versions-deprecated/issues", - "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.5" + "issues": "https://github.com/amphp/serialization/issues", + "source": "https://github.com/amphp/serialization/tree/master" }, - "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" + "time": "2020-03-25T21:39:07+00:00" }, { - "name": "composer/pcre", - "version": "3.3.2", + "name": "amphp/socket", + "version": "v2.3.1", "source": { "type": "git", - "url": "https://github.com/composer/pcre.git", - "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e" + "url": "https://github.com/amphp/socket.git", + "reference": "58e0422221825b79681b72c50c47a930be7bf1e1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e", - "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e", + "url": "https://api.github.com/repos/amphp/socket/zipball/58e0422221825b79681b72c50c47a930be7bf1e1", + "reference": "58e0422221825b79681b72c50c47a930be7bf1e1", "shasum": "" }, "require": { - "php": "^7.4 || ^8.0" - }, - "conflict": { - "phpstan/phpstan": "<1.11.10" + "amphp/amp": "^3", + "amphp/byte-stream": "^2", + "amphp/dns": "^2", + "ext-openssl": "*", + "kelunik/certificate": "^1.1", + "league/uri": "^6.5 | ^7", + "league/uri-interfaces": "^2.3 | ^7", + "php": ">=8.1", + "revolt/event-loop": "^1 || ^0.2" }, "require-dev": { - "phpstan/phpstan": "^1.12 || ^2", - "phpstan/phpstan-strict-rules": "^1 || ^2", - "phpunit/phpunit": "^8 || ^9" + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "amphp/process": "^2", + "phpunit/phpunit": "^9", + "psalm/phar": "5.20" }, "type": "library", - "extra": { - "phpstan": { - "includes": [ - "extension.neon" - ] - }, - "branch-alias": { - "dev-main": "3.x-dev" - } - }, "autoload": { + "files": [ + "src/functions.php", + "src/Internal/functions.php", + "src/SocketAddress/functions.php" + ], "psr-4": { - "Composer\\Pcre\\": "src" + "Amp\\Socket\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -4639,68 +4844,75 @@ ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "name": "Daniel Lowrey", + "email": "rdlowrey@gmail.com" + }, + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" } ], - "description": "PCRE wrapping library that offers type-safe preg_* replacements.", + "description": "Non-blocking socket connection / server implementations based on Amp and Revolt.", + "homepage": "https://github.com/amphp/socket", "keywords": [ - "PCRE", - "preg", - "regex", - "regular expression" + "amp", + "async", + "encryption", + "non-blocking", + "sockets", + "tcp", + "tls" ], "support": { - "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.3.2" + "issues": "https://github.com/amphp/socket/issues", + "source": "https://github.com/amphp/socket/tree/v2.3.1" }, "funding": [ { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", + "url": "https://github.com/amphp", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" } ], - "time": "2024-11-12T16:29:46+00:00" + "time": "2024-04-21T14:33:03+00:00" }, { - "name": "composer/semver", - "version": "3.4.3", + "name": "amphp/sync", + "version": "v2.3.0", "source": { "type": "git", - "url": "https://github.com/composer/semver.git", - "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12" + "url": "https://github.com/amphp/sync.git", + "reference": "217097b785130d77cfcc58ff583cf26cd1770bf1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", - "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", + "url": "https://api.github.com/repos/amphp/sync/zipball/217097b785130d77cfcc58ff583cf26cd1770bf1", + "reference": "217097b785130d77cfcc58ff583cf26cd1770bf1", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" + "amphp/amp": "^3", + "amphp/pipeline": "^1", + "amphp/serialization": "^1", + "php": ">=8.1", + "revolt/event-loop": "^1 || ^0.2" }, "require-dev": { - "phpstan/phpstan": "^1.11", - "symfony/phpunit-bridge": "^3 || ^7" + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "phpunit/phpunit": "^9", + "psalm/phar": "5.23" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, "autoload": { + "files": [ + "src/functions.php" + ], "psr-4": { - "Composer\\Semver\\": "src" + "Amp\\Sync\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -4709,148 +4921,170 @@ ], "authors": [ { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" }, { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "name": "Niklas Keller", + "email": "me@kelunik.com" }, { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" + "name": "Stephen Coakley", + "email": "me@stephencoakley.com" } ], - "description": "Semver library that offers utilities, version constraint parsing and validation.", + "description": "Non-blocking synchronization primitives for PHP based on Amp and Revolt.", + "homepage": "https://github.com/amphp/sync", "keywords": [ - "semantic", - "semver", - "validation", - "versioning" + "async", + "asynchronous", + "mutex", + "semaphore", + "synchronization" ], "support": { - "irc": "ircs://irc.libera.chat:6697/composer", - "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.4.3" + "issues": "https://github.com/amphp/sync/issues", + "source": "https://github.com/amphp/sync/tree/v2.3.0" }, "funding": [ { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", + "url": "https://github.com/amphp", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" } ], - "time": "2024-09-19T14:15:21+00:00" + "time": "2024-08-03T19:31:26+00:00" }, { - "name": "composer/xdebug-handler", - "version": "3.0.5", + "name": "buggregator/trap", + "version": "1.13.16", "source": { "type": "git", - "url": "https://github.com/composer/xdebug-handler.git", - "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef" + "url": "https://github.com/buggregator/trap.git", + "reference": "2c08a25c77fc5aa5cde1a3ce9b0199306a3ee49a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef", - "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef", + "url": "https://api.github.com/repos/buggregator/trap/zipball/2c08a25c77fc5aa5cde1a3ce9b0199306a3ee49a", + "reference": "2c08a25c77fc5aa5cde1a3ce9b0199306a3ee49a", "shasum": "" }, "require": { - "composer/pcre": "^1 || ^2 || ^3", - "php": "^7.2.5 || ^8.0", - "psr/log": "^1 || ^2 || ^3" + "clue/stream-filter": "^1.6", + "ext-filter": "*", + "ext-sockets": "*", + "nunomaduro/termwind": "^1.15.1 || ^2", + "nyholm/psr7": "^1.8", + "php": ">=8.1", + "php-http/message": "^1.15", + "psr/container": "^1.1 || ^2.0", + "psr/http-message": "^1.1 || ^2", + "symfony/console": "^6.4 || ^7", + "symfony/var-dumper": "^6.3 || ^7", + "yiisoft/injector": "^1.2" }, "require-dev": { - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-strict-rules": "^1.1", - "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5" + "dereuromark/composer-prefer-lowest": "^0.1.10", + "ergebnis/phpunit-slow-test-detector": "^2.14", + "google/protobuf": "^3.25 || ^4.30", + "phpunit/phpunit": "^10.5.10", + "rector/rector": "^1.1", + "roxblnfk/unpoly": "^1.8.1", + "spiral/code-style": "^2.2.2", + "ta-tikoma/phpunit-architecture-test": "^0.8.4", + "vimeo/psalm": "^6.5" + }, + "suggest": { + "ext-simplexml": "To load trap.xml", + "roxblnfk/unpoly": "If you want to remove unnecessary PHP polyfills depend on PHP version." }, + "bin": [ + "bin/trap" + ], "type": "library", "autoload": { + "files": [ + "src/functions.php" + ], "psr-4": { - "Composer\\XdebugHandler\\": "src" + "Buggregator\\Trap\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" + "name": "Aleksei Gagarin (roxblnfk)", + "homepage": "https://github.com/roxblnfk" + }, + { + "name": "Pavel Buchnev (butschster)", + "homepage": "https://github.com/butschster" } ], - "description": "Restarts a process without Xdebug.", + "description": "A simple and powerful tool for debugging PHP applications.", + "homepage": "https://buggregator.dev/", "keywords": [ - "Xdebug", - "performance" + "Fibers", + "WebSockets", + "binary dump", + "cli", + "console", + "debug", + "dev", + "dump", + "dumper", + "helper", + "sentry", + "server", + "smtp" ], "support": { - "irc": "ircs://irc.libera.chat:6697/composer", - "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/3.0.5" + "issues": "https://github.com/buggregator/trap/issues", + "source": "https://github.com/buggregator/trap/tree/1.13.16" }, "funding": [ { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" + "url": "https://boosty.to/roxblnfk", + "type": "boosty" }, { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" + "url": "https://patreon.com/roxblnfk", + "type": "patreon" } ], - "time": "2024-05-06T16:37:16+00:00" + "time": "2025-06-09T08:58:44+00:00" }, { - "name": "cycle/annotated", - "version": "v4.2.1", + "name": "carbonphp/carbon-doctrine-types", + "version": "3.2.0", "source": { "type": "git", - "url": "https://github.com/cycle/annotated.git", - "reference": "3f6dec20a442ebfb28636b3ec9fdcff67d570de8" + "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", + "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cycle/annotated/zipball/3f6dec20a442ebfb28636b3ec9fdcff67d570de8", - "reference": "3f6dec20a442ebfb28636b3ec9fdcff67d570de8", - "shasum": "" + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/18ba5ddfec8976260ead6e866180bd5d2f71aa1d", + "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d", + "shasum": "" }, "require": { - "cycle/orm": "^2.9.1", - "cycle/schema-builder": "^2.11.1", - "doctrine/inflector": "^2.0", - "php": ">=8.1", - "spiral/attributes": "^2.8|^3.0", - "spiral/tokenizer": "^2.8|^3.0" + "php": "^8.1" + }, + "conflict": { + "doctrine/dbal": "<4.0.0 || >=5.0.0" }, "require-dev": { - "doctrine/annotations": "^1.14.3 || ^2.0.1", - "phpunit/phpunit": "^10.1", - "spiral/code-style": "^2.2", - "spiral/dumper": "^3.3", - "vimeo/psalm": "^5.26" + "doctrine/dbal": "^4.0.0", + "nesbot/carbon": "^2.71.0 || ^3.0.0", + "phpunit/phpunit": "^10.3" }, "type": "library", "autoload": { "psr-4": { - "Cycle\\Annotated\\": "src/" + "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" } }, "notification-url": "https://packagist.org/downloads/", @@ -4859,71 +5093,65 @@ ], "authors": [ { - "name": "Anton Titov (wolfy-j)", - "email": "wolfy-j@spiralscout.com" - }, - { - "name": "Aleksei Gagarin (roxblnfk)", - "email": "alexey.gagarin@spiralscout.com" - }, - { - "name": "Pavel Butchnev (butschster)", - "email": "pavel.buchnev@spiralscout.com" - }, - { - "name": "Maksim Smakouz (msmakouz)", - "email": "maksim.smakouz@spiralscout.com" + "name": "KyleKatarn", + "email": "kylekatarnls@gmail.com" } ], - "description": "Cycle ORM Annotated Entities generator", - "homepage": "https://cycle-orm.dev", + "description": "Types to use Carbon in Doctrine", + "keywords": [ + "carbon", + "date", + "datetime", + "doctrine", + "time" + ], "support": { - "chat": "https://discord.gg/spiralphp", - "docs": "https://cycle-orm.dev/docs", - "issues": "https://github.com/cycle/annotated/issues", - "source": "https://github.com/cycle/annotated" + "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/3.2.0" }, "funding": [ { - "url": "https://github.com/sponsors/cycle", + "url": "https://github.com/kylekatarnls", "type": "github" + }, + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" } ], - "time": "2024-12-13T17:08:04+00:00" + "time": "2024-02-09T16:56:22+00:00" }, { - "name": "cycle/entity-behavior", - "version": "1.3.1", + "name": "clue/stream-filter", + "version": "v1.7.0", "source": { "type": "git", - "url": "https://github.com/cycle/entity-behavior.git", - "reference": "9b7ad13a68a0ea0dca0399b7f44f20b691a18120" + "url": "https://github.com/clue/stream-filter.git", + "reference": "049509fef80032cb3f051595029ab75b49a3c2f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cycle/entity-behavior/zipball/9b7ad13a68a0ea0dca0399b7f44f20b691a18120", - "reference": "9b7ad13a68a0ea0dca0399b7f44f20b691a18120", + "url": "https://api.github.com/repos/clue/stream-filter/zipball/049509fef80032cb3f051595029ab75b49a3c2f7", + "reference": "049509fef80032cb3f051595029ab75b49a3c2f7", "shasum": "" }, "require": { - "cycle/orm": "^2.7", - "cycle/schema-builder": "^2.8", - "php": ">=8.0", - "psr/container": "^1.0|^2.0", - "psr/event-dispatcher": "^1", - "yiisoft/injector": "^1.0" + "php": ">=5.3" }, "require-dev": { - "cycle/annotated": "^3.0", - "phpunit/phpunit": "^9.5", - "ramsey/uuid": "^4.5", - "spiral/tokenizer": "^2.8 || ^3.0", - "vimeo/psalm": "^5.11" + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" }, "type": "library", "autoload": { + "files": [ + "src/functions_include.php" + ], "psr-4": { - "Cycle\\ORM\\Entity\\Behavior\\": "src/" + "Clue\\StreamFilter\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -4932,115 +5160,161 @@ ], "authors": [ { - "name": "Anton Titov (wolfy-j)", - "email": "wolfy-j@spiralscout.com" - }, - { - "name": "Aleksei Gagarin (roxblnfk)", - "email": "alexey.gagarin@spiralscout.com" - }, - { - "name": "Pavel Butchnev (butschster)", - "email": "pavel.buchnev@spiralscout.com" - }, - { - "name": "Maksim Smakouz (msmakouz)", - "email": "maksim.smakouz@spiralscout.com" + "name": "Christian Lรผck", + "email": "christian@clue.engineering" } ], - "description": "Provides a collection of attributes that add behaviors to Cycle ORM entities", - "homepage": "https://cycle-orm.dev", + "description": "A simple and modern approach to stream filtering in PHP", + "homepage": "https://github.com/clue/stream-filter", + "keywords": [ + "bucket brigade", + "callback", + "filter", + "php_user_filter", + "stream", + "stream_filter_append", + "stream_filter_register" + ], "support": { - "chat": "https://discord.gg/spiralphp", - "docs": "https://cycle-orm.dev/docs", - "issues": "https://github.com/cycle/entity-behavior/issues", - "source": "https://github.com/cycle/entity-behavior" + "issues": "https://github.com/clue/stream-filter/issues", + "source": "https://github.com/clue/stream-filter/tree/v1.7.0" }, "funding": [ { - "url": "https://github.com/sponsors/cycle", + "url": "https://clue.engineering/support", + "type": "custom" + }, + { + "url": "https://github.com/clue", "type": "github" } ], - "time": "2024-08-09T11:47:14+00:00" + "time": "2023-12-20T15:40:13+00:00" }, { - "name": "cycle/migrations", - "version": "v4.2.4", + "name": "colinodell/json5", + "version": "v3.0.0", "source": { "type": "git", - "url": "https://github.com/cycle/migrations.git", - "reference": "e7289b8a036ebea60144bced7837706f94e7bd1c" + "url": "https://github.com/colinodell/json5.git", + "reference": "5724d21bc5c910c2560af1b8915f0cc0163579c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cycle/migrations/zipball/e7289b8a036ebea60144bced7837706f94e7bd1c", - "reference": "e7289b8a036ebea60144bced7837706f94e7bd1c", + "url": "https://api.github.com/repos/colinodell/json5/zipball/5724d21bc5c910c2560af1b8915f0cc0163579c8", + "reference": "5724d21bc5c910c2560af1b8915f0cc0163579c8", "shasum": "" }, "require": { - "cycle/database": "^2.7.0", - "php": ">=8.1", - "spiral/core": "^3.0", - "spiral/files": "^3.0", - "spiral/reactor": "^3.0", - "spiral/tokenizer": "^3.0" + "ext-json": "*", + "ext-mbstring": "*", + "php": "^8.0" }, "require-dev": { - "buggregator/trap": "^1.11", - "mockery/mockery": "^1.5", - "phpunit/phpunit": "^9.5", - "spiral/code-style": "~2.2.0", - "vimeo/psalm": "^5.25" + "mikehaertl/php-shellcommand": "^1.7.0", + "phpstan/phpstan": "^1.10.57", + "scrutinizer/ocular": "^1.9", + "squizlabs/php_codesniffer": "^3.8.1", + "symfony/finder": "^6.0|^7.0", + "symfony/phpunit-bridge": "^7.0.3" }, + "bin": [ + "bin/json5" + ], "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, "autoload": { + "files": [ + "src/global.php" + ], "psr-4": { - "Cycle\\Migrations\\": "src/" + "ColinODell\\Json5\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Database migrations, migration scaffolding", + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Developer" + } + ], + "description": "UTF-8 compatible JSON5 parser for PHP", + "homepage": "https://github.com/colinodell/json5", + "keywords": [ + "JSON5", + "json", + "json5_decode", + "json_decode" + ], "support": { - "issues": "https://github.com/cycle/migrations/issues", - "source": "https://github.com/cycle/migrations/tree/v4.2.4" + "issues": "https://github.com/colinodell/json5/issues", + "source": "https://github.com/colinodell/json5/tree/v3.0.0" }, - "time": "2024-10-24T17:37:13+00:00" + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + }, + { + "url": "https://www.patreon.com/colinodell", + "type": "patreon" + } + ], + "time": "2024-02-09T13:06:12+00:00" }, { - "name": "cycle/schema-builder", - "version": "v2.11.1", + "name": "composer/package-versions-deprecated", + "version": "1.11.99.5", "source": { "type": "git", - "url": "https://github.com/cycle/schema-builder.git", - "reference": "af4816cfb52ce3591110e3842dda0c1df905c928" + "url": "https://github.com/composer/package-versions-deprecated.git", + "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cycle/schema-builder/zipball/af4816cfb52ce3591110e3842dda0c1df905c928", - "reference": "af4816cfb52ce3591110e3842dda0c1df905c928", + "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b4f54f74ef3453349c24a845d22392cd31e65f1d", + "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d", "shasum": "" }, "require": { - "cycle/database": "^2.7.1", - "cycle/orm": "^2.7", - "php": ">=8.0", - "yiisoft/friendly-exception": "^1.1" + "composer-plugin-api": "^1.1.0 || ^2.0", + "php": "^7 || ^8" + }, + "replace": { + "ocramius/package-versions": "1.11.99" }, "require-dev": { - "phpunit/phpunit": "^9.5", - "spiral/code-style": "^2.2", - "spiral/tokenizer": "^2.8", - "symfony/console": "^6.0 || ^7.0", - "vimeo/psalm": "^5.12" + "composer/composer": "^1.9.3 || ^2.0@dev", + "ext-zip": "^1.13", + "phpunit/phpunit": "^6.5 || ^7" + }, + "type": "composer-plugin", + "extra": { + "class": "PackageVersions\\Installer", + "branch-alias": { + "dev-master": "1.x-dev" + } }, - "type": "library", "autoload": { "psr-4": { - "Cycle\\Schema\\": "src/" + "PackageVersions\\": "src/PackageVersions" } }, "notification-url": "https://packagist.org/downloads/", @@ -5049,245 +5323,366 @@ ], "authors": [ { - "name": "Anton Titov (wolfy-j)", - "email": "wolfy-j@spiralscout.com" - }, - { - "name": "Aleksei Gagarin (roxblnfk)", - "email": "alexey.gagarin@spiralscout.com" - }, - { - "name": "Pavel Butchnev (butschster)", - "email": "pavel.buchnev@spiralscout.com" + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" }, { - "name": "Maksim Smakouz (msmakouz)", - "email": "maksim.smakouz@spiralscout.com" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" } ], - "description": "Cycle ORM Schema Builder", + "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", "support": { - "issues": "https://github.com/cycle/schema-builder/issues", - "source": "https://github.com/cycle/schema-builder/tree/v2.11.1" + "issues": "https://github.com/composer/package-versions-deprecated/issues", + "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.5" }, "funding": [ { - "url": "https://github.com/sponsors/cycle", + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" } ], - "time": "2024-12-13T15:51:51+00:00" + "time": "2022-01-17T14:14:24+00:00" }, { - "name": "cycle/schema-migrations-generator", - "version": "2.2.0", + "name": "composer/pcre", + "version": "3.3.2", "source": { "type": "git", - "url": "https://github.com/cycle/schema-migrations-generator.git", - "reference": "94cb613ec77376cf880c9488daa3668b1f856e80" + "url": "https://github.com/composer/pcre.git", + "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cycle/schema-migrations-generator/zipball/94cb613ec77376cf880c9488daa3668b1f856e80", - "reference": "94cb613ec77376cf880c9488daa3668b1f856e80", + "url": "https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e", + "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e", "shasum": "" }, "require": { - "cycle/database": "^2.4.1", - "cycle/migrations": "^4.2", - "cycle/schema-builder": "^2.0", - "php": ">=8.1" + "php": "^7.4 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<1.11.10" }, "require-dev": { - "cycle/annotated": "^3.0", - "cycle/orm": "^2.0", - "phpunit/phpunit": "^9.5", - "spiral/debug": "^3.0", - "spiral/framework": "^3.0" + "phpstan/phpstan": "^1.12 || ^2", + "phpstan/phpstan-strict-rules": "^1 || ^2", + "phpunit/phpunit": "^8 || ^9" }, "type": "library", + "extra": { + "phpstan": { + "includes": [ + "extension.neon" + ] + }, + "branch-alias": { + "dev-main": "3.x-dev" + } + }, "autoload": { "psr-4": { - "Cycle\\Schema\\Generator\\Migrations\\": "src/" + "Composer\\Pcre\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Cycle ORM Migration generation", + "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/cycle/schema-migrations-generator/issues", - "source": "https://github.com/cycle/schema-migrations-generator/tree/2.2.0" + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/3.3.2" }, - "time": "2023-11-02T09:24:12+00:00" + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2024-11-12T16:29:46+00:00" }, { - "name": "cycle/schema-renderer", - "version": "1.2.0", + "name": "composer/semver", + "version": "3.4.4", "source": { "type": "git", - "url": "https://github.com/cycle/schema-renderer.git", - "reference": "5c2b7977c2803c6c9bacc56064abda5ea2b273a3" + "url": "https://github.com/composer/semver.git", + "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cycle/schema-renderer/zipball/5c2b7977c2803c6c9bacc56064abda5ea2b273a3", - "reference": "5c2b7977c2803c6c9bacc56064abda5ea2b273a3", + "url": "https://api.github.com/repos/composer/semver/zipball/198166618906cb2de69b95d7d47e5fa8aa1b2b95", + "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95", "shasum": "" }, "require": { - "cycle/orm": "1.2 - 2", - "php": ">=7.4" + "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^9.5", - "spiral/code-style": "^1.0", - "vimeo/psalm": "^4.10|^5.1" + "phpstan/phpstan": "^1.11", + "symfony/phpunit-bridge": "^3 || ^7" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, "autoload": { "psr-4": { - "Cycle\\Schema\\Renderer\\": "src/" + "Composer\\Semver\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Utils for Cycle ORM Schema rendering", + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], "support": { - "issues": "https://github.com/cycle/schema-renderer/issues", - "source": "https://github.com/cycle/schema-renderer/tree/1.2.0" + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.4.4" }, - "time": "2022-12-15T16:14:14+00:00" + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + } + ], + "time": "2025-08-20T19:15:30+00:00" }, { - "name": "dnoegel/php-xdg-base-dir", - "version": "v0.1.1", + "name": "composer/xdebug-handler", + "version": "3.0.5", "source": { "type": "git", - "url": "https://github.com/dnoegel/php-xdg-base-dir.git", - "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd" + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", - "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef", "shasum": "" }, "require": { - "php": ">=5.3.2" + "composer/pcre": "^1 || ^2 || ^3", + "php": "^7.2.5 || ^8.0", + "psr/log": "^1 || ^2 || ^3" }, "require-dev": { - "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35" + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-strict-rules": "^1.1", + "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5" }, "type": "library", "autoload": { "psr-4": { - "XdgBaseDir\\": "src/" + "Composer\\XdebugHandler\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "implementation of xdg base directory specification for php", + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without Xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], "support": { - "issues": "https://github.com/dnoegel/php-xdg-base-dir/issues", - "source": "https://github.com/dnoegel/php-xdg-base-dir/tree/v0.1.1" + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/3.0.5" }, - "time": "2019-12-04T15:06:13+00:00" + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2024-05-06T16:37:16+00:00" }, { - "name": "doctrine/deprecations", - "version": "1.1.4", + "name": "cycle/annotated", + "version": "v4.3.1", "source": { "type": "git", - "url": "https://github.com/doctrine/deprecations.git", - "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9" + "url": "https://github.com/cycle/annotated.git", + "reference": "f996d3ee0c22aa8f2c03dca5d693408f8b7fdbbe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/31610dbb31faa98e6b5447b62340826f54fbc4e9", - "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9", + "url": "https://api.github.com/repos/cycle/annotated/zipball/f996d3ee0c22aa8f2c03dca5d693408f8b7fdbbe", + "reference": "f996d3ee0c22aa8f2c03dca5d693408f8b7fdbbe", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "cycle/database": "^2.15", + "cycle/orm": "^2.9.2", + "cycle/schema-builder": "^2.11.1", + "doctrine/inflector": "^2.0", + "php": ">=8.1", + "spiral/attributes": "^2.8|^3.0", + "spiral/tokenizer": "^2.8|^3.0" }, "require-dev": { - "doctrine/coding-standard": "^9 || ^12", - "phpstan/phpstan": "1.4.10 || 2.0.3", - "phpstan/phpstan-phpunit": "^1.0 || ^2", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psr/log": "^1 || ^2 || ^3" - }, - "suggest": { - "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + "doctrine/annotations": "^1.14.3 || ^2.0.1", + "phpunit/phpunit": "^10.1", + "spiral/code-style": "^2.2", + "spiral/dumper": "^3.3", + "vimeo/psalm": "^5.26 || ^6.0" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Deprecations\\": "src" + "Cycle\\Annotated\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", - "homepage": "https://www.doctrine-project.org/", + "authors": [ + { + "name": "Anton Titov (wolfy-j)", + "email": "wolfy-j@spiralscout.com" + }, + { + "name": "Aleksei Gagarin (roxblnfk)", + "email": "alexey.gagarin@spiralscout.com" + }, + { + "name": "Pavel Butchnev (butschster)", + "email": "pavel.buchnev@spiralscout.com" + }, + { + "name": "Maksim Smakouz (msmakouz)", + "email": "maksim.smakouz@spiralscout.com" + } + ], + "description": "Cycle ORM Annotated Entities generator", + "homepage": "https://cycle-orm.dev", "support": { - "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.4" + "chat": "https://discord.gg/spiralphp", + "docs": "https://cycle-orm.dev/docs", + "issues": "https://github.com/cycle/annotated/issues", + "source": "https://github.com/cycle/annotated" }, - "time": "2024-12-07T21:18:45+00:00" + "funding": [ + { + "url": "https://github.com/sponsors/cycle", + "type": "github" + } + ], + "time": "2025-07-22T06:19:06+00:00" }, { - "name": "ergebnis/phpunit-slow-test-detector", - "version": "2.17.0", + "name": "cycle/entity-behavior", + "version": "1.7.0", "source": { "type": "git", - "url": "https://github.com/ergebnis/phpunit-slow-test-detector.git", - "reference": "671ea2ba0669917f7e98b54e4188e1c1ebf6e29d" + "url": "https://github.com/cycle/entity-behavior.git", + "reference": "0c8d84fb3eaa50ec426f336a158d62ad2b4a83b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/phpunit-slow-test-detector/zipball/671ea2ba0669917f7e98b54e4188e1c1ebf6e29d", - "reference": "671ea2ba0669917f7e98b54e4188e1c1ebf6e29d", + "url": "https://api.github.com/repos/cycle/entity-behavior/zipball/0c8d84fb3eaa50ec426f336a158d62ad2b4a83b6", + "reference": "0c8d84fb3eaa50ec426f336a158d62ad2b4a83b6", "shasum": "" }, "require": { - "php": "~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", - "phpunit/phpunit": "^6.5.0 || ^7.5.0 || ^8.5.19 || ^9.0.0 || ^10.0.0 || ^11.0.0" + "cycle/database": "^2.14", + "cycle/orm": "^2.10", + "cycle/schema-builder": "^2.8", + "php": ">=8.0", + "psr/container": "^1.0|^2.0", + "psr/event-dispatcher": "^1", + "yiisoft/injector": "^1.0" }, "require-dev": { - "ergebnis/composer-normalize": "^2.44.0", - "ergebnis/license": "^2.6.0", - "ergebnis/php-cs-fixer-config": "^6.38.0", - "fakerphp/faker": "~1.20.0", - "phpstan/extension-installer": "^1.4.3", - "phpstan/phpstan": "^1.12.11", - "phpstan/phpstan-deprecation-rules": "^1.2.1", - "phpstan/phpstan-phpunit": "^1.4.1", - "phpstan/phpstan-strict-rules": "^1.6.1", - "psr/container": "~1.0.0", - "rector/rector": "^1.2.10" + "cycle/annotated": "^3.0", + "phpunit/phpunit": "^9.5", + "ramsey/uuid": "^4.5", + "spiral/code-style": "^2.2", + "spiral/tokenizer": "^2.8 || ^3.0", + "vimeo/psalm": "^5.11 || ^6.8" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.16-dev" - }, - "composer-normalize": { - "indent-size": 2, - "indent-style": "space" - } - }, "autoload": { "psr-4": { - "Ergebnis\\PHPUnit\\SlowTestDetector\\": "src/" + "Cycle\\ORM\\Entity\\Behavior\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -5296,114 +5691,115 @@ ], "authors": [ { - "name": "Andreas Mรถller", - "email": "am@localheinz.com", - "homepage": "https://localheinz.com" + "name": "Anton Titov (wolfy-j)", + "email": "wolfy-j@spiralscout.com" + }, + { + "name": "Aleksei Gagarin (roxblnfk)", + "email": "alexey.gagarin@spiralscout.com" + }, + { + "name": "Pavel Butchnev (butschster)", + "email": "pavel.buchnev@spiralscout.com" + }, + { + "name": "Maksim Smakouz (msmakouz)", + "email": "maksim.smakouz@spiralscout.com" } ], - "description": "Provides facilities for detecting slow tests in phpunit/phpunit.", - "homepage": "https://github.com/ergebnis/phpunit-slow-test-detector", - "keywords": [ - "detector", - "extension", - "phpunit", - "slow", - "test" - ], + "description": "Provides a collection of attributes that add behaviors to Cycle ORM entities", + "homepage": "https://cycle-orm.dev", "support": { - "issues": "https://github.com/ergebnis/phpunit-slow-test-detector/issues", - "security": "https://github.com/ergebnis/phpunit-slow-test-detector/blob/main/.github/SECURITY.md", - "source": "https://github.com/ergebnis/phpunit-slow-test-detector" + "chat": "https://discord.gg/spiralphp", + "docs": "https://cycle-orm.dev/docs", + "issues": "https://github.com/cycle/entity-behavior/issues", + "source": "https://github.com/cycle/entity-behavior" }, - "time": "2024-11-25T08:54:52+00:00" + "funding": [ + { + "url": "https://github.com/sponsors/cycle", + "type": "github" + } + ], + "time": "2025-07-22T05:27:05+00:00" }, { - "name": "evenement/evenement", - "version": "v3.0.2", + "name": "cycle/migrations", + "version": "v4.2.6", "source": { "type": "git", - "url": "https://github.com/igorw/evenement.git", - "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc" + "url": "https://github.com/cycle/migrations.git", + "reference": "c1712b6703441a381f707dd710cc3880c004b92c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/igorw/evenement/zipball/0a16b0d71ab13284339abb99d9d2bd813640efbc", - "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc", + "url": "https://api.github.com/repos/cycle/migrations/zipball/c1712b6703441a381f707dd710cc3880c004b92c", + "reference": "c1712b6703441a381f707dd710cc3880c004b92c", "shasum": "" }, "require": { - "php": ">=7.0" + "cycle/database": "^2.7.0", + "php": ">=8.1", + "spiral/core": "^3.0", + "spiral/files": "^3.0", + "spiral/reactor": "^3.0", + "spiral/tokenizer": "^3.0" }, "require-dev": { - "phpunit/phpunit": "^9 || ^6" + "buggregator/trap": "^1.11", + "mockery/mockery": "^1.5", + "phpunit/phpunit": "^9.5", + "spiral/code-style": "^2.2.0", + "vimeo/psalm": "^6.4" }, "type": "library", "autoload": { "psr-4": { - "Evenement\\": "src/" + "Cycle\\Migrations\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - } - ], - "description": "ร‰vรฉnement is a very simple event dispatching library for PHP", - "keywords": [ - "event-dispatcher", - "event-emitter" - ], + "description": "Database migrations, migration scaffolding", "support": { - "issues": "https://github.com/igorw/evenement/issues", - "source": "https://github.com/igorw/evenement/tree/v3.0.2" + "issues": "https://github.com/cycle/migrations/issues", + "source": "https://github.com/cycle/migrations/tree/v4.2.6" }, - "time": "2023-08-08T05:53:35+00:00" + "time": "2025-07-13T07:22:37+00:00" }, { - "name": "fakerphp/faker", - "version": "v1.24.1", + "name": "cycle/schema-builder", + "version": "v2.11.2", "source": { "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5" + "url": "https://github.com/cycle/schema-builder.git", + "reference": "c59071a22dc9368a599253f541ff5338a61a1511" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", - "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", + "url": "https://api.github.com/repos/cycle/schema-builder/zipball/c59071a22dc9368a599253f541ff5338a61a1511", + "reference": "c59071a22dc9368a599253f541ff5338a61a1511", "shasum": "" }, "require": { - "php": "^7.4 || ^8.0", - "psr/container": "^1.0 || ^2.0", - "symfony/deprecation-contracts": "^2.2 || ^3.0" - }, - "conflict": { - "fzaninotto/faker": "*" + "cycle/database": "^2.7.1", + "cycle/orm": "^2.7", + "php": ">=8.0", + "yiisoft/friendly-exception": "^1.1" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "doctrine/persistence": "^1.3 || ^2.0", - "ext-intl": "*", - "phpunit/phpunit": "^9.5.26", - "symfony/phpunit-bridge": "^5.4.16" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." + "phpunit/phpunit": "^9.5", + "spiral/code-style": "^2.2", + "spiral/tokenizer": "^2.8", + "symfony/console": "^6.0 || ^7.0", + "vimeo/psalm": "^5.12 || ^6.12" }, "type": "library", "autoload": { "psr-4": { - "Faker\\": "src/Faker/" + "Cycle\\Schema\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -5412,444 +5808,373 @@ ], "authors": [ { - "name": "Franรงois Zaninotto" + "name": "Anton Titov (wolfy-j)", + "email": "wolfy-j@spiralscout.com" + }, + { + "name": "Aleksei Gagarin (roxblnfk)", + "email": "alexey.gagarin@spiralscout.com" + }, + { + "name": "Pavel Butchnev (butschster)", + "email": "pavel.buchnev@spiralscout.com" + }, + { + "name": "Maksim Smakouz (msmakouz)", + "email": "maksim.smakouz@spiralscout.com" } ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], + "description": "Cycle ORM Schema Builder", "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.24.1" + "issues": "https://github.com/cycle/schema-builder/issues", + "source": "https://github.com/cycle/schema-builder/tree/v2.11.2" }, - "time": "2024-11-21T13:46:39+00:00" + "funding": [ + { + "url": "https://github.com/sponsors/cycle", + "type": "github" + } + ], + "time": "2025-07-10T03:45:14+00:00" }, { - "name": "felixfbecker/advanced-json-rpc", - "version": "v3.2.1", + "name": "cycle/schema-migrations-generator", + "version": "2.3.0", "source": { "type": "git", - "url": "https://github.com/felixfbecker/php-advanced-json-rpc.git", - "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447" + "url": "https://github.com/cycle/schema-migrations-generator.git", + "reference": "766c68dc1c89aa20128a4cecf1995f101c05e5f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/b5f37dbff9a8ad360ca341f3240dc1c168b45447", - "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447", + "url": "https://api.github.com/repos/cycle/schema-migrations-generator/zipball/766c68dc1c89aa20128a4cecf1995f101c05e5f0", + "reference": "766c68dc1c89aa20128a4cecf1995f101c05e5f0", "shasum": "" }, "require": { - "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", - "php": "^7.1 || ^8.0", - "phpdocumentor/reflection-docblock": "^4.3.4 || ^5.0.0" + "cycle/database": "^2.11.3", + "cycle/migrations": "^4.2.4", + "cycle/schema-builder": "^2.11.1", + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^7.0 || ^8.0" + "cycle/annotated": "^3.5", + "cycle/orm": "^2.9.1", + "phpunit/phpunit": "^9.6.22", + "spiral/code-style": "^2.2.0", + "spiral/dumper": "^3.3.1", + "spiral/framework": "^3.14.8", + "vimeo/psalm": "^5.26.1" }, "type": "library", "autoload": { "psr-4": { - "AdvancedJsonRpc\\": "lib/" + "Cycle\\Schema\\Generator\\Migrations\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "ISC" + "MIT" ], - "authors": [ + "description": "Cycle ORM Migration generation", + "support": { + "chat": "https://discord.gg/spiralphp", + "docs": "https://cycle-orm.dev/docs", + "issues": "https://github.com/cycle/schema-migrations-generator/issues", + "source": "https://github.com/cycle/schema-migrations-generator" + }, + "funding": [ { - "name": "Felix Becker", - "email": "felix.b@outlook.com" + "url": "https://github.com/sponsors/cycle", + "type": "github" } ], - "description": "A more advanced JSONRPC implementation", - "support": { - "issues": "https://github.com/felixfbecker/php-advanced-json-rpc/issues", - "source": "https://github.com/felixfbecker/php-advanced-json-rpc/tree/v3.2.1" - }, - "time": "2021-06-11T22:34:44+00:00" + "time": "2024-12-23T11:27:31+00:00" }, { - "name": "felixfbecker/language-server-protocol", - "version": "v1.5.3", + "name": "cycle/schema-renderer", + "version": "1.3.0", "source": { "type": "git", - "url": "https://github.com/felixfbecker/php-language-server-protocol.git", - "reference": "a9e113dbc7d849e35b8776da39edaf4313b7b6c9" + "url": "https://github.com/cycle/schema-renderer.git", + "reference": "75afcb552432eb58dffda15d63f4451601c60c82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/a9e113dbc7d849e35b8776da39edaf4313b7b6c9", - "reference": "a9e113dbc7d849e35b8776da39edaf4313b7b6c9", + "url": "https://api.github.com/repos/cycle/schema-renderer/zipball/75afcb552432eb58dffda15d63f4451601c60c82", + "reference": "75afcb552432eb58dffda15d63f4451601c60c82", "shasum": "" }, "require": { - "php": ">=7.1" + "cycle/orm": "^2.0", + "php": ">=8.1", + "symfony/polyfill-php83": "^1.31.0" }, "require-dev": { - "phpstan/phpstan": "*", - "squizlabs/php_codesniffer": "^3.1", - "vimeo/psalm": "^4.0" + "phpunit/phpunit": "^10.5", + "spiral/code-style": "^2.2.2", + "spiral/dumper": "^3.3", + "vimeo/psalm": "^5.26.1 || ^6.8.9" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, "autoload": { "psr-4": { - "LanguageServerProtocol\\": "src/" + "Cycle\\Schema\\Renderer\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "ISC" - ], - "authors": [ - { - "name": "Felix Becker", - "email": "felix.b@outlook.com" - } - ], - "description": "PHP classes for the Language Server Protocol", - "keywords": [ - "language", - "microsoft", - "php", - "server" + "MIT" ], + "description": "Utils for Cycle ORM Schema rendering", "support": { - "issues": "https://github.com/felixfbecker/php-language-server-protocol/issues", - "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/v1.5.3" + "issues": "https://github.com/cycle/schema-renderer/issues", + "source": "https://github.com/cycle/schema-renderer/tree/1.3.0" }, - "time": "2024-04-30T00:40:11+00:00" + "time": "2025-05-08T08:51:06+00:00" }, { - "name": "fidry/cpu-core-counter", - "version": "1.2.0", + "name": "daverandom/libdns", + "version": "v2.1.0", "source": { "type": "git", - "url": "https://github.com/theofidry/cpu-core-counter.git", - "reference": "8520451a140d3f46ac33042715115e290cf5785f" + "url": "https://github.com/DaveRandom/LibDNS.git", + "reference": "b84c94e8fe6b7ee4aecfe121bfe3b6177d303c8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/8520451a140d3f46ac33042715115e290cf5785f", - "reference": "8520451a140d3f46ac33042715115e290cf5785f", + "url": "https://api.github.com/repos/DaveRandom/LibDNS/zipball/b84c94e8fe6b7ee4aecfe121bfe3b6177d303c8a", + "reference": "b84c94e8fe6b7ee4aecfe121bfe3b6177d303c8a", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "ext-ctype": "*", + "php": ">=7.1" }, - "require-dev": { - "fidry/makefile": "^0.2.0", - "fidry/php-cs-fixer-config": "^1.1.2", - "phpstan/extension-installer": "^1.2.0", - "phpstan/phpstan": "^1.9.2", - "phpstan/phpstan-deprecation-rules": "^1.0.0", - "phpstan/phpstan-phpunit": "^1.2.2", - "phpstan/phpstan-strict-rules": "^1.4.4", - "phpunit/phpunit": "^8.5.31 || ^9.5.26", - "webmozarts/strict-phpunit": "^7.5" + "suggest": { + "ext-intl": "Required for IDN support" }, "type": "library", "autoload": { + "files": [ + "src/functions.php" + ], "psr-4": { - "Fidry\\CpuCoreCounter\\": "src/" + "LibDNS\\": "src/" } }, "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" + "description": "DNS protocol implementation written in pure PHP", + "keywords": [ + "dns" ], "support": { - "issues": "https://github.com/theofidry/cpu-core-counter/issues", - "source": "https://github.com/theofidry/cpu-core-counter/tree/1.2.0" + "issues": "https://github.com/DaveRandom/LibDNS/issues", + "source": "https://github.com/DaveRandom/LibDNS/tree/v2.1.0" }, - "funding": [ - { - "url": "https://github.com/theofidry", - "type": "github" - } - ], - "time": "2024-08-06T10:04:20+00:00" + "time": "2024-04-12T12:12:48+00:00" }, { - "name": "filp/whoops", - "version": "2.16.0", + "name": "dnoegel/php-xdg-base-dir", + "version": "v0.1.1", "source": { "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "befcdc0e5dce67252aa6322d82424be928214fa2" + "url": "https://github.com/dnoegel/php-xdg-base-dir.git", + "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/befcdc0e5dce67252aa6322d82424be928214fa2", - "reference": "befcdc0e5dce67252aa6322d82424be928214fa2", + "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", + "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" + "php": ">=5.3.2" }, "require-dev": { - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3", - "symfony/var-dumper": "^4.0 || ^5.0" - }, - "suggest": { - "symfony/var-dumper": "Pretty print complex values better with var-dumper available", - "whoops/soap": "Formats errors as SOAP responses" + "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" - } - }, "autoload": { "psr-4": { - "Whoops\\": "src/Whoops/" + "XdgBaseDir\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Filipe Dobreira", - "homepage": "https://github.com/filp", - "role": "Developer" - } - ], - "description": "php error handling for cool kids", - "homepage": "https://filp.github.io/whoops/", - "keywords": [ - "error", - "exception", - "handling", - "library", - "throwable", - "whoops" - ], + "description": "implementation of xdg base directory specification for php", "support": { - "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.16.0" + "issues": "https://github.com/dnoegel/php-xdg-base-dir/issues", + "source": "https://github.com/dnoegel/php-xdg-base-dir/tree/v0.1.1" }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2024-09-25T12:00:00+00:00" + "time": "2019-12-04T15:06:13+00:00" }, { - "name": "friendsofphp/php-cs-fixer", - "version": "v3.65.0", + "name": "doctrine/deprecations", + "version": "1.1.5", "source": { "type": "git", - "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "79d4f3e77b250a7d8043d76c6af8f0695e8a469f" + "url": "https://github.com/doctrine/deprecations.git", + "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/79d4f3e77b250a7d8043d76c6af8f0695e8a469f", - "reference": "79d4f3e77b250a7d8043d76c6af8f0695e8a469f", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", + "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", "shasum": "" }, "require": { - "clue/ndjson-react": "^1.0", - "composer/semver": "^3.4", - "composer/xdebug-handler": "^3.0.3", - "ext-filter": "*", - "ext-json": "*", - "ext-tokenizer": "*", - "fidry/cpu-core-counter": "^1.2", - "php": "^7.4 || ^8.0", - "react/child-process": "^0.6.5", - "react/event-loop": "^1.0", - "react/promise": "^2.0 || ^3.0", - "react/socket": "^1.0", - "react/stream": "^1.0", - "sebastian/diff": "^4.0 || ^5.0 || ^6.0", - "symfony/console": "^5.4 || ^6.0 || ^7.0", - "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0", - "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", - "symfony/finder": "^5.4 || ^6.0 || ^7.0", - "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0", - "symfony/polyfill-mbstring": "^1.28", - "symfony/polyfill-php80": "^1.28", - "symfony/polyfill-php81": "^1.28", - "symfony/process": "^5.4 || ^6.0 || ^7.0", - "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0" + "php": "^7.1 || ^8.0" + }, + "conflict": { + "phpunit/phpunit": "<=7.5 || >=13" }, "require-dev": { - "facile-it/paraunit": "^1.3.1 || ^2.4", - "infection/infection": "^0.29.8", - "justinrainbow/json-schema": "^5.3 || ^6.0", - "keradus/cli-executor": "^2.1", - "mikey179/vfsstream": "^1.6.12", - "php-coveralls/php-coveralls": "^2.7", - "php-cs-fixer/accessible-object": "^1.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.5", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.5", - "phpunit/phpunit": "^9.6.21 || ^10.5.38 || ^11.4.3", - "symfony/var-dumper": "^5.4.47 || ^6.4.15 || ^7.1.8", - "symfony/yaml": "^5.4.45 || ^6.4.13 || ^7.1.6" + "doctrine/coding-standard": "^9 || ^12 || ^13", + "phpstan/phpstan": "1.4.10 || 2.1.11", + "phpstan/phpstan-phpunit": "^1.0 || ^2", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12", + "psr/log": "^1 || ^2 || ^3" }, "suggest": { - "ext-dom": "For handling output formats in XML", - "ext-mbstring": "For handling non-UTF8 characters." + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" }, - "bin": [ - "php-cs-fixer" - ], - "type": "application", + "type": "library", "autoload": { "psr-4": { - "PhpCsFixer\\": "src/" - }, - "exclude-from-classmap": [ - "src/Fixer/Internal/*" - ] + "Doctrine\\Deprecations\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Dariusz Rumiล„ski", - "email": "dariusz.ruminski@gmail.com" - } - ], - "description": "A tool to automatically fix PHP code style", - "keywords": [ - "Static code analysis", - "fixer", - "standards", - "static analysis" - ], + "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", + "homepage": "https://www.doctrine-project.org/", "support": { - "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.65.0" + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/1.1.5" }, - "funding": [ - { - "url": "https://github.com/keradus", - "type": "github" - } - ], - "time": "2024-11-25T00:39:24+00:00" + "time": "2025-04-07T20:06:18+00:00" }, { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", + "name": "ergebnis/phpunit-slow-test-detector", + "version": "2.20.0", "source": { "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" + "url": "https://github.com/ergebnis/phpunit-slow-test-detector.git", + "reference": "36225d36071cb0e7aae3e05a8baa82ace28e1094" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "url": "https://api.github.com/repos/ergebnis/phpunit-slow-test-detector/zipball/36225d36071cb0e7aae3e05a8baa82ace28e1094", + "reference": "36225d36071cb0e7aae3e05a8baa82ace28e1094", "shasum": "" }, "require": { - "php": "^5.3|^7.0|^8.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" + "php": "~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0", + "phpunit/phpunit": "^6.5.0 || ^7.5.0 || ^8.5.19 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0" }, "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" + "ergebnis/composer-normalize": "^2.47.0", + "ergebnis/license": "^2.6.0", + "ergebnis/php-cs-fixer-config": "^6.52.0", + "fakerphp/faker": "~1.20.0", + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^1.12.11", + "phpstan/phpstan-deprecation-rules": "^1.2.1", + "phpstan/phpstan-phpunit": "^1.4.1", + "phpstan/phpstan-strict-rules": "^1.6.1", + "psr/container": "~1.0.0", + "rector/rector": "^1.2.10" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "dev-main": "2.16-dev" + }, + "composer-normalize": { + "indent-size": 2, + "indent-style": "space" } }, "autoload": { - "classmap": [ - "hamcrest" - ] + "psr-4": { + "Ergebnis\\PHPUnit\\SlowTestDetector\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], - "description": "This is the PHP port of Hamcrest Matchers", + "authors": [ + { + "name": "Andreas Mรถller", + "email": "am@localheinz.com", + "homepage": "https://localheinz.com" + } + ], + "description": "Provides facilities for detecting slow tests in phpunit/phpunit.", + "homepage": "https://github.com/ergebnis/phpunit-slow-test-detector", "keywords": [ + "detector", + "extension", + "phpunit", + "slow", "test" ], "support": { - "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" + "issues": "https://github.com/ergebnis/phpunit-slow-test-detector/issues", + "security": "https://github.com/ergebnis/phpunit-slow-test-detector/blob/main/.github/SECURITY.md", + "source": "https://github.com/ergebnis/phpunit-slow-test-detector" }, - "time": "2020-07-09T08:09:16+00:00" + "time": "2025-08-19T07:48:39+00:00" }, { - "name": "illuminate/collections", - "version": "v11.36.1", + "name": "fakerphp/faker", + "version": "v1.24.1", "source": { "type": "git", - "url": "https://github.com/illuminate/collections.git", - "reference": "21868f9ac221a42d4346dc56495d11ab7e0d339a" + "url": "https://github.com/FakerPHP/Faker.git", + "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/collections/zipball/21868f9ac221a42d4346dc56495d11ab7e0d339a", - "reference": "21868f9ac221a42d4346dc56495d11ab7e0d339a", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", + "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", "shasum": "" }, "require": { - "illuminate/conditionable": "^11.0", - "illuminate/contracts": "^11.0", - "illuminate/macroable": "^11.0", - "php": "^8.2" + "php": "^7.4 || ^8.0", + "psr/container": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "conflict": { + "fzaninotto/faker": "*" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/persistence": "^1.3 || ^2.0", + "ext-intl": "*", + "phpunit/phpunit": "^9.5.26", + "symfony/phpunit-bridge": "^5.4.16" }, "suggest": { - "symfony/var-dumper": "Required to use the dump method (^7.0)." + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", + "ext-curl": "Required by Faker\\Provider\\Image to download images.", + "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", + "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", + "ext-mbstring": "Required for multibyte Unicode string functionality." }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "11.x-dev" - } - }, "autoload": { - "files": [ - "functions.php", - "helpers.php" - ], "psr-4": { - "Illuminate\\Support\\": "" + "Faker\\": "src/Faker/" } }, "notification-url": "https://packagist.org/downloads/", @@ -5858,102 +6183,373 @@ ], "authors": [ { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" + "name": "Franรงois Zaninotto" } ], - "description": "The Illuminate Collections package.", - "homepage": "https://laravel.com", + "description": "Faker is a PHP library that generates fake data for you.", + "keywords": [ + "data", + "faker", + "fixtures" + ], "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" + "issues": "https://github.com/FakerPHP/Faker/issues", + "source": "https://github.com/FakerPHP/Faker/tree/v1.24.1" }, - "time": "2024-12-13T13:58:10+00:00" + "time": "2024-11-21T13:46:39+00:00" }, { - "name": "illuminate/conditionable", - "version": "v11.36.1", + "name": "felixfbecker/advanced-json-rpc", + "version": "v3.2.1", "source": { "type": "git", - "url": "https://github.com/illuminate/conditionable.git", - "reference": "911df1bda950a3b799cf80671764e34eede131c6" + "url": "https://github.com/felixfbecker/php-advanced-json-rpc.git", + "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/conditionable/zipball/911df1bda950a3b799cf80671764e34eede131c6", - "reference": "911df1bda950a3b799cf80671764e34eede131c6", + "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/b5f37dbff9a8ad360ca341f3240dc1c168b45447", + "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447", "shasum": "" }, "require": { - "php": "^8.0.2" + "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", + "php": "^7.1 || ^8.0", + "phpdocumentor/reflection-docblock": "^4.3.4 || ^5.0.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "11.x-dev" - } + "require-dev": { + "phpunit/phpunit": "^7.0 || ^8.0" }, + "type": "library", "autoload": { "psr-4": { - "Illuminate\\Support\\": "" + "AdvancedJsonRpc\\": "lib/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "ISC" ], "authors": [ { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" + "name": "Felix Becker", + "email": "felix.b@outlook.com" } ], - "description": "The Illuminate Conditionable package.", - "homepage": "https://laravel.com", + "description": "A more advanced JSONRPC implementation", "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" + "issues": "https://github.com/felixfbecker/php-advanced-json-rpc/issues", + "source": "https://github.com/felixfbecker/php-advanced-json-rpc/tree/v3.2.1" }, - "time": "2024-11-21T16:28:56+00:00" + "time": "2021-06-11T22:34:44+00:00" }, { - "name": "illuminate/contracts", - "version": "v11.36.1", + "name": "felixfbecker/language-server-protocol", + "version": "v1.5.3", "source": { "type": "git", - "url": "https://github.com/illuminate/contracts.git", - "reference": "184317f701ba20ca265e36808ed54b75b115972d" + "url": "https://github.com/felixfbecker/php-language-server-protocol.git", + "reference": "a9e113dbc7d849e35b8776da39edaf4313b7b6c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/contracts/zipball/184317f701ba20ca265e36808ed54b75b115972d", - "reference": "184317f701ba20ca265e36808ed54b75b115972d", + "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/a9e113dbc7d849e35b8776da39edaf4313b7b6c9", + "reference": "a9e113dbc7d849e35b8776da39edaf4313b7b6c9", "shasum": "" }, "require": { - "php": "^8.2", - "psr/container": "^1.1.1|^2.0.1", - "psr/simple-cache": "^1.0|^2.0|^3.0" + "php": ">=7.1" + }, + "require-dev": { + "phpstan/phpstan": "*", + "squizlabs/php_codesniffer": "^3.1", + "vimeo/psalm": "^4.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "11.x-dev" + "dev-master": "1.x-dev" } }, "autoload": { "psr-4": { - "Illuminate\\Contracts\\": "" + "LanguageServerProtocol\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "ISC" ], "authors": [ { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" + "name": "Felix Becker", + "email": "felix.b@outlook.com" + } + ], + "description": "PHP classes for the Language Server Protocol", + "keywords": [ + "language", + "microsoft", + "php", + "server" + ], + "support": { + "issues": "https://github.com/felixfbecker/php-language-server-protocol/issues", + "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/v1.5.3" + }, + "time": "2024-04-30T00:40:11+00:00" + }, + { + "name": "fidry/cpu-core-counter", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/theofidry/cpu-core-counter.git", + "reference": "db9508f7b1474469d9d3c53b86f817e344732678" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/db9508f7b1474469d9d3c53b86f817e344732678", + "reference": "db9508f7b1474469d9d3c53b86f817e344732678", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "fidry/makefile": "^0.2.0", + "fidry/php-cs-fixer-config": "^1.1.2", + "phpstan/extension-installer": "^1.2.0", + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-deprecation-rules": "^2.0.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^8.5.31 || ^9.5.26", + "webmozarts/strict-phpunit": "^7.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Fidry\\CpuCoreCounter\\": "src/" + } + }, + "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/1.3.0" + }, + "funding": [ + { + "url": "https://github.com/theofidry", + "type": "github" + } + ], + "time": "2025-08-14T07:29:31+00:00" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "v2.1.1", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487", + "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "^1.4 || ^2.0 || ^3.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "classmap": [ + "hamcrest" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "This is the PHP port of Hamcrest Matchers", + "keywords": [ + "test" + ], + "support": { + "issues": "https://github.com/hamcrest/hamcrest-php/issues", + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.1.1" + }, + "time": "2025-04-30T06:54:44+00:00" + }, + { + "name": "illuminate/collections", + "version": "v10.48.28", + "source": { + "type": "git", + "url": "https://github.com/illuminate/collections.git", + "reference": "48de3d6bc6aa779112ddcb608a3a96fc975d89d8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/collections/zipball/48de3d6bc6aa779112ddcb608a3a96fc975d89d8", + "reference": "48de3d6bc6aa779112ddcb608a3a96fc975d89d8", + "shasum": "" + }, + "require": { + "illuminate/conditionable": "^10.0", + "illuminate/contracts": "^10.0", + "illuminate/macroable": "^10.0", + "php": "^8.1" + }, + "suggest": { + "symfony/var-dumper": "Required to use the dump method (^6.2)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "10.x-dev" + } + }, + "autoload": { + "files": [ + "helpers.php" + ], + "psr-4": { + "Illuminate\\Support\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Collections package.", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2024-11-21T14:02:44+00:00" + }, + { + "name": "illuminate/conditionable", + "version": "v10.48.28", + "source": { + "type": "git", + "url": "https://github.com/illuminate/conditionable.git", + "reference": "3ee34ac306fafc2a6f19cd7cd68c9af389e432a5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/conditionable/zipball/3ee34ac306fafc2a6f19cd7cd68c9af389e432a5", + "reference": "3ee34ac306fafc2a6f19cd7cd68c9af389e432a5", + "shasum": "" + }, + "require": { + "php": "^8.0.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "10.x-dev" + } + }, + "autoload": { + "psr-4": { + "Illuminate\\Support\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Conditionable package.", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2024-11-21T14:02:44+00:00" + }, + { + "name": "illuminate/contracts", + "version": "v10.48.28", + "source": { + "type": "git", + "url": "https://github.com/illuminate/contracts.git", + "reference": "f90663a69f926105a70b78060a31f3c64e2d1c74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/contracts/zipball/f90663a69f926105a70b78060a31f3c64e2d1c74", + "reference": "f90663a69f926105a70b78060a31f3c64e2d1c74", + "shasum": "" + }, + "require": { + "php": "^8.1", + "psr/container": "^1.1.1|^2.0.1", + "psr/simple-cache": "^1.0|^2.0|^3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "10.x-dev" + } + }, + "autoload": { + "psr-4": { + "Illuminate\\Contracts\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" } ], "description": "The Illuminate Contracts package.", @@ -5962,29 +6558,29 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2024-11-25T15:33:38+00:00" + "time": "2024-11-21T14:02:44+00:00" }, { "name": "illuminate/macroable", - "version": "v11.36.1", + "version": "v10.48.28", "source": { "type": "git", "url": "https://github.com/illuminate/macroable.git", - "reference": "e1cb9e51b9ed5d3c9bc1ab431d0a52fe42a990ed" + "reference": "dff667a46ac37b634dcf68909d9d41e94dc97c27" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/macroable/zipball/e1cb9e51b9ed5d3c9bc1ab431d0a52fe42a990ed", - "reference": "e1cb9e51b9ed5d3c9bc1ab431d0a52fe42a990ed", + "url": "https://api.github.com/repos/illuminate/macroable/zipball/dff667a46ac37b634dcf68909d9d41e94dc97c27", + "reference": "dff667a46ac37b634dcf68909d9d41e94dc97c27", "shasum": "" }, "require": { - "php": "^8.2" + "php": "^8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "11.x-dev" + "dev-master": "10.x-dev" } }, "autoload": { @@ -6008,20 +6604,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2024-06-28T20:10:30+00:00" + "time": "2023-06-05T12:46:42+00:00" }, { "name": "illuminate/support", - "version": "v11.36.1", + "version": "v10.48.28", "source": { "type": "git", "url": "https://github.com/illuminate/support.git", - "reference": "fba1ff58e30fa280248ce3db9b18d6341c6ac339" + "reference": "6d09b480d34846245d9288f4dcefb17a73ce6e6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/support/zipball/fba1ff58e30fa280248ce3db9b18d6341c6ac339", - "reference": "fba1ff58e30fa280248ce3db9b18d6341c6ac339", + "url": "https://api.github.com/repos/illuminate/support/zipball/6d09b480d34846245d9288f4dcefb17a73ce6e6a", + "reference": "6d09b480d34846245d9288f4dcefb17a73ce6e6a", "shasum": "" }, "require": { @@ -6029,40 +6625,34 @@ "ext-ctype": "*", "ext-filter": "*", "ext-mbstring": "*", - "illuminate/collections": "^11.0", - "illuminate/conditionable": "^11.0", - "illuminate/contracts": "^11.0", - "illuminate/macroable": "^11.0", - "nesbot/carbon": "^2.72.2|^3.4", - "php": "^8.2", - "voku/portable-ascii": "^2.0.2" + "illuminate/collections": "^10.0", + "illuminate/conditionable": "^10.0", + "illuminate/contracts": "^10.0", + "illuminate/macroable": "^10.0", + "nesbot/carbon": "^2.67", + "php": "^8.1", + "voku/portable-ascii": "^2.0" }, "conflict": { "tightenco/collect": "<5.5.33" }, - "replace": { - "spatie/once": "*" - }, "suggest": { - "illuminate/filesystem": "Required to use the Composer class (^11.0).", - "laravel/serializable-closure": "Required to use the once function (^1.3).", + "illuminate/filesystem": "Required to use the composer class (^10.0).", "league/commonmark": "Required to use Str::markdown() and Stringable::markdown() (^2.6).", - "league/uri": "Required to use the Uri class (^7.5.1).", "ramsey/uuid": "Required to use Str::uuid() (^4.7).", - "symfony/process": "Required to use the Composer class (^7.0).", - "symfony/uid": "Required to use Str::ulid() (^7.0).", - "symfony/var-dumper": "Required to use the dd function (^7.0).", - "vlucas/phpdotenv": "Required to use the Env class and env helper (^5.6.1)." + "symfony/process": "Required to use the composer class (^6.2).", + "symfony/uid": "Required to use Str::ulid() (^6.2).", + "symfony/var-dumper": "Required to use the dd function (^6.2).", + "vlucas/phpdotenv": "Required to use the Env class and env helper (^5.4.1)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "11.x-dev" + "dev-master": "10.x-dev" } }, "autoload": { "files": [ - "functions.php", "helpers.php" ], "psr-4": { @@ -6085,7 +6675,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2024-12-17T20:20:09+00:00" + "time": "2024-12-10T14:47:55+00:00" }, { "name": "infection/abstract-testframework-adapter", @@ -6266,20 +6856,20 @@ }, { "name": "infection/infection", - "version": "0.27.10", + "version": "0.29.9", "source": { "type": "git", "url": "https://github.com/infection/infection.git", - "reference": "873cd3335774a114bef9ca93388e623bf362d820" + "reference": "beac2ca971b37dd7feb92fe2d3e705c175b2360b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/infection/infection/zipball/873cd3335774a114bef9ca93388e623bf362d820", - "reference": "873cd3335774a114bef9ca93388e623bf362d820", + "url": "https://api.github.com/repos/infection/infection/zipball/beac2ca971b37dd7feb92fe2d3e705c175b2360b", + "reference": "beac2ca971b37dd7feb92fe2d3e705c175b2360b", "shasum": "" }, "require": { - "colinodell/json5": "^2.2", + "colinodell/json5": "^2.2 || ^3.0", "composer-runtime-api": "^2.0", "composer/xdebug-handler": "^2.0 || ^3.0", "ext-dom": "*", @@ -6290,8 +6880,9 @@ "infection/abstract-testframework-adapter": "^0.5.0", "infection/extension-installer": "^0.1.0", "infection/include-interceptor": "^0.2.5", - "justinrainbow/json-schema": "^5.2.10", - "nikic/php-parser": "^4.15.1", + "infection/mutator": "^0.4", + "justinrainbow/json-schema": "^5.3", + "nikic/php-parser": "^5.3", "ondram/ci-detector": "^4.1.0", "php": "^8.1", "sanmai/later": "^0.1.1", @@ -6301,7 +6892,7 @@ "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", "symfony/finder": "^5.4 || ^6.0 || ^7.0", "symfony/process": "^5.4 || ^6.0 || ^7.0", - "thecodingmachine/safe": "^2.1.2", + "thecodingmachine/safe": "dev-master as 2.5.0", "webmozart/assert": "^1.11" }, "conflict": { @@ -6310,21 +6901,17 @@ "phpunit/php-code-coverage": ">9,<9.1.4 || >9.2.17,<9.2.21" }, "require-dev": { - "brianium/paratest": "^6.11", "ext-simplexml": "*", - "fidry/makefile": "^0.2.0", + "fidry/makefile": "^1.0", "helmich/phpunit-json-assert": "^3.0", - "phpspec/prophecy": "^1.15", - "phpspec/prophecy-phpunit": "^2.0", "phpstan/extension-installer": "^1.1.0", "phpstan/phpstan": "^1.10.15", "phpstan/phpstan-phpunit": "^1.0.0", "phpstan/phpstan-strict-rules": "^1.1.0", "phpstan/phpstan-webmozart-assert": "^1.0.2", - "phpunit/phpunit": "^9.6", - "rector/rector": "^0.16.0", - "sidz/phpstan-rules": "^0.4.0", - "symfony/phpunit-bridge": "^5.4 || ^6.0 || ^7.0", + "phpunit/phpunit": "^10.5", + "rector/rector": "^1.0", + "sidz/phpstan-rules": "^0.4", "symfony/yaml": "^5.4 || ^6.0 || ^7.0", "thecodingmachine/phpstan-safe-rule": "^1.2.0" }, @@ -6382,7 +6969,7 @@ ], "support": { "issues": "https://github.com/infection/infection/issues", - "source": "https://github.com/infection/infection/tree/0.27.10" + "source": "https://github.com/infection/infection/tree/0.29.9" }, "funding": [ { @@ -6394,66 +6981,60 @@ "type": "open_collective" } ], - "time": "2024-02-20T00:08:52+00:00" + "time": "2024-12-08T22:23:44+00:00" }, { - "name": "jean85/pretty-package-versions", - "version": "2.1.0", + "name": "infection/mutator", + "version": "0.4.1", "source": { "type": "git", - "url": "https://github.com/Jean85/pretty-package-versions.git", - "reference": "3c4e5f62ba8d7de1734312e4fff32f67a8daaf10" + "url": "https://github.com/infection/mutator.git", + "reference": "3c976d721b02b32f851ee4e15d553ef1e9186d1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/3c4e5f62ba8d7de1734312e4fff32f67a8daaf10", - "reference": "3c4e5f62ba8d7de1734312e4fff32f67a8daaf10", + "url": "https://api.github.com/repos/infection/mutator/zipball/3c976d721b02b32f851ee4e15d553ef1e9186d1d", + "reference": "3c976d721b02b32f851ee4e15d553ef1e9186d1d", "shasum": "" }, "require": { - "composer-runtime-api": "^2.1.0", - "php": "^7.4|^8.0" + "nikic/php-parser": "^5.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "jean85/composer-provided-replaced-stub-package": "^1.0", - "phpstan/phpstan": "^1.4", - "phpunit/phpunit": "^7.5|^8.5|^9.6", - "vimeo/psalm": "^4.3 || ^5.0" + "phpunit/phpunit": "^9.6 || ^10" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, "autoload": { "psr-4": { - "Jean85\\": "src/" + "Infection\\Mutator\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Alessandro Lai", - "email": "alessandro.lai85@gmail.com" + "name": "Maks Rafalko", + "email": "maks.rafalko@gmail.com" } ], - "description": "A library to get pretty versions strings of installed dependencies", - "keywords": [ - "composer", - "package", - "release", - "versions" - ], + "description": "Mutator interface to implement custom mutators (mutation operators) for Infection", "support": { - "issues": "https://github.com/Jean85/pretty-package-versions/issues", - "source": "https://github.com/Jean85/pretty-package-versions/tree/2.1.0" + "issues": "https://github.com/infection/mutator/issues", + "source": "https://github.com/infection/mutator/tree/0.4.1" }, - "time": "2024-11-18T16:19:46+00:00" + "funding": [ + { + "url": "https://github.com/infection", + "type": "github" + }, + { + "url": "https://opencollective.com/infection", + "type": "open_collective" + } + ], + "time": "2025-04-29T08:19:52+00:00" }, { "name": "justinrainbow/json-schema", @@ -6520,6 +7101,238 @@ }, "time": "2024-07-06T21:00:26+00:00" }, + { + "name": "kelunik/certificate", + "version": "v1.1.3", + "source": { + "type": "git", + "url": "https://github.com/kelunik/certificate.git", + "reference": "7e00d498c264d5eb4f78c69f41c8bd6719c0199e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/kelunik/certificate/zipball/7e00d498c264d5eb4f78c69f41c8bd6719c0199e", + "reference": "7e00d498c264d5eb4f78c69f41c8bd6719c0199e", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "php": ">=7.0" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "^2", + "phpunit/phpunit": "^6 | 7 | ^8 | ^9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Kelunik\\Certificate\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "Access certificate details and transform between different formats.", + "keywords": [ + "DER", + "certificate", + "certificates", + "openssl", + "pem", + "x509" + ], + "support": { + "issues": "https://github.com/kelunik/certificate/issues", + "source": "https://github.com/kelunik/certificate/tree/v1.1.3" + }, + "time": "2023-02-03T21:26:53+00:00" + }, + { + "name": "league/uri", + "version": "7.5.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri.git", + "reference": "81fb5145d2644324614cc532b28efd0215bda430" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/81fb5145d2644324614cc532b28efd0215bda430", + "reference": "81fb5145d2644324614cc532b28efd0215bda430", + "shasum": "" + }, + "require": { + "league/uri-interfaces": "^7.5", + "php": "^8.1" + }, + "conflict": { + "league/uri-schemes": "^1.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-fileinfo": "to create Data URI from file contennts", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain", + "league/uri-components": "Needed to easily manipulate URI objects components", + "php-64bit": "to improve IPV4 host parsing", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "URI manipulation library", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "middleware", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "uri-template", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri/tree/7.5.1" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2024-12-08T08:40:02+00:00" + }, + { + "name": "league/uri-interfaces", + "version": "7.5.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri-interfaces.git", + "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/08cfc6c4f3d811584fb09c37e2849e6a7f9b0742", + "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^8.1", + "psr/http-factory": "^1", + "psr/http-message": "^1.1 || ^2.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "php-64bit": "to improve IPV4 host parsing", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "Common interfaces and classes for URI representation and interaction", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.5.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2024-12-08T08:18:47+00:00" + }, { "name": "mockery/mockery", "version": "1.6.12", @@ -6605,41 +7418,42 @@ }, { "name": "nesbot/carbon", - "version": "3.8.2", + "version": "2.73.0", "source": { "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "e1268cdbc486d97ce23fef2c666dc3c6b6de9947" + "url": "https://github.com/CarbonPHP/carbon.git", + "reference": "9228ce90e1035ff2f0db84b40ec2e023ed802075" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/e1268cdbc486d97ce23fef2c666dc3c6b6de9947", - "reference": "e1268cdbc486d97ce23fef2c666dc3c6b6de9947", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/9228ce90e1035ff2f0db84b40ec2e023ed802075", + "reference": "9228ce90e1035ff2f0db84b40ec2e023ed802075", "shasum": "" }, "require": { - "carbonphp/carbon-doctrine-types": "<100.0", + "carbonphp/carbon-doctrine-types": "*", "ext-json": "*", - "php": "^8.1", + "php": "^7.1.8 || ^8.0", "psr/clock": "^1.0", - "symfony/clock": "^6.3 || ^7.0", "symfony/polyfill-mbstring": "^1.0", - "symfony/translation": "^4.4.18 || ^5.2.1|| ^6.0 || ^7.0" + "symfony/polyfill-php80": "^1.16", + "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" }, "provide": { "psr/clock-implementation": "1.0" }, "require-dev": { - "doctrine/dbal": "^3.6.3 || ^4.0", - "doctrine/orm": "^2.15.2 || ^3.0", - "friendsofphp/php-cs-fixer": "^3.57.2", - "kylekatarnls/multi-tester": "^2.5.3", - "ondrejmirtes/better-reflection": "^6.25.0.4", - "phpmd/phpmd": "^2.15.0", - "phpstan/extension-installer": "^1.3.1", - "phpstan/phpstan": "^1.11.2", - "phpunit/phpunit": "^10.5.20", - "squizlabs/php_codesniffer": "^3.9.0" + "doctrine/dbal": "^2.0 || ^3.1.4 || ^4.0", + "doctrine/orm": "^2.7 || ^3.0", + "friendsofphp/php-cs-fixer": "^3.0", + "kylekatarnls/multi-tester": "^2.0", + "ondrejmirtes/better-reflection": "<6", + "phpmd/phpmd": "^2.9", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12.99 || ^1.7.14", + "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6", + "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", + "squizlabs/php_codesniffer": "^3.4" }, "bin": [ "bin/carbon" @@ -6707,7 +7521,7 @@ "type": "tidelift" } ], - "time": "2024-11-07T17:46:48+00:00" + "time": "2025-01-08T20:10:23+00:00" }, { "name": "netresearch/jsonmapper", @@ -6760,130 +7574,34 @@ }, "time": "2024-09-08T10:13:13+00:00" }, - { - "name": "nunomaduro/collision", - "version": "v8.5.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "f5c101b929c958e849a633283adff296ed5f38f5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/f5c101b929c958e849a633283adff296ed5f38f5", - "reference": "f5c101b929c958e849a633283adff296ed5f38f5", - "shasum": "" - }, - "require": { - "filp/whoops": "^2.16.0", - "nunomaduro/termwind": "^2.1.0", - "php": "^8.2.0", - "symfony/console": "^7.1.5" - }, - "conflict": { - "laravel/framework": "<11.0.0 || >=12.0.0", - "phpunit/phpunit": "<10.5.1 || >=12.0.0" - }, - "require-dev": { - "larastan/larastan": "^2.9.8", - "laravel/framework": "^11.28.0", - "laravel/pint": "^1.18.1", - "laravel/sail": "^1.36.0", - "laravel/sanctum": "^4.0.3", - "laravel/tinker": "^2.10.0", - "orchestra/testbench-core": "^9.5.3", - "pestphp/pest": "^2.36.0 || ^3.4.0", - "sebastian/environment": "^6.1.0 || ^7.2.0" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - }, - "branch-alias": { - "dev-8.x": "8.x-dev" - } - }, - "autoload": { - "files": [ - "./src/Adapters/Phpunit/Autoload.php" - ], - "psr-4": { - "NunoMaduro\\Collision\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "description": "Cli error handling for console/command-line PHP applications.", - "keywords": [ - "artisan", - "cli", - "command-line", - "console", - "error", - "handling", - "laravel", - "laravel-zero", - "php", - "symfony" - ], - "support": { - "issues": "https://github.com/nunomaduro/collision/issues", - "source": "https://github.com/nunomaduro/collision" - }, - "funding": [ - { - "url": "https://www.paypal.com/paypalme/enunomaduro", - "type": "custom" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" - } - ], - "time": "2024-10-15T16:06:32+00:00" - }, { "name": "nunomaduro/termwind", - "version": "v2.3.0", + "version": "v1.17.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/termwind.git", - "reference": "52915afe6a1044e8b9cee1bcff836fb63acf9cda" + "reference": "5369ef84d8142c1d87e4ec278711d4ece3cbf301" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/52915afe6a1044e8b9cee1bcff836fb63acf9cda", - "reference": "52915afe6a1044e8b9cee1bcff836fb63acf9cda", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/5369ef84d8142c1d87e4ec278711d4ece3cbf301", + "reference": "5369ef84d8142c1d87e4ec278711d4ece3cbf301", "shasum": "" }, "require": { "ext-mbstring": "*", - "php": "^8.2", - "symfony/console": "^7.1.8" + "php": "^8.1", + "symfony/console": "^6.4.15" }, "require-dev": { - "illuminate/console": "^11.33.2", + "illuminate/console": "^10.48.24", + "illuminate/support": "^10.48.24", "laravel/pint": "^1.18.2", - "mockery/mockery": "^1.6.12", "pestphp/pest": "^2.36.0", + "pestphp/pest-plugin-mock": "2.0.0", "phpstan/phpstan": "^1.12.11", "phpstan/phpstan-strict-rules": "^1.6.1", - "symfony/var-dumper": "^7.1.8", + "symfony/var-dumper": "^6.4.15", "thecodingmachine/phpstan-strict-rules": "^1.0.0" }, "type": "library", @@ -6892,9 +7610,6 @@ "providers": [ "Termwind\\Laravel\\TermwindServiceProvider" ] - }, - "branch-alias": { - "dev-2.x": "2.x-dev" } }, "autoload": { @@ -6926,7 +7641,7 @@ ], "support": { "issues": "https://github.com/nunomaduro/termwind/issues", - "source": "https://github.com/nunomaduro/termwind/tree/v2.3.0" + "source": "https://github.com/nunomaduro/termwind/tree/v1.17.0" }, "funding": [ { @@ -6942,7 +7657,7 @@ "type": "github" } ], - "time": "2024-11-21T10:39:51+00:00" + "time": "2024-11-21T10:36:35+00:00" }, { "name": "ondram/ci-detector", @@ -7023,291 +7738,41 @@ "time": "2024-03-12T13:22:30+00:00" }, { - "name": "pestphp/pest", - "version": "v2.36.0", + "name": "phar-io/manifest", + "version": "2.0.4", "source": { "type": "git", - "url": "https://github.com/pestphp/pest.git", - "reference": "f8c88bd14dc1772bfaf02169afb601ecdf2724cd" + "url": "https://github.com/phar-io/manifest.git", + "reference": "54750ef60c58e43759730615a392c31c80e23176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest/zipball/f8c88bd14dc1772bfaf02169afb601ecdf2724cd", - "reference": "f8c88bd14dc1772bfaf02169afb601ecdf2724cd", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", "shasum": "" }, "require": { - "brianium/paratest": "^7.3.1", - "nunomaduro/collision": "^7.11.0|^8.4.0", - "nunomaduro/termwind": "^1.16.0|^2.1.0", - "pestphp/pest-plugin": "^2.1.1", - "pestphp/pest-plugin-arch": "^2.7.0", - "php": "^8.1.0", - "phpunit/phpunit": "^10.5.36" - }, - "conflict": { - "filp/whoops": "<2.16.0", - "phpunit/phpunit": ">10.5.36", - "sebastian/exporter": "<5.1.0", - "webmozart/assert": "<1.11.0" - }, - "require-dev": { - "pestphp/pest-dev-tools": "^2.17.0", - "pestphp/pest-plugin-type-coverage": "^2.8.7", - "symfony/process": "^6.4.0|^7.1.5" + "ext-dom": "*", + "ext-libxml": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" }, - "bin": [ - "bin/pest" - ], "type": "library", "extra": { - "pest": { - "plugins": [ - "Pest\\Plugins\\Bail", - "Pest\\Plugins\\Cache", - "Pest\\Plugins\\Coverage", - "Pest\\Plugins\\Init", - "Pest\\Plugins\\Environment", - "Pest\\Plugins\\Help", - "Pest\\Plugins\\Memory", - "Pest\\Plugins\\Only", - "Pest\\Plugins\\Printer", - "Pest\\Plugins\\ProcessIsolation", - "Pest\\Plugins\\Profile", - "Pest\\Plugins\\Retry", - "Pest\\Plugins\\Snapshot", - "Pest\\Plugins\\Verbose", - "Pest\\Plugins\\Version", - "Pest\\Plugins\\Parallel" - ] - }, - "phpstan": { - "includes": [ - "extension.neon" - ] + "branch-alias": { + "dev-master": "2.0.x-dev" } }, "autoload": { - "files": [ - "src/Functions.php", - "src/Pest.php" - ], - "psr-4": { - "Pest\\": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "description": "The elegant PHP Testing Framework.", - "keywords": [ - "framework", - "pest", - "php", - "test", - "testing", - "unit" - ], - "support": { - "issues": "https://github.com/pestphp/pest/issues", - "source": "https://github.com/pestphp/pest/tree/v2.36.0" - }, - "funding": [ - { - "url": "https://www.paypal.com/paypalme/enunomaduro", - "type": "custom" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - } - ], - "time": "2024-10-15T15:30:56+00:00" - }, - { - "name": "pestphp/pest-plugin", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/pestphp/pest-plugin.git", - "reference": "e05d2859e08c2567ee38ce8b005d044e72648c0b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest-plugin/zipball/e05d2859e08c2567ee38ce8b005d044e72648c0b", - "reference": "e05d2859e08c2567ee38ce8b005d044e72648c0b", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^2.0.0", - "composer-runtime-api": "^2.2.2", - "php": "^8.1" - }, - "conflict": { - "pestphp/pest": "<2.2.3" - }, - "require-dev": { - "composer/composer": "^2.5.8", - "pestphp/pest": "^2.16.0", - "pestphp/pest-dev-tools": "^2.16.0" - }, - "type": "composer-plugin", - "extra": { - "class": "Pest\\Plugin\\Manager" - }, - "autoload": { - "psr-4": { - "Pest\\Plugin\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "The Pest plugin manager", - "keywords": [ - "framework", - "manager", - "pest", - "php", - "plugin", - "test", - "testing", - "unit" - ], - "support": { - "source": "https://github.com/pestphp/pest-plugin/tree/v2.1.1" - }, - "funding": [ - { - "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", - "type": "custom" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" - } - ], - "time": "2023-08-22T08:40:06+00:00" - }, - { - "name": "pestphp/pest-plugin-arch", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/pestphp/pest-plugin-arch.git", - "reference": "d23b2d7498475354522c3818c42ef355dca3fcda" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest-plugin-arch/zipball/d23b2d7498475354522c3818c42ef355dca3fcda", - "reference": "d23b2d7498475354522c3818c42ef355dca3fcda", - "shasum": "" - }, - "require": { - "nunomaduro/collision": "^7.10.0|^8.1.0", - "pestphp/pest-plugin": "^2.1.1", - "php": "^8.1", - "ta-tikoma/phpunit-architecture-test": "^0.8.4" - }, - "require-dev": { - "pestphp/pest": "^2.33.0", - "pestphp/pest-dev-tools": "^2.16.0" - }, - "type": "library", - "extra": { - "pest": { - "plugins": [ - "Pest\\Arch\\Plugin" - ] - } - }, - "autoload": { - "files": [ - "src/Autoload.php" - ], - "psr-4": { - "Pest\\Arch\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "The Arch plugin for Pest PHP.", - "keywords": [ - "arch", - "architecture", - "framework", - "pest", - "php", - "plugin", - "test", - "testing", - "unit" - ], - "support": { - "source": "https://github.com/pestphp/pest-plugin-arch/tree/v2.7.0" - }, - "funding": [ - { - "url": "https://www.paypal.com/paypalme/enunomaduro", - "type": "custom" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - } - ], - "time": "2024-01-26T09:46:42+00:00" - }, - { - "name": "phar-io/manifest", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "54750ef60c58e43759730615a392c31c80e23176" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", - "reference": "54750ef60c58e43759730615a392c31c80e23176", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-phar": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" + "BSD-3-Clause" ], "authors": [ { @@ -7390,6 +7855,58 @@ }, "time": "2022-02-21T01:04:05+00:00" }, + { + "name": "php-cs-fixer/shim", + "version": "v3.86.0", + "source": { + "type": "git", + "url": "https://github.com/PHP-CS-Fixer/shim.git", + "reference": "b43770ec215a30afff187ac273da6b43575c0ae3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHP-CS-Fixer/shim/zipball/b43770ec215a30afff187ac273da6b43575c0ae3", + "reference": "b43770ec215a30afff187ac273da6b43575c0ae3", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-tokenizer": "*", + "php": "^7.4 || ^8.0" + }, + "replace": { + "friendsofphp/php-cs-fixer": "self.version" + }, + "suggest": { + "ext-dom": "For handling output formats in XML", + "ext-mbstring": "For handling non-UTF8 characters." + }, + "bin": [ + "php-cs-fixer", + "php-cs-fixer.phar" + ], + "type": "application", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Dariusz Rumiล„ski", + "email": "dariusz.ruminski@gmail.com" + } + ], + "description": "A tool to automatically fix PHP code style", + "support": { + "issues": "https://github.com/PHP-CS-Fixer/shim/issues", + "source": "https://github.com/PHP-CS-Fixer/shim/tree/v3.86.0" + }, + "time": "2025-08-13T22:37:38+00:00" + }, { "name": "php-http/message", "version": "1.16.2", @@ -7483,837 +8000,305 @@ } }, "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" - }, - "time": "2020-06-27T09:03:43+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "5.6.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8", - "reference": "e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8", - "shasum": "" - }, - "require": { - "doctrine/deprecations": "^1.1", - "ext-filter": "*", - "php": "^7.4 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.7", - "phpstan/phpdoc-parser": "^1.7|^2.0", - "webmozart/assert": "^1.9.1" - }, - "require-dev": { - "mockery/mockery": "~1.3.5 || ~1.6.0", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-mockery": "^1.1", - "phpstan/phpstan-webmozart-assert": "^1.2", - "phpunit/phpunit": "^9.5", - "psalm/phar": "^5.26" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.1" - }, - "time": "2024-12-07T09:39:29+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/679e3ce485b99e84c775d28e2e96fade9a7fb50a", - "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a", - "shasum": "" - }, - "require": { - "doctrine/deprecations": "^1.0", - "php": "^7.3 || ^8.0", - "phpdocumentor/reflection-common": "^2.0", - "phpstan/phpdoc-parser": "^1.18|^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "phpbench/phpbench": "^1.2", - "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": { - "branch-alias": { - "dev-1.x": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "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.10.0" - }, - "time": "2024-11-09T15:12:26+00:00" - }, - { - "name": "phpstan/extension-installer", - "version": "1.4.3", - "source": { - "type": "git", - "url": "https://github.com/phpstan/extension-installer.git", - "reference": "85e90b3942d06b2326fba0403ec24fe912372936" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/85e90b3942d06b2326fba0403ec24fe912372936", - "reference": "85e90b3942d06b2326fba0403ec24fe912372936", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^2.0", - "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.9.0 || ^2.0" - }, - "require-dev": { - "composer/composer": "^2.0", - "php-parallel-lint/php-parallel-lint": "^1.2.0", - "phpstan/phpstan-strict-rules": "^0.11 || ^0.12 || ^1.0" - }, - "type": "composer-plugin", - "extra": { - "class": "PHPStan\\ExtensionInstaller\\Plugin" - }, - "autoload": { - "psr-4": { - "PHPStan\\ExtensionInstaller\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Composer plugin for automatic installation of PHPStan extensions", - "keywords": [ - "dev", - "static analysis" - ], - "support": { - "issues": "https://github.com/phpstan/extension-installer/issues", - "source": "https://github.com/phpstan/extension-installer/tree/1.4.3" - }, - "time": "2024-09-04T20:21:43+00:00" - }, - { - "name": "phpstan/phpdoc-parser", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "c00d78fb6b29658347f9d37ebe104bffadf36299" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/c00d78fb6b29658347f9d37ebe104bffadf36299", - "reference": "c00d78fb6b29658347f9d37ebe104bffadf36299", - "shasum": "" - }, - "require": { - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "doctrine/annotations": "^2.0", - "nikic/php-parser": "^5.3.0", - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^2.0", - "phpstan/phpstan-phpunit": "^2.0", - "phpstan/phpstan-strict-rules": "^2.0", - "phpunit/phpunit": "^9.6", - "symfony/process": "^5.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "PHPStan\\PhpDocParser\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPDoc parser with support for nullable, intersection and generic types", - "support": { - "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/2.0.0" - }, - "time": "2024-10-13T11:29:49+00:00" - }, - { - "name": "phpstan/phpstan", - "version": "1.12.13", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "9b469068840cfa031e1deaf2fa1886d00e20680f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9b469068840cfa031e1deaf2fa1886d00e20680f", - "reference": "9b469068840cfa031e1deaf2fa1886d00e20680f", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0" - }, - "conflict": { - "phpstan/phpstan-shim": "*" - }, - "bin": [ - "phpstan", - "phpstan.phar" - ], - "type": "library", - "autoload": { - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPStan - PHP Static Analysis Tool", - "keywords": [ - "dev", - "static analysis" - ], - "support": { - "docs": "https://phpstan.org/user-guide/getting-started", - "forum": "https://github.com/phpstan/phpstan/discussions", - "issues": "https://github.com/phpstan/phpstan/issues", - "security": "https://github.com/phpstan/phpstan/security/policy", - "source": "https://github.com/phpstan/phpstan-src" - }, - "funding": [ - { - "url": "https://github.com/ondrejmirtes", - "type": "github" - }, - { - "url": "https://github.com/phpstan", - "type": "github" - } - ], - "time": "2024-12-17T17:00:20+00:00" - }, - { - "name": "phpstan/phpstan-deprecation-rules", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan-deprecation-rules.git", - "reference": "f94d246cc143ec5a23da868f8f7e1393b50eaa82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/f94d246cc143ec5a23da868f8f7e1393b50eaa82", - "reference": "f94d246cc143ec5a23da868f8f7e1393b50eaa82", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.12" - }, - "require-dev": { - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^9.5" - }, - "type": "phpstan-extension", - "extra": { - "phpstan": { - "includes": [ - "rules.neon" - ] - } - }, - "autoload": { - "psr-4": { - "PHPStan\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPStan rules for detecting usage of deprecated classes, methods, properties, constants and traits.", - "support": { - "issues": "https://github.com/phpstan/phpstan-deprecation-rules/issues", - "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/1.2.1" - }, - "time": "2024-09-11T15:52:35+00:00" - }, - { - "name": "phpstan/phpstan-phpunit", - "version": "1.4.2", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan-phpunit.git", - "reference": "72a6721c9b64b3e4c9db55abbc38f790b318267e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/72a6721c9b64b3e4c9db55abbc38f790b318267e", - "reference": "72a6721c9b64b3e4c9db55abbc38f790b318267e", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.12" - }, - "conflict": { - "phpunit/phpunit": "<7.0" - }, - "require-dev": { - "nikic/php-parser": "^4.13.0", - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/phpstan-strict-rules": "^1.5.1", - "phpunit/phpunit": "^9.5" - }, - "type": "phpstan-extension", - "extra": { - "phpstan": { - "includes": [ - "extension.neon", - "rules.neon" - ] - } - }, - "autoload": { - "psr-4": { - "PHPStan\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPUnit extensions and rules for PHPStan", - "support": { - "issues": "https://github.com/phpstan/phpstan-phpunit/issues", - "source": "https://github.com/phpstan/phpstan-phpunit/tree/1.4.2" - }, - "time": "2024-12-17T17:20:49+00:00" - }, - { - "name": "phpstan/phpstan-strict-rules", - "version": "1.6.1", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan-strict-rules.git", - "reference": "daeec748b53de80a97498462513066834ec28f8b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/daeec748b53de80a97498462513066834ec28f8b", - "reference": "daeec748b53de80a97498462513066834ec28f8b", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.12.4" - }, - "require-dev": { - "nikic/php-parser": "^4.13.0", - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/phpstan-deprecation-rules": "^1.1", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^9.5" - }, - "type": "phpstan-extension", - "extra": { - "phpstan": { - "includes": [ - "rules.neon" - ] - } - }, - "autoload": { - "psr-4": { - "PHPStan\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Extra strict and opinionated rules for PHPStan", - "support": { - "issues": "https://github.com/phpstan/phpstan-strict-rules/issues", - "source": "https://github.com/phpstan/phpstan-strict-rules/tree/1.6.1" - }, - "time": "2024-09-20T14:04:44+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "10.1.16", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "7e308268858ed6baedc8704a304727d20bc07c77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7e308268858ed6baedc8704a304727d20bc07c77", - "reference": "7e308268858ed6baedc8704a304727d20bc07c77", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.19.1 || ^5.1.0", - "php": ">=8.1", - "phpunit/php-file-iterator": "^4.1.0", - "phpunit/php-text-template": "^3.0.1", - "sebastian/code-unit-reverse-lookup": "^3.0.0", - "sebastian/complexity": "^3.2.0", - "sebastian/environment": "^6.1.0", - "sebastian/lines-of-code": "^2.0.2", - "sebastian/version": "^4.0.1", - "theseer/tokenizer": "^1.2.3" - }, - "require-dev": { - "phpunit/phpunit": "^10.1" - }, - "suggest": { - "ext-pcov": "PHP extension that provides line coverage", - "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "10.1.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" } ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", "keywords": [ - "coverage", - "testing", - "xunit" + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.16" + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-08-22T04:31:57+00:00" + "time": "2020-06-27T09:03:43+00:00" }, { - "name": "phpunit/php-file-iterator", - "version": "4.1.0", + "name": "phpdocumentor/reflection-docblock", + "version": "5.6.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "94f8051919d1b0369a6bcc7931d679a511c03fe9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", - "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94f8051919d1b0369a6bcc7931d679a511c03fe9", + "reference": "94f8051919d1b0369a6bcc7931d679a511c03fe9", "shasum": "" }, "require": { - "php": ">=8.1" + "doctrine/deprecations": "^1.1", + "ext-filter": "*", + "php": "^7.4 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.7", + "phpstan/phpdoc-parser": "^1.7|^2.0", + "webmozart/assert": "^1.9.1" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "mockery/mockery": "~1.3.5 || ~1.6.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-webmozart-assert": "^1.2", + "phpunit/phpunit": "^9.5", + "psalm/phar": "^5.26" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-master": "5.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" } ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.3" }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-08-31T06:24:48+00:00" + "time": "2025-08-01T19:43:32+00:00" }, { - "name": "phpunit/php-invoker", - "version": "4.0.0", + "name": "phpdocumentor/type-resolver", + "version": "1.10.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", - "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/679e3ce485b99e84c775d28e2e96fade9a7fb50a", + "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a", "shasum": "" }, "require": { - "php": ">=8.1" + "doctrine/deprecations": "^1.0", + "php": "^7.3 || ^8.0", + "phpdocumentor/reflection-common": "^2.0", + "phpstan/phpdoc-parser": "^1.18|^2.0" }, "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^10.0" - }, - "suggest": { - "ext-pcntl": "*" + "ext-tokenizer": "*", + "phpbench/phpbench": "^1.2", + "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": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-1.x": "1.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Mike van Riel", + "email": "me@mikevanriel.com" } ], - "description": "Invoke callables with a timeout", - "homepage": "https://github.com/sebastianbergmann/php-invoker/", - "keywords": [ - "process" - ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { - "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.10.0" }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:56:09+00:00" + "time": "2024-11-09T15:12:26+00:00" }, { - "name": "phpunit/php-text-template", - "version": "3.0.1", + "name": "phpstan/phpdoc-parser", + "version": "2.3.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", - "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/1e0cd5370df5dd2e556a36b9c62f62e555870495", + "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495", "shasum": "" }, "require": { - "php": ">=8.1" + "php": "^7.4 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^5.3.0", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^9.6", + "symfony/process": "^5.2" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "PHPStan\\PhpDocParser\\": [ + "src/" + ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" + "MIT" ], + "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.0" }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-08-31T14:07:24+00:00" + "time": "2025-08-30T15:50:23+00:00" }, { - "name": "phpunit/php-timer", - "version": "6.0.0", + "name": "phpstan/phpstan", + "version": "1.12.28", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" + "url": "https://github.com/phpstan/phpstan.git", + "reference": "fcf8b71aeab4e1a1131d1783cef97b23a51b87a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", - "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/fcf8b71aeab4e1a1131d1783cef97b23a51b87a9", + "reference": "fcf8b71aeab4e1a1131d1783cef97b23a51b87a9", "shasum": "" }, "require": { - "php": ">=8.1" + "php": "^7.2|^8.0" }, - "require-dev": { - "phpunit/phpunit": "^10.0" + "conflict": { + "phpstan/phpstan-shim": "*" }, + "bin": [ + "phpstan", + "phpstan.phar" + ], "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" + "files": [ + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } + "MIT" ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", + "description": "PHPStan - PHP Static Analysis Tool", "keywords": [ - "timer" + "dev", + "static analysis" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" + "docs": "https://phpstan.org/user-guide/getting-started", + "forum": "https://github.com/phpstan/phpstan/discussions", + "issues": "https://github.com/phpstan/phpstan/issues", + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://github.com/ondrejmirtes", + "type": "github" + }, + { + "url": "https://github.com/phpstan", "type": "github" } ], - "time": "2023-02-03T06:57:52+00:00" + "time": "2025-07-17T17:15:39+00:00" }, { - "name": "phpunit/phpunit", - "version": "10.5.36", + "name": "phpunit/php-code-coverage", + "version": "10.1.16", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "aa0a8ce701ea7ee314b0dfaa8970dc94f3f8c870" + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "7e308268858ed6baedc8704a304727d20bc07c77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/aa0a8ce701ea7ee314b0dfaa8970dc94f3f8c870", - "reference": "aa0a8ce701ea7ee314b0dfaa8970dc94f3f8c870", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7e308268858ed6baedc8704a304727d20bc07c77", + "reference": "7e308268858ed6baedc8704a304727d20bc07c77", "shasum": "" }, "require": { "ext-dom": "*", - "ext-json": "*", "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.12.0", - "phar-io/manifest": "^2.0.4", - "phar-io/version": "^3.2.1", + "nikic/php-parser": "^4.19.1 || ^5.1.0", "php": ">=8.1", - "phpunit/php-code-coverage": "^10.1.16", "phpunit/php-file-iterator": "^4.1.0", - "phpunit/php-invoker": "^4.0.0", "phpunit/php-text-template": "^3.0.1", - "phpunit/php-timer": "^6.0.0", - "sebastian/cli-parser": "^2.0.1", - "sebastian/code-unit": "^2.0.0", - "sebastian/comparator": "^5.0.2", - "sebastian/diff": "^5.1.1", + "sebastian/code-unit-reverse-lookup": "^3.0.0", + "sebastian/complexity": "^3.2.0", "sebastian/environment": "^6.1.0", - "sebastian/exporter": "^5.1.2", - "sebastian/global-state": "^6.0.2", - "sebastian/object-enumerator": "^5.0.0", - "sebastian/recursion-context": "^5.0.0", - "sebastian/type": "^4.0.0", - "sebastian/version": "^4.0.1" + "sebastian/lines-of-code": "^2.0.2", + "sebastian/version": "^4.0.1", + "theseer/tokenizer": "^1.2.3" + }, + "require-dev": { + "phpunit/phpunit": "^10.1" }, "suggest": { - "ext-soap": "To be able to generate mocks based on WSDL files" + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, - "bin": [ - "phpunit" - ], "type": "library", "extra": { "branch-alias": { - "dev-main": "10.5-dev" + "dev-main": "10.1.x-dev" } }, "autoload": { - "files": [ - "src/Framework/Assert/Functions.php" - ], "classmap": [ "src/" ] @@ -8329,546 +8314,420 @@ "role": "lead" } ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", "keywords": [ - "phpunit", + "coverage", "testing", "xunit" ], "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.36" + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.16" }, "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, { "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", - "type": "tidelift" } ], - "time": "2024-10-08T15:36:51+00:00" + "time": "2024-08-22T04:31:57+00:00" }, { - "name": "psalm/plugin-phpunit", - "version": "0.19.0", + "name": "phpunit/php-file-iterator", + "version": "4.1.0", "source": { "type": "git", - "url": "https://github.com/psalm/psalm-plugin-phpunit.git", - "reference": "e344eaaa27871e79c6cb97b9efe52a735f9d1966" + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/psalm/psalm-plugin-phpunit/zipball/e344eaaa27871e79c6cb97b9efe52a735f9d1966", - "reference": "e344eaaa27871e79c6cb97b9efe52a735f9d1966", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", "shasum": "" }, "require": { - "composer/package-versions-deprecated": "^1.10", - "composer/semver": "^1.4 || ^2.0 || ^3.0", - "ext-simplexml": "*", - "php": "^7.4 || ^8.0", - "vimeo/psalm": "dev-master || ^5@beta || ^5.0" - }, - "conflict": { - "phpunit/phpunit": "<7.5" + "php": ">=8.1" }, "require-dev": { - "codeception/codeception": "^4.0.3", - "php": "^7.3 || ^8.0", - "phpunit/phpunit": "^7.5 || ^8.0 || ^9.0", - "squizlabs/php_codesniffer": "^3.3.1", - "weirdan/codeception-psalm-module": "^0.11.0", - "weirdan/prophecy-shim": "^1.0 || ^2.0" - }, - "type": "psalm-plugin", - "extra": { - "psalm": { - "pluginClass": "Psalm\\PhpUnitPlugin\\Plugin" - } - }, - "autoload": { - "psr-4": { - "Psalm\\PhpUnitPlugin\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Matt Brown", - "email": "github@muglug.com" - } - ], - "description": "Psalm plugin for PHPUnit", - "support": { - "issues": "https://github.com/psalm/psalm-plugin-phpunit/issues", - "source": "https://github.com/psalm/psalm-plugin-phpunit/tree/0.19.0" - }, - "time": "2024-03-15T10:43:15+00:00" - }, - { - "name": "psr/clock", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/clock.git", - "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", - "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" + "phpunit/phpunit": "^10.0" }, "type": "library", - "autoload": { - "psr-4": { - "Psr\\Clock\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" } - ], - "description": "Common interface for reading the clock.", - "homepage": "https://github.com/php-fig/clock", - "keywords": [ - "clock", - "now", - "psr", - "psr-20", - "time" - ], - "support": { - "issues": "https://github.com/php-fig/clock/issues", - "source": "https://github.com/php-fig/clock/tree/1.0.0" - }, - "time": "2022-11-25T14:36:26+00:00" - }, - { - "name": "react/cache", - "version": "v1.2.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/cache.git", - "reference": "d47c472b64aa5608225f47965a484b75c7817d5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/cache/zipball/d47c472b64aa5608225f47965a484b75c7817d5b", - "reference": "d47c472b64aa5608225f47965a484b75c7817d5b", - "shasum": "" - }, - "require": { - "php": ">=5.3.0", - "react/promise": "^3.0 || ^2.0 || ^1.1" - }, - "require-dev": { - "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35" }, - "type": "library", "autoload": { - "psr-4": { - "React\\Cache\\": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Christian Lรผck", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Async, Promise-based cache interface for ReactPHP", + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", "keywords": [ - "cache", - "caching", - "promise", - "reactphp" + "filesystem", + "iterator" ], "support": { - "issues": "https://github.com/reactphp/cache/issues", - "source": "https://github.com/reactphp/cache/tree/v1.2.0" + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" }, "funding": [ { - "url": "https://opencollective.com/reactphp", - "type": "open_collective" + "url": "https://github.com/sebastianbergmann", + "type": "github" } ], - "time": "2022-11-30T15:59:55+00:00" + "time": "2023-08-31T06:24:48+00:00" }, { - "name": "react/child-process", - "version": "v0.6.5", + "name": "phpunit/php-invoker", + "version": "4.0.0", "source": { "type": "git", - "url": "https://github.com/reactphp/child-process.git", - "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43" + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/child-process/zipball/e71eb1aa55f057c7a4a0d08d06b0b0a484bead43", - "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", "shasum": "" }, "require": { - "evenement/evenement": "^3.0 || ^2.0 || ^1.0", - "php": ">=5.3.0", - "react/event-loop": "^1.2", - "react/stream": "^1.2" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35", - "react/socket": "^1.8", - "sebastian/environment": "^5.0 || ^3.0 || ^2.0 || ^1.0" + "ext-pcntl": "*", + "phpunit/phpunit": "^10.0" + }, + "suggest": { + "ext-pcntl": "*" }, "type": "library", - "autoload": { - "psr-4": { - "React\\ChildProcess\\": "src" + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" } }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lรผck", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Event-driven library for executing child processes with ReactPHP.", + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", "keywords": [ - "event-driven", - "process", - "reactphp" + "process" ], "support": { - "issues": "https://github.com/reactphp/child-process/issues", - "source": "https://github.com/reactphp/child-process/tree/v0.6.5" + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" }, "funding": [ { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", + "url": "https://github.com/sebastianbergmann", "type": "github" } ], - "time": "2022-09-16T13:41:56+00:00" + "time": "2023-02-03T06:56:09+00:00" }, { - "name": "react/dns", - "version": "v1.13.0", + "name": "phpunit/php-text-template", + "version": "3.0.1", "source": { "type": "git", - "url": "https://github.com/reactphp/dns.git", - "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5" + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/dns/zipball/eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", - "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", "shasum": "" }, "require": { - "php": ">=5.3.0", - "react/cache": "^1.0 || ^0.6 || ^0.5", - "react/event-loop": "^1.2", - "react/promise": "^3.2 || ^2.7 || ^1.2.1" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", - "react/async": "^4.3 || ^3 || ^2", - "react/promise-timer": "^1.11" + "phpunit/phpunit": "^10.0" }, "type": "library", - "autoload": { - "psr-4": { - "React\\Dns\\": "src/" + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Christian Lรผck", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Async DNS resolver for ReactPHP", + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", "keywords": [ - "async", - "dns", - "dns-resolver", - "reactphp" + "template" ], "support": { - "issues": "https://github.com/reactphp/dns/issues", - "source": "https://github.com/reactphp/dns/tree/v1.13.0" + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" }, "funding": [ { - "url": "https://opencollective.com/reactphp", - "type": "open_collective" + "url": "https://github.com/sebastianbergmann", + "type": "github" } ], - "time": "2024-06-13T14:18:03+00:00" + "time": "2023-08-31T14:07:24+00:00" }, { - "name": "react/event-loop", - "version": "v1.5.0", + "name": "phpunit/php-timer", + "version": "6.0.0", "source": { "type": "git", - "url": "https://github.com/reactphp/event-loop.git", - "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354" + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/event-loop/zipball/bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", - "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" - }, - "suggest": { - "ext-pcntl": "For signal handling support when using the StreamSelectLoop" + "phpunit/phpunit": "^10.0" }, "type": "library", - "autoload": { - "psr-4": { - "React\\EventLoop\\": "src/" + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Christian Lรผck", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", "keywords": [ - "asynchronous", - "event-loop" + "timer" ], "support": { - "issues": "https://github.com/reactphp/event-loop/issues", - "source": "https://github.com/reactphp/event-loop/tree/v1.5.0" + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" }, "funding": [ { - "url": "https://opencollective.com/reactphp", - "type": "open_collective" + "url": "https://github.com/sebastianbergmann", + "type": "github" } ], - "time": "2023-11-13T13:48:05+00:00" + "time": "2023-02-03T06:57:52+00:00" }, { - "name": "react/promise", - "version": "v3.2.0", + "name": "phpunit/phpunit", + "version": "10.5.53", "source": { "type": "git", - "url": "https://github.com/reactphp/promise.git", - "reference": "8a164643313c71354582dc850b42b33fa12a4b63" + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "32768472ebfb6969e6c7399f1c7b09009723f653" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/8a164643313c71354582dc850b42b33fa12a4b63", - "reference": "8a164643313c71354582dc850b42b33fa12a4b63", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/32768472ebfb6969e6c7399f1c7b09009723f653", + "reference": "32768472ebfb6969e6c7399f1c7b09009723f653", "shasum": "" }, "require": { - "php": ">=7.1.0" + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.13.4", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", + "php": ">=8.1", + "phpunit/php-code-coverage": "^10.1.16", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-invoker": "^4.0.0", + "phpunit/php-text-template": "^3.0.1", + "phpunit/php-timer": "^6.0.0", + "sebastian/cli-parser": "^2.0.1", + "sebastian/code-unit": "^2.0.0", + "sebastian/comparator": "^5.0.3", + "sebastian/diff": "^5.1.1", + "sebastian/environment": "^6.1.0", + "sebastian/exporter": "^5.1.2", + "sebastian/global-state": "^6.0.2", + "sebastian/object-enumerator": "^5.0.0", + "sebastian/recursion-context": "^5.0.1", + "sebastian/type": "^4.0.0", + "sebastian/version": "^4.0.1" }, - "require-dev": { - "phpstan/phpstan": "1.10.39 || 1.4.10", - "phpunit/phpunit": "^9.6 || ^7.5" + "suggest": { + "ext-soap": "To be able to generate mocks based on WSDL files" }, + "bin": [ + "phpunit" + ], "type": "library", + "extra": { + "branch-alias": { + "dev-main": "10.5-dev" + } + }, "autoload": { "files": [ - "src/functions_include.php" + "src/Framework/Assert/Functions.php" ], - "psr-4": { - "React\\Promise\\": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Christian Lรผck", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "A lightweight implementation of CommonJS Promises/A for PHP", + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", "keywords": [ - "promise", - "promises" + "phpunit", + "testing", + "xunit" ], "support": { - "issues": "https://github.com/reactphp/promise/issues", - "source": "https://github.com/reactphp/promise/tree/v3.2.0" + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.53" }, "funding": [ { - "url": "https://opencollective.com/reactphp", - "type": "open_collective" + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" } ], - "time": "2024-05-24T10:39:05+00:00" + "time": "2025-08-20T14:40:06+00:00" }, { - "name": "react/socket", - "version": "v1.16.0", + "name": "psalm/plugin-phpunit", + "version": "0.19.3", "source": { "type": "git", - "url": "https://github.com/reactphp/socket.git", - "reference": "23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1" + "url": "https://github.com/psalm/psalm-plugin-phpunit.git", + "reference": "07dbf9fec23a694f2c095d8e2d44ccd6992afe38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/socket/zipball/23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1", - "reference": "23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1", + "url": "https://api.github.com/repos/psalm/psalm-plugin-phpunit/zipball/07dbf9fec23a694f2c095d8e2d44ccd6992afe38", + "reference": "07dbf9fec23a694f2c095d8e2d44ccd6992afe38", "shasum": "" }, "require": { - "evenement/evenement": "^3.0 || ^2.0 || ^1.0", - "php": ">=5.3.0", - "react/dns": "^1.13", - "react/event-loop": "^1.2", - "react/promise": "^3.2 || ^2.6 || ^1.2.1", - "react/stream": "^1.4" + "composer/package-versions-deprecated": "^1.10", + "composer/semver": "^1.4 || ^2.0 || ^3.0", + "ext-simplexml": "*", + "php": ">=8.1", + "vimeo/psalm": "dev-master || ^6 || ^7" + }, + "conflict": { + "phpunit/phpunit": "<7.5" }, "require-dev": { - "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", - "react/async": "^4.3 || ^3.3 || ^2", - "react/promise-stream": "^1.4", - "react/promise-timer": "^1.11" + "behat/gherkin": "~4.11.0", + "codeception/codeception": "^4.0.3", + "php": "^7.3 || ^8.0", + "phpunit/phpunit": "^7.5 || ^8.0 || ^9.0", + "squizlabs/php_codesniffer": "^3.3.1", + "weirdan/codeception-psalm-module": "^0.11.0", + "weirdan/prophecy-shim": "^1.0 || ^2.0" + }, + "type": "psalm-plugin", + "extra": { + "psalm": { + "pluginClass": "Psalm\\PhpUnitPlugin\\Plugin" + } }, - "type": "library", "autoload": { "psr-4": { - "React\\Socket\\": "src/" + "Psalm\\PhpUnitPlugin\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -8877,73 +8736,38 @@ ], "authors": [ { - "name": "Christian Lรผck", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" + "name": "Matt Brown", + "email": "github@muglug.com" } ], - "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP", - "keywords": [ - "Connection", - "Socket", - "async", - "reactphp", - "stream" - ], + "description": "Psalm plugin for PHPUnit", "support": { - "issues": "https://github.com/reactphp/socket/issues", - "source": "https://github.com/reactphp/socket/tree/v1.16.0" + "issues": "https://github.com/psalm/psalm-plugin-phpunit/issues", + "source": "https://github.com/psalm/psalm-plugin-phpunit/tree/0.19.3" }, - "funding": [ - { - "url": "https://opencollective.com/reactphp", - "type": "open_collective" - } - ], - "time": "2024-07-26T10:38:09+00:00" + "time": "2025-03-20T11:21:58+00:00" }, { - "name": "react/stream", - "version": "v1.4.0", + "name": "psr/clock", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/reactphp/stream.git", - "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d" + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/stream/zipball/1e5b0acb8fe55143b5b426817155190eb6f5b18d", - "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", "shasum": "" }, "require": { - "evenement/evenement": "^3.0 || ^2.0 || ^1.0", - "php": ">=5.3.8", - "react/event-loop": "^1.2" - }, - "require-dev": { - "clue/stream-filter": "~1.2", - "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + "php": "^7.0 || ^8.0" }, "type": "library", "autoload": { "psr-4": { - "React\\Stream\\": "src/" + "Psr\\Clock\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -8952,48 +8776,24 @@ ], "authors": [ { - "name": "Christian Lรผck", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP", + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", "keywords": [ - "event-driven", - "io", - "non-blocking", - "pipe", - "reactphp", - "readable", - "stream", - "writable" + "clock", + "now", + "psr", + "psr-20", + "time" ], "support": { - "issues": "https://github.com/reactphp/stream/issues", - "source": "https://github.com/reactphp/stream/tree/v1.4.0" + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" }, - "funding": [ - { - "url": "https://opencollective.com/reactphp", - "type": "open_collective" - } - ], - "time": "2024-06-11T12:45:25+00:00" + "time": "2022-11-25T14:36:26+00:00" }, { "name": "rector/rector", @@ -9055,37 +8855,37 @@ "time": "2024-11-08T13:59:10+00:00" }, { - "name": "roave/infection-static-analysis-plugin", - "version": "1.35.0", + "name": "revolt/event-loop", + "version": "v1.0.7", "source": { "type": "git", - "url": "https://github.com/Roave/infection-static-analysis-plugin.git", - "reference": "3cb32845c5f758913a4b9eafd91ae18eafc26d82" + "url": "https://github.com/revoltphp/event-loop.git", + "reference": "09bf1bf7f7f574453efe43044b06fafe12216eb3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/infection-static-analysis-plugin/zipball/3cb32845c5f758913a4b9eafd91ae18eafc26d82", - "reference": "3cb32845c5f758913a4b9eafd91ae18eafc26d82", + "url": "https://api.github.com/repos/revoltphp/event-loop/zipball/09bf1bf7f7f574453efe43044b06fafe12216eb3", + "reference": "09bf1bf7f7f574453efe43044b06fafe12216eb3", "shasum": "" }, "require": { - "composer-runtime-api": "^2.2", - "infection/infection": "0.27.10", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0", - "sanmai/later": "^0.1.4", - "vimeo/psalm": "^4.30.0 || ^5.15" + "php": ">=8.1" }, "require-dev": { - "doctrine/coding-standard": "^12.0.0", - "phpunit/phpunit": "^10.5.12" + "ext-json": "*", + "jetbrains/phpstorm-stubs": "^2019.3", + "phpunit/phpunit": "^9", + "psalm/phar": "^5.15" }, - "bin": [ - "bin/roave-infection-static-analysis-plugin" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.x-dev" + } + }, "autoload": { "psr-4": { - "Roave\\InfectionStaticAnalysis\\": "src/Roave/InfectionStaticAnalysis" + "Revolt\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -9094,882 +8894,50 @@ ], "authors": [ { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "Static analysis on top of mutation testing - prevents escaped mutants from being invalid according to static analysis", - "support": { - "issues": "https://github.com/Roave/infection-static-analysis-plugin/issues", - "source": "https://github.com/Roave/infection-static-analysis-plugin/tree/1.35.0" - }, - "time": "2024-03-10T11:55:48+00:00" - }, - { - "name": "roave/security-advisories", - "version": "dev-latest", - "source": { - "type": "git", - "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "abbccc97f36a9c78f033525c019d310433f22b57" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/abbccc97f36a9c78f033525c019d310433f22b57", - "reference": "abbccc97f36a9c78f033525c019d310433f22b57", - "shasum": "" - }, - "conflict": { - "3f/pygmentize": "<1.2", - "admidio/admidio": "<4.3.12", - "adodb/adodb-php": "<=5.20.20|>=5.21,<=5.21.3", - "aheinze/cockpit": "<2.2", - "aimeos/ai-admin-graphql": ">=2022.04.1,<2022.10.10|>=2023.04.1,<2023.10.6|>=2024.04.1,<2024.07.2", - "aimeos/ai-admin-jsonadm": "<2020.10.13|>=2021.04.1,<2021.10.6|>=2022.04.1,<2022.10.3|>=2023.04.1,<2023.10.4|==2024.04.1", - "aimeos/ai-client-html": ">=2020.04.1,<2020.10.27|>=2021.04.1,<2021.10.22|>=2022.04.1,<2022.10.13|>=2023.04.1,<2023.10.15|>=2024.04.1,<2024.04.7", - "aimeos/ai-controller-frontend": "<2020.10.15|>=2021.04.1,<2021.10.8|>=2022.04.1,<2022.10.8|>=2023.04.1,<2023.10.9|==2024.04.1", - "aimeos/aimeos-core": ">=2022.04.1,<2022.10.17|>=2023.04.1,<2023.10.17|>=2024.04.1,<2024.04.7", - "aimeos/aimeos-typo3": "<19.10.12|>=20,<20.10.5", - "airesvsg/acf-to-rest-api": "<=3.1", - "akaunting/akaunting": "<2.1.13", - "akeneo/pim-community-dev": "<5.0.119|>=6,<6.0.53", - "alextselegidis/easyappointments": "<1.5", - "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1", - "amazing/media2click": ">=1,<1.3.3", - "ameos/ameos_tarteaucitron": "<1.2.23", - "amphp/artax": "<1.0.6|>=2,<2.0.6", - "amphp/http": "<=1.7.2|>=2,<=2.1", - "amphp/http-client": ">=4,<4.4", - "anchorcms/anchor-cms": "<=0.12.7", - "andreapollastri/cipi": "<=3.1.15", - "andrewhaine/silverstripe-form-capture": ">=0.2,<=0.2.3|>=1,<1.0.2|>=2,<2.2.5", - "apache-solr-for-typo3/solr": "<2.8.3", - "apereo/phpcas": "<1.6", - "api-platform/core": ">=2.2,<2.2.10|>=2.3,<2.3.6|>=2.6,<2.7.10|>=3,<3.0.12|>=3.1,<3.1.3", - "appwrite/server-ce": "<=1.2.1", - "arc/web": "<3", - "area17/twill": "<1.2.5|>=2,<2.5.3", - "artesaos/seotools": "<0.17.2", - "asymmetricrypt/asymmetricrypt": "<9.9.99", - "athlon1600/php-proxy": "<=5.1", - "athlon1600/php-proxy-app": "<=3", - "austintoddj/canvas": "<=3.4.2", - "auth0/wordpress": "<=4.6", - "automad/automad": "<2.0.0.0-alpha5", - "automattic/jetpack": "<9.8", - "awesome-support/awesome-support": "<=6.0.7", - "aws/aws-sdk-php": "<3.288.1", - "azuracast/azuracast": "<0.18.3", - "backdrop/backdrop": "<1.27.3|>=1.28,<1.28.2", - "backpack/crud": "<3.4.9", - "backpack/filemanager": "<2.0.2|>=3,<3.0.9", - "bacula-web/bacula-web": "<8.0.0.0-RC2-dev", - "badaso/core": "<2.7", - "bagisto/bagisto": "<2.1", - "barrelstrength/sprout-base-email": "<1.2.7", - "barrelstrength/sprout-forms": "<3.9", - "barryvdh/laravel-translation-manager": "<0.6.2", - "barzahlen/barzahlen-php": "<2.0.1", - "baserproject/basercms": "<=5.1.1", - "bassjobsen/bootstrap-3-typeahead": ">4.0.2", - "bbpress/bbpress": "<2.6.5", - "bcosca/fatfree": "<3.7.2", - "bedita/bedita": "<4", - "bigfork/silverstripe-form-capture": ">=3,<3.1.1", - "billz/raspap-webgui": "<=3.1.4", - "bk2k/bootstrap-package": ">=7.1,<7.1.2|>=8,<8.0.8|>=9,<9.0.4|>=9.1,<9.1.3|>=10,<10.0.10|>=11,<11.0.3", - "blueimp/jquery-file-upload": "==6.4.4", - "bmarshall511/wordpress_zero_spam": "<5.2.13", - "bolt/bolt": "<3.7.2", - "bolt/core": "<=4.2", - "born05/craft-twofactorauthentication": "<3.3.4", - "bottelet/flarepoint": "<2.2.1", - "bref/bref": "<2.1.17", - "brightlocal/phpwhois": "<=4.2.5", - "brotkrueml/codehighlight": "<2.7", - "brotkrueml/schema": "<1.13.1|>=2,<2.5.1", - "brotkrueml/typo3-matomo-integration": "<1.3.2", - "buddypress/buddypress": "<7.2.1", - "bugsnag/bugsnag-laravel": ">=2,<2.0.2", - "bytefury/crater": "<6.0.2", - "cachethq/cachet": "<2.5.1", - "cakephp/cakephp": "<3.10.3|>=4,<4.0.10|>=4.1,<4.1.4|>=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10", - "cakephp/database": ">=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10", - "cardgate/magento2": "<2.0.33", - "cardgate/woocommerce": "<=3.1.15", - "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4", - "cart2quote/module-quotation-encoded": ">=4.1.6,<=4.4.5|>=5,<5.4.4", - "cartalyst/sentry": "<=2.1.6", - "catfan/medoo": "<1.7.5", - "causal/oidc": "<2.1", - "cecil/cecil": "<7.47.1", - "centreon/centreon": "<22.10.15", - "cesnet/simplesamlphp-module-proxystatistics": "<3.1", - "chriskacerguis/codeigniter-restserver": "<=2.7.1", - "civicrm/civicrm-core": ">=4.2,<4.2.9|>=4.3,<4.3.3", - "ckeditor/ckeditor": "<4.24", - "cockpit-hq/cockpit": "<2.7|==2.7", - "codeception/codeception": "<3.1.3|>=4,<4.1.22", - "codeigniter/framework": "<3.1.9", - "codeigniter4/framework": "<4.4.7", - "codeigniter4/shield": "<1.0.0.0-beta8", - "codiad/codiad": "<=2.8.4", - "composer/composer": "<1.10.27|>=2,<2.2.24|>=2.3,<2.7.7", - "concrete5/concrete5": "<9.3.4", - "concrete5/core": "<8.5.8|>=9,<9.1", - "contao-components/mediaelement": ">=2.14.2,<2.21.1", - "contao/comments-bundle": ">=2,<4.13.40|>=5.0.0.0-RC1-dev,<5.3.4", - "contao/contao": "<=5.4.1", - "contao/core": "<3.5.39", - "contao/core-bundle": "<4.13.49|>=5,<5.3.15|>=5.4,<5.4.3", - "contao/listing-bundle": ">=3,<=3.5.30|>=4,<4.4.8", - "contao/managed-edition": "<=1.5", - "corveda/phpsandbox": "<1.3.5", - "cosenary/instagram": "<=2.3", - "craftcms/cms": "<4.13.2|>=5,<5.5.2", - "croogo/croogo": "<4", - "cuyz/valinor": "<0.12", - "czim/file-handling": "<1.5|>=2,<2.3", - "czproject/git-php": "<4.0.3", - "damienharper/auditor-bundle": "<5.2.6", - "dapphp/securimage": "<3.6.6", - "darylldoyle/safe-svg": "<1.9.10", - "datadog/dd-trace": ">=0.30,<0.30.2", - "datatables/datatables": "<1.10.10", - "david-garcia/phpwhois": "<=4.3.1", - "dbrisinajumi/d2files": "<1", - "dcat/laravel-admin": "<=2.1.3", - "derhansen/fe_change_pwd": "<2.0.5|>=3,<3.0.3", - "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1|>=7,<7.4", - "desperado/xml-bundle": "<=0.1.7", - "dev-lancer/minecraft-motd-parser": "<=1.0.5", - "devgroup/dotplant": "<2020.09.14-dev", - "directmailteam/direct-mail": "<6.0.3|>=7,<7.0.3|>=8,<9.5.2", - "doctrine/annotations": "<1.2.7", - "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2", - "doctrine/common": "<2.4.3|>=2.5,<2.5.1", - "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2|>=3,<3.1.4", - "doctrine/doctrine-bundle": "<1.5.2", - "doctrine/doctrine-module": "<0.7.2", - "doctrine/mongodb-odm": "<1.0.2", - "doctrine/mongodb-odm-bundle": "<3.0.1", - "doctrine/orm": ">=1,<1.2.4|>=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4", - "dolibarr/dolibarr": "<19.0.2", - "dompdf/dompdf": "<2.0.4", - "doublethreedigital/guest-entries": "<3.1.2", - "drupal/core": ">=6,<6.38|>=7,<7.102|>=8,<10.2.11|>=10.3,<10.3.9|>=11,<11.0.8", - "drupal/core-recommended": ">=7,<7.102|>=8,<10.2.11|>=10.3,<10.3.9|>=11,<11.0.8", - "drupal/drupal": ">=5,<5.11|>=6,<6.38|>=7,<7.102|>=8,<10.2.11|>=10.3,<10.3.9|>=11,<11.0.8", - "duncanmcclean/guest-entries": "<3.1.2", - "dweeves/magmi": "<=0.7.24", - "ec-cube/ec-cube": "<2.4.4|>=2.11,<=2.17.1|>=3,<=3.0.18.0-patch4|>=4,<=4.1.2", - "ecodev/newsletter": "<=4", - "ectouch/ectouch": "<=2.7.2", - "egroupware/egroupware": "<23.1.20240624", - "elefant/cms": "<2.0.7", - "elgg/elgg": "<3.3.24|>=4,<4.0.5", - "elijaa/phpmemcacheadmin": "<=1.3", - "encore/laravel-admin": "<=1.8.19", - "endroid/qr-code-bundle": "<3.4.2", - "enhavo/enhavo-app": "<=0.13.1", - "enshrined/svg-sanitize": "<0.15", - "erusev/parsedown": "<1.7.2", - "ether/logs": "<3.0.4", - "evolutioncms/evolution": "<=3.2.3", - "exceedone/exment": "<4.4.3|>=5,<5.0.3", - "exceedone/laravel-admin": "<2.2.3|==3", - "ezsystems/demobundle": ">=5.4,<5.4.6.1-dev", - "ezsystems/ez-support-tools": ">=2.2,<2.2.3", - "ezsystems/ezdemo-ls-extension": ">=5.4,<5.4.2.1-dev", - "ezsystems/ezfind-ls": ">=5.3,<5.3.6.1-dev|>=5.4,<5.4.11.1-dev|>=2017.12,<2017.12.0.1-dev", - "ezsystems/ezplatform": "<=1.13.6|>=2,<=2.5.24", - "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6|>=1.5,<1.5.29|>=2.3,<2.3.26|>=3.3,<3.3.39", - "ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1", - "ezsystems/ezplatform-graphql": ">=1.0.0.0-RC1-dev,<1.0.13|>=2.0.0.0-beta1,<2.3.12", - "ezsystems/ezplatform-http-cache": "<2.3.16", - "ezsystems/ezplatform-kernel": "<1.2.5.1-dev|>=1.3,<1.3.35", - "ezsystems/ezplatform-rest": ">=1.2,<=1.2.2|>=1.3,<1.3.8", - "ezsystems/ezplatform-richtext": ">=2.3,<2.3.7.1-dev|>=3.3,<3.3.40", - "ezsystems/ezplatform-solr-search-engine": ">=1.7,<1.7.12|>=2,<2.0.2|>=3.3,<3.3.15", - "ezsystems/ezplatform-user": ">=1,<1.0.1", - "ezsystems/ezpublish-kernel": "<6.13.8.2-dev|>=7,<7.5.31", - "ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.6,<=2019.03.5.1", - "ezsystems/platform-ui-assets-bundle": ">=4.2,<4.2.3", - "ezsystems/repository-forms": ">=2.3,<2.3.2.1-dev|>=2.5,<2.5.15", - "ezyang/htmlpurifier": "<=4.2", - "facade/ignition": "<1.16.15|>=2,<2.4.2|>=2.5,<2.5.2", - "facturascripts/facturascripts": "<=2022.08", - "fastly/magento2": "<1.2.26", - "feehi/cms": "<=2.1.1", - "feehi/feehicms": "<=2.1.1", - "fenom/fenom": "<=2.12.1", - "filament/actions": ">=3.2,<3.2.123", - "filament/infolists": ">=3,<3.2.115", - "filament/tables": ">=3,<3.2.115", - "filegator/filegator": "<7.8", - "filp/whoops": "<2.1.13", - "fineuploader/php-traditional-server": "<=1.2.2", - "firebase/php-jwt": "<6", - "fisharebest/webtrees": "<=2.1.18", - "fixpunkt/fp-masterquiz": "<2.2.1|>=3,<3.5.2", - "fixpunkt/fp-newsletter": "<1.1.1|>=2,<2.1.2|>=2.2,<3.2.6", - "flarum/core": "<1.8.5", - "flarum/flarum": "<0.1.0.0-beta8", - "flarum/framework": "<1.8.5", - "flarum/mentions": "<1.6.3", - "flarum/sticky": ">=0.1.0.0-beta14,<=0.1.0.0-beta15", - "flarum/tags": "<=0.1.0.0-beta13", - "floriangaerber/magnesium": "<0.3.1", - "fluidtypo3/vhs": "<5.1.1", - "fof/byobu": ">=0.3.0.0-beta2,<1.1.7", - "fof/upload": "<1.2.3", - "foodcoopshop/foodcoopshop": ">=3.2,<3.6.1", - "fooman/tcpdf": "<6.2.22", - "forkcms/forkcms": "<5.11.1", - "fossar/tcpdf-parser": "<6.2.22", - "francoisjacquet/rosariosis": "<=11.5.1", - "frappant/frp-form-answers": "<3.1.2|>=4,<4.0.2", - "friendsofsymfony/oauth2-php": "<1.3", - "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2", - "friendsofsymfony/user-bundle": ">=1,<1.3.5", - "friendsofsymfony1/swiftmailer": ">=4,<5.4.13|>=6,<6.2.5", - "friendsofsymfony1/symfony1": ">=1.1,<1.5.19", - "friendsoftypo3/mediace": ">=7.6.2,<7.6.5", - "friendsoftypo3/openid": ">=4.5,<4.5.31|>=4.7,<4.7.16|>=6,<6.0.11|>=6.1,<6.1.6", - "froala/wysiwyg-editor": "<3.2.7|>=4.0.1,<=4.1.3", - "froxlor/froxlor": "<=2.2.0.0-RC3", - "frozennode/administrator": "<=5.0.12", - "fuel/core": "<1.8.1", - "funadmin/funadmin": "<=5.0.2", - "gaoming13/wechat-php-sdk": "<=1.10.2", - "genix/cms": "<=1.1.11", - "getformwork/formwork": "<1.13.1|==2.0.0.0-beta1", - "getgrav/grav": "<1.7.46", - "getkirby/cms": "<=3.6.6.5|>=3.7,<=3.7.5.4|>=3.8,<=3.8.4.3|>=3.9,<=3.9.8.1|>=3.10,<=3.10.1|>=4,<=4.3", - "getkirby/kirby": "<=2.5.12", - "getkirby/panel": "<2.5.14", - "getkirby/starterkit": "<=3.7.0.2", - "gilacms/gila": "<=1.15.4", - "gleez/cms": "<=1.3|==2", - "globalpayments/php-sdk": "<2", - "gogentooss/samlbase": "<1.2.7", - "google/protobuf": "<3.15", - "gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3", - "gree/jose": "<2.2.1", - "gregwar/rst": "<1.0.3", - "grumpydictator/firefly-iii": "<6.1.17", - "gugoan/economizzer": "<=0.9.0.0-beta1", - "guzzlehttp/guzzle": "<6.5.8|>=7,<7.4.5", - "guzzlehttp/psr7": "<1.9.1|>=2,<2.4.5", - "haffner/jh_captcha": "<=2.1.3|>=3,<=3.0.2", - "harvesthq/chosen": "<1.8.7", - "helloxz/imgurl": "<=2.31", - "hhxsv5/laravel-s": "<3.7.36", - "hillelcoren/invoice-ninja": "<5.3.35", - "himiklab/yii2-jqgrid-widget": "<1.0.8", - "hjue/justwriting": "<=1", - "hov/jobfair": "<1.0.13|>=2,<2.0.2", - "httpsoft/http-message": "<1.0.12", - "hyn/multi-tenant": ">=5.6,<5.7.2", - "ibexa/admin-ui": ">=4.2,<4.2.3|>=4.6,<4.6.14", - "ibexa/core": ">=4,<4.0.7|>=4.1,<4.1.4|>=4.2,<4.2.3|>=4.5,<4.5.6|>=4.6,<4.6.2", - "ibexa/fieldtype-richtext": ">=4.6,<4.6.10", - "ibexa/graphql": ">=2.5,<2.5.31|>=3.3,<3.3.28|>=4.2,<4.2.3", - "ibexa/http-cache": ">=4.6,<4.6.14", - "ibexa/post-install": "<1.0.16|>=4.6,<4.6.14", - "ibexa/solr": ">=4.5,<4.5.4", - "ibexa/user": ">=4,<4.4.3", - "icecoder/icecoder": "<=8.1", - "idno/known": "<=1.3.1", - "ilicmiljan/secure-props": ">=1.2,<1.2.2", - "illuminate/auth": "<5.5.10", - "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<6.18.31|>=7,<7.22.4", - "illuminate/database": "<6.20.26|>=7,<7.30.5|>=8,<8.40", - "illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15", - "illuminate/view": "<6.20.42|>=7,<7.30.6|>=8,<8.75", - "imdbphp/imdbphp": "<=5.1.1", - "impresscms/impresscms": "<=1.4.5", - "impresspages/impresspages": "<=1.0.12", - "in2code/femanager": "<5.5.3|>=6,<6.3.4|>=7,<7.2.3", - "in2code/ipandlanguageredirect": "<5.1.2", - "in2code/lux": "<17.6.1|>=18,<24.0.2", - "in2code/powermail": "<7.5.1|>=8,<8.5.1|>=9,<10.9.1|>=11,<12.4.1", - "innologi/typo3-appointments": "<2.0.6", - "intelliants/subrion": "<4.2.2", - "inter-mediator/inter-mediator": "==5.5", - "ipl/web": "<0.10.1", - "islandora/islandora": ">=2,<2.4.1", - "ivankristianto/phpwhois": "<=4.3", - "jackalope/jackalope-doctrine-dbal": "<1.7.4", - "james-heinrich/getid3": "<1.9.21", - "james-heinrich/phpthumb": "<1.7.12", - "jasig/phpcas": "<1.3.3", - "jcbrand/converse.js": "<3.3.3", - "joelbutcher/socialstream": "<6.2", - "johnbillion/wp-crontrol": "<1.16.2", - "joomla/application": "<1.0.13", - "joomla/archive": "<1.1.12|>=2,<2.0.1", - "joomla/filesystem": "<1.6.2|>=2,<2.0.1", - "joomla/filter": "<1.4.4|>=2,<2.0.1", - "joomla/framework": "<1.5.7|>=2.5.4,<=3.8.12", - "joomla/input": ">=2,<2.0.2", - "joomla/joomla-cms": ">=2.5,<3.9.12", - "joomla/session": "<1.3.1", - "joyqi/hyper-down": "<=2.4.27", - "jsdecena/laracom": "<2.0.9", - "jsmitty12/phpwhois": "<5.1", - "juzaweb/cms": "<=3.4", - "jweiland/events2": "<8.3.8|>=9,<9.0.6", - "kazist/phpwhois": "<=4.2.6", - "kelvinmo/simplexrd": "<3.1.1", - "kevinpapst/kimai2": "<1.16.7", - "khodakhah/nodcms": "<=3", - "kimai/kimai": "<=2.20.1", - "kitodo/presentation": "<3.2.3|>=3.3,<3.3.4", - "klaviyo/magento2-extension": ">=1,<3", - "knplabs/knp-snappy": "<=1.4.2", - "kohana/core": "<3.3.3", - "krayin/laravel-crm": "<=1.3", - "kreait/firebase-php": ">=3.2,<3.8.1", - "kumbiaphp/kumbiapp": "<=1.1.1", - "la-haute-societe/tcpdf": "<6.2.22", - "laminas/laminas-diactoros": "<2.18.1|==2.19|==2.20|==2.21|==2.22|==2.23|>=2.24,<2.24.2|>=2.25,<2.25.2", - "laminas/laminas-form": "<2.17.1|>=3,<3.0.2|>=3.1,<3.1.1", - "laminas/laminas-http": "<2.14.2", - "lara-zeus/artemis": ">=1,<=1.0.6", - "lara-zeus/dynamic-dashboard": ">=3,<=3.0.1", - "laravel/fortify": "<1.11.1", - "laravel/framework": "<6.20.45|>=7,<7.30.7|>=8,<8.83.28|>=9,<9.52.17|>=10,<10.48.23|>=11,<11.31", - "laravel/laravel": ">=5.4,<5.4.22", - "laravel/pulse": "<1.3.1", - "laravel/reverb": "<1.4", - "laravel/socialite": ">=1,<2.0.10", - "latte/latte": "<2.10.8", - "lavalite/cms": "<=9|==10.1", - "lcobucci/jwt": ">=3.4,<3.4.6|>=4,<4.0.4|>=4.1,<4.1.5", - "league/commonmark": "<2.6", - "league/flysystem": "<1.1.4|>=2,<2.1.1", - "league/oauth2-server": ">=8.3.2,<8.4.2|>=8.5,<8.5.3", - "lexik/jwt-authentication-bundle": "<2.10.7|>=2.11,<2.11.3", - "libreform/libreform": ">=2,<=2.0.8", - "librenms/librenms": "<2017.08.18", - "liftkit/database": "<2.13.2", - "lightsaml/lightsaml": "<1.3.5", - "limesurvey/limesurvey": "<6.5.12", - "livehelperchat/livehelperchat": "<=3.91", - "livewire/livewire": "<2.12.7|>=3.0.0.0-beta1,<3.5.2", - "lms/routes": "<2.1.1", - "localizationteam/l10nmgr": "<7.4|>=8,<8.7|>=9,<9.2", - "luyadev/yii-helpers": "<1.2.1", - "maestroerror/php-heic-to-jpg": "<1.0.5", - "magento/community-edition": "<2.4.5|==2.4.5|>=2.4.5.0-patch1,<2.4.5.0-patch10|==2.4.6|>=2.4.6.0-patch1,<2.4.6.0-patch8|>=2.4.7.0-beta1,<2.4.7.0-patch3", - "magento/core": "<=1.9.4.5", - "magento/magento1ce": "<1.9.4.3-dev", - "magento/magento1ee": ">=1,<1.14.4.3-dev", - "magento/product-community-edition": "<2.4.4.0-patch9|>=2.4.5,<2.4.5.0-patch8|>=2.4.6,<2.4.6.0-patch6|>=2.4.7,<2.4.7.0-patch1", - "magneto/core": "<1.9.4.4-dev", - "maikuolan/phpmussel": ">=1,<1.6", - "mainwp/mainwp": "<=4.4.3.3", - "mantisbt/mantisbt": "<=2.26.3", - "marcwillmann/turn": "<0.3.3", - "matyhtf/framework": "<3.0.6", - "mautic/core": "<4.4.13|>=5,<5.1.1", - "mautic/core-lib": ">=1.0.0.0-beta,<4.4.13|>=5.0.0.0-alpha,<5.1.1", - "maximebf/debugbar": "<1.19", - "mdanter/ecc": "<2", - "mediawiki/abuse-filter": "<1.39.9|>=1.40,<1.41.3|>=1.42,<1.42.2", - "mediawiki/cargo": "<3.6.1", - "mediawiki/core": "<1.39.5|==1.40", - "mediawiki/matomo": "<2.4.3", - "mediawiki/semantic-media-wiki": "<4.0.2", - "melisplatform/melis-asset-manager": "<5.0.1", - "melisplatform/melis-cms": "<5.0.1", - "melisplatform/melis-front": "<5.0.1", - "mezzio/mezzio-swoole": "<3.7|>=4,<4.3", - "mgallegos/laravel-jqgrid": "<=1.3", - "microsoft/microsoft-graph": ">=1.16,<1.109.1|>=2,<2.0.1", - "microsoft/microsoft-graph-beta": "<2.0.1", - "microsoft/microsoft-graph-core": "<2.0.2", - "microweber/microweber": "<=2.0.16", - "mikehaertl/php-shellcommand": "<1.6.1", - "miniorange/miniorange-saml": "<1.4.3", - "mittwald/typo3_forum": "<1.2.1", - "mobiledetect/mobiledetectlib": "<2.8.32", - "modx/revolution": "<=2.8.3.0-patch", - "mojo42/jirafeau": "<4.4", - "mongodb/mongodb": ">=1,<1.9.2", - "monolog/monolog": ">=1.8,<1.12", - "moodle/moodle": "<4.3.8|>=4.4,<4.4.4", - "mos/cimage": "<0.7.19", - "movim/moxl": ">=0.8,<=0.10", - "movingbytes/social-network": "<=1.2.1", - "mpdf/mpdf": "<=7.1.7", - "munkireport/comment": "<4.1", - "munkireport/managedinstalls": "<2.6", - "munkireport/munki_facts": "<1.5", - "munkireport/munkireport": ">=2.5.3,<5.6.3", - "munkireport/reportdata": "<3.5", - "munkireport/softwareupdate": "<1.6", - "mustache/mustache": ">=2,<2.14.1", - "namshi/jose": "<2.2", - "nategood/httpful": "<1", - "neoan3-apps/template": "<1.1.1", - "neorazorx/facturascripts": "<2022.04", - "neos/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", - "neos/form": ">=1.2,<4.3.3|>=5,<5.0.9|>=5.1,<5.1.3", - "neos/media-browser": "<7.3.19|>=8,<8.0.16|>=8.1,<8.1.11|>=8.2,<8.2.11|>=8.3,<8.3.9", - "neos/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<5.3.10|>=7,<7.0.9|>=7.1,<7.1.7|>=7.2,<7.2.6|>=7.3,<7.3.4|>=8,<8.0.2", - "neos/swiftmailer": "<5.4.5", - "netgen/tagsbundle": ">=3.4,<3.4.11|>=4,<4.0.15", - "nette/application": ">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6", - "nette/nette": ">=2,<2.0.19|>=2.1,<2.1.13", - "nilsteampassnet/teampass": "<3.0.10", - "nonfiction/nterchange": "<4.1.1", - "notrinos/notrinos-erp": "<=0.7", - "noumo/easyii": "<=0.9", - "novaksolutions/infusionsoft-php-sdk": "<1", - "nukeviet/nukeviet": "<4.5.02", - "nyholm/psr7": "<1.6.1", - "nystudio107/craft-seomatic": "<3.4.12", - "nzedb/nzedb": "<0.8", - "nzo/url-encryptor-bundle": ">=4,<4.3.2|>=5,<5.0.1", - "october/backend": "<1.1.2", - "october/cms": "<1.0.469|==1.0.469|==1.0.471|==1.1.1", - "october/october": "<=3.6.4", - "october/rain": "<1.0.472|>=1.1,<1.1.2", - "october/system": "<1.0.476|>=1.1,<1.1.12|>=2,<2.2.34|>=3,<3.5.15", - "omeka/omeka-s": "<4.0.3", - "onelogin/php-saml": "<2.10.4", - "oneup/uploader-bundle": ">=1,<1.9.3|>=2,<2.1.5", - "open-web-analytics/open-web-analytics": "<1.7.4", - "opencart/opencart": ">=0", - "openid/php-openid": "<2.3", - "openmage/magento-lts": "<20.10.1", - "opensolutions/vimbadmin": "<=3.0.15", - "opensource-workshop/connect-cms": "<1.7.2|>=2,<2.3.2", - "orchid/platform": ">=8,<14.43", - "oro/calendar-bundle": ">=4.2,<=4.2.6|>=5,<=5.0.6|>=5.1,<5.1.1", - "oro/commerce": ">=4.1,<5.0.11|>=5.1,<5.1.1", - "oro/crm": ">=1.7,<1.7.4|>=3.1,<4.1.17|>=4.2,<4.2.7", - "oro/crm-call-bundle": ">=4.2,<=4.2.5|>=5,<5.0.4|>=5.1,<5.1.1", - "oro/customer-portal": ">=4.1,<=4.1.13|>=4.2,<=4.2.10|>=5,<=5.0.11|>=5.1,<=5.1.3", - "oro/platform": ">=1.7,<1.7.4|>=3.1,<3.1.29|>=4.1,<4.1.17|>=4.2,<=4.2.10|>=5,<=5.0.12|>=5.1,<=5.1.3", - "oveleon/contao-cookiebar": "<1.16.3|>=2,<2.1.3", - "oxid-esales/oxideshop-ce": "<4.5", - "oxid-esales/paymorrow-module": ">=1,<1.0.2|>=2,<2.0.1", - "packbackbooks/lti-1-3-php-library": "<5", - "padraic/humbug_get_contents": "<1.1.2", - "pagarme/pagarme-php": "<3", - "pagekit/pagekit": "<=1.0.18", - "paragonie/ecc": "<2.0.1", - "paragonie/random_compat": "<2", - "passbolt/passbolt_api": "<4.6.2", - "paypal/adaptivepayments-sdk-php": "<=3.9.2", - "paypal/invoice-sdk-php": "<=3.9", - "paypal/merchant-sdk-php": "<3.12", - "paypal/permissions-sdk-php": "<=3.9.1", - "pear/archive_tar": "<1.4.14", - "pear/auth": "<1.2.4", - "pear/crypt_gpg": "<1.6.7", - "pear/pear": "<=1.10.1", - "pegasus/google-for-jobs": "<1.5.1|>=2,<2.1.1", - "personnummer/personnummer": "<3.0.2", - "phanan/koel": "<5.1.4", - "phenx/php-svg-lib": "<0.5.2", - "php-censor/php-censor": "<2.0.13|>=2.1,<2.1.5", - "php-mod/curl": "<2.3.2", - "phpbb/phpbb": "<3.3.11", - "phpems/phpems": ">=6,<=6.1.3", - "phpfastcache/phpfastcache": "<6.1.5|>=7,<7.1.2|>=8,<8.0.7", - "phpmailer/phpmailer": "<6.5", - "phpmussel/phpmussel": ">=1,<1.6", - "phpmyadmin/phpmyadmin": "<5.2.1", - "phpmyfaq/phpmyfaq": "<3.2.5|==3.2.5", - "phpoffice/common": "<0.2.9", - "phpoffice/phpexcel": "<1.8.1", - "phpoffice/phpspreadsheet": "<1.29.4|>=2,<2.1.3|>=2.2,<2.3.2|>=3.3,<3.4", - "phpseclib/phpseclib": "<2.0.47|>=3,<3.0.36", - "phpservermon/phpservermon": "<3.6", - "phpsysinfo/phpsysinfo": "<3.4.3", - "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3", - "phpwhois/phpwhois": "<=4.2.5", - "phpxmlrpc/extras": "<0.6.1", - "phpxmlrpc/phpxmlrpc": "<4.9.2", - "pi/pi": "<=2.5", - "pimcore/admin-ui-classic-bundle": "<1.5.4", - "pimcore/customer-management-framework-bundle": "<4.0.6", - "pimcore/data-hub": "<1.2.4", - "pimcore/data-importer": "<1.8.9|>=1.9,<1.9.3", - "pimcore/demo": "<10.3", - "pimcore/ecommerce-framework-bundle": "<1.0.10", - "pimcore/perspective-editor": "<1.5.1", - "pimcore/pimcore": "<11.2.4", - "pixelfed/pixelfed": "<0.11.11", - "plotly/plotly.js": "<2.25.2", - "pocketmine/bedrock-protocol": "<8.0.2", - "pocketmine/pocketmine-mp": "<5.11.2", - "pocketmine/raklib": ">=0.14,<0.14.6|>=0.15,<0.15.1", - "pressbooks/pressbooks": "<5.18", - "prestashop/autoupgrade": ">=4,<4.10.1", - "prestashop/blockreassurance": "<=5.1.3", - "prestashop/blockwishlist": ">=2,<2.1.1", - "prestashop/contactform": ">=1.0.1,<4.3", - "prestashop/gamification": "<2.3.2", - "prestashop/prestashop": "<8.1.6", - "prestashop/productcomments": "<5.0.2", - "prestashop/ps_emailsubscription": "<2.6.1", - "prestashop/ps_facetedsearch": "<3.4.1", - "prestashop/ps_linklist": "<3.1", - "privatebin/privatebin": "<1.4|>=1.5,<1.7.4", - "processwire/processwire": "<=3.0.229", - "propel/propel": ">=2.0.0.0-alpha1,<=2.0.0.0-alpha7", - "propel/propel1": ">=1,<=1.7.1", - "pterodactyl/panel": "<1.11.8", - "ptheofan/yii2-statemachine": ">=2.0.0.0-RC1-dev,<=2", - "ptrofimov/beanstalk_console": "<1.7.14", - "pubnub/pubnub": "<6.1", - "pusher/pusher-php-server": "<2.2.1", - "pwweb/laravel-core": "<=0.3.6.0-beta", - "pxlrbt/filament-excel": "<1.1.14|>=2.0.0.0-alpha,<2.3.3", - "pyrocms/pyrocms": "<=3.9.1", - "qcubed/qcubed": "<=3.1.1", - "quickapps/cms": "<=2.0.0.0-beta2", - "rainlab/blog-plugin": "<1.4.1", - "rainlab/debugbar-plugin": "<3.1", - "rainlab/user-plugin": "<=1.4.5", - "rankmath/seo-by-rank-math": "<=1.0.95", - "rap2hpoutre/laravel-log-viewer": "<0.13", - "react/http": ">=0.7,<1.9", - "really-simple-plugins/complianz-gdpr": "<6.4.2", - "redaxo/source": "<5.18", - "remdex/livehelperchat": "<4.29", - "reportico-web/reportico": "<=8.1", - "rhukster/dom-sanitizer": "<1.0.7", - "rmccue/requests": ">=1.6,<1.8", - "robrichards/xmlseclibs": ">=1,<3.0.4", - "roots/soil": "<4.1", - "rudloff/alltube": "<3.0.3", - "s-cart/core": "<6.9", - "s-cart/s-cart": "<6.9", - "sabberworm/php-css-parser": ">=1,<1.0.1|>=2,<2.0.1|>=3,<3.0.1|>=4,<4.0.1|>=5,<5.0.9|>=5.1,<5.1.3|>=5.2,<5.2.1|>=6,<6.0.2|>=7,<7.0.4|>=8,<8.0.1|>=8.1,<8.1.1|>=8.2,<8.2.1|>=8.3,<8.3.1", - "sabre/dav": ">=1.6,<1.7.11|>=1.8,<1.8.9", - "samwilson/unlinked-wikibase": "<1.39.6|>=1.40,<1.40.2|>=1.41,<1.41.1", - "scheb/two-factor-bundle": "<3.26|>=4,<4.11", - "sensiolabs/connect": "<4.2.3", - "serluck/phpwhois": "<=4.2.6", - "sfroemken/url_redirect": "<=1.2.1", - "sheng/yiicms": "<1.2.1", - "shopware/core": "<=6.5.8.12|>=6.6,<=6.6.5", - "shopware/platform": "<=6.5.8.12|>=6.6,<=6.6.5", - "shopware/production": "<=6.3.5.2", - "shopware/shopware": "<=5.7.17", - "shopware/storefront": "<=6.4.8.1|>=6.5.8,<6.5.8.7-dev", - "shopxo/shopxo": "<=6.1", - "showdoc/showdoc": "<2.10.4", - "shuchkin/simplexlsx": ">=1.0.12,<1.1.12", - "silverstripe-australia/advancedreports": ">=1,<=2", - "silverstripe/admin": "<1.13.19|>=2,<2.1.8", - "silverstripe/assets": ">=1,<1.11.1", - "silverstripe/cms": "<4.11.3", - "silverstripe/comments": ">=1.3,<3.1.1", - "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", - "silverstripe/framework": "<5.2.16", - "silverstripe/graphql": ">=2,<2.0.5|>=3,<3.8.2|>=4,<4.3.7|>=5,<5.1.3", - "silverstripe/hybridsessions": ">=1,<2.4.1|>=2.5,<2.5.1", - "silverstripe/recipe-cms": ">=4.5,<4.5.3", - "silverstripe/registry": ">=2.1,<2.1.2|>=2.2,<2.2.1", - "silverstripe/reports": "<5.2.3", - "silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4|>=2.1,<2.1.2", - "silverstripe/silverstripe-omnipay": "<2.5.2|>=3,<3.0.2|>=3.1,<3.1.4|>=3.2,<3.2.1", - "silverstripe/subsites": ">=2,<2.6.1", - "silverstripe/taxonomy": ">=1.3,<1.3.1|>=2,<2.0.1", - "silverstripe/userforms": "<3|>=5,<5.4.2", - "silverstripe/versioned-admin": ">=1,<1.11.1", - "simple-updates/phpwhois": "<=1", - "simplesamlphp/saml2": "<4.6.14|==5.0.0.0-alpha12", - "simplesamlphp/saml2-legacy": "<4.6.14", - "simplesamlphp/simplesamlphp": "<1.18.6", - "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1", - "simplesamlphp/simplesamlphp-module-openid": "<1", - "simplesamlphp/simplesamlphp-module-openidprovider": "<0.9", - "simplesamlphp/xml-common": "<1.20", - "simplesamlphp/xml-security": "==1.6.11", - "simplito/elliptic-php": "<1.0.6", - "sitegeist/fluid-components": "<3.5", - "sjbr/sr-freecap": "<2.4.6|>=2.5,<2.5.3", - "slim/psr7": "<1.4.1|>=1.5,<1.5.1|>=1.6,<1.6.1", - "slim/slim": "<2.6", - "slub/slub-events": "<3.0.3", - "smarty/smarty": "<4.5.3|>=5,<5.1.1", - "snipe/snipe-it": "<=7.0.13", - "socalnick/scn-social-auth": "<1.15.2", - "socialiteproviders/steam": "<1.1", - "spatie/browsershot": "<5.0.3", - "spatie/image-optimizer": "<1.7.3", - "spencer14420/sp-php-email-handler": "<1", - "spipu/html2pdf": "<5.2.8", - "spoon/library": "<1.4.1", - "spoonity/tcpdf": "<6.2.22", - "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1", - "ssddanbrown/bookstack": "<24.05.1", - "starcitizentools/citizen-skin": ">=2.6.3,<2.31", - "statamic/cms": "<=5.16", - "stormpath/sdk": "<9.9.99", - "studio-42/elfinder": "<=2.1.64", - "studiomitte/friendlycaptcha": "<0.1.4", - "subhh/libconnect": "<7.0.8|>=8,<8.1", - "sukohi/surpass": "<1", - "sulu/form-bundle": ">=2,<2.5.3", - "sulu/sulu": "<1.6.44|>=2,<2.5.21|>=2.6,<2.6.5", - "sumocoders/framework-user-bundle": "<1.4", - "superbig/craft-audit": "<3.0.2", - "swag/paypal": "<5.4.4", - "swiftmailer/swiftmailer": "<6.2.5", - "swiftyedit/swiftyedit": "<1.2", - "sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2", - "sylius/grid": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1", - "sylius/grid-bundle": "<1.10.1", - "sylius/paypal-plugin": ">=1,<1.2.4|>=1.3,<1.3.1", - "sylius/resource-bundle": ">=1,<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4", - "sylius/sylius": "<1.12.19|>=1.13.0.0-alpha1,<1.13.4", - "symbiote/silverstripe-multivaluefield": ">=3,<3.1", - "symbiote/silverstripe-queuedjobs": ">=3,<3.0.2|>=3.1,<3.1.4|>=4,<4.0.7|>=4.1,<4.1.2|>=4.2,<4.2.4|>=4.3,<4.3.3|>=4.4,<4.4.3|>=4.5,<4.5.1|>=4.6,<4.6.4", - "symbiote/silverstripe-seed": "<6.0.3", - "symbiote/silverstripe-versionedfiles": "<=2.0.3", - "symfont/process": ">=0", - "symfony/cache": ">=3.1,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8", - "symfony/dependency-injection": ">=2,<2.0.17|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", - "symfony/error-handler": ">=4.4,<4.4.4|>=5,<5.0.4", - "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", - "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=5.3.14,<5.3.15|>=5.4.3,<5.4.4|>=6.0.3,<6.0.4", - "symfony/http-client": ">=4.3,<5.4.47|>=6,<6.4.15|>=7,<7.1.8", - "symfony/http-foundation": "<5.4.46|>=6,<6.4.14|>=7,<7.1.7", - "symfony/http-kernel": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6", - "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", - "symfony/maker-bundle": ">=1.27,<1.29.2|>=1.30,<1.31.1", - "symfony/mime": ">=4.3,<4.3.8", - "symfony/phpunit-bridge": ">=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", - "symfony/polyfill": ">=1,<1.10", - "symfony/polyfill-php55": ">=1,<1.10", - "symfony/process": "<5.4.46|>=6,<6.4.14|>=7,<7.1.7", - "symfony/proxy-manager-bridge": ">=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", - "symfony/routing": ">=2,<2.0.19", - "symfony/runtime": ">=5.3,<5.4.46|>=6,<6.4.14|>=7,<7.1.7", - "symfony/security": ">=2,<2.7.51|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.8", - "symfony/security-bundle": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.4.10|>=7,<7.0.10|>=7.1,<7.1.3", - "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.9", - "symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", - "symfony/security-guard": ">=2.8,<3.4.48|>=4,<4.4.23|>=5,<5.2.8", - "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7|>=5.1,<5.2.8|>=5.3,<5.4.47|>=6,<6.4.15|>=7,<7.1.8", - "symfony/serializer": ">=2,<2.0.11|>=4.1,<4.4.35|>=5,<5.3.12", - "symfony/symfony": "<5.4.47|>=6,<6.4.15|>=7,<7.1.8", - "symfony/translation": ">=2,<2.0.17", - "symfony/twig-bridge": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8", - "symfony/ux-autocomplete": "<2.11.2", - "symfony/validator": "<5.4.43|>=6,<6.4.11|>=7,<7.1.4", - "symfony/var-exporter": ">=4.2,<4.2.12|>=4.3,<4.3.8", - "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4", - "symfony/webhook": ">=6.3,<6.3.8", - "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7|>=2.2.0.0-beta1,<2.2.0.0-beta2", - "symphonycms/symphony-2": "<2.6.4", - "t3/dce": "<0.11.5|>=2.2,<2.6.2", - "t3g/svg-sanitizer": "<1.0.3", - "t3s/content-consent": "<1.0.3|>=2,<2.0.2", - "tastyigniter/tastyigniter": "<3.3", - "tcg/voyager": "<=1.4", - "tecnickcom/tcpdf": "<=6.7.5", - "terminal42/contao-tablelookupwizard": "<3.3.5", - "thelia/backoffice-default-template": ">=2.1,<2.1.2", - "thelia/thelia": ">=2.1,<2.1.3", - "theonedemon/phpwhois": "<=4.2.5", - "thinkcmf/thinkcmf": "<6.0.8", - "thorsten/phpmyfaq": "<4", - "tikiwiki/tiki-manager": "<=17.1", - "timber/timber": ">=0.16.6,<1.23.1|>=1.24,<1.24.1|>=2,<2.1", - "tinymce/tinymce": "<7.2", - "tinymighty/wiki-seo": "<1.2.2", - "titon/framework": "<9.9.99", - "tobiasbg/tablepress": "<=2.0.0.0-RC1", - "topthink/framework": "<6.0.17|>=6.1,<=8.0.4", - "topthink/think": "<=6.1.1", - "topthink/thinkphp": "<=3.2.3|>=6.1.3,<=8.0.4", - "torrentpier/torrentpier": "<=2.4.3", - "tpwd/ke_search": "<4.0.3|>=4.1,<4.6.6|>=5,<5.0.2", - "tribalsystems/zenario": "<=9.7.61188", - "truckersmp/phpwhois": "<=4.3.1", - "ttskch/pagination-service-provider": "<1", - "twbs/bootstrap": "<=3.4.1|>=4,<=4.6.2", - "twig/twig": "<3.11.2|>=3.12,<3.14.1", - "typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2", - "typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<10.4.46|>=11,<11.5.40|>=12,<12.4.21|>=13,<13.3.1", - "typo3/cms-core": "<=8.7.56|>=9,<=9.5.47|>=10,<=10.4.44|>=11,<=11.5.36|>=12,<=12.4.14|>=13,<=13.1", - "typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1", - "typo3/cms-fluid": "<4.3.4|>=4.4,<4.4.1", - "typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1", - "typo3/cms-frontend": "<4.3.9|>=4.4,<4.4.5", - "typo3/cms-install": "<4.1.14|>=4.2,<4.2.16|>=4.3,<4.3.9|>=4.4,<4.4.5|>=12.2,<12.4.8", - "typo3/cms-rte-ckeditor": ">=9.5,<9.5.42|>=10,<10.4.39|>=11,<11.5.30", - "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", - "typo3/html-sanitizer": ">=1,<=1.5.2|>=2,<=2.1.3", - "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.3.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3", - "typo3/phar-stream-wrapper": ">=1,<2.1.1|>=3,<3.1.1", - "typo3/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5", - "typo3fluid/fluid": ">=2,<2.0.8|>=2.1,<2.1.7|>=2.2,<2.2.4|>=2.3,<2.3.7|>=2.4,<2.4.4|>=2.5,<2.5.11|>=2.6,<2.6.10", - "ua-parser/uap-php": "<3.8", - "uasoft-indonesia/badaso": "<=2.9.7", - "unisharp/laravel-filemanager": "<2.9.1", - "unopim/unopim": "<0.1.5", - "userfrosting/userfrosting": ">=0.3.1,<4.6.3", - "usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2", - "uvdesk/community-skeleton": "<=1.1.1", - "uvdesk/core-framework": "<=1.1.1", - "vanilla/safecurl": "<0.9.2", - "verbb/comments": "<1.5.5", - "verbb/formie": "<2.1.6", - "verbb/image-resizer": "<2.0.9", - "verbb/knock-knock": "<1.2.8", - "verot/class.upload.php": "<=2.1.6", - "villagedefrance/opencart-overclocked": "<=1.11.1", - "vova07/yii2-fileapi-widget": "<0.1.9", - "vrana/adminer": "<4.8.1", - "vufind/vufind": ">=2,<9.1.1", - "waldhacker/hcaptcha": "<2.1.2", - "wallabag/tcpdf": "<6.2.22", - "wallabag/wallabag": "<2.6.7", - "wanglelecc/laracms": "<=1.0.3", - "web-auth/webauthn-framework": ">=3.3,<3.3.4|>=4.5,<4.9", - "web-auth/webauthn-lib": ">=4.5,<4.9", - "web-feet/coastercms": "==5.5", - "webbuilders-group/silverstripe-kapost-bridge": "<0.4", - "webcoast/deferred-image-processing": "<1.0.2", - "webklex/laravel-imap": "<5.3", - "webklex/php-imap": "<5.3", - "webpa/webpa": "<3.1.2", - "wikibase/wikibase": "<=1.39.3", - "wikimedia/parsoid": "<0.12.2", - "willdurand/js-translation-bundle": "<2.1.1", - "winter/wn-backend-module": "<1.2.4", - "winter/wn-cms-module": "<1.0.476|>=1.1,<1.1.11|>=1.2,<1.2.7", - "winter/wn-dusk-plugin": "<2.1", - "winter/wn-system-module": "<1.2.4", - "wintercms/winter": "<=1.2.3", - "wireui/wireui": "<1.19.3|>=2,<2.1.3", - "woocommerce/woocommerce": "<6.6|>=8.8,<8.8.5|>=8.9,<8.9.3", - "wp-cli/wp-cli": ">=0.12,<2.5", - "wp-graphql/wp-graphql": "<=1.14.5", - "wp-premium/gravityforms": "<2.4.21", - "wpanel/wpanel4-cms": "<=4.3.1", - "wpcloud/wp-stateless": "<3.2", - "wpglobus/wpglobus": "<=1.9.6", - "wwbn/avideo": "<14.3", - "xataface/xataface": "<3", - "xpressengine/xpressengine": "<3.0.15", - "yab/quarx": "<2.4.5", - "yeswiki/yeswiki": "<=4.4.4", - "yetiforce/yetiforce-crm": "<=6.4", - "yidashi/yii2cmf": "<=2", - "yii2mod/yii2-cms": "<1.9.2", - "yiisoft/yii": "<1.1.29", - "yiisoft/yii2": "<2.0.49.4-dev", - "yiisoft/yii2-authclient": "<2.2.15", - "yiisoft/yii2-bootstrap": "<2.0.4", - "yiisoft/yii2-dev": "<2.0.43", - "yiisoft/yii2-elasticsearch": "<2.0.5", - "yiisoft/yii2-gii": "<=2.2.4", - "yiisoft/yii2-jui": "<2.0.4", - "yiisoft/yii2-redis": "<2.0.8", - "yikesinc/yikes-inc-easy-mailchimp-extender": "<6.8.6", - "yoast-seo-for-typo3/yoast_seo": "<7.2.3", - "yourls/yourls": "<=1.8.2", - "yuan1994/tpadmin": "<=1.3.12", - "zencart/zencart": "<=1.5.7.0-beta", - "zendesk/zendesk_api_client_php": "<2.2.11", - "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", - "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2", - "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2", - "zendframework/zend-db": "<2.2.10|>=2.3,<2.3.5", - "zendframework/zend-developer-tools": ">=1.2.2,<1.2.3", - "zendframework/zend-diactoros": "<1.8.4", - "zendframework/zend-feed": "<2.10.3", - "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1", - "zendframework/zend-http": "<2.8.1", - "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6", - "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3", - "zendframework/zend-mail": "<2.4.11|>=2.5,<2.7.2", - "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1", - "zendframework/zend-session": ">=2,<2.2.9|>=2.3,<2.3.4", - "zendframework/zend-validator": ">=2.3,<2.3.6", - "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1", - "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6", - "zendframework/zendframework": "<=3", - "zendframework/zendframework1": "<1.12.20", - "zendframework/zendopenid": "<2.0.2", - "zendframework/zendrest": "<2.0.2", - "zendframework/zendservice-amazon": "<2.0.3", - "zendframework/zendservice-api": "<1", - "zendframework/zendservice-audioscrobbler": "<2.0.2", - "zendframework/zendservice-nirvanix": "<2.0.2", - "zendframework/zendservice-slideshare": "<2.0.2", - "zendframework/zendservice-technorati": "<2.0.2", - "zendframework/zendservice-windowsazure": "<2.0.2", - "zendframework/zendxml": ">=1,<1.0.1", - "zenstruck/collection": "<0.2.1", - "zetacomponents/mail": "<1.8.2", - "zf-commons/zfc-user": "<1.2.2", - "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3", - "zfr/zfr-oauth2-server-module": "<0.1.2", - "zoujingli/thinkadmin": "<=6.1.53" - }, - "default-branch": true, - "type": "metapackage", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "role": "maintainer" + "name": "Cees-Jan Kiewiet", + "email": "ceesjank@gmail.com" + }, + { + "name": "Christian Lรผck", + "email": "christian@clue.engineering" }, { - "name": "Ilya Tribusean", - "email": "slash3b@gmail.com", - "role": "maintainer" + "name": "Niklas Keller", + "email": "me@kelunik.com" } ], - "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it", + "description": "Rock-solid event loop for concurrent PHP applications.", "keywords": [ - "dev" + "async", + "asynchronous", + "concurrency", + "event", + "event-loop", + "non-blocking", + "scheduler" ], "support": { - "issues": "https://github.com/Roave/SecurityAdvisories/issues", - "source": "https://github.com/Roave/SecurityAdvisories/tree/latest" + "issues": "https://github.com/revoltphp/event-loop/issues", + "source": "https://github.com/revoltphp/event-loop/tree/v1.0.7" }, - "funding": [ - { - "url": "https://github.com/Ocramius", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/roave/security-advisories", - "type": "tidelift" - } - ], - "time": "2024-12-20T16:05:39+00:00" + "time": "2025-01-25T19:27:39+00:00" }, { "name": "sanmai/later", - "version": "0.1.4", + "version": "0.1.5", "source": { "type": "git", "url": "https://github.com/sanmai/later.git", - "reference": "e24c4304a4b1349c2a83151a692cec0c10579f60" + "reference": "cf5164557d19930295892094996f049ea12ba14d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sanmai/later/zipball/e24c4304a4b1349c2a83151a692cec0c10579f60", - "reference": "e24c4304a4b1349c2a83151a692cec0c10579f60", + "url": "https://api.github.com/repos/sanmai/later/zipball/cf5164557d19930295892094996f049ea12ba14d", + "reference": "cf5164557d19930295892094996f049ea12ba14d", "shasum": "" }, "require": { @@ -10012,7 +8980,7 @@ "description": "Later: deferred wrapper object", "support": { "issues": "https://github.com/sanmai/later/issues", - "source": "https://github.com/sanmai/later/tree/0.1.4" + "source": "https://github.com/sanmai/later/tree/0.1.5" }, "funding": [ { @@ -10020,7 +8988,7 @@ "type": "github" } ], - "time": "2023-10-24T00:25:28+00:00" + "time": "2024-12-06T02:36:26+00:00" }, { "name": "sanmai/pipeline", @@ -10833,23 +9801,23 @@ }, { "name": "sebastian/recursion-context", - "version": "5.0.0", + "version": "5.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "05909fb5bc7df4c52992396d0116aed689f93712" + "reference": "47e34210757a2f37a97dcd207d032e1b01e64c7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", - "reference": "05909fb5bc7df4c52992396d0116aed689f93712", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/47e34210757a2f37a97dcd207d032e1b01e64c7a", + "reference": "47e34210757a2f37a97dcd207d032e1b01e64c7a", "shasum": "" }, "require": { "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^10.5" }, "type": "library", "extra": { @@ -10884,15 +9852,28 @@ "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" + "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.1" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", + "type": "tidelift" } ], - "time": "2023-02-03T07:05:40+00:00" + "time": "2025-08-10T07:50:56+00:00" }, { "name": "sebastian/type", @@ -10951,300 +9932,90 @@ "time": "2023-02-03T07:10:45+00:00" }, { - "name": "sebastian/version", - "version": "4.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", - "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "support": { - "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-07T11:34:05+00:00" - }, - { - "name": "spatie/array-to-xml", - "version": "3.4.0", - "source": { - "type": "git", - "url": "https://github.com/spatie/array-to-xml.git", - "reference": "7dcfc67d60b0272926dabad1ec01f6b8a5fb5e67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/7dcfc67d60b0272926dabad1ec01f6b8a5fb5e67", - "reference": "7dcfc67d60b0272926dabad1ec01f6b8a5fb5e67", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "php": "^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.2", - "pestphp/pest": "^1.21", - "spatie/pest-plugin-snapshots": "^1.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "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/3.4.0" - }, - "funding": [ - { - "url": "https://spatie.be/open-source/support-us", - "type": "custom" - }, - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2024-12-16T12:45:15+00:00" - }, - { - "name": "spiral/cycle-bridge", - "version": "v2.10.0", - "source": { - "type": "git", - "url": "https://github.com/spiral/cycle-bridge.git", - "reference": "515ca53255390582c70b5b1748fc901a752144e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spiral/cycle-bridge/zipball/515ca53255390582c70b5b1748fc901a752144e8", - "reference": "515ca53255390582c70b5b1748fc901a752144e8", - "shasum": "" - }, - "require": { - "cycle/annotated": "^4.0", - "cycle/migrations": "^4.0.1", - "cycle/orm": "^2.0.2", - "cycle/schema-builder": "^2.7", - "cycle/schema-migrations-generator": "^2.1", - "cycle/schema-renderer": "^1.2", - "doctrine/inflector": "^1.4 || ^2.0", - "php": ">=8.1", - "psr/container": "^1.1 || ^2.0", - "spiral/attributes": "^2.10 || ^3.0", - "spiral/auth": "^3.0", - "spiral/boot": "^3.0", - "spiral/config": "^3.0", - "spiral/console": "^3.0", - "spiral/core": "^3.0", - "spiral/data-grid-bridge": "^3.0", - "spiral/filters": "^3.10", - "spiral/prototype": "^3.0", - "spiral/reactor": "^3.0", - "spiral/scaffolder": "^3.0", - "spiral/tokenizer": "^3.0" - }, - "require-dev": { - "cycle/entity-behavior": "^1.2", - "doctrine/collections": "^2.0", - "illuminate/collections": "^9.0", - "infection/infection": "^0.26.6", - "mockery/mockery": "^1.5", - "phpunit/phpunit": "^9.5.20", - "spiral-packages/database-seeder": "^3.1", - "spiral/framework": "^3.11.1", - "spiral/nyholm-bridge": "^1.3", - "spiral/testing": "^2.4", - "spiral/validator": "^1.5", - "vimeo/psalm": "^5.19" - }, - "type": "library", - "autoload": { - "psr-4": { - "Spiral\\Cycle\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Anton Titov (wolfy-j)", - "email": "wolfy-j@spiralscout.com" - }, - { - "name": "Pavel Buchnev (butschster)", - "email": "pavel.buchnev@spiralscout.com" - } - ], - "description": "Cycle ORM integration package", - "homepage": "https://spiral.dev", - "support": { - "issues": "https://github.com/spiral/framework/issues", - "source": "https://github.com/spiral/cycle-bridge" - }, - "time": "2024-09-16T06:33:22+00:00" - }, - { - "name": "spiral/data-grid", - "version": "v3.0.0", + "name": "sebastian/version", + "version": "4.0.1", "source": { "type": "git", - "url": "https://github.com/spiral/data-grid.git", - "reference": "dde45cec1a42802f84da191df6a67b11f7f30e3f" + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spiral/data-grid/zipball/dde45cec1a42802f84da191df6a67b11f7f30e3f", - "reference": "dde45cec1a42802f84da191df6a67b11f7f30e3f", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", "shasum": "" }, "require": { - "php": ">=8.1", - "spiral/attributes": "^2.10 || ^3.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.5.20", - "ramsey/uuid": "^4.2.3", - "vimeo/psalm": "^4.27" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-3.0": "3.0.x-dev" + "dev-main": "4.0-dev" } }, "autoload": { - "files": [ - "src/helpers.php" - ], - "psr-4": { - "Spiral\\DataGrid\\": "src" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Valentin Vintsukevich (vvval)", - "email": "valentin@spiralscout.com" - }, - { - "name": "Anton Titov (wolfy-j)", - "email": "wolfy-j@spiralscout.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Data Grid specification builder", - "homepage": "https://spiral.dev", + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", "support": { - "issues": "https://github.com/spiral/framework/issues", - "source": "https://github.com/spiral/data-grid" + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" }, - "time": "2022-09-14T18:34:05+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-07T11:34:05+00:00" }, { - "name": "spiral/data-grid-bridge", - "version": "v3.0.1", + "name": "spatie/array-to-xml", + "version": "3.4.0", "source": { "type": "git", - "url": "https://github.com/spiral/data-grid-bridge.git", - "reference": "29e8b7c9faf486d57bad8a3d14d53c2a7ccdf584" + "url": "https://github.com/spatie/array-to-xml.git", + "reference": "7dcfc67d60b0272926dabad1ec01f6b8a5fb5e67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spiral/data-grid-bridge/zipball/29e8b7c9faf486d57bad8a3d14d53c2a7ccdf584", - "reference": "29e8b7c9faf486d57bad8a3d14d53c2a7ccdf584", + "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/7dcfc67d60b0272926dabad1ec01f6b8a5fb5e67", + "reference": "7dcfc67d60b0272926dabad1ec01f6b8a5fb5e67", "shasum": "" }, "require": { - "ext-json": "*", - "php": ">=8.1", - "spiral/attributes": "^2.10 || ^3.0", - "spiral/boot": "^3.0", - "spiral/data-grid": "^3.0", - "spiral/http": "^3.0" + "ext-dom": "*", + "php": "^8.0" }, "require-dev": { - "phpunit/phpunit": "^9.5.20", - "spiral/hmvc": "^3.0", - "vimeo/psalm": "^4.27" + "mockery/mockery": "^1.2", + "pestphp/pest": "^1.21", + "spatie/pest-plugin-snapshots": "^1.1" }, "type": "library", "extra": { "branch-alias": { - "dev-3.0": "3.0.x-dev" + "dev-main": "3.x-dev" } }, "autoload": { "psr-4": { - "Spiral\\DataGrid\\": "src" + "Spatie\\ArrayToXml\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -11253,73 +10024,61 @@ ], "authors": [ { - "name": "Anton Titov (wolfy-j)", - "email": "wolfy-j@spiralscout.com" + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://freek.dev", + "role": "Developer" } ], - "description": "Data Grid specification builder adapter for Spiral Framework", - "homepage": "https://spiral.dev", + "description": "Convert an array to xml", + "homepage": "https://github.com/spatie/array-to-xml", + "keywords": [ + "array", + "convert", + "xml" + ], "support": { - "issues": "https://github.com/spiral/framework/issues", - "source": "https://github.com/spiral/data-grid-bridge" + "source": "https://github.com/spatie/array-to-xml/tree/3.4.0" }, - "time": "2022-09-14T18:48:30+00:00" + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + }, + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2024-12-16T12:45:15+00:00" }, { - "name": "spiral/testing", - "version": "2.8.3", + "name": "spiral/code-style", + "version": "v2.3.0", "source": { "type": "git", - "url": "https://github.com/spiral/testing.git", - "reference": "767e903aecd83fc1b833d93b30ca080487ab1e9d" + "url": "https://github.com/spiral/code-style.git", + "reference": "d9742a53dbd9ae815054ba5ffc89c8cf92a774fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spiral/testing/zipball/767e903aecd83fc1b833d93b30ca080487ab1e9d", - "reference": "767e903aecd83fc1b833d93b30ca080487ab1e9d", + "url": "https://api.github.com/repos/spiral/code-style/zipball/d9742a53dbd9ae815054ba5ffc89c8cf92a774fc", + "reference": "d9742a53dbd9ae815054ba5ffc89c8cf92a774fc", "shasum": "" }, "require": { - "ext-json": "*", - "mockery/mockery": "^1.5", - "nyholm/psr7": "^1.5", - "php": ">=8.1", - "phpunit/phpunit": "^9.6 || ^10.0", - "spiral/auth": "^3.14.8", - "spiral/auth-http": "^3.14.8", - "spiral/boot": "^3.14.8", - "spiral/console": "^3.14.8", - "spiral/core": "^3.14.8", - "spiral/events": "^3.14.8", - "spiral/http": "^3.14.8", - "spiral/mailer": "^3.14.8", - "spiral/queue": "^3.14.8", - "spiral/scaffolder": "^3.14.8", - "spiral/security": "^3.14.8", - "spiral/session": "^3.14.8", - "spiral/storage": "^3.14.8", - "spiral/tokenizer": "^3.14.8", - "spiral/translator": "^3.14.8", - "spiral/views": "^3.14.8", - "symfony/mime": "^6.0 || ^7.0" + "php": ">=8.0", + "php-cs-fixer/shim": "^3.64" }, "require-dev": { - "spiral-packages/league-event": "^1.0.1", - "spiral/code-style": "^2.2", + "phpunit/phpunit": "^10.5", "spiral/dumper": "^3.3", - "spiral/framework": "^3.14.8", - "spiral/nyholm-bridge": "^1.3", - "spiral/roadrunner-bridge": "^2.2 || ^3.7 || ^4.0", - "vimeo/psalm": "^5.9" - }, - "suggest": { - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "ext-gd": "Required to use generate fake image files" + "vimeo/psalm": "^5.26" }, "type": "library", "autoload": { "psr-4": { - "Spiral\\Testing\\": "src" + "Spiral\\CodeStyle\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -11328,38 +10087,18 @@ ], "authors": [ { - "name": "Anton Titov (wolfy-j)", - "email": "wolfy-j@spiralscout.com" - }, - { - "name": "Pavel Buchnev (butschster)", - "email": "pavel.buchnev@spiralscout.com" + "name": "Aleksandr Novikov", + "email": "aleksandr.novikov@spiralscout.com" }, { - "name": "Aleksei Gagarin (roxblnfk)", + "name": "Aleksei Gagarin", "email": "alexey.gagarin@spiralscout.com" - }, - { - "name": "Maksim Smakouz (msmakouz)", - "email": "maksim.smakouz@spiralscout.com" - }, - { - "name": "RoadRunner Community", - "homepage": "https://github.com/spiral/roadrunner/graphs/contributors" } ], - "description": "Spiral Framework testing SDK", - "homepage": "https://spiral.dev/", - "keywords": [ - "spiral", - "spiral-packages", - "testing" - ], + "description": "Code style and static analysis tools rulesets collection", + "homepage": "https://github.com/spiral/code-style", "support": { - "chat": "https://discord.gg/TFeEmCs", - "docs": "https://spiral.dev/docs/testing-start", - "issues": "https://github.com/spiral/testing/issues", - "source": "https://github.com/spiral/testing/tree/2.8.3" + "source": "https://github.com/spiral/code-style/tree/v2.3.0" }, "funding": [ { @@ -11367,41 +10106,65 @@ "type": "github" } ], - "time": "2024-12-12T20:02:45+00:00" + "time": "2025-08-28T07:10:02+00:00" }, { - "name": "symfony/clock", - "version": "v7.2.0", + "name": "spiral/cycle-bridge", + "version": "v2.11.1", "source": { "type": "git", - "url": "https://github.com/symfony/clock.git", - "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24" + "url": "https://github.com/spiral/cycle-bridge.git", + "reference": "0150830ad2002a89b7fc56a711265547287d15c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/clock/zipball/b81435fbd6648ea425d1ee96a2d8e68f4ceacd24", - "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24", + "url": "https://api.github.com/repos/spiral/cycle-bridge/zipball/0150830ad2002a89b7fc56a711265547287d15c2", + "reference": "0150830ad2002a89b7fc56a711265547287d15c2", "shasum": "" }, "require": { - "php": ">=8.2", - "psr/clock": "^1.0", - "symfony/polyfill-php83": "^1.28" - }, - "provide": { - "psr/clock-implementation": "1.0" + "cycle/annotated": "^4.2.3", + "cycle/migrations": "^4.2.4", + "cycle/orm": "^2.9.3", + "cycle/schema-builder": "^2.11.1", + "cycle/schema-migrations-generator": "^2.3", + "cycle/schema-renderer": "^1.2", + "doctrine/inflector": "^1.4 || ^2.0.10", + "php": ">=8.1", + "psr/container": "^1.1 || ^2.0.2", + "spiral/attributes": "^2.10 || ^3.1.8", + "spiral/auth": "^3.15", + "spiral/boot": "^3.15", + "spiral/config": "^3.15", + "spiral/console": "^3.15", + "spiral/core": "^3.15", + "spiral/data-grid-bridge": "^3.0.1", + "spiral/filters": "^3.15", + "spiral/prototype": "^3.15", + "spiral/reactor": "^3.15", + "spiral/scaffolder": "^3.15", + "spiral/tokenizer": "^3.15" + }, + "require-dev": { + "cycle/entity-behavior": "^1.3.1", + "doctrine/collections": "^2.2.2", + "illuminate/collections": "^10.48", + "infection/infection": "^0.29.9", + "mockery/mockery": "^1.6.12", + "phpunit/phpunit": "^9.6.22", + "spiral-packages/database-seeder": "^3.3", + "spiral/code-style": "^2.2.2", + "spiral/framework": "^3.15.1", + "spiral/nyholm-bridge": "^1.3", + "spiral/testing": "^2.9", + "spiral/validator": "^1.5.4", + "vimeo/psalm": "^6.4" }, "type": "library", "autoload": { - "files": [ - "Resources/now.php" - ], "psr-4": { - "Symfony\\Component\\Clock\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Spiral\\Cycle\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -11409,70 +10172,70 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Anton Titov (wolfy-j)", + "email": "wolfy-j@spiralscout.com" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Pavel Buchnev (butschster)", + "email": "pavel.buchnev@spiralscout.com" + }, + { + "name": "Aleksei Gagarin (roxblnfk)", + "email": "alexey.gagarin@spiralscout.com" } ], - "description": "Decouples applications from the system clock", - "homepage": "https://symfony.com", - "keywords": [ - "clock", - "psr20", - "time" - ], + "description": "Cycle ORM integration package", + "homepage": "https://spiral.dev", "support": { - "source": "https://github.com/symfony/clock/tree/v7.2.0" + "issues": "https://github.com/spiral/framework/issues", + "source": "https://github.com/spiral/cycle-bridge" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sponsors/spiral", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2024-09-25T14:21:43+00:00" + "time": "2025-02-07T09:15:21+00:00" }, { - "name": "symfony/filesystem", - "version": "v7.2.0", + "name": "spiral/data-grid", + "version": "v3.0.1", "source": { "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb" + "url": "https://github.com/spiral/data-grid.git", + "reference": "6718350c8f8d49483442f04f50f293c069f5fc78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/b8dce482de9d7c9fe2891155035a7248ab5c7fdb", - "reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb", + "url": "https://api.github.com/repos/spiral/data-grid/zipball/6718350c8f8d49483442f04f50f293c069f5fc78", + "reference": "6718350c8f8d49483442f04f50f293c069f5fc78", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8" + "php": ">=8.1", + "spiral/attributes": "^3.0" }, "require-dev": { - "symfony/process": "^6.4|^7.0" + "phpunit/phpunit": "^9.5.20", + "ramsey/uuid": "^4.2.3", + "rector/rector": "^2.1.2", + "spiral/code-style": "^2.2.2", + "vimeo/psalm": "^4.27" }, "type": "library", + "extra": { + "branch-alias": { + "dev-3.0": "3.0.x-dev" + } + }, "autoload": { + "files": [ + "src/helpers.php" + ], "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Spiral\\DataGrid\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -11480,61 +10243,59 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides basic utilities for the filesystem", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.2.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" + "name": "Valentin Vintsukevich (vvval)", + "email": "valentin@spiralscout.com" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" + "name": "Anton Titov (wolfy-j)", + "email": "wolfy-j@spiralscout.com" } ], - "time": "2024-10-25T15:15:23+00:00" + "description": "Data Grid specification builder", + "homepage": "https://spiral.dev", + "support": { + "issues": "https://github.com/spiral/framework/issues", + "source": "https://github.com/spiral/data-grid" + }, + "time": "2025-07-27T09:23:44+00:00" }, { - "name": "symfony/options-resolver", - "version": "v7.2.0", + "name": "spiral/data-grid-bridge", + "version": "v3.0.1", "source": { "type": "git", - "url": "https://github.com/symfony/options-resolver.git", - "reference": "7da8fbac9dcfef75ffc212235d76b2754ce0cf50" + "url": "https://github.com/spiral/data-grid-bridge.git", + "reference": "29e8b7c9faf486d57bad8a3d14d53c2a7ccdf584" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/7da8fbac9dcfef75ffc212235d76b2754ce0cf50", - "reference": "7da8fbac9dcfef75ffc212235d76b2754ce0cf50", + "url": "https://api.github.com/repos/spiral/data-grid-bridge/zipball/29e8b7c9faf486d57bad8a3d14d53c2a7ccdf584", + "reference": "29e8b7c9faf486d57bad8a3d14d53c2a7ccdf584", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3" + "ext-json": "*", + "php": ">=8.1", + "spiral/attributes": "^2.10 || ^3.0", + "spiral/boot": "^3.0", + "spiral/data-grid": "^3.0", + "spiral/http": "^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.5.20", + "spiral/hmvc": "^3.0", + "vimeo/psalm": "^4.27" }, "type": "library", + "extra": { + "branch-alias": { + "dev-3.0": "3.0.x-dev" + } + }, "autoload": { "psr-4": { - "Symfony\\Component\\OptionsResolver\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Spiral\\DataGrid\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -11542,74 +10303,74 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Anton Titov (wolfy-j)", + "email": "wolfy-j@spiralscout.com" } ], - "description": "Provides an improved replacement for the array_replace PHP function", - "homepage": "https://symfony.com", - "keywords": [ - "config", - "configuration", - "options" - ], + "description": "Data Grid specification builder adapter for Spiral Framework", + "homepage": "https://spiral.dev", "support": { - "source": "https://github.com/symfony/options-resolver/tree/v7.2.0" + "issues": "https://github.com/spiral/framework/issues", + "source": "https://github.com/spiral/data-grid-bridge" }, - "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": "2024-11-20T11:17:29+00:00" + "time": "2022-09-14T18:48:30+00:00" }, { - "name": "symfony/polyfill-php81", - "version": "v1.31.0", + "name": "spiral/testing", + "version": "2.9.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c" + "url": "https://github.com/spiral/testing.git", + "reference": "d7ef7c4011c98206cb90037652a93728ec6aed93" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", - "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", + "url": "https://api.github.com/repos/spiral/testing/zipball/d7ef7c4011c98206cb90037652a93728ec6aed93", + "reference": "d7ef7c4011c98206cb90037652a93728ec6aed93", "shasum": "" }, "require": { - "php": ">=7.2" + "ext-json": "*", + "mockery/mockery": "^1.6.12", + "nyholm/psr7": "^1.8.2", + "php": ">=8.1", + "phpunit/phpunit": "^9.6 || ^10.5.44", + "spiral/auth": "^3.15", + "spiral/auth-http": "^3.15", + "spiral/boot": "^3.15", + "spiral/console": "^3.15", + "spiral/core": "^3.15", + "spiral/events": "^3.15", + "spiral/http": "^3.15", + "spiral/mailer": "^3.15", + "spiral/queue": "^3.15", + "spiral/scaffolder": "^3.15", + "spiral/security": "^3.15", + "spiral/session": "^3.15", + "spiral/storage": "^3.15", + "spiral/tokenizer": "^3.15", + "spiral/translator": "^3.15", + "spiral/views": "^3.15", + "symfony/mime": "^6.4.18 || ^7.2" }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } + "require-dev": { + "spiral-packages/league-event": "^1.0.1", + "spiral/code-style": "^2.2.2", + "spiral/dumper": "^3.3.1", + "spiral/framework": "^3.15.0", + "spiral/nyholm-bridge": "^1.3", + "spiral/roadrunner-bridge": "^2.2 || ^3.7 || ^4.0", + "vimeo/psalm": "^5.26.1 || ^6.1" + }, + "suggest": { + "brianium/paratest": "Required to run tests in parallel (^6.0).", + "ext-gd": "Required to use generate fake image files" }, + "type": "library", "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" - }, - "classmap": [ - "Resources/stubs" - ] + "Spiral\\Testing\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -11617,62 +10378,73 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Anton Titov (wolfy-j)", + "email": "wolfy-j@spiralscout.com" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Pavel Buchnev (butschster)", + "email": "pavel.buchnev@spiralscout.com" + }, + { + "name": "Aleksei Gagarin (roxblnfk)", + "email": "alexey.gagarin@spiralscout.com" + }, + { + "name": "Maksim Smakouz (msmakouz)", + "email": "maksim.smakouz@spiralscout.com" + }, + { + "name": "RoadRunner Community", + "homepage": "https://github.com/spiral/roadrunner/graphs/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", - "homepage": "https://symfony.com", + "description": "Spiral Framework testing SDK", + "homepage": "https://spiral.dev/", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "spiral", + "spiral-packages", + "testing" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.31.0" + "chat": "https://discord.gg/TFeEmCs", + "docs": "https://spiral.dev/docs/testing-start", + "issues": "https://github.com/spiral/testing/issues", + "source": "https://github.com/spiral/testing/tree/2.9.0" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sponsors/spiral", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2025-01-31T20:48:30+00:00" }, { - "name": "symfony/process", - "version": "v7.2.0", + "name": "symfony/filesystem", + "version": "v6.4.24", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "d34b22ba9390ec19d2dd966c40aa9e8462f27a7e" + "url": "https://github.com/symfony/filesystem.git", + "reference": "75ae2edb7cdcc0c53766c30b0a2512b8df574bd8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/d34b22ba9390ec19d2dd966c40aa9e8462f27a7e", - "reference": "d34b22ba9390ec19d2dd966c40aa9e8462f27a7e", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/75ae2edb7cdcc0c53766c30b0a2512b8df574bd8", + "reference": "75ae2edb7cdcc0c53766c30b0a2512b8df574bd8", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8" + }, + "require-dev": { + "symfony/process": "^5.4|^6.4|^7.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Process\\": "" + "Symfony\\Component\\Filesystem\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -11692,10 +10464,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Executes commands in sub-processes", + "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.2.0" + "source": "https://github.com/symfony/filesystem/tree/v6.4.24" }, "funding": [ { @@ -11706,35 +10478,38 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-11-06T14:24:19+00:00" + "time": "2025-07-10T08:14:14+00:00" }, { - "name": "symfony/stopwatch", - "version": "v7.2.0", + "name": "symfony/process", + "version": "v6.4.25", "source": { "type": "git", - "url": "https://github.com/symfony/stopwatch.git", - "reference": "696f418b0d722a4225e1c3d95489d262971ca924" + "url": "https://github.com/symfony/process.git", + "reference": "6be2f0c9ab3428587c07bed03aa9e3d1b823c6c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/696f418b0d722a4225e1c3d95489d262971ca924", - "reference": "696f418b0d722a4225e1c3d95489d262971ca924", + "url": "https://api.github.com/repos/symfony/process/zipball/6be2f0c9ab3428587c07bed03aa9e3d1b823c6c8", + "reference": "6be2f0c9ab3428587c07bed03aa9e3d1b823c6c8", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/service-contracts": "^2.5|^3" + "php": ">=8.1" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Stopwatch\\": "" + "Symfony\\Component\\Process\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -11754,10 +10529,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a way to profile code", + "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v7.2.0" + "source": "https://github.com/symfony/process/tree/v6.4.25" }, "funding": [ { @@ -11768,41 +10543,46 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-25T14:21:43+00:00" + "time": "2025-08-14T06:23:17+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.2.0", + "version": "v6.4.25", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "c6a22929407dec8765d6e2b6ff85b800b245879c" + "reference": "c6cd92486e9fc32506370822c57bc02353a5a92c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c6a22929407dec8765d6e2b6ff85b800b245879c", - "reference": "c6a22929407dec8765d6e2b6ff85b800b245879c", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c6cd92486e9fc32506370822c57bc02353a5a92c", + "reference": "c6cd92486e9fc32506370822c57bc02353a5a92c", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/console": "<6.4" + "symfony/console": "<5.4" }, "require-dev": { - "ext-iconv": "*", - "symfony/console": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/uid": "^6.4|^7.0", - "twig/twig": "^3.12" + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^6.3|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/uid": "^5.4|^6.0|^7.0", + "twig/twig": "^2.13|^3.0.4" }, "bin": [ "Resources/bin/var-dump-server" @@ -11840,7 +10620,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.2.0" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.25" }, "funding": [ { @@ -11851,32 +10631,36 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-11-08T15:48:14+00:00" + "time": "2025-08-13T09:41:44+00:00" }, { "name": "ta-tikoma/phpunit-architecture-test", - "version": "0.8.4", + "version": "0.8.5", "source": { "type": "git", "url": "https://github.com/ta-tikoma/phpunit-architecture-test.git", - "reference": "89f0dea1cb0f0d5744d3ec1764a286af5e006636" + "reference": "cf6fb197b676ba716837c886baca842e4db29005" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ta-tikoma/phpunit-architecture-test/zipball/89f0dea1cb0f0d5744d3ec1764a286af5e006636", - "reference": "89f0dea1cb0f0d5744d3ec1764a286af5e006636", + "url": "https://api.github.com/repos/ta-tikoma/phpunit-architecture-test/zipball/cf6fb197b676ba716837c886baca842e4db29005", + "reference": "cf6fb197b676ba716837c886baca842e4db29005", "shasum": "" }, "require": { "nikic/php-parser": "^4.18.0 || ^5.0.0", "php": "^8.1.0", "phpdocumentor/reflection-docblock": "^5.3.0", - "phpunit/phpunit": "^10.5.5 || ^11.0.0", + "phpunit/phpunit": "^10.5.5 || ^11.0.0 || ^12.0.0", "symfony/finder": "^6.4.0 || ^7.0.0" }, "require-dev": { @@ -11913,52 +10697,38 @@ ], "support": { "issues": "https://github.com/ta-tikoma/phpunit-architecture-test/issues", - "source": "https://github.com/ta-tikoma/phpunit-architecture-test/tree/0.8.4" + "source": "https://github.com/ta-tikoma/phpunit-architecture-test/tree/0.8.5" }, - "time": "2024-01-05T14:10:56+00:00" + "time": "2025-04-20T20:23:40+00:00" }, { "name": "thecodingmachine/safe", - "version": "v2.5.0", + "version": "dev-master", "source": { "type": "git", "url": "https://github.com/thecodingmachine/safe.git", - "reference": "3115ecd6b4391662b4931daac4eba6b07a2ac1f0" + "reference": "98d020e21833599d4fc5fb94a398790de6101562" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/3115ecd6b4391662b4931daac4eba6b07a2ac1f0", - "reference": "3115ecd6b4391662b4931daac4eba6b07a2ac1f0", + "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/98d020e21833599d4fc5fb94a398790de6101562", + "reference": "98d020e21833599d4fc5fb94a398790de6101562", "shasum": "" }, "require": { - "php": "^8.0" + "php": "^8.1" }, "require-dev": { - "phpstan/phpstan": "^1.5", - "phpunit/phpunit": "^9.5", - "squizlabs/php_codesniffer": "^3.2", - "thecodingmachine/phpstan-strict-rules": "^1.0" + "php-parallel-lint/php-parallel-lint": "^1.4", + "phpstan/phpstan": "^2", + "phpunit/phpunit": "^10", + "squizlabs/php_codesniffer": "^3.2" }, + "default-branch": true, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, "autoload": { "files": [ - "deprecated/apc.php", - "deprecated/array.php", - "deprecated/datetime.php", - "deprecated/libevent.php", - "deprecated/misc.php", - "deprecated/password.php", - "deprecated/mssql.php", - "deprecated/stats.php", - "deprecated/strings.php", "lib/special_cases.php", - "deprecated/mysqli.php", "generated/apache.php", "generated/apcu.php", "generated/array.php", @@ -11998,6 +10768,7 @@ "generated/mbstring.php", "generated/misc.php", "generated/mysql.php", + "generated/mysqli.php", "generated/network.php", "generated/oci8.php", "generated/opcache.php", @@ -12010,6 +10781,7 @@ "generated/ps.php", "generated/pspell.php", "generated/readline.php", + "generated/rnp.php", "generated/rpminfo.php", "generated/rrd.php", "generated/sem.php", @@ -12041,7 +10813,6 @@ "lib/DateTime.php", "lib/DateTimeImmutable.php", "lib/Exceptions/", - "deprecated/Exceptions/", "generated/Exceptions/" ] }, @@ -12052,9 +10823,27 @@ "description": "PHP core functions that throw exceptions instead of returning FALSE on error", "support": { "issues": "https://github.com/thecodingmachine/safe/issues", - "source": "https://github.com/thecodingmachine/safe/tree/v2.5.0" + "source": "https://github.com/thecodingmachine/safe/tree/master" }, - "time": "2023-04-05T11:54:14+00:00" + "funding": [ + { + "url": "https://github.com/OskarStark", + "type": "github" + }, + { + "url": "https://github.com/shish", + "type": "github" + }, + { + "url": "https://github.com/silasjoisten", + "type": "github" + }, + { + "url": "https://github.com/staabm", + "type": "github" + } + ], + "time": "2025-05-16T18:20:14+00:00" }, { "name": "theseer/tokenizer", @@ -12108,21 +10897,22 @@ }, { "name": "vimeo/psalm", - "version": "5.26.1", + "version": "6.5.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "d747f6500b38ac4f7dfc5edbcae6e4b637d7add0" + "reference": "38fc8444edf0cebc9205296ee6e30e906ade783b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/d747f6500b38ac4f7dfc5edbcae6e4b637d7add0", - "reference": "d747f6500b38ac4f7dfc5edbcae6e4b637d7add0", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/38fc8444edf0cebc9205296ee6e30e906ade783b", + "reference": "38fc8444edf0cebc9205296ee6e30e906ade783b", "shasum": "" }, "require": { - "amphp/amp": "^2.4.2", - "amphp/byte-stream": "^1.5", + "amphp/amp": "^3", + "amphp/byte-stream": "^2", + "amphp/parallel": "^2.3", "composer-runtime-api": "^2", "composer/semver": "^1.4 || ^2.0 || ^3.0", "composer/xdebug-handler": "^2.0 || ^3.0", @@ -12135,26 +10925,24 @@ "ext-simplexml": "*", "ext-tokenizer": "*", "felixfbecker/advanced-json-rpc": "^3.1", - "felixfbecker/language-server-protocol": "^1.5.2", + "felixfbecker/language-server-protocol": "^1.5.3", "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1 || ^1.0.0", "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", - "nikic/php-parser": "^4.17", - "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", - "sebastian/diff": "^4.0 || ^5.0 || ^6.0", + "nikic/php-parser": "^5.0.0", + "php": "~8.1.17 || ~8.2.4 || ~8.3.0 || ~8.4.0", + "sebastian/diff": "^4.0 || ^5.0 || ^6.0 || ^7.0", "spatie/array-to-xml": "^2.17.0 || ^3.0", - "symfony/console": "^4.1.6 || ^5.0 || ^6.0 || ^7.0", - "symfony/filesystem": "^5.4 || ^6.0 || ^7.0" - }, - "conflict": { - "nikic/php-parser": "4.17.0" + "symfony/console": "^6.0 || ^7.0", + "symfony/filesystem": "^6.0 || ^7.0" }, "provide": { "psalm/psalm": "self.version" }, "require-dev": { - "amphp/phpunit-util": "^2.0", + "amphp/phpunit-util": "^3", "bamarni/composer-bin-plugin": "^1.4", "brianium/paratest": "^6.9", + "dg/bypass-finals": "^1.5", "ext-curl": "*", "mockery/mockery": "^1.5", "nunomaduro/mock-final-classes": "^1.1", @@ -12162,10 +10950,10 @@ "phpstan/phpdoc-parser": "^1.6", "phpunit/phpunit": "^9.6", "psalm/plugin-mockery": "^1.1", - "psalm/plugin-phpunit": "^0.18", + "psalm/plugin-phpunit": "^0.19", "slevomat/coding-standard": "^8.4", "squizlabs/php_codesniffer": "^3.6", - "symfony/process": "^4.4 || ^5.0 || ^6.0 || ^7.0" + "symfony/process": "^6.0 || ^7.0" }, "suggest": { "ext-curl": "In order to send data to shepherd", @@ -12176,6 +10964,7 @@ "psalm-language-server", "psalm-plugin", "psalm-refactor", + "psalm-review", "psalter" ], "type": "project", @@ -12185,7 +10974,9 @@ "dev-2.x": "2.x-dev", "dev-3.x": "3.x-dev", "dev-4.x": "4.x-dev", - "dev-master": "5.x-dev" + "dev-5.x": "5.x-dev", + "dev-6.x": "6.x-dev", + "dev-master": "7.x-dev" } }, "autoload": { @@ -12200,6 +10991,10 @@ "authors": [ { "name": "Matthew Brown" + }, + { + "name": "Daniil Gentili", + "email": "daniil@daniil.it" } ], "description": "A static analysis tool for finding errors in PHP applications", @@ -12214,7 +11009,7 @@ "issues": "https://github.com/vimeo/psalm/issues", "source": "https://github.com/vimeo/psalm" }, - "time": "2024-09-08T18:53:08+00:00" + "time": "2025-02-07T20:42:25+00:00" }, { "name": "voku/portable-ascii", @@ -12290,86 +11085,6 @@ ], "time": "2024-11-21T01:49:47+00:00" }, - { - "name": "wayofdev/cs-fixer-config", - "version": "v1.5.3", - "source": { - "type": "git", - "url": "https://github.com/wayofdev/php-cs-fixer-config.git", - "reference": "aa0aae244772672f617de6e74d85ff81532f7e82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wayofdev/php-cs-fixer-config/zipball/aa0aae244772672f617de6e74d85ff81532f7e82", - "reference": "aa0aae244772672f617de6e74d85ff81532f7e82", - "shasum": "" - }, - "require": { - "friendsofphp/php-cs-fixer": "^3.57", - "php": "^8.1" - }, - "require-dev": { - "ergebnis/phpunit-slow-test-detector": "^2.14", - "pestphp/pest": "^2.34", - "phpstan/extension-installer": "^1.3", - "phpstan/phpstan": "^1.11", - "phpstan/phpstan-deprecation-rules": "^1.2", - "phpstan/phpstan-phpunit": "^1.4", - "phpstan/phpstan-strict-rules": "^1.6", - "phpunit/phpunit": "^10.5", - "psalm/plugin-phpunit": "^0.19", - "rector/rector": "^1.1", - "roave/infection-static-analysis-plugin": "^1.35", - "vimeo/psalm": "^5.24" - }, - "type": "library", - "extra": { - "composer-normalize": { - "indent-size": 4, - "indent-style": "space" - } - }, - "autoload": { - "psr-4": { - "WayOfDev\\PhpCsFixer\\Config\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Andrij Orlenko", - "email": "the@wayof.dev" - } - ], - "description": "๐Ÿงน Adds custom rule-sets to PHP CS Fixer for consistent coding standards.", - "homepage": "https://wayof.dev", - "keywords": [ - "code-quality", - "code-standards", - "code-style", - "configuration", - "php", - "php-cs-fixer", - "php-cs-fixer-config", - "php-cs-fixer-rules", - "static-analysis" - ], - "support": { - "issues": "https://github.com/wayofdev/php-cs-fixer-config/issues", - "security": "https://github.com/wayofdev/php-cs-fixer-config/blob/master/.github/SECURITY.md", - "source": "https://github.com/wayofdev/php-cs-fixer-config" - }, - "funding": [ - { - "url": "https://github.com/wayofdev", - "type": "github" - } - ], - "time": "2024-06-18T09:13:20+00:00" - }, { "name": "webmozart/assert", "version": "1.11.0", @@ -12561,17 +11276,15 @@ ], "aliases": [], "minimum-stability": "dev", - "stability-flags": { - "roave/security-advisories": 20 - }, + "stability-flags": {}, "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": ">=8.2" + "php": ">=8.1" }, "platform-dev": {}, "platform-overrides": { - "php": "8.2.17" + "php": "8.1.17" }, "plugin-api-version": "2.6.0" } diff --git a/docker-compose.yaml b/docker-compose.yaml index 7ec042c..e984318 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -12,8 +12,6 @@ services: - ~/.composer:/.composer env_file: - .env - environment: - PHIVE_HOME: /app/.phive trap: image: wayofdev/php-dev:8.3-cli-alpine-latest diff --git a/docs/.gitbook/assets/screenshot.png b/docs/.gitbook/assets/screenshot.png deleted file mode 100644 index 90d5e3d..0000000 Binary files a/docs/.gitbook/assets/screenshot.png and /dev/null differ diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index bdab37c..0000000 --- a/docs/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# Introduction - -### ๐Ÿ“„ What is Cycle Active Record? - -This library extends Cycle ORM by integrating the [Active Record pattern](https://en.wikipedia.org/wiki/Active\_record\_pattern), providing developers with an intuitive, object-centric way to interact with databases. - -Unlike Cycle ORM's default Data Mapper pattern, which separates the in-memory object representations from database operations, Active Record combines data access and business logic in a single entity. - -This allows for more straightforward and rapid development cycles, particularly for simpler CRUD operations, by enabling direct data manipulation through the object's properties and methods. - - - -### โญ๏ธ Key Features - -1. **Simplified Data Access**: Interact with database records through object properties and methods. -2. **Fluent Interface**: Chain methods for more readable and concise code. -3. **Built-in Query Builder**: Construct complex queries using an intuitive API. -4. **Automatic CRUD Operations**: Create, Read, Update, and Delete records with minimal code. -5. **Custom Query Classes**: Encapsulate and reuse complex queries. -6. **Integration with Existing Cycle ORM Features**: Leverage Cycle ORM's advanced capabilities when needed. - - - diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md deleted file mode 100644 index 549e425..0000000 --- a/docs/SUMMARY.md +++ /dev/null @@ -1,20 +0,0 @@ -# Table of contents - -## ๐ŸŸ  General - -* [Introduction](README.md) -* [Installation](general/installation.md) -* [Contributing](general/contributing.md) - -## ๐Ÿ’พ Active Entities - -* [Defining Entities](active-entities/defining-entities.md) -* [Retrieving Entities](active-entities/retrieving-entities.md) - -## ๐Ÿ” Active Queries - -* [Query Classes](active-queries/query-classes.md) - -## ๐Ÿญ Active Repositories - -* [Repositories](active-repositories/repositories.md) diff --git a/docs/active-entities/defining-entities.md b/docs/active-entities/defining-entities.md deleted file mode 100644 index a677364..0000000 --- a/docs/active-entities/defining-entities.md +++ /dev/null @@ -1,123 +0,0 @@ -# Defining Entities - -To work with the Cycle Active Record, you need to define entities that extend the `ActiveRecord` class. There are two common approaches to defining entities: the `strict` approach and the `fluent` approach. - -These approaches will be used as main examples across documentation to demonstrate various aspects of the library. - -{% tabs %} -{% tab title="Strict" %} -**Strict Approach:** - -In the strict approach, you define your entity with private properties and provide public getter and setter methods to access and modify the properties. - -This approach encapsulates the entity's internal state and provides better control over how the properties are accessed and modified. - -```php -name = $name; - $this->email = $email; - } - - public function id(): int - { - return $this->id; - } - - public function name(): string - { - return $this->name; - } - - public function changeName(string $name): void - { - $this->name = $name; - } - - public function email(): string - { - return $this->email; - } - - public function changeEmail(string $email): void - { - $this->email = $email; - } -} -``` -{% endtab %} - -{% tab title="Fluent " %} -**Fluent Approach:** - -In the fluent approach, you define your entity with public properties, allowing direct access to the properties without the need for explicit getter and setter methods. - -This approach leads to more concise and readable code, especially when dealing with simple entities. - -```php -name = $name; - $this->email = $email; - } -} -``` -{% endtab %} -{% endtabs %} - - - -### ๐Ÿ“š Entity Annotations - -Cycle Active Record uses PHP 8 attributes for entity mapping. These annotations allow you to define the structure of your entities, including table mappings, column definitions, and relationships. - -For a full and detailed guide on using annotations in Cycle ORM, please refer to the official Cycle ORM documentation: - -[Cycle ORM Annotated Entities](https://cycle-orm.dev/docs/annotated-entity/current/en) - - - diff --git a/docs/active-entities/retrieving-entities.md b/docs/active-entities/retrieving-entities.md deleted file mode 100644 index 519c292..0000000 --- a/docs/active-entities/retrieving-entities.md +++ /dev/null @@ -1,91 +0,0 @@ -# Retrieving Entities - -Once you have created [your first entities](defining-entities.md) and [configured](../general/installation.md) one of the adapter packages, you can begin retrieving entities from the database. - -Entities that extends `ActiveRecord` class includes powerful Cycle-ORM Query Builder allowing you to fluently query the database table associated with the Entity. - -Here is example with `findAll()` method, which will retrieve all of the records from the entity associated database table: - -{% tabs %} -{% tab title="Strict" %} -Example with private properties and public getter methods. The `findAll()` method returns all the records from the `users` table, and we can access the `name` property using the `name()` method. - -```php -name(); -} -``` -{% endtab %} - -{% tab title="Fluent" %} -If you are using the fluent approach with public properties, you can directly access the properties: - -```php -name; -} -``` -{% endtab %} -{% endtabs %} - -### ๐Ÿ› ๏ธ Building Queries - -The ActiveRecord `findAll()` method will return all of the results in the entity table. However, since each ActiveRecord Entity includes a [query builder](https://cycle-orm.dev/docs/query-builder-basic/current/en), you may add additional constraints using `query()` method and then invoke the `fetchAll()` method to retrieve the results: - -```php -where('active', 1) - ->orderBy('name') - ->fetchAll(); -``` - -In this example, we use the `query()` method to start building a query. - -{% hint style="info" %} -Since ActiveRecord Entities includes access to query builder, you should review all of the methods provided by Cycle [query builder](https://cycle-orm.dev/docs/query-builder-basic/current/en). You may use any of these methods when writing your queries. -{% endhint %} - -{% hint style="info" %} -For advanced usage of the query builder, this package provides a way to group your queries into separate Query classes by creating classes that extend the [`ActiveQuery`](../active-queries/query-classes.md) class. -{% endhint %} - -### ๐Ÿ—‚๏ธ Collections - -The Cycle Active Record team is constantly working on improving the library. Keep an eye on the [official repository](https://github.com/cycle/active-record) for updates and new features, such as the potential introduction of Collection support for query results. - -There is currently a Proof of Concept (PoC) Pull Request for introducing Collection support for query results: - -* [PR #20: Implement basic collections](https://github.com/cycle/active-record/pull/20) - -If you're interested in using Collections with Cycle Active Record, you can: - -1. Follow the progress of this PR -2. Contribute to the discussion by providing feedback or use cases -3. Help with the implementation if you have experience with Collections in ORMs - -Contributions from the community are welcome and can significantly impact the direction and features of the library. If Collections are a feature you're particularly interested in, consider getting involved in the development process. - -Remember to check the contribution guidelines before submitting any code or opening issues. - - - - - - - diff --git a/docs/active-queries/query-classes.md b/docs/active-queries/query-classes.md deleted file mode 100644 index d0ca862..0000000 --- a/docs/active-queries/query-classes.md +++ /dev/null @@ -1,95 +0,0 @@ -# Query Classes - -Query classes serve as a wrapper around the query builder provided by CycleORM, allowing for the grouping of common queries together for later reuse and separation. - -The `ActiveQuery` class extends CycleORM's `Select` class and is specifically designed to integrate with entities managed by `ActiveRecord`. It facilitates the creation of queries that can be easily maintained and reused throughout the application. - -### Standard Usage - -Entities that extend the `ActiveRecord` class automatically benefit from the `ActiveQuery` capabilities through the `query()` method: - -{% code title="ActiveRecord.php" %} -```php -public static function query(): ActiveQuery -{ - return new ActiveQuery(static::class); -} -``` -{% endcode %} - -This method provides a straightforward way to begin a query operation tailored to the entity's context. - -### Defining Custom Query Classes - -To encapsulate specific query logic, developers can create custom query classes that extend the `ActiveQuery` class. - -For instance, the `UserQuery` class might define methods to handle common requirements such as filtering by active status or sorting by creation time: - -{% code title="UserQuery.php" %} -```php -class UserQuery extends ActiveQuery -{ - public function active(bool $state = true): UserQuery - { - return $this->where(['active' => $state]); - } - - public function orderByCreatedAt(string $direction = 'ASC'): UserQuery - { - return $this->orderBy(['created_at' => $direction]); - } -} -``` -{% endcode %} - -By overriding the `query()` method in a derived entity class to return an instance of a custom query class, developers can significantly simplify the data access layer. This approach not only enhances code readability but also improves the organization of business logic: - -
<?php
-
-declare(strict_types=1);
-
-namespace Cycle\App\Entity;
-
-use Cycle\ActiveRecord\ActiveRecord;
-use Cycle\Annotated\Annotation\Column;
-use Cycle\Annotated\Annotation\Entity;
-use Cycle\App\Query\UserQuery;
-
-#[Entity(table: 'user')]
-class User extends ActiveRecord
-{
-    // ...
-
-    /**
-     * @return UserQuery<static>
-     */
-    public static function query(): UserQuery
-    {
-        return new UserQuery(static::class);
-    }
-}
-
- -### Usage Example - -Fetch all user records, which are not active and are ordered by `created-at` field in descending order: - -```php -active(false) - ->orderByCreatedAt('DESC') - ->fetchAll(); -``` - -### Advantages of Using ActiveQuery - -* **Organization**: Groups common queries, enhancing code organization and separation. -* **Reusability**: Promotes the reuse of query logic across different parts of the application. -* **Maintainability**: Simplifies maintenance by localizing query logic within dedicated classes - - - diff --git a/docs/active-repositories/repositories.md b/docs/active-repositories/repositories.md deleted file mode 100644 index 29000cd..0000000 --- a/docs/active-repositories/repositories.md +++ /dev/null @@ -1,10 +0,0 @@ -# Repositories - -Repositories in the Cycle ORM Active Record implementation provide a layer of abstraction between your domain/business logic and the data access layer. They encapsulate the logic for retrieving, storing, and querying entities, offering a consistent interface for working with your data. - -### ActiveRepository - -The `ActiveRepository` class is the core of the repository pattern in this Active Record implementation. It provides a set of methods to interact with your entities. - - - diff --git a/docs/general/contributing.md b/docs/general/contributing.md deleted file mode 100644 index d91dbb3..0000000 --- a/docs/general/contributing.md +++ /dev/null @@ -1,330 +0,0 @@ -# Contributing - -We appreciate your interest in contributing. This guide will help you get started, ensuring an effective collaboration. - -### ๐Ÿ‘‹ Introduction - -If you would like to contribute, please **open an issue** or a pull request. We are always looking for ways to improve the project and would love to hear your ideas. - -The latest changes are always in **`master`** branch, so please make your Pull Request against that branch. - -### ๐Ÿšฉ Development Requirements - -Before you begin, you will need to set up your local development environment. Here is what you'll need: - -* **Operating System**: macOS Monterey+, Linux, or Windows with WSL2. -* **Docker**: Version 26.0.0 or newer. Installation guides: - * [Docker on Ubuntu 22.04](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-22-04) - * [Docker Desktop on Mac](https://docs.docker.com/desktop/install/mac-install/) - -#### โ†’ Optional Tools - -* **Homebrew** (macOS only) - * Install via [brew.sh](https://brew.sh/). -* [Pre-commit](https://pre-commit.com) โ€” Automates the running of git pre-commit hooks. - * Installation: `brew install pre-commit` and `make hooks` -* [Cz-git](https://cz-git.qbb.sh) โ€” Commitizen adapter, that assists in formatting git commits. - * Installation: `brew install czg` - -### ๐Ÿš€ Quick Project Setup - -We use a dockerized environment. Follow these steps to start working with the project: - -1. **Clone this repository:** - - ```bash - git clone git@github.com:cycle/active-record.git \ - && cd ./active-record - ``` -2. **Create `.env` file:** - - ```bash - make env - ``` -3. **Install phive and composer dependencies:** - - ```bash - make phive - make install - ``` - -### ๐Ÿ”ง Using the Makefile - -This project uses a Makefile to streamline common development tasks. The Makefile includes utilities for managing Docker environments, installing project dependencies, running tests, and linting code. - -```bash -make help -``` - -

visual view of make help command

- -#### โ†’ Key Commands - -* `make env`: Creates a `.env` file from the `.env.example` template. -* `make install`: Installs project composer dependencies -* `make update`: Updates project composer dependencies -* `make up`: Starts all services using Docker Compose. -* `make down`: Stops and removes all services. -* `make logs`: Displays logs for all services. -* `make ssh`: Logs into the running application container for command line operations. -* `make lint`: Executes all linting procedures for YAML, PHP, and Composer files. -* `make commit`: Runs cz-git, a commitizen adapter for commit message formatting in a native environment. - -For a full list of commands, run `make help`. - -### ๐Ÿ’ป Workflow - -{% hint style="warning" %} -Please feature/fix/update... into individual PRs (not one changing everything) -{% endhint %} - -* **Fork the Repository**: Start by forking the repository to your GitHub account. -* **Create a Branch**: In your fork, create a new branch for your work. Name it appropriately based on the feature, fix, or update you're working on. -* **Make Your Changes**: Implement your changes -* **Run Tests**: Ensure all tests pass by running `make test`. -* **Update Documentation**: If you've made changes that affect the project's documentation, ensure it is updated. -* **Run Linters**: Ensure your code passes all linting checks using `make lint`. -* **Commit Your Changes**: Use the Conventional Commits standard for your commit messages. You can use `make commit` to assist in creating commit messages. -* **Push Your Changes**: Push your branch to your fork on GitHub. -* **Open a Pull Request**: Submit a pull request to the `master` branch of the original repository. Ensure your PR is focused, addressing a single feature, fix, or improvement. - -### ๐Ÿณ Docker Support - -This package leverages Docker to provide a consistent and isolated development environment. The included `Makefile` utilizes `docker-compose.yaml` along with the [wayofdev/docker-php-dev](https://github.com/wayofdev/docker-php-dev) PHP image to streamline setup and usage. This setup facilitates easy configuration of tools like XDebug for debugging and profiling, enhancing the development experience. - -To run docker container: - -```bash -make up -``` - -Other commands: - -```bash -# Login inside container -$ make ssh - -# Turn off containers -$ make down -``` - -By default, phpunit and phpstan commands will be ran against docker environment. - -### ๐Ÿ”จ Continuous Integration with GitHub Actions - -Our project employs [GitHub Actions](https://github.com/features/actions) for continuous integration, ensuring code quality and reliability. We encourage contributors to review our workflow configurations to understand the CI processes: - -
WorkflowDescription
apply-labels.ymlAuto labels PRs based on rules.
coding-standards.ymlChecks yaml, md, composer, php and commit coding standards.
create-release.ymlCreates a release on GitHub.
dependency-analysis.ymlChecks for dependency issues.
refactoring.ymlRuns rector/rector code check.
security-analysis.ymlChecks for security issues.
shellcheck.ymlChecks shell scripts.
static-analysis.ymlRuns psalm and phpstan tools.
testing.ymlRuns coverage, mutation and functional tests against SQLite
testing-mysql.ymlRuns functional tests against MySQL
testing-pgsql.ymlRuns functional tests against PostgreSQL
testing-sqlserver.ymlRuns functional tests against SQLServer (MSSQL)
- -### ๐Ÿ“ Before You Contribute - -* **Tests**: Include tests that cover any new features or bug fixes. -* **Code Quality**: Utilize `make lint` for code style checks and `make lint-stan lint-psalm` for static analysis with [PHPStan](https://phpstan.org) and [Psalm](https://psalm.dev/). -* **Documentation**: Update relevant documentation to reflect your changes, ensuring other developers can understand and use your contributions effectively. -* **Commits**: use Conventional Commits standard to create a commit - -### ๐Ÿ“ฉ Commit Message Guidelines - -We follow the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) standard. Please structure your commit messages as follows, using the appropriate prefix: - -**Examples:** - -```bash -git commit -am 'feat: some feature was introduced' -git commit -am 'fix: something has been fixed' -``` - -**Allowed Prefixes:** - -
PrefixPurpose
feat:Introduces a new feature
fix:Fixes a bug
perf:Improves performance
docs:Documentation only changes
style:Code style changes (formatting, missing semi-colons, etc.)
deps:Updates dependencies
refactor:Code changes that neither fixes a bug nor adds a feature
ci:Changes to our CI configuration files and scripts
test:Adding missing tests or correcting existing tests
revert:Reverts a previous commit
build:Changes that affect the build system or external dependencies
chore:Other changes that don't modify src or test files
security:A code change that fixes a security issue
- -### ๐Ÿ“ฆ PHAR Dependencies - -We use [Phive](https://phar.io/) to manage PHAR dependencies. You can install all dependencies using the `make phive` command, which will be executed through the Docker environment. - -```bash -make phive -``` - -### ๐Ÿ” Coding Standards - -We enforce coding standards to maintain high code quality and readability. Here's a list of tools we use: - -#### โ†’ Composer Normalization - -We use [`ergebnis/composer-normalize`](https://github.com/ergebnis/composer-normalize) to normalize `composer.json`. - -Use: - -```bash -make lint-composer -``` - -#### โ†’ Yaml Lint - -We use [`yamllint`](https://github.com/adrienverge/yamllint) to enforce coding standards in YAML files. - -To lint yaml files run: - -```bash -make lint-yaml -``` - -by default, [`cytopia/yamllint`](https://github.com/cytopia/docker-yamllint) Docker image will be used to run linter. - -#### โ†’ Action Lint - -We use [`actionlint`](https://github.com/rhysd/actionlint) to enforce coding standards in GitHub Actions workflows. - -To lint GitHub Actions run: - -```bash -make lint-actions -``` - -by default, [`rhysd/actionlint`](https://hub.docker.com/r/rhysd/actionlint/tags) Docker image will be used to run linter. - -#### โ†’ Markdown Lint - -We use [`markdownlint-cli2`](https://github.com/davidanson/markdownlint-cli2) to enforce coding standards in Markdown files. - -To lint markdown files run: - -```bash -make lint-md-dry -make lint-md -``` - -#### โ†’ PHP CS Fixer - -We use [`friendsofphp/php-cs-fixer`](https://github.com/FriendsOfPHP/PHP-CS-Fixer) together with [`wayofdev/php-cs-fixer-config`](https://github.com/wayofdev/php-cs-fixer-config) to enforce coding standards in PHP files. - -Run - -```bash -make lint-php -``` - -to automatically fix coding standard violations. - -#### โ†’ Rector - -We use [`rector/rector`](https://github.com/rectorphp/rector) to refactor and modernize PHP code. - -Run - -```bash -make refactor -``` - -to perform code refactoring. - -### ๐Ÿ”ฌ Dependency Analysis - -We use [`maglnet/composer-require-checker`](https://github.com/maglnet/ComposerRequireChecker) to prevent the use of unknown symbols in production code. - -Run - -```bash -make lint-deps -``` - -to run a dependency analysis. - -### ๐Ÿ”’ Security Audits - -We use Composer's built-in audit feature to check for known vulnerabilities in dependencies. - -Run - -```bash -make lint-audit -``` - -### ๐Ÿฆ  Mutation Tests - -We use [`infection/infection`](https://github.com/infection/infection) together with [`roave/infection-static-analysis-plugin`](https://github.com/Roave/infection-static-analysis-plugin) to ensure a minimum quality of the tests. Roave plugin is used to publish mutation score results to the [Stryker Dashboard](https://dashboard.stryker-mutator.io/). - -Xdebug support is enabled by default when running commands through the `Makefile`: - -```bash -make infect -``` - -to run mutation tests. - -### ๐Ÿ” Static Code Analysis - -We use both [`phpstan/phpstan`](https://github.com/phpstan/phpstan) and [`vimeo/psalm`](https://github.com/vimeo/psalm) to statically analyze the code. - -Run - -```bash -make lint-stan -make lint-psalm -``` - -to run a static code analysis. - -We also use the baseline features of [`phpstan/phpstan`](https://phpstan.org/user-guide/baseline) and [`vimeo/psalm`](https://psalm.dev/docs/running\_psalm/dealing\_with\_code\_issues/#using-a-baseline-file) to ignore existing issues. - -Run - -```bash -make lint-stan-baseline -make lint-psalm-baseline -``` - -to regenerate the baselines in: - -* `../phpstan-baseline.neon`. -* `../psalm-baseline.xml`. - -{% hint style="info" %} -Ideally, the baseline files should stay empty or shrink over time. -{% endhint %} - -### ๐Ÿงช Unit and Functional Tests - -We use [`phpunit/phpunit`](https://github.com/sebastianbergmann/phpunit) and [`pestphp/pest`](https://github.com/pestphp/pest) to drive the development. - -Run to run all the tests: - -```bash -# To run both, arch (pest) and unit (phpunit) tests -make test - -# To run only arch (pest) tests -make test-arch - -# To run only unit (phpunit) tests -make test-unit -``` - -### ๐Ÿ“ฆ Pre-commit Hooks - -Pre-commit hooks are an optional but highly recommended way to automate the linting and quality checks before committing changes to the repository. This project provides a predefined configuration that helps in maintaining code quality and consistency. - -#### โ†’ Configured Hooks - -Our pre-commit configuration includes several hooks: - -* **Trailing Whitespace**: Removes unnecessary trailing spaces. -* **End-of-File Fixer**: Ensures that files end with a newline. -* **Check Added Large Files**: Prevents accidentally adding large files to the git repository, with a current limit set to 600 KB. -* **Commitizen**: Ensures commit messages meet the conventional commit format. This hook is triggered at the commit message stage. -* **PHP-CS-Fixer:** Enforces coding standards in PHP files. -* **Markdown Lint:** Enforces coding standards in Markdown files. - -#### โ†’ Installing Pre-commit Hooks - -To utilize these hooks, you first need to install them using the command provided by the Makefile: - -```bash -make hooks -``` - - - - - diff --git a/docs/general/installation.md b/docs/general/installation.md deleted file mode 100644 index 3dbc577..0000000 --- a/docs/general/installation.md +++ /dev/null @@ -1,83 +0,0 @@ -# Installation - -### ๐Ÿšฉ Prerequisites - -Before you begin, ensure your development environment meets the following requirements: - -* **PHP Version:** 8.2 or higher -* **Composer** -* One of the Cycle ORM adapters: -* [`spiral/cycle-bridge`](https://github.com/spiral/cycle-bridge) official Cycle ORM adapter for the [Spiral Framework](https://github.com/spiral/framework) -* [`yiisoft/yii-cycle`](https://github.com/yiisoft/yii-cycle) โ€” official Cycle ORM adapter for the [Yii 3](https://www.yiiframework.com) -* [`wayofdev/laravel-cycle-orm-adapter`](https://github.com/wayofdev/laravel-cycle-orm-adapter) โ€” package managed by [@wayofdev](https://github.com/wayofdev) for the [Laravel](https://laravel.com) 10.x or higher. - -### ๐Ÿ’ฟ Installation - -The preferred way to install this package is through [Composer](https://getcomposer.org/). - -```bash -composer require cycle/active-record -``` - -After package install you need to, optionally, register bootloader / service-provider in your application. - -### ๐Ÿ”ง Framework-Specific Configuration - -#### โ†’ Spiral Framework - -If you are installing the package on the Spiral Framework with the [spiral-packages/discoverer](https://github.com/spiral-packages/discoverer) package, then you don't need to register Bootloader by yourself. It will be registered automatically. - -Otherwise, update the Bootloader list in your application configuration: - -```php - - - - - - - - tests/src/Arch - - - - - src - - - diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon deleted file mode 100644 index 22c0265..0000000 --- a/phpstan-baseline.neon +++ /dev/null @@ -1,51 +0,0 @@ -parameters: - ignoreErrors: - - - message: "#^Method Cycle\\\\ActiveRecord\\\\ActiveRecord\\:\\:make\\(\\) should return static\\(Cycle\\\\ActiveRecord\\\\ActiveRecord\\) but returns object\\.$#" - count: 1 - path: src/ActiveRecord.php - - - - message: "#^Method Cycle\\\\ORM\\\\EntityManagerInterface\\:\\:run\\(\\) invoked with 1 parameter, 0 required\\.$#" - count: 2 - path: src/ActiveRecord.php - - - - message: "#^Method Cycle\\\\ORM\\\\EntityManagerInterface\\:\\:run\\(\\) invoked with 2 parameters, 0 required\\.$#" - count: 1 - path: src/Internal/TransactionFacade.php - - - - message: "#^Template type TEntity is declared as covariant, but occurs in contravariant position in parameter select of method Cycle\\\\ActiveRecord\\\\Repository\\\\ActiveRepository\\:\\:with\\(\\)\\.$#" - count: 1 - path: src/Repository/ActiveRepository.php - - - - message: "#^Type mixed in generic type Cycle\\\\ORM\\\\Select\\ in PHPDoc tag @return is not subtype of template type TEntity of object of class Cycle\\\\ORM\\\\Select\\.$#" - count: 1 - path: src/Repository/ActiveRepository.php - - - - message: "#^Return type \\(Cycle\\\\App\\\\Query\\\\UserQuery\\) of method Cycle\\\\App\\\\Entity\\\\User\\:\\:query\\(\\) should be covariant with return type \\(Cycle\\\\ActiveRecord\\\\Query\\\\ActiveQuery\\\\) of method Cycle\\\\ActiveRecord\\\\ActiveRecord\\:\\:query\\(\\)$#" - count: 1 - path: tests/app/Entity/User.php - - - - message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertInstanceOf\\(\\) with 'Cycle\\\\\\\\App\\\\\\\\Entity\\\\\\\\User' and Cycle\\\\App\\\\Entity\\\\User will always evaluate to true\\.$#" - count: 1 - path: tests/src/Functional/ActiveRecordTest.php - - - - message: "#^Cannot call method isSuccess\\(\\) on null\\.$#" - count: 1 - path: tests/src/Functional/ActiveRecordTest.php - - - - message: "#^Result of method Cycle\\\\ActiveRecord\\\\ActiveRecord\\:\\:saveOrFail\\(\\) \\(void\\) is used\\.$#" - count: 1 - path: tests/src/Functional/ActiveRecordTest.php - - - - message: "#^Call to an undefined method Cycle\\\\Database\\\\Driver\\\\DriverInterface\\:\\:setLogger\\(\\)\\.$#" - count: 1 - path: tests/src/Functional/DatabaseTestCase.php diff --git a/phpstan.neon.dist b/phpstan.neon.dist deleted file mode 100644 index 46684a9..0000000 --- a/phpstan.neon.dist +++ /dev/null @@ -1,14 +0,0 @@ -includes: - - phpstan-baseline.neon - -parameters: - level: 5 - paths: - - src/ - - tests/ - - .php-cs-fixer.dist.php - - rector.php - excludePaths: - - tests/runtime/ - - tests/src/Arch/ - tmpDir: .build/phpstan/ diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 16fc71a..891283f 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -3,7 +3,7 @@ xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd" bootstrap="vendor/autoload.php" colors="true" - cacheResultFile=".build/phpunit/result.cache" + cacheResultFile="runtime/phpunit/result.cache" failOnWarning="true" failOnRisky="true" executionOrder="random" @@ -14,19 +14,22 @@ - + + tests/src/Arch + + tests/src/Functional - - - + + + - + diff --git a/psalm-baseline.xml b/psalm-baseline.xml index 2ed413c..a73da9e 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -1,38 +1,8 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + getLastError()]]> + diff --git a/psalm.xml b/psalm.xml index 1a7181a..80006f4 100644 --- a/psalm.xml +++ b/psalm.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://getpsalm.org/schema/config" xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd" - cacheDirectory=".build/psalm/" + cacheDirectory="runtime/psalm/" errorBaseline="psalm-baseline.xml" errorLevel="4" findUnusedBaselineEntry="true" @@ -14,7 +14,10 @@ - + + + + diff --git a/rector.php b/rector.php index 0175c9b..e8fea27 100644 --- a/rector.php +++ b/rector.php @@ -8,7 +8,7 @@ use Rector\ValueObject; return static function (Config\RectorConfig $rectorConfig): void { - $rectorConfig->cacheDirectory(__DIR__ . '/.build/rector/'); + $rectorConfig->cacheDirectory(__DIR__ . '/runtime/rector/'); $rectorConfig->import(__DIR__ . '/vendor/fakerphp/faker/rector-migrate.php'); diff --git a/src/ActiveRecord.php b/src/ActiveRecord.php index d801793..4d4337c 100644 --- a/src/ActiveRecord.php +++ b/src/ActiveRecord.php @@ -74,10 +74,27 @@ final public static function findAll(array $scope = []): iterable /** * Execute a callback within a single transaction. * - * All the ActiveRecord write operations within the callback will be registered - * using the Entity Manager without being executed until the end of the callback. + * Collects all the ActiveRecord operations within the callback and executes them + * in a single {@see EntityManagerInterface} at the end of the callback. * - * @note DBAL operations will not be executed within the transaction. Use {@see self::transact()} for that. + * ``` + * ActiveRecord::groupActions(static function (EntityManagerInterface $em) use ($user, $post): void { + * $user->saveOrFail(); + * $post->saveOrFail(); + * }); + * ``` + * + * @note DBAL operations will not be collected and executed automatically + * within the EM transaction. Use {@see self::transact()} if you need to + * execute QueryBuilder and other DBAL operations within the same transaction. + * + * @note The difference between this method and {@see self::transact()} is that + * this method opens a new transaction only when all the operations were collected + * and are ready to be executed, while {@see self::transact()} opens a transaction + * immediately when the callback is called. + * + * @note Nested calls to this method will use separated Unit of Works, but transactions + * will be reused according to the given mode. * * @template TResult * @param callable(EntityManagerInterface): TResult $callback @@ -101,8 +118,32 @@ final public static function groupActions( * If an exception is thrown within the callback, the transaction will be rolled back. * If the callback returns a value, the transaction will be committed. * + * All the ORM operations within the callback will be executed in the opened transaction without collecting. + * If you need to collect ORM operations and execute them in a separated inner transaction, + * use {@see self::groupActions()} within the callback. + * + * ``` + * ActiveRecord::transact(function (DatabaseInterface $db, EntityManagerInterface $em) use ($service): void { + * $user = User::query()->forUpdate()->wherePK(1)->fetchOne(); + * $service->process($user); + * // ORM action will be executed right away + * $user->save(); + * + * // DBAL action + * $db->getDriver()->execute('UPDATE some_table SET some_field = ? WHERE id = ?', ['value', 123]); + * + * // EM executes action right away, you don't need to call $em->run() + * $em->persist(new Post('Title', 'Content')); + * }); + * ``` + * + * @note If you call this method from a child class, the child database connection will be used for + * the transaction. If you call this method from the `ActiveRecord` class, the default database connection + * will be used. + * * @template TResult - * @param callable(DatabaseInterface): TResult $callback + * @param callable(DatabaseInterface, EntityManagerInterface): TResult $callback Note that the provided + * Entity Manager doesn't collect operations and executes them right away in the opened transaction. * @return TResult * * @throws TransactionException @@ -136,9 +177,9 @@ final public function save(bool $cascade = true): bool { $transacting = TransactionFacade::getEntityManager(); if ($transacting === null) { - return Facade::getEntityManager() + return TransactionFacade::createEntityManager(TransactionMode::Ignore) ->persist($this, $cascade) - ->run(false) + ->run() ->isSuccess(); } @@ -148,13 +189,14 @@ final public function save(bool $cascade = true): bool /** * Persist the entity and throw an exception if an error occurs. - * The exception will be thrown if the action is happening not in a {@see self::transcat()} scope. + * If the method is called inside a {@see self::groupActions()}, the exception WILL NOT be thrown. * * @throws \Throwable */ final public function saveOrFail(bool $cascade = true): void { - TransactionFacade::getEntityManager()?->persist($this, $cascade) ?? Facade::getEntityManager() + TransactionFacade::getEntityManager() + ?->persist($this, $cascade) ?? TransactionFacade::createEntityManager(TransactionMode::Ignore) ->persist($this, $cascade) ->run(); } @@ -166,9 +208,9 @@ final public function delete(bool $cascade = true): bool { $transacting = TransactionFacade::getEntityManager(); if ($transacting === null) { - return Facade::getEntityManager() + return TransactionFacade::createEntityManager(TransactionMode::Ignore) ->delete($this, $cascade) - ->run(false) + ->run() ->isSuccess(); } @@ -178,13 +220,14 @@ final public function delete(bool $cascade = true): bool /** * Delete the entity and throw an exception if an error occurs. - * The exception will be thrown if the action is happening not in a {@see self::transcat()} scope. + * If the method is called inside a {@see self::groupActions()}, the exception WILL NOT be thrown. * * @throws \Throwable */ final public function deleteOrFail(bool $cascade = true): void { - TransactionFacade::getEntityManager()?->delete($this, $cascade) ?? Facade::getEntityManager() + TransactionFacade::getEntityManager() + ?->delete($this, $cascade) ?? TransactionFacade::createEntityManager(TransactionMode::Ignore) ->delete($this, $cascade) ->run(); } diff --git a/src/Facade.php b/src/Facade.php index 5d71e00..e8d319a 100644 --- a/src/Facade.php +++ b/src/Facade.php @@ -6,8 +6,6 @@ use Cycle\ActiveRecord\Exception\ConfigurationException; use Cycle\Database\DatabaseManager; -use Cycle\ORM\EntityManager; -use Cycle\ORM\EntityManagerInterface; use Cycle\ORM\ORMInterface; use Psr\Container\ContainerInterface; use Psr\Container\NotFoundExceptionInterface; @@ -18,11 +16,7 @@ class Facade { private static ?ORMInterface $orm = null; - - private static ?EntityManagerInterface $entityManager = null; - private static ?ContainerInterface $container = null; - private static ?DatabaseManager $dbal = null; public static function setContainer(ContainerInterface $container): void @@ -46,16 +40,10 @@ public static function getDatabaseManager(): DatabaseManager return self::$dbal ??= self::getFromContainer(DatabaseManager::class); } - public static function getEntityManager(): EntityManagerInterface - { - return self::$entityManager ??= new EntityManager(self::getOrm()); - } - public static function reset(): void { self::$orm = null; self::$dbal = null; - self::$entityManager = null; self::$container = null; } diff --git a/src/Internal/EmptyState.php b/src/Internal/EmptyState.php new file mode 100644 index 0000000..a27d48e --- /dev/null +++ b/src/Internal/EmptyState.php @@ -0,0 +1,34 @@ +error !== null; + } + + public function getLastError(): ?\Throwable + { + return $this->error; + } + + public function retry(): StateInterface + { + return $this; + } +} diff --git a/src/Internal/EntityManager.php b/src/Internal/EntityManager.php new file mode 100644 index 0000000..917536d --- /dev/null +++ b/src/Internal/EntityManager.php @@ -0,0 +1,74 @@ +getUow()->persistState($entity, $cascade); + $this->autoExecute and $this->run(); + return $this; + } + + public function persist(object $entity, bool $cascade = true): EntityManagerInterface + { + $this->getUow()->persistDeferred($entity, $cascade); + $this->autoExecute and $this->run(); + return $this; + } + + public function delete(object $entity, bool $cascade = true): EntityManagerInterface + { + $this->getUow()->delete($entity, $cascade); + $this->autoExecute and $this->run(); + return $this; + } + + /** + * @throws \Throwable + */ + public function run(): StateInterface + { + if ($this->uow === null) { + return new EmptyState(); + } + + $state = $this->uow->run(); + $this->clean(); + $state->isSuccess() or throw $state->getLastError(); + return $state; + } + + public function clean(): static + { + $this->uow = null; + return $this; + } + + private function getUow(): UnitOfWork + { + return $this->uow ??= ($this->factory)(); + } +} diff --git a/src/Internal/TransactionFacade.php b/src/Internal/TransactionFacade.php index cf87fbd..4f61afa 100644 --- a/src/Internal/TransactionFacade.php +++ b/src/Internal/TransactionFacade.php @@ -7,25 +7,38 @@ use Cycle\ActiveRecord\Exception\Transaction\TransactionException; use Cycle\ActiveRecord\Facade; use Cycle\ActiveRecord\TransactionMode; +use Cycle\Database\DatabaseInterface; use Cycle\ORM\EntityManagerInterface; use Cycle\ORM\Service\SourceProviderInterface; use Cycle\ORM\Transaction\Runner; +use Cycle\ORM\Transaction\UnitOfWork; /** * @internal */ final class TransactionFacade { - private static ?EntityManagerInterface $em = null; + private static ?EntityManager $em = null; public static function getEntityManager(): ?EntityManagerInterface { return self::$em; } + /** + * Create a new EntityManager with its own UnitOfWork and Transaction Runner. + */ + public static function createEntityManager( + TransactionMode $mode = TransactionMode::OpenNew, + ): EntityManagerInterface { + return new EntityManager( + static fn(): UnitOfWork => new UnitOfWork(Facade::getOrm(), self::getRunner($mode)), + ); + } + /** * @template TResult - * @param callable(): TResult $callback + * @param callable(EntityManagerInterface): TResult $callback * @return TResult * * @throws TransactionException @@ -35,29 +48,24 @@ public static function groupOrmActions( callable $callback, TransactionMode $mode = TransactionMode::OpenNew, ): mixed { - $runner = match ($mode) { - TransactionMode::Ignore => Runner::outerTransaction(strict: false), - TransactionMode::Current => Runner::outerTransaction(strict: true), - TransactionMode::OpenNew => Runner::innerTransaction(), - }; - - self::$em === null or throw new TransactionException( - 'A transaction is already in progress.', - ); - self::$em = Facade::getEntityManager(); + $runner = self::getRunner($mode); + $previous = self::$em; try { + self::$em = new EntityManager( + static fn(): UnitOfWork => new UnitOfWork(Facade::getOrm(), $runner), + ); $result = $callback(self::$em); - self::$em->run(true, $runner); + self::$em->run(); return $result; } finally { - self::$em = null; + self::$em = $previous; } } /** * @template TResult - * @param callable(): TResult $callback + * @param callable(DatabaseInterface, EntityManagerInterface): TResult $callback * @param class-string|null $entity If null, the default database will be used. * @return TResult * @@ -75,6 +83,30 @@ public static function transact( ->getSource($entity) ->getDatabase(); - return $dbal->transaction($callback); + return $dbal->transaction(static function (DatabaseInterface $db) use ($callback): mixed { + $previous = self::$em; + try { + self::$em = $em = new EntityManager( + static fn(): UnitOfWork => new UnitOfWork(Facade::getOrm(), Runner::outerTransaction(strict: true)), + autoExecute: true, + ); + + return $callback($db, $em); + } finally { + self::$em = $previous; + } + }); + } + + /** + * Create a transaction runner based on the provided mode. + */ + private static function getRunner(TransactionMode $mode): Runner + { + return match ($mode) { + TransactionMode::Ignore => Runner::outerTransaction(strict: false), + TransactionMode::Current => Runner::outerTransaction(strict: true), + TransactionMode::OpenNew => Runner::innerTransaction(), + }; } } diff --git a/src/Query/ActiveQuery.php b/src/Query/ActiveQuery.php index a54be8f..3d34007 100644 --- a/src/Query/ActiveQuery.php +++ b/src/Query/ActiveQuery.php @@ -28,7 +28,7 @@ public function __construct( parent::__construct($this->orm, $role); } - public function getRole(): string + final public function getRole(): string { return $this->role; } diff --git a/src/Repository/ActiveRepository.php b/src/Repository/ActiveRepository.php index 6bb8a44..a170ace 100644 --- a/src/Repository/ActiveRepository.php +++ b/src/Repository/ActiveRepository.php @@ -21,8 +21,6 @@ * * @see self::forUpdate() as an example of immutabile method. * - * @internal - * * @template-covariant TEntity of object */ class ActiveRepository @@ -81,12 +79,20 @@ public function findAll(array $scope = [], array $orderBy = []): iterable } /** + * Return a new repository instance with the "FOR UPDATE" mode enabled. + * + * This method does not modify the current repository instance, but returns a new one. + * It is useful for performing row-level locking in a transaction. + * * @return $this * @mutation-free */ public function forUpdate(): static { - return $this->with($this->select()->forUpdate()); + return $this->with( + // Change Select or ActiveQuery like this + $this->select()->forUpdate(), + ); } /** @@ -108,7 +114,7 @@ final public function select(): Select * * @return $this */ - protected function with(Select $select): static + final protected function with(Select $select): static { $repository = clone $this; $repository->select = $select; diff --git a/tests/src/Functional/Loggable.php b/tests/app/Testing/Loggable.php similarity index 94% rename from tests/src/Functional/Loggable.php rename to tests/app/Testing/Loggable.php index 4804a07..04bce2c 100644 --- a/tests/src/Functional/Loggable.php +++ b/tests/app/Testing/Loggable.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Cycle\Tests\Functional; +namespace Cycle\App\Testing; use Cycle\Database\Driver\DriverInterface; diff --git a/tests/src/Functional/TestCase.php b/tests/app/Testing/TestCase.php similarity index 94% rename from tests/src/Functional/TestCase.php rename to tests/app/Testing/TestCase.php index d5f4b31..f72deb1 100644 --- a/tests/src/Functional/TestCase.php +++ b/tests/app/Testing/TestCase.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Cycle\Tests\Functional; +namespace Cycle\App\Testing; use Cycle\ActiveRecord\Bridge\Spiral\Bootloader\ActiveRecordBootloader; use Cycle\App\Bootloader\AppBootloader; diff --git a/tests/src/Functional/TestLogger.php b/tests/app/Testing/TestLogger.php similarity index 98% rename from tests/src/Functional/TestLogger.php rename to tests/app/Testing/TestLogger.php index 6e23927..77e566c 100644 --- a/tests/src/Functional/TestLogger.php +++ b/tests/app/Testing/TestLogger.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Cycle\Tests\Functional; +namespace Cycle\App\Testing; use Psr\Log\LoggerInterface; use Psr\Log\LoggerTrait; @@ -13,23 +13,15 @@ class TestLogger implements LoggerInterface use LoggerTrait; private const ERROR_COLOR = "\033[31m"; - private const ALERT_COLOR = "\033[35m"; - private const SHOW_COLOR = "\033[34m"; - private const SELECT_COLOR = "\033[32m"; - private const INSERT_COLOR = "\033[36m"; - private const OTHER_COLOR = "\033[33m"; - private const SYSTEM_QUERY_COLOR = "\033[90m"; private bool $display = false; - private int $countWrites = 0; - private int $countReads = 0; public function countWriteQueries(): int diff --git a/tests/src/Arch/DebugTest.php b/tests/src/Arch/DebugTest.php index 9d2c487..6584436 100644 --- a/tests/src/Arch/DebugTest.php +++ b/tests/src/Arch/DebugTest.php @@ -2,7 +2,39 @@ declare(strict_types=1); -arch('do not forget dumps in your production code') - ->expect(['trap', 'dd', 'dump', 'exit', 'die', 'print_r', 'var_dump', 'echo', 'print']) - ->not - ->toBeUsed(); +namespace Cycle\Tests\Arch; + +use PHPUnit\Architecture\ArchitectureAsserts; +use PHPUnit\Framework\TestCase; + +final class DebugTest extends TestCase +{ + use ArchitectureAsserts; + + protected array $excludedPaths = [ + 'tests', + 'vendor', + ]; + + public function testForgottenDebugFunctions(): void + { + $functions = ['dd', 'exit', 'die', 'var_dump', 'echo', 'print', 'dump', 'tr', 'td', 'error_log', 'trap']; + $layer = $this->layer(); + + foreach ($layer as $object) { + foreach ($object->uses as $use) { + foreach ($functions as $function) { + $function === $use and throw new \Exception( + \sprintf( + 'Function `%s()` is used in %s.', + $function, + $object->name, + ), + ); + } + } + } + + $this->assertTrue(true); + } +} diff --git a/tests/src/Arch/InheritanceTest.php b/tests/src/Arch/InheritanceTest.php new file mode 100644 index 0000000..45123ad --- /dev/null +++ b/tests/src/Arch/InheritanceTest.php @@ -0,0 +1,39 @@ +name); } - /** - * @throws \Throwable - */ #[Test] public function it_saves_entity(): void { @@ -82,9 +81,6 @@ public function it_saves_entity(): void self::assertSame($result->name, $user->name); } - /** - * @throws \Throwable - */ #[Test] public function it_triggers_exception_when_tries_to_save_entity_using_save_or_fail(): void { @@ -104,9 +100,6 @@ public function it_triggers_exception_when_tries_to_save_entity_using_save_or_fa self::assertCount(2, User::findAll()); } - /** - * @throws \Throwable - */ #[Test] public function it_persists_multiple_entities_in_single_grouping_actions_transaction(): void { @@ -127,9 +120,6 @@ public function it_persists_multiple_entities_in_single_grouping_actions_transac self::assertSame($savedUserTwo->name, $userTwo->name); } - /** - * @throws \Throwable - */ #[Test] public function it_deletes_entity(): void { @@ -140,9 +130,16 @@ public function it_deletes_entity(): void self::assertCount(1, User::findAll()); } - /** - * @throws \Throwable - */ + #[Test] + public function it_deletes_entity_or_fail_without_fail(): void + { + $user = User::findByPK(1); + self::assertNotNull($user); + + $user->deleteOrFail(); + self::assertCount(1, User::findAll()); + } + #[Test] public function it_deletes_multiple_entities_in_single_transaction_using_grouping_actions(): void { @@ -191,10 +188,9 @@ public function it_runs_grouping_actions_in_current_transaction_mode_without_ope } #[Test] + #[DoesNotPerformAssertions] public function it_runs_grouping_actions_in_grouping_actions(): void { - self::expectException(TransactionException::class); - ActiveRecord::groupActions(static function () { return ActiveRecord::groupActions(static fn() => true); }, TransactionMode::Current); @@ -211,9 +207,6 @@ public function it_runs_grouping_actions_in_strict_mode_outside_transaction(): v }, TransactionMode::Current); } - /** - * @throws \Throwable - */ #[Test] public function it_runs_grouping_actions_without_transaction_inside_manually_opened_transaction(): void { @@ -236,11 +229,8 @@ public function it_runs_grouping_actions_without_transaction_inside_manually_ope self::assertSame($savedUserTwo->name, $userTwo->name); } - /** - * @throws \Throwable - */ #[Test] - public function it_runs_transaction_calling_on_entity_class(): void + public function it_runs_transaction_with_group_actions_calling_on_entity_class(): void { User::transact(static function (DatabaseInterface $dbal) use (&$userOne, &$userTwo): void { User::groupActions(static function (EntityManagerInterface $em) use (&$userOne, &$userTwo): void { @@ -260,4 +250,42 @@ public function it_runs_transaction_calling_on_entity_class(): void $savedUserTwo = $this->selectEntity(User::class, cleanHeap: true)->wherePK($userTwo->id)->fetchOne(); self::assertSame($savedUserTwo->name, $userTwo->name); } + + #[Test] + public function it_runs_transaction_with_orm_actions(): void + { + User::transact(function ( + DatabaseInterface $dbal, + EntityManagerInterface $em, + ) use (&$user1, &$user2, &$user3, &$user4): void { + $user1 = new User('Foo'); + $user2 = new User('Bar'); + $user3 = new User('Baz'); + $user4 = new User('Qux'); + $user1->save(); + $user2->saveOrFail(); + $em->persist($user3); + $em->persistState($user4); + }); + + self::assertCount(6, User::findAll()); + + $savedUserOne = $this->selectEntity(User::class, cleanHeap: true)->wherePK($user1->id)->fetchOne(); + self::assertSame($savedUserOne->name, $user1->name); + + $savedUserTwo = $this->selectEntity(User::class, cleanHeap: true)->wherePK($user2->id)->fetchOne(); + self::assertSame($savedUserTwo->name, $user2->name); + + $savedUserThree = $this->selectEntity(User::class, cleanHeap: true)->wherePK($user3->id)->fetchOne(); + self::assertSame($savedUserThree->name, $user3->name); + + $savedUserFour = $this->selectEntity(User::class, cleanHeap: true)->wherePK($user4->id)->fetchOne(); + self::assertSame($savedUserFour->name, $user4->name); + } + + #[Test] + public function query_method_returns_ActiveQuery(): void + { + self::assertInstanceOf(ActiveQuery::class, Identity::query()); + } } diff --git a/tests/src/Functional/Bridge/Spiral/Bootloader/ActiveRecordBootloaderTest.php b/tests/src/Functional/Bridge/Spiral/Bootloader/ActiveRecordBootloaderTest.php index 7308129..4b7b9d6 100644 --- a/tests/src/Functional/Bridge/Spiral/Bootloader/ActiveRecordBootloaderTest.php +++ b/tests/src/Functional/Bridge/Spiral/Bootloader/ActiveRecordBootloaderTest.php @@ -4,8 +4,8 @@ namespace Cycle\Tests\Functional\Bridge\Spiral\Bootloader; +use Cycle\App\Testing\TestCase; use Cycle\ORM\ORMInterface; -use Cycle\Tests\Functional\TestCase; use PHPUnit\Framework\Attributes\Test; final class ActiveRecordBootloaderTest extends TestCase diff --git a/tests/src/Functional/DatabaseTestCase.php b/tests/src/Functional/DatabaseTestCase.php index 0891537..bbc260b 100644 --- a/tests/src/Functional/DatabaseTestCase.php +++ b/tests/src/Functional/DatabaseTestCase.php @@ -5,6 +5,8 @@ namespace Cycle\Tests\Functional; use Cycle\ActiveRecord\Facade; +use Cycle\App\Testing\Loggable; +use Cycle\App\Testing\TestCase; use Cycle\Database\Database; use Cycle\Database\DatabaseInterface; use Cycle\Database\DatabaseManager; @@ -19,7 +21,6 @@ class DatabaseTestCase extends TestCase use Loggable; protected DatabaseInterface $database; - protected ORMInterface $orm; public function getDriver(): DriverInterface diff --git a/tests/src/Functional/FacadeTest.php b/tests/src/Functional/FacadeTest.php index de921d6..7ba2425 100644 --- a/tests/src/Functional/FacadeTest.php +++ b/tests/src/Functional/FacadeTest.php @@ -6,7 +6,7 @@ use Cycle\ActiveRecord\Exception\ConfigurationException; use Cycle\ActiveRecord\Facade; -use Cycle\ORM\EntityManager; +use Cycle\App\Testing\TestCase; use Cycle\ORM\ORMInterface; use Exception as CoreException; use PHPUnit\Framework\Attributes\Test; @@ -98,28 +98,6 @@ public function it_throws_exception_when_container_does_not_have_orm_set(): void } } - /** - * @throws Exception - */ - #[Test] - public function it_gets_entity_manager_from_facade(): void - { - $container = $this->createMock(ContainerInterface::class); - $orm = $this->createMock(ORMInterface::class); - - $container - ->expects(self::once()) - ->method('get') - ->with(ORMInterface::class) - ->willReturn($orm); - - Facade::setContainer($container); - - $entityManager = Facade::getEntityManager(); - - self::assertInstanceOf(EntityManager::class, $entityManager); - } - protected function setUp(): void { parent::setUp(); diff --git a/tests/src/Functional/Internal/EmptyStateTest.php b/tests/src/Functional/Internal/EmptyStateTest.php new file mode 100644 index 0000000..26e29dc --- /dev/null +++ b/tests/src/Functional/Internal/EmptyStateTest.php @@ -0,0 +1,62 @@ +isSuccess()); + self::assertNull($state->getLastError()); + } + + #[Test] + public function it_creates_empty_state_with_error(): void + { + $error = new \Exception('Test error'); + $state = new EmptyState($error); + + self::assertTrue($state->isSuccess()); + self::assertSame($error, $state->getLastError()); + } + + #[Test] + public function it_returns_self_on_retry(): void + { + $state = new EmptyState(); + $retryState = $state->retry(); + + self::assertSame($state, $retryState); + } + + #[Test] + public function it_returns_self_on_retry_with_error(): void + { + $error = new \RuntimeException('Runtime error'); + $state = new EmptyState($error); + $retryState = $state->retry(); + + self::assertSame($state, $retryState); + self::assertSame($error, $retryState->getLastError()); + } + + #[Test] + public function it_handles_different_throwable_types(): void + { + $error = new \Error('Fatal error'); + $state = new EmptyState($error); + + self::assertTrue($state->isSuccess()); + self::assertSame($error, $state->getLastError()); + self::assertInstanceOf(\Error::class, $state->getLastError()); + } +} diff --git a/tests/src/Functional/Repository/ActiveRepositoryTest.php b/tests/src/Functional/Repository/ActiveRepositoryTest.php index 1b3a831..e0eb043 100644 --- a/tests/src/Functional/Repository/ActiveRepositoryTest.php +++ b/tests/src/Functional/Repository/ActiveRepositoryTest.php @@ -58,4 +58,38 @@ public function it_uses_custom_repository_with_active_query(): void self::assertInstanceOf(User::class, $user); self::assertSame($letter, $user->name[0]); } + + #[Test] + public function it_fetches_all_entities(): void + { + $repository = new ActiveRepository(User::class); + + $users = $repository->findAll(); + + self::assertCount(2, $users); + foreach ($users as $user) { + self::assertInstanceOf(User::class, $user); + } + } + + #[Test] + public function select_method_immutability(): void + { + $repository = new ActiveRepository(User::class); + + $select1 = $repository->select(); + $select2 = $repository->select(); + + self::assertNotSame($select1, $select2); + } + + #[Test] + public function forUpdate_method_immutability(): void + { + $repository = new ActiveRepository(User::class); + $repo1 = $repository->forUpdate(); + $repo2 = $repository->forUpdate(); + + self::assertNotSame($repo1, $repo2); + } }