diff --git a/.editorconfig b/.editorconfig
index 3b0bc951..6cbeb8bc 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -16,3 +16,11 @@ insert_final_newline = true
[*.md]
trim_trailing_whitespace = false
+
+[*.yml]
+indent_style = space
+indent_size = 2
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml
new file mode 100644
index 00000000..59efe8d6
--- /dev/null
+++ b/.github/workflows/continuous-integration.yml
@@ -0,0 +1,86 @@
+name: Continuous Integration
+
+on:
+ - push
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ testing:
+ name: Testing and Code Quality for PHP
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ php:
+ - '7.4'
+ - '8.0'
+ - '8.1'
+ env:
+ KAFKA_BROKER_CONNECTIONS: 'localhost:9092'
+ services:
+ zookeeper:
+ image: bitnami/zookeeper
+ env:
+ ALLOW_ANONYMOUS_LOGIN: yes
+ kafka:
+ image: bitnami/kafka
+ ports:
+ - '9092:9092'
+ env:
+ KAFKA_LISTENERS: 'PLAINTEXT://:9092'
+ KAFKA_CFG_ADVERTISED_LISTENERS: 'PLAINTEXT://localhost:9092'
+ KAFKA_CFG_ZOOKEEPER_CONNECT: 'zookeeper:2181'
+ ALLOW_PLAINTEXT_LISTENER: yes
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+ with:
+ fetch-depth: 0
+
+ - name: Setup PHP cache environment
+ id: php-ext-cache
+ uses: shivammathur/cache-extensions@v1
+ with:
+ php-version: ${{ matrix.php }}
+ extensions: rdkafka-arnaud-lb/php-rdkafka@6.0.3
+ key: metamorphosis-php-extensions-${{ matrix.php }}
+
+ - name: Cache PHP extensions
+ uses: actions/cache@v3
+ with:
+ path: ${{ steps.php-ext-cache.outputs.dir }}
+ key: ${{ steps.php-ext-cache.outputs.key }}
+ restore-keys: ${{ steps.php-ext-cache.outputs.key }}
+
+ - name: Setup PHP
+ uses: shivammathur/setup-php@v2
+ env:
+ RDKAFKA_LIBS: librdkafka-dev
+ with:
+ php-version: ${{ matrix.php }}
+ extensions: rdkafka-arnaud-lb/php-rdkafka@6.0.3
+ tools: cs2pr
+
+ - name: Cache composer dependencies
+ uses: actions/cache@v3
+ with:
+ path: vendor
+ key: metamorphosis-vendor-${{ hashFiles('composer.lock') }}
+
+ - name: Composer
+ uses: ramsey/composer-install@v2
+
+ - name: Run code standards
+ run: vendor/bin/phpcs -q --report=checkstyle | cs2pr
+
+ - name: Run psalm
+ run: vendor/bin/psalm --php-version=${{ matrix.php }} --output-format=github
+
+ - name: Run tests
+ run: vendor/bin/phpunit
+
+ - name: Report Coverage
+ continue-on-error: true
+ run: CODACY_PROJECT_TOKEN=${{ secrets.CODACY_PROJECT_TOKEN }} bash <(curl -Ls https://coverage.codacy.com/get.sh) report
diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml
deleted file mode 100644
index 1e1df0f3..00000000
--- a/.github/workflows/push.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-on: [push]
-name: Tests
-jobs:
- setup-and-tests:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
-
- - name: Build containers
- run: docker-compose build --build-arg UID=$(id -u) --build-arg GID=$(id -g)
-
- - name: Composer install
- run: docker-compose run --rm -T php composer install --no-interaction --no-progress
-
- - name: Run Code Standards
- run: docker-compose run --rm -T php vendor/bin/phpcs
-
- - name: Run Tests
- run: docker-compose run --rm -T php vendor/bin/phpunit
-
- - name: Report Coverage
- run: CODACY_PROJECT_TOKEN=${{ secrets.CODACY_PROJECT_TOKEN }} bash <(curl -Ls https://coverage.codacy.com/get.sh) report
diff --git a/composer.json b/composer.json
index 28df9049..6e68715f 100644
--- a/composer.json
+++ b/composer.json
@@ -7,25 +7,26 @@
],
"description": "Kafka package for laravel applications",
"require": {
- "ext-rdkafka": "*",
+ "ext-rdkafka": ">=4.0",
"ext-json": "*",
"guzzlehttp/guzzle": "^6.5.0 || ^7.0",
"illuminate/support": "^5.5 || ^6.0 || ^7.0 || ^8.0",
"illuminate/console": "^5.5 || ^6.0 || ^7.0 || ^8.0",
"illuminate/config": "^5.5 || ^6.0 || ^7.0 || ^8.0",
- "php": ">=7.1",
- "wikimedia/avro": "^1.7"
+ "php": ">=7.4",
+ "wikimedia/avro": "^1.9.0"
},
"require-dev": {
- "leroy-merlin-br/coding-standard": "^1.0.1",
- "phpunit/phpunit": "^9.4.3",
- "mockery/mockery": "^1.3.0",
- "kwn/php-rdkafka-stubs": "~1.1.0",
- "orchestra/testbench": "^6.0",
+ "leroy-merlin-br/coding-standard": "^v3.1.0",
+ "phpunit/phpunit": "^9.5.27",
+ "mockery/mockery": "^1.5.1",
+ "kwn/php-rdkafka-stubs": "^2.2.1",
+ "orchestra/testbench": "^6.25.1",
"dms/phpunit-arraysubset-asserts": "^0.2.1",
- "phpro/grumphp": "^1.5",
- "vimeo/psalm": "^4.18",
- "psalm/plugin-mockery": "^0.9.1"
+ "phpro/grumphp": "^1.13.0",
+ "vimeo/psalm": "^4.30.0",
+ "psalm/plugin-mockery": "^0.9.1",
+ "rector/rector": "^0.13.10"
},
"autoload": {
"psr-4": {
@@ -58,5 +59,11 @@
"@composer install",
"vendor/bin/grumphp git:init"
]
+ },
+ "config": {
+ "allow-plugins": {
+ "dealerdirect/phpcodesniffer-composer-installer": true,
+ "phpro/grumphp": true
+ }
}
}
diff --git a/composer.lock b/composer.lock
index a5b88475..2d508fb6 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "6f57d9ed1bb3086e3155d3ac4204fdfe",
+ "content-hash": "af22a3400640796726b61a692ed5b532",
"packages": [
{
"name": "brick/math",
@@ -66,30 +66,105 @@
],
"time": "2021-08-15T20:50:18+00:00"
},
+ {
+ "name": "dflydev/dot-access-data",
+ "version": "v3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/dflydev/dflydev-dot-access-data.git",
+ "reference": "f41715465d65213d644d3141a6a93081be5d3549"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://github.com/gitapi/repos/dflydev/dflydev-dot-access-data/zipball/f41715465d65213d644d3141a6a93081be5d3549",
+ "reference": "f41715465d65213d644d3141a6a93081be5d3549",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^0.12.42",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3",
+ "scrutinizer/ocular": "1.6.0",
+ "squizlabs/php_codesniffer": "^3.5",
+ "vimeo/psalm": "^4.0.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Dflydev\\DotAccessData\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Dragonfly Development Inc.",
+ "email": "info@dflydev.com",
+ "homepage": "http://dflydev.com"
+ },
+ {
+ "name": "Beau Simensen",
+ "email": "beau@dflydev.com",
+ "homepage": "http://beausimensen.com"
+ },
+ {
+ "name": "Carlos Frutos",
+ "email": "carlos@kiwing.it",
+ "homepage": "https://github.com/cfrutos"
+ },
+ {
+ "name": "Colin O'Dell",
+ "email": "colinodell@gmail.com",
+ "homepage": "https://www.colinodell.com"
+ }
+ ],
+ "description": "Given a deep data structure, access data by dot notation.",
+ "homepage": "https://github.com/dflydev/dflydev-dot-access-data",
+ "keywords": [
+ "access",
+ "data",
+ "dot",
+ "notation"
+ ],
+ "support": {
+ "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues",
+ "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.2"
+ },
+ "time": "2022-10-27T11:44:00+00:00"
+ },
{
"name": "doctrine/inflector",
- "version": "2.0.4",
+ "version": "2.0.6",
"source": {
"type": "git",
"url": "https://github.com/doctrine/inflector.git",
- "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89"
+ "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89",
- "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89",
+ "url": "https://github.com/gitapi/repos/doctrine/inflector/zipball/d9d313a36c872fd6ee06d9a6cbcf713eaa40f024",
+ "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024",
"shasum": ""
},
"require": {
"php": "^7.2 || ^8.0"
},
"require-dev": {
- "doctrine/coding-standard": "^8.2",
- "phpstan/phpstan": "^0.12",
- "phpstan/phpstan-phpunit": "^0.12",
- "phpstan/phpstan-strict-rules": "^0.12",
- "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0",
- "vimeo/psalm": "^4.10"
+ "doctrine/coding-standard": "^10",
+ "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"
},
"type": "library",
"autoload": {
@@ -139,7 +214,7 @@
],
"support": {
"issues": "https://github.com/doctrine/inflector/issues",
- "source": "https://github.com/doctrine/inflector/tree/2.0.4"
+ "source": "https://github.com/doctrine/inflector/tree/2.0.6"
},
"funding": [
{
@@ -155,7 +230,7 @@
"type": "tidelift"
}
],
- "time": "2021-10-22T20:16:43+00:00"
+ "time": "2022-10-20T09:10:12+00:00"
},
{
"name": "doctrine/lexer",
@@ -235,16 +310,16 @@
},
{
"name": "dragonmantank/cron-expression",
- "version": "v3.3.1",
+ "version": "v3.3.2",
"source": {
"type": "git",
"url": "https://github.com/dragonmantank/cron-expression.git",
- "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa"
+ "reference": "782ca5968ab8b954773518e9e49a6f892a34b2a8"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa",
- "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa",
+ "url": "https://github.com/gitapi/repos/dragonmantank/cron-expression/zipball/782ca5968ab8b954773518e9e49a6f892a34b2a8",
+ "reference": "782ca5968ab8b954773518e9e49a6f892a34b2a8",
"shasum": ""
},
"require": {
@@ -284,7 +359,7 @@
],
"support": {
"issues": "https://github.com/dragonmantank/cron-expression/issues",
- "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.1"
+ "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.2"
},
"funding": [
{
@@ -292,7 +367,7 @@
"type": "github"
}
],
- "time": "2022-01-18T15:43:28+00:00"
+ "time": "2022-09-10T18:51:20+00:00"
},
{
"name": "egulias/email-validator",
@@ -364,24 +439,24 @@
},
{
"name": "graham-campbell/result-type",
- "version": "v1.0.4",
+ "version": "v1.1.0",
"source": {
"type": "git",
"url": "https://github.com/GrahamCampbell/Result-Type.git",
- "reference": "0690bde05318336c7221785f2a932467f98b64ca"
+ "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca",
- "reference": "0690bde05318336c7221785f2a932467f98b64ca",
+ "url": "https://github.com/gitapi/repos/GrahamCampbell/Result-Type/zipball/a878d45c1914464426dc94da61c9e1d36ae262a8",
+ "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8",
"shasum": ""
},
"require": {
- "php": "^7.0 || ^8.0",
- "phpoption/phpoption": "^1.8"
+ "php": "^7.2.5 || ^8.0",
+ "phpoption/phpoption": "^1.9"
},
"require-dev": {
- "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8"
+ "phpunit/phpunit": "^8.5.28 || ^9.5.21"
},
"type": "library",
"autoload": {
@@ -410,7 +485,7 @@
],
"support": {
"issues": "https://github.com/GrahamCampbell/Result-Type/issues",
- "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.0.4"
+ "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.0"
},
"funding": [
{
@@ -422,20 +497,20 @@
"type": "tidelift"
}
],
- "time": "2021-11-21T21:41:47+00:00"
+ "time": "2022-07-30T15:56:11+00:00"
},
{
"name": "guzzlehttp/guzzle",
- "version": "7.4.5",
+ "version": "7.5.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
- "reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82"
+ "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/guzzle/guzzle/zipball/1dd98b0564cb3f6bd16ce683cb755f94c10fbd82",
- "reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82",
+ "url": "https://github.com/gitapi/repos/guzzle/guzzle/zipball/b50a2a1251152e43f6a37f0fa053e730a67d25ba",
+ "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba",
"shasum": ""
},
"require": {
@@ -450,10 +525,10 @@
"psr/http-client-implementation": "1.0"
},
"require-dev": {
- "bamarni/composer-bin-plugin": "^1.4.1",
+ "bamarni/composer-bin-plugin": "^1.8.1",
"ext-curl": "*",
"php-http/client-integration-tests": "^3.0",
- "phpunit/phpunit": "^8.5.5 || ^9.3.5",
+ "phpunit/phpunit": "^8.5.29 || ^9.5.23",
"psr/log": "^1.1 || ^2.0 || ^3.0"
},
"suggest": {
@@ -463,8 +538,12 @@
},
"type": "library",
"extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": false
+ },
"branch-alias": {
- "dev-master": "7.4-dev"
+ "dev-master": "7.5-dev"
}
},
"autoload": {
@@ -530,7 +609,7 @@
],
"support": {
"issues": "https://github.com/guzzle/guzzle/issues",
- "source": "https://github.com/guzzle/guzzle/tree/7.4.5"
+ "source": "https://github.com/guzzle/guzzle/tree/7.5.0"
},
"funding": [
{
@@ -546,20 +625,20 @@
"type": "tidelift"
}
],
- "time": "2022-06-20T22:16:13+00:00"
+ "time": "2022-08-28T15:39:27+00:00"
},
{
"name": "guzzlehttp/promises",
- "version": "1.5.1",
+ "version": "1.5.2",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
- "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da"
+ "reference": "b94b2807d85443f9719887892882d0329d1e2598"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da",
- "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da",
+ "url": "https://github.com/gitapi/repos/guzzle/promises/zipball/b94b2807d85443f9719887892882d0329d1e2598",
+ "reference": "b94b2807d85443f9719887892882d0329d1e2598",
"shasum": ""
},
"require": {
@@ -614,7 +693,7 @@
],
"support": {
"issues": "https://github.com/guzzle/promises/issues",
- "source": "https://github.com/guzzle/promises/tree/1.5.1"
+ "source": "https://github.com/guzzle/promises/tree/1.5.2"
},
"funding": [
{
@@ -630,20 +709,20 @@
"type": "tidelift"
}
],
- "time": "2021-10-22T20:56:57+00:00"
+ "time": "2022-08-28T14:55:35+00:00"
},
{
"name": "guzzlehttp/psr7",
- "version": "2.4.0",
+ "version": "2.4.3",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
- "reference": "13388f00956b1503577598873fffb5ae994b5737"
+ "reference": "67c26b443f348a51926030c83481b85718457d3d"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/guzzle/psr7/zipball/13388f00956b1503577598873fffb5ae994b5737",
- "reference": "13388f00956b1503577598873fffb5ae994b5737",
+ "url": "https://github.com/gitapi/repos/guzzle/psr7/zipball/67c26b443f348a51926030c83481b85718457d3d",
+ "reference": "67c26b443f348a51926030c83481b85718457d3d",
"shasum": ""
},
"require": {
@@ -657,15 +736,19 @@
"psr/http-message-implementation": "1.0"
},
"require-dev": {
- "bamarni/composer-bin-plugin": "^1.4.1",
+ "bamarni/composer-bin-plugin": "^1.8.1",
"http-interop/http-factory-tests": "^0.9",
- "phpunit/phpunit": "^8.5.8 || ^9.3.10"
+ "phpunit/phpunit": "^8.5.29 || ^9.5.23"
},
"suggest": {
"laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
},
"type": "library",
"extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": false
+ },
"branch-alias": {
"dev-master": "2.4-dev"
}
@@ -729,7 +812,7 @@
],
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
- "source": "https://github.com/guzzle/psr7/tree/2.4.0"
+ "source": "https://github.com/guzzle/psr7/tree/2.4.3"
},
"funding": [
{
@@ -745,20 +828,20 @@
"type": "tidelift"
}
],
- "time": "2022-06-20T21:43:11+00:00"
+ "time": "2022-10-26T14:07:24+00:00"
},
{
"name": "laravel/framework",
- "version": "v8.83.18",
+ "version": "v8.83.27",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
- "reference": "db8188e9cc8359a5c6706fa9d9f55aad7f235077"
+ "reference": "e1afe088b4ca613fb96dc57e6d8dbcb8cc2c6b49"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/laravel/framework/zipball/db8188e9cc8359a5c6706fa9d9f55aad7f235077",
- "reference": "db8188e9cc8359a5c6706fa9d9f55aad7f235077",
+ "url": "https://github.com/gitapi/repos/laravel/framework/zipball/e1afe088b4ca613fb96dc57e6d8dbcb8cc2c6b49",
+ "reference": "e1afe088b4ca613fb96dc57e6d8dbcb8cc2c6b49",
"shasum": ""
},
"require": {
@@ -918,29 +1001,30 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
- "time": "2022-06-28T14:30:38+00:00"
+ "time": "2022-12-08T15:28:55+00:00"
},
{
"name": "laravel/serializable-closure",
- "version": "v1.2.0",
+ "version": "v1.2.2",
"source": {
"type": "git",
"url": "https://github.com/laravel/serializable-closure.git",
- "reference": "09f0e9fb61829f628205b7c94906c28740ff9540"
+ "reference": "47afb7fae28ed29057fdca37e16a84f90cc62fae"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/laravel/serializable-closure/zipball/09f0e9fb61829f628205b7c94906c28740ff9540",
- "reference": "09f0e9fb61829f628205b7c94906c28740ff9540",
+ "url": "https://github.com/gitapi/repos/laravel/serializable-closure/zipball/47afb7fae28ed29057fdca37e16a84f90cc62fae",
+ "reference": "47afb7fae28ed29057fdca37e16a84f90cc62fae",
"shasum": ""
},
"require": {
"php": "^7.3|^8.0"
},
"require-dev": {
- "pestphp/pest": "^1.18",
- "phpstan/phpstan": "^0.12.98",
- "symfony/var-dumper": "^5.3"
+ "nesbot/carbon": "^2.61",
+ "pestphp/pest": "^1.21.3",
+ "phpstan/phpstan": "^1.8.2",
+ "symfony/var-dumper": "^5.4.11"
},
"type": "library",
"extra": {
@@ -977,46 +1061,58 @@
"issues": "https://github.com/laravel/serializable-closure/issues",
"source": "https://github.com/laravel/serializable-closure"
},
- "time": "2022-05-16T17:09:47+00:00"
+ "time": "2022-09-08T13:45:54+00:00"
},
{
"name": "league/commonmark",
- "version": "1.6.7",
+ "version": "2.3.8",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/commonmark.git",
- "reference": "2b8185c13bc9578367a5bf901881d1c1b5bbd09b"
+ "reference": "c493585c130544c4e91d2e0e131e6d35cb0cbc47"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/thephpleague/commonmark/zipball/2b8185c13bc9578367a5bf901881d1c1b5bbd09b",
- "reference": "2b8185c13bc9578367a5bf901881d1c1b5bbd09b",
+ "url": "https://github.com/gitapi/repos/thephpleague/commonmark/zipball/c493585c130544c4e91d2e0e131e6d35cb0cbc47",
+ "reference": "c493585c130544c4e91d2e0e131e6d35cb0cbc47",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
- "php": "^7.1 || ^8.0"
- },
- "conflict": {
- "scrutinizer/ocular": "1.7.*"
+ "league/config": "^1.1.1",
+ "php": "^7.4 || ^8.0",
+ "psr/event-dispatcher": "^1.0",
+ "symfony/deprecation-contracts": "^2.1 || ^3.0",
+ "symfony/polyfill-php80": "^1.16"
},
"require-dev": {
- "cebe/markdown": "~1.0",
- "commonmark/commonmark.js": "0.29.2",
- "erusev/parsedown": "~1.0",
+ "cebe/markdown": "^1.0",
+ "commonmark/cmark": "0.30.0",
+ "commonmark/commonmark.js": "0.30.0",
+ "composer/package-versions-deprecated": "^1.8",
+ "embed/embed": "^4.4",
+ "erusev/parsedown": "^1.0",
"ext-json": "*",
"github/gfm": "0.29.0",
- "michelf/php-markdown": "~1.4",
- "mikehaertl/php-shellcommand": "^1.4",
- "phpstan/phpstan": "^0.12.90",
- "phpunit/phpunit": "^7.5 || ^8.5 || ^9.2",
- "scrutinizer/ocular": "^1.5",
- "symfony/finder": "^4.2"
+ "michelf/php-markdown": "^1.4 || ^2.0",
+ "nyholm/psr7": "^1.5",
+ "phpstan/phpstan": "^1.8.2",
+ "phpunit/phpunit": "^9.5.21",
+ "scrutinizer/ocular": "^1.8.1",
+ "symfony/finder": "^5.3 | ^6.0",
+ "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0",
+ "unleashedtech/php-coding-standard": "^3.1.1",
+ "vimeo/psalm": "^4.24.0 || ^5.0.0"
+ },
+ "suggest": {
+ "symfony/yaml": "v2.3+ required if using the Front Matter extension"
},
- "bin": [
- "bin/commonmark"
- ],
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "2.4-dev"
+ }
+ },
"autoload": {
"psr-4": {
"League\\CommonMark\\": "src"
@@ -1034,7 +1130,7 @@
"role": "Lead Developer"
}
],
- "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and Github-Flavored Markdown (GFM)",
+ "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)",
"homepage": "https://commonmark.thephpleague.com",
"keywords": [
"commonmark",
@@ -1048,6 +1144,7 @@
],
"support": {
"docs": "https://commonmark.thephpleague.com/",
+ "forum": "https://github.com/thephpleague/commonmark/discussions",
"issues": "https://github.com/thephpleague/commonmark/issues",
"rss": "https://github.com/thephpleague/commonmark/releases.atom",
"source": "https://github.com/thephpleague/commonmark"
@@ -1070,20 +1167,102 @@
"type": "tidelift"
}
],
- "time": "2022-01-13T17:18:13+00:00"
+ "time": "2022-12-10T16:02:17+00:00"
+ },
+ {
+ "name": "league/config",
+ "version": "v1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/config.git",
+ "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://github.com/gitapi/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3",
+ "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3",
+ "shasum": ""
+ },
+ "require": {
+ "dflydev/dot-access-data": "^3.0.1",
+ "nette/schema": "^1.2",
+ "php": "^7.4 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.8.2",
+ "phpunit/phpunit": "^9.5.5",
+ "scrutinizer/ocular": "^1.8.1",
+ "unleashedtech/php-coding-standard": "^3.1",
+ "vimeo/psalm": "^4.7.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "League\\Config\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Colin O'Dell",
+ "email": "colinodell@gmail.com",
+ "homepage": "https://www.colinodell.com",
+ "role": "Lead Developer"
+ }
+ ],
+ "description": "Define configuration arrays with strict schemas and access values with dot notation",
+ "homepage": "https://config.thephpleague.com",
+ "keywords": [
+ "array",
+ "config",
+ "configuration",
+ "dot",
+ "dot-access",
+ "nested",
+ "schema"
+ ],
+ "support": {
+ "docs": "https://config.thephpleague.com/",
+ "issues": "https://github.com/thephpleague/config/issues",
+ "rss": "https://github.com/thephpleague/config/releases.atom",
+ "source": "https://github.com/thephpleague/config"
+ },
+ "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"
+ }
+ ],
+ "time": "2022-12-11T20:36:23+00:00"
},
{
"name": "league/flysystem",
- "version": "1.1.9",
+ "version": "1.1.10",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/flysystem.git",
- "reference": "094defdb4a7001845300334e7c1ee2335925ef99"
+ "reference": "3239285c825c152bcc315fe0e87d6b55f5972ed1"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/thephpleague/flysystem/zipball/094defdb4a7001845300334e7c1ee2335925ef99",
- "reference": "094defdb4a7001845300334e7c1ee2335925ef99",
+ "url": "https://github.com/gitapi/repos/thephpleague/flysystem/zipball/3239285c825c152bcc315fe0e87d6b55f5972ed1",
+ "reference": "3239285c825c152bcc315fe0e87d6b55f5972ed1",
"shasum": ""
},
"require": {
@@ -1156,7 +1335,7 @@
],
"support": {
"issues": "https://github.com/thephpleague/flysystem/issues",
- "source": "https://github.com/thephpleague/flysystem/tree/1.1.9"
+ "source": "https://github.com/thephpleague/flysystem/tree/1.1.10"
},
"funding": [
{
@@ -1164,7 +1343,7 @@
"type": "other"
}
],
- "time": "2021-12-09T09:40:50+00:00"
+ "time": "2022-10-04T09:16:37+00:00"
},
{
"name": "league/mime-type-detection",
@@ -1224,16 +1403,16 @@
},
{
"name": "monolog/monolog",
- "version": "2.7.0",
+ "version": "2.8.0",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
- "reference": "5579edf28aee1190a798bfa5be8bc16c563bd524"
+ "reference": "720488632c590286b88b80e62aa3d3d551ad4a50"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/Seldaek/monolog/zipball/5579edf28aee1190a798bfa5be8bc16c563bd524",
- "reference": "5579edf28aee1190a798bfa5be8bc16c563bd524",
+ "url": "https://github.com/gitapi/repos/Seldaek/monolog/zipball/720488632c590286b88b80e62aa3d3d551ad4a50",
+ "reference": "720488632c590286b88b80e62aa3d3d551ad4a50",
"shasum": ""
},
"require": {
@@ -1253,11 +1432,10 @@
"guzzlehttp/psr7": "^2.2",
"mongodb/mongodb": "^1.8",
"php-amqplib/php-amqplib": "~2.4 || ^3",
- "php-console/php-console": "^3.1.3",
"phpspec/prophecy": "^1.15",
"phpstan/phpstan": "^0.12.91",
"phpunit/phpunit": "^8.5.14",
- "predis/predis": "^1.1",
+ "predis/predis": "^1.1 || ^2.0",
"rollbar/rollbar": "^1.3 || ^2 || ^3",
"ruflin/elastica": "^7",
"swiftmailer/swiftmailer": "^5.3|^6.0",
@@ -1277,7 +1455,6 @@
"graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
"mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)",
"php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
- "php-console/php-console": "Allow sending log messages to Google Chrome",
"rollbar/rollbar": "Allow sending log messages to Rollbar",
"ruflin/elastica": "Allow sending log messages to an Elastic Search server"
},
@@ -1312,7 +1489,7 @@
],
"support": {
"issues": "https://github.com/Seldaek/monolog/issues",
- "source": "https://github.com/Seldaek/monolog/tree/2.7.0"
+ "source": "https://github.com/Seldaek/monolog/tree/2.8.0"
},
"funding": [
{
@@ -1324,20 +1501,20 @@
"type": "tidelift"
}
],
- "time": "2022-06-09T08:59:12+00:00"
+ "time": "2022-07-24T11:55:47+00:00"
},
{
"name": "nesbot/carbon",
- "version": "2.59.1",
+ "version": "2.64.0",
"source": {
"type": "git",
"url": "https://github.com/briannesbitt/Carbon.git",
- "reference": "a9000603ea337c8df16cc41f8b6be95a65f4d0f5"
+ "reference": "889546413c97de2d05063b8cb7b193c2531ea211"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/briannesbitt/Carbon/zipball/a9000603ea337c8df16cc41f8b6be95a65f4d0f5",
- "reference": "a9000603ea337c8df16cc41f8b6be95a65f4d0f5",
+ "url": "https://github.com/gitapi/repos/briannesbitt/Carbon/zipball/889546413c97de2d05063b8cb7b193c2531ea211",
+ "reference": "889546413c97de2d05063b8cb7b193c2531ea211",
"shasum": ""
},
"require": {
@@ -1348,7 +1525,7 @@
"symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0"
},
"require-dev": {
- "doctrine/dbal": "^2.0 || ^3.0",
+ "doctrine/dbal": "^2.0 || ^3.1.4",
"doctrine/orm": "^2.7",
"friendsofphp/php-cs-fixer": "^3.0",
"kylekatarnls/multi-tester": "^2.0",
@@ -1426,7 +1603,154 @@
"type": "tidelift"
}
],
- "time": "2022-06-29T21:43:55+00:00"
+ "time": "2022-11-26T17:36:00+00:00"
+ },
+ {
+ "name": "nette/schema",
+ "version": "v1.2.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nette/schema.git",
+ "reference": "abbdbb70e0245d5f3bf77874cea1dfb0c930d06f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://github.com/gitapi/repos/nette/schema/zipball/abbdbb70e0245d5f3bf77874cea1dfb0c930d06f",
+ "reference": "abbdbb70e0245d5f3bf77874cea1dfb0c930d06f",
+ "shasum": ""
+ },
+ "require": {
+ "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0",
+ "php": ">=7.1 <8.3"
+ },
+ "require-dev": {
+ "nette/tester": "^2.3 || ^2.4",
+ "phpstan/phpstan-nette": "^1.0",
+ "tracy/tracy": "^2.7"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause",
+ "GPL-2.0-only",
+ "GPL-3.0-only"
+ ],
+ "authors": [
+ {
+ "name": "David Grudl",
+ "homepage": "https://davidgrudl.com"
+ },
+ {
+ "name": "Nette Community",
+ "homepage": "https://nette.org/contributors"
+ }
+ ],
+ "description": "📐 Nette Schema: validating data structures against a given Schema.",
+ "homepage": "https://nette.org",
+ "keywords": [
+ "config",
+ "nette"
+ ],
+ "support": {
+ "issues": "https://github.com/nette/schema/issues",
+ "source": "https://github.com/nette/schema/tree/v1.2.3"
+ },
+ "time": "2022-10-13T01:24:26+00:00"
+ },
+ {
+ "name": "nette/utils",
+ "version": "v3.2.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nette/utils.git",
+ "reference": "02a54c4c872b99e4ec05c4aec54b5a06eb0f6368"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://github.com/gitapi/repos/nette/utils/zipball/02a54c4c872b99e4ec05c4aec54b5a06eb0f6368",
+ "reference": "02a54c4c872b99e4ec05c4aec54b5a06eb0f6368",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2 <8.3"
+ },
+ "conflict": {
+ "nette/di": "<3.0.6"
+ },
+ "require-dev": {
+ "nette/tester": "~2.0",
+ "phpstan/phpstan": "^1.0",
+ "tracy/tracy": "^2.3"
+ },
+ "suggest": {
+ "ext-gd": "to use Image",
+ "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()",
+ "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()",
+ "ext-json": "to use Nette\\Utils\\Json",
+ "ext-mbstring": "to use Strings::lower() etc...",
+ "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()",
+ "ext-xml": "to use Strings::length() etc. when mbstring is not available"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.2-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause",
+ "GPL-2.0-only",
+ "GPL-3.0-only"
+ ],
+ "authors": [
+ {
+ "name": "David Grudl",
+ "homepage": "https://davidgrudl.com"
+ },
+ {
+ "name": "Nette Community",
+ "homepage": "https://nette.org/contributors"
+ }
+ ],
+ "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.",
+ "homepage": "https://nette.org",
+ "keywords": [
+ "array",
+ "core",
+ "datetime",
+ "images",
+ "json",
+ "nette",
+ "paginator",
+ "password",
+ "slugify",
+ "string",
+ "unicode",
+ "utf-8",
+ "utility",
+ "validation"
+ ],
+ "support": {
+ "issues": "https://github.com/nette/utils/issues",
+ "source": "https://github.com/nette/utils/tree/v3.2.8"
+ },
+ "time": "2022-09-12T23:36:20+00:00"
},
{
"name": "opis/closure",
@@ -1495,29 +1819,33 @@
},
{
"name": "phpoption/phpoption",
- "version": "1.8.1",
+ "version": "1.9.0",
"source": {
"type": "git",
"url": "https://github.com/schmittjoh/php-option.git",
- "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15"
+ "reference": "dc5ff11e274a90cc1c743f66c9ad700ce50db9ab"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15",
- "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15",
+ "url": "https://github.com/gitapi/repos/schmittjoh/php-option/zipball/dc5ff11e274a90cc1c743f66c9ad700ce50db9ab",
+ "reference": "dc5ff11e274a90cc1c743f66c9ad700ce50db9ab",
"shasum": ""
},
"require": {
- "php": "^7.0 || ^8.0"
+ "php": "^7.2.5 || ^8.0"
},
"require-dev": {
- "bamarni/composer-bin-plugin": "^1.4.1",
- "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8"
+ "bamarni/composer-bin-plugin": "^1.8",
+ "phpunit/phpunit": "^8.5.28 || ^9.5.21"
},
"type": "library",
"extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": true
+ },
"branch-alias": {
- "dev-master": "1.8-dev"
+ "dev-master": "1.9-dev"
}
},
"autoload": {
@@ -1550,7 +1878,7 @@
],
"support": {
"issues": "https://github.com/schmittjoh/php-option/issues",
- "source": "https://github.com/schmittjoh/php-option/tree/1.8.1"
+ "source": "https://github.com/schmittjoh/php-option/tree/1.9.0"
},
"funding": [
{
@@ -1562,24 +1890,24 @@
"type": "tidelift"
}
],
- "time": "2021-12-04T23:24:31+00:00"
+ "time": "2022-07-30T15:51:26+00:00"
},
{
"name": "psr/container",
- "version": "1.1.1",
+ "version": "1.1.2",
"source": {
"type": "git",
"url": "https://github.com/php-fig/container.git",
- "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf"
+ "reference": "513e0666f7216c7459170d56df27dfcefe1689ea"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf",
- "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf",
+ "url": "https://github.com/gitapi/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea",
+ "reference": "513e0666f7216c7459170d56df27dfcefe1689ea",
"shasum": ""
},
"require": {
- "php": ">=7.2.0"
+ "php": ">=7.4.0"
},
"type": "library",
"autoload": {
@@ -1608,9 +1936,9 @@
],
"support": {
"issues": "https://github.com/php-fig/container/issues",
- "source": "https://github.com/php-fig/container/tree/1.1.1"
+ "source": "https://github.com/php-fig/container/tree/1.1.2"
},
- "time": "2021-03-05T17:36:06+00:00"
+ "time": "2021-11-05T16:50:12+00:00"
},
{
"name": "psr/event-dispatcher",
@@ -2222,16 +2550,16 @@
},
{
"name": "symfony/console",
- "version": "v5.4.10",
+ "version": "v5.4.16",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "4d671ab4ddac94ee439ea73649c69d9d200b5000"
+ "reference": "8e9b9c8dfb33af6057c94e1b44846bee700dc5ef"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/symfony/console/zipball/4d671ab4ddac94ee439ea73649c69d9d200b5000",
- "reference": "4d671ab4ddac94ee439ea73649c69d9d200b5000",
+ "url": "https://github.com/gitapi/repos/symfony/console/zipball/8e9b9c8dfb33af6057c94e1b44846bee700dc5ef",
+ "reference": "8e9b9c8dfb33af6057c94e1b44846bee700dc5ef",
"shasum": ""
},
"require": {
@@ -2301,7 +2629,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v5.4.10"
+ "source": "https://github.com/symfony/console/tree/v5.4.16"
},
"funding": [
{
@@ -2317,20 +2645,20 @@
"type": "tidelift"
}
],
- "time": "2022-06-26T13:00:04+00:00"
+ "time": "2022-11-25T14:09:27+00:00"
},
{
"name": "symfony/css-selector",
- "version": "v5.4.3",
+ "version": "v5.4.11",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
- "reference": "b0a190285cd95cb019237851205b8140ef6e368e"
+ "reference": "c1681789f059ab756001052164726ae88512ae3d"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/symfony/css-selector/zipball/b0a190285cd95cb019237851205b8140ef6e368e",
- "reference": "b0a190285cd95cb019237851205b8140ef6e368e",
+ "url": "https://github.com/gitapi/repos/symfony/css-selector/zipball/c1681789f059ab756001052164726ae88512ae3d",
+ "reference": "c1681789f059ab756001052164726ae88512ae3d",
"shasum": ""
},
"require": {
@@ -2367,7 +2695,7 @@
"description": "Converts CSS selectors to XPath expressions",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/css-selector/tree/v5.4.3"
+ "source": "https://github.com/symfony/css-selector/tree/v5.4.11"
},
"funding": [
{
@@ -2383,7 +2711,7 @@
"type": "tidelift"
}
],
- "time": "2022-01-02T09:53:40+00:00"
+ "time": "2022-06-27T16:58:25+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -2454,16 +2782,16 @@
},
{
"name": "symfony/error-handler",
- "version": "v5.4.9",
+ "version": "v5.4.15",
"source": {
"type": "git",
"url": "https://github.com/symfony/error-handler.git",
- "reference": "c116cda1f51c678782768dce89a45f13c949455d"
+ "reference": "539cf1428b8442303c6e876ad7bf5a7babd91091"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/symfony/error-handler/zipball/c116cda1f51c678782768dce89a45f13c949455d",
- "reference": "c116cda1f51c678782768dce89a45f13c949455d",
+ "url": "https://github.com/gitapi/repos/symfony/error-handler/zipball/539cf1428b8442303c6e876ad7bf5a7babd91091",
+ "reference": "539cf1428b8442303c6e876ad7bf5a7babd91091",
"shasum": ""
},
"require": {
@@ -2505,7 +2833,7 @@
"description": "Provides tools to manage errors and ease debugging PHP code",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/error-handler/tree/v5.4.9"
+ "source": "https://github.com/symfony/error-handler/tree/v5.4.15"
},
"funding": [
{
@@ -2521,7 +2849,7 @@
"type": "tidelift"
}
],
- "time": "2022-05-21T13:57:48+00:00"
+ "time": "2022-10-27T06:32:25+00:00"
},
{
"name": "symfony/event-dispatcher",
@@ -2689,16 +3017,16 @@
},
{
"name": "symfony/finder",
- "version": "v5.4.8",
+ "version": "v5.4.11",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
- "reference": "9b630f3427f3ebe7cd346c277a1408b00249dad9"
+ "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/symfony/finder/zipball/9b630f3427f3ebe7cd346c277a1408b00249dad9",
- "reference": "9b630f3427f3ebe7cd346c277a1408b00249dad9",
+ "url": "https://github.com/gitapi/repos/symfony/finder/zipball/7872a66f57caffa2916a584db1aa7f12adc76f8c",
+ "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c",
"shasum": ""
},
"require": {
@@ -2732,7 +3060,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/finder/tree/v5.4.8"
+ "source": "https://github.com/symfony/finder/tree/v5.4.11"
},
"funding": [
{
@@ -2748,20 +3076,20 @@
"type": "tidelift"
}
],
- "time": "2022-04-15T08:07:45+00:00"
+ "time": "2022-07-29T07:37:50+00:00"
},
{
"name": "symfony/http-foundation",
- "version": "v5.4.10",
+ "version": "v5.4.16",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
- "reference": "e7793b7906f72a8cc51054fbca9dcff7a8af1c1e"
+ "reference": "5032c5849aef24741e1970cb03511b0dd131d838"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/symfony/http-foundation/zipball/e7793b7906f72a8cc51054fbca9dcff7a8af1c1e",
- "reference": "e7793b7906f72a8cc51054fbca9dcff7a8af1c1e",
+ "url": "https://github.com/gitapi/repos/symfony/http-foundation/zipball/5032c5849aef24741e1970cb03511b0dd131d838",
+ "reference": "5032c5849aef24741e1970cb03511b0dd131d838",
"shasum": ""
},
"require": {
@@ -2773,8 +3101,11 @@
"require-dev": {
"predis/predis": "~1.0",
"symfony/cache": "^4.4|^5.0|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
"symfony/expression-language": "^4.4|^5.0|^6.0",
- "symfony/mime": "^4.4|^5.0|^6.0"
+ "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4",
+ "symfony/mime": "^4.4|^5.0|^6.0",
+ "symfony/rate-limiter": "^5.2|^6.0"
},
"suggest": {
"symfony/mime": "To use the file extension guesser"
@@ -2805,7 +3136,7 @@
"description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-foundation/tree/v5.4.10"
+ "source": "https://github.com/symfony/http-foundation/tree/v5.4.16"
},
"funding": [
{
@@ -2821,20 +3152,20 @@
"type": "tidelift"
}
],
- "time": "2022-06-19T13:13:40+00:00"
+ "time": "2022-11-07T08:06:40+00:00"
},
{
"name": "symfony/http-kernel",
- "version": "v5.4.10",
+ "version": "v5.4.16",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
- "reference": "255ae3b0a488d78fbb34da23d3e0c059874b5948"
+ "reference": "b432c57c5de73634b1859093c1f58e3cd84455a1"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/symfony/http-kernel/zipball/255ae3b0a488d78fbb34da23d3e0c059874b5948",
- "reference": "255ae3b0a488d78fbb34da23d3e0c059874b5948",
+ "url": "https://github.com/gitapi/repos/symfony/http-kernel/zipball/b432c57c5de73634b1859093c1f58e3cd84455a1",
+ "reference": "b432c57c5de73634b1859093c1f58e3cd84455a1",
"shasum": ""
},
"require": {
@@ -2917,7 +3248,7 @@
"description": "Provides a structured process for converting a Request into a Response",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-kernel/tree/v5.4.10"
+ "source": "https://github.com/symfony/http-kernel/tree/v5.4.16"
},
"funding": [
{
@@ -2933,20 +3264,20 @@
"type": "tidelift"
}
],
- "time": "2022-06-26T16:57:59+00:00"
+ "time": "2022-11-28T18:08:58+00:00"
},
{
"name": "symfony/mime",
- "version": "v5.4.10",
+ "version": "v5.4.16",
"source": {
"type": "git",
"url": "https://github.com/symfony/mime.git",
- "reference": "02265e1e5111c3cd7480387af25e82378b7ab9cc"
+ "reference": "46eeedb08f0832b1b61a84c612d945fc85ee4734"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/symfony/mime/zipball/02265e1e5111c3cd7480387af25e82378b7ab9cc",
- "reference": "02265e1e5111c3cd7480387af25e82378b7ab9cc",
+ "url": "https://github.com/gitapi/repos/symfony/mime/zipball/46eeedb08f0832b1b61a84c612d945fc85ee4734",
+ "reference": "46eeedb08f0832b1b61a84c612d945fc85ee4734",
"shasum": ""
},
"require": {
@@ -2960,7 +3291,8 @@
"egulias/email-validator": "~3.0.0",
"phpdocumentor/reflection-docblock": "<3.2.2",
"phpdocumentor/type-resolver": "<1.4.0",
- "symfony/mailer": "<4.4"
+ "symfony/mailer": "<4.4",
+ "symfony/serializer": "<5.4.14|>=6.0,<6.0.14|>=6.1,<6.1.6"
},
"require-dev": {
"egulias/email-validator": "^2.1.10|^3.1",
@@ -2968,7 +3300,7 @@
"symfony/dependency-injection": "^4.4|^5.0|^6.0",
"symfony/property-access": "^4.4|^5.1|^6.0",
"symfony/property-info": "^4.4|^5.1|^6.0",
- "symfony/serializer": "^5.2|^6.0"
+ "symfony/serializer": "^5.4.14|~6.0.14|^6.1.6"
},
"type": "library",
"autoload": {
@@ -3000,7 +3332,7 @@
"mime-type"
],
"support": {
- "source": "https://github.com/symfony/mime/tree/v5.4.10"
+ "source": "https://github.com/symfony/mime/tree/v5.4.16"
},
"funding": [
{
@@ -3016,20 +3348,20 @@
"type": "tidelift"
}
],
- "time": "2022-06-09T12:22:40+00:00"
+ "time": "2022-11-26T16:45:22+00:00"
},
{
"name": "symfony/polyfill-ctype",
- "version": "v1.26.0",
+ "version": "v1.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4"
+ "reference": "5bbc823adecdae860bb64756d639ecfec17b050a"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4",
- "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4",
+ "url": "https://github.com/gitapi/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a",
+ "reference": "5bbc823adecdae860bb64756d639ecfec17b050a",
"shasum": ""
},
"require": {
@@ -3044,7 +3376,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.26-dev"
+ "dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -3082,7 +3414,7 @@
"portable"
],
"support": {
- "source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0"
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0"
},
"funding": [
{
@@ -3098,20 +3430,20 @@
"type": "tidelift"
}
],
- "time": "2022-05-24T11:49:31+00:00"
+ "time": "2022-11-03T14:55:06+00:00"
},
{
"name": "symfony/polyfill-iconv",
- "version": "v1.26.0",
+ "version": "v1.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-iconv.git",
- "reference": "143f1881e655bebca1312722af8068de235ae5dc"
+ "reference": "927013f3aac555983a5059aada98e1907d842695"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/symfony/polyfill-iconv/zipball/143f1881e655bebca1312722af8068de235ae5dc",
- "reference": "143f1881e655bebca1312722af8068de235ae5dc",
+ "url": "https://github.com/gitapi/repos/symfony/polyfill-iconv/zipball/927013f3aac555983a5059aada98e1907d842695",
+ "reference": "927013f3aac555983a5059aada98e1907d842695",
"shasum": ""
},
"require": {
@@ -3126,7 +3458,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.26-dev"
+ "dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -3165,7 +3497,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-iconv/tree/v1.26.0"
+ "source": "https://github.com/symfony/polyfill-iconv/tree/v1.27.0"
},
"funding": [
{
@@ -3181,20 +3513,20 @@
"type": "tidelift"
}
],
- "time": "2022-05-24T11:49:31+00:00"
+ "time": "2022-11-03T14:55:06+00:00"
},
{
"name": "symfony/polyfill-intl-grapheme",
- "version": "v1.26.0",
+ "version": "v1.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
- "reference": "433d05519ce6990bf3530fba6957499d327395c2"
+ "reference": "511a08c03c1960e08a883f4cffcacd219b758354"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/symfony/polyfill-intl-grapheme/zipball/433d05519ce6990bf3530fba6957499d327395c2",
- "reference": "433d05519ce6990bf3530fba6957499d327395c2",
+ "url": "https://github.com/gitapi/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354",
+ "reference": "511a08c03c1960e08a883f4cffcacd219b758354",
"shasum": ""
},
"require": {
@@ -3206,7 +3538,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.26-dev"
+ "dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -3246,7 +3578,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.26.0"
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0"
},
"funding": [
{
@@ -3262,20 +3594,20 @@
"type": "tidelift"
}
],
- "time": "2022-05-24T11:49:31+00:00"
+ "time": "2022-11-03T14:55:06+00:00"
},
{
"name": "symfony/polyfill-intl-idn",
- "version": "v1.26.0",
+ "version": "v1.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
- "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8"
+ "reference": "639084e360537a19f9ee352433b84ce831f3d2da"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/symfony/polyfill-intl-idn/zipball/59a8d271f00dd0e4c2e518104cc7963f655a1aa8",
- "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8",
+ "url": "https://github.com/gitapi/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da",
+ "reference": "639084e360537a19f9ee352433b84ce831f3d2da",
"shasum": ""
},
"require": {
@@ -3289,7 +3621,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.26-dev"
+ "dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -3333,7 +3665,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.26.0"
+ "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0"
},
"funding": [
{
@@ -3349,20 +3681,20 @@
"type": "tidelift"
}
],
- "time": "2022-05-24T11:49:31+00:00"
+ "time": "2022-11-03T14:55:06+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
- "version": "v1.26.0",
+ "version": "v1.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
- "reference": "219aa369ceff116e673852dce47c3a41794c14bd"
+ "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd",
- "reference": "219aa369ceff116e673852dce47c3a41794c14bd",
+ "url": "https://github.com/gitapi/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6",
+ "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6",
"shasum": ""
},
"require": {
@@ -3374,7 +3706,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.26-dev"
+ "dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -3417,7 +3749,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0"
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0"
},
"funding": [
{
@@ -3433,20 +3765,20 @@
"type": "tidelift"
}
],
- "time": "2022-05-24T11:49:31+00:00"
+ "time": "2022-11-03T14:55:06+00:00"
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.26.0",
+ "version": "v1.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e"
+ "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e",
- "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e",
+ "url": "https://github.com/gitapi/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
+ "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
"shasum": ""
},
"require": {
@@ -3461,7 +3793,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.26-dev"
+ "dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -3500,7 +3832,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0"
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0"
},
"funding": [
{
@@ -3516,20 +3848,20 @@
"type": "tidelift"
}
],
- "time": "2022-05-24T11:49:31+00:00"
+ "time": "2022-11-03T14:55:06+00:00"
},
{
"name": "symfony/polyfill-php72",
- "version": "v1.26.0",
+ "version": "v1.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php72.git",
- "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2"
+ "reference": "869329b1e9894268a8a61dabb69153029b7a8c97"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/symfony/polyfill-php72/zipball/bf44a9fd41feaac72b074de600314a93e2ae78e2",
- "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2",
+ "url": "https://github.com/gitapi/repos/symfony/polyfill-php72/zipball/869329b1e9894268a8a61dabb69153029b7a8c97",
+ "reference": "869329b1e9894268a8a61dabb69153029b7a8c97",
"shasum": ""
},
"require": {
@@ -3538,7 +3870,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.26-dev"
+ "dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -3576,7 +3908,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php72/tree/v1.26.0"
+ "source": "https://github.com/symfony/polyfill-php72/tree/v1.27.0"
},
"funding": [
{
@@ -3592,20 +3924,20 @@
"type": "tidelift"
}
],
- "time": "2022-05-24T11:49:31+00:00"
+ "time": "2022-11-03T14:55:06+00:00"
},
{
"name": "symfony/polyfill-php73",
- "version": "v1.26.0",
+ "version": "v1.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php73.git",
- "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85"
+ "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/symfony/polyfill-php73/zipball/e440d35fa0286f77fb45b79a03fedbeda9307e85",
- "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85",
+ "url": "https://github.com/gitapi/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9",
+ "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9",
"shasum": ""
},
"require": {
@@ -3614,7 +3946,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.26-dev"
+ "dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -3655,7 +3987,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php73/tree/v1.26.0"
+ "source": "https://github.com/symfony/polyfill-php73/tree/v1.27.0"
},
"funding": [
{
@@ -3671,20 +4003,20 @@
"type": "tidelift"
}
],
- "time": "2022-05-24T11:49:31+00:00"
+ "time": "2022-11-03T14:55:06+00:00"
},
{
"name": "symfony/polyfill-php80",
- "version": "v1.26.0",
+ "version": "v1.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace"
+ "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace",
- "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace",
+ "url": "https://github.com/gitapi/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
+ "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
"shasum": ""
},
"require": {
@@ -3693,7 +4025,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.26-dev"
+ "dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -3738,7 +4070,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0"
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0"
},
"funding": [
{
@@ -3754,20 +4086,20 @@
"type": "tidelift"
}
],
- "time": "2022-05-10T07:21:04+00:00"
+ "time": "2022-11-03T14:55:06+00:00"
},
{
"name": "symfony/polyfill-php81",
- "version": "v1.26.0",
+ "version": "v1.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php81.git",
- "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1"
+ "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/symfony/polyfill-php81/zipball/13f6d1271c663dc5ae9fb843a8f16521db7687a1",
- "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1",
+ "url": "https://github.com/gitapi/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a",
+ "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a",
"shasum": ""
},
"require": {
@@ -3776,7 +4108,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.26-dev"
+ "dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -3817,7 +4149,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php81/tree/v1.26.0"
+ "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0"
},
"funding": [
{
@@ -3833,20 +4165,20 @@
"type": "tidelift"
}
],
- "time": "2022-05-24T11:49:31+00:00"
+ "time": "2022-11-03T14:55:06+00:00"
},
{
"name": "symfony/process",
- "version": "v5.4.8",
+ "version": "v5.4.11",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
- "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3"
+ "reference": "6e75fe6874cbc7e4773d049616ab450eff537bf1"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/symfony/process/zipball/597f3fff8e3e91836bb0bd38f5718b56ddbde2f3",
- "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3",
+ "url": "https://github.com/gitapi/repos/symfony/process/zipball/6e75fe6874cbc7e4773d049616ab450eff537bf1",
+ "reference": "6e75fe6874cbc7e4773d049616ab450eff537bf1",
"shasum": ""
},
"require": {
@@ -3879,7 +4211,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/process/tree/v5.4.8"
+ "source": "https://github.com/symfony/process/tree/v5.4.11"
},
"funding": [
{
@@ -3895,20 +4227,20 @@
"type": "tidelift"
}
],
- "time": "2022-04-08T05:07:18+00:00"
+ "time": "2022-06-27T16:58:25+00:00"
},
{
"name": "symfony/routing",
- "version": "v5.4.8",
+ "version": "v5.4.15",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
- "reference": "e07817bb6244ea33ef5ad31abc4a9288bef3f2f7"
+ "reference": "5c9b129efe9abce9470e384bf65d8a7e262eee69"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/symfony/routing/zipball/e07817bb6244ea33ef5ad31abc4a9288bef3f2f7",
- "reference": "e07817bb6244ea33ef5ad31abc4a9288bef3f2f7",
+ "url": "https://github.com/gitapi/repos/symfony/routing/zipball/5c9b129efe9abce9470e384bf65d8a7e262eee69",
+ "reference": "5c9b129efe9abce9470e384bf65d8a7e262eee69",
"shasum": ""
},
"require": {
@@ -3969,7 +4301,7 @@
"url"
],
"support": {
- "source": "https://github.com/symfony/routing/tree/v5.4.8"
+ "source": "https://github.com/symfony/routing/tree/v5.4.15"
},
"funding": [
{
@@ -3985,7 +4317,7 @@
"type": "tidelift"
}
],
- "time": "2022-04-18T21:45:37+00:00"
+ "time": "2022-10-13T14:10:41+00:00"
},
{
"name": "symfony/service-contracts",
@@ -4072,16 +4404,16 @@
},
{
"name": "symfony/string",
- "version": "v5.4.10",
+ "version": "v5.4.15",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "4432bc7df82a554b3e413a8570ce2fea90e94097"
+ "reference": "571334ce9f687e3e6af72db4d3b2a9431e4fd9ed"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/symfony/string/zipball/4432bc7df82a554b3e413a8570ce2fea90e94097",
- "reference": "4432bc7df82a554b3e413a8570ce2fea90e94097",
+ "url": "https://github.com/gitapi/repos/symfony/string/zipball/571334ce9f687e3e6af72db4d3b2a9431e4fd9ed",
+ "reference": "571334ce9f687e3e6af72db4d3b2a9431e4fd9ed",
"shasum": ""
},
"require": {
@@ -4138,7 +4470,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v5.4.10"
+ "source": "https://github.com/symfony/string/tree/v5.4.15"
},
"funding": [
{
@@ -4154,20 +4486,20 @@
"type": "tidelift"
}
],
- "time": "2022-06-26T15:57:47+00:00"
+ "time": "2022-10-05T15:16:54+00:00"
},
{
"name": "symfony/translation",
- "version": "v5.4.9",
+ "version": "v5.4.14",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
- "reference": "1639abc1177d26bcd4320e535e664cef067ab0ca"
+ "reference": "f0ed07675863aa6e3939df8b1bc879450b585cab"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/symfony/translation/zipball/1639abc1177d26bcd4320e535e664cef067ab0ca",
- "reference": "1639abc1177d26bcd4320e535e664cef067ab0ca",
+ "url": "https://github.com/gitapi/repos/symfony/translation/zipball/f0ed07675863aa6e3939df8b1bc879450b585cab",
+ "reference": "f0ed07675863aa6e3939df8b1bc879450b585cab",
"shasum": ""
},
"require": {
@@ -4235,7 +4567,7 @@
"description": "Provides tools to internationalize your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/translation/tree/v5.4.9"
+ "source": "https://github.com/symfony/translation/tree/v5.4.14"
},
"funding": [
{
@@ -4251,7 +4583,7 @@
"type": "tidelift"
}
],
- "time": "2022-05-06T12:33:37+00:00"
+ "time": "2022-10-07T08:01:20+00:00"
},
{
"name": "symfony/translation-contracts",
@@ -4333,16 +4665,16 @@
},
{
"name": "symfony/var-dumper",
- "version": "v5.4.9",
+ "version": "v5.4.14",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
- "reference": "af52239a330fafd192c773795520dc2dd62b5657"
+ "reference": "6894d06145fefebd9a4c7272baa026a1c394a430"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/symfony/var-dumper/zipball/af52239a330fafd192c773795520dc2dd62b5657",
- "reference": "af52239a330fafd192c773795520dc2dd62b5657",
+ "url": "https://github.com/gitapi/repos/symfony/var-dumper/zipball/6894d06145fefebd9a4c7272baa026a1c394a430",
+ "reference": "6894d06145fefebd9a4c7272baa026a1c394a430",
"shasum": ""
},
"require": {
@@ -4402,7 +4734,7 @@
"dump"
],
"support": {
- "source": "https://github.com/symfony/var-dumper/tree/v5.4.9"
+ "source": "https://github.com/symfony/var-dumper/tree/v5.4.14"
},
"funding": [
{
@@ -4418,20 +4750,20 @@
"type": "tidelift"
}
],
- "time": "2022-05-21T10:24:18+00:00"
+ "time": "2022-10-07T08:01:20+00:00"
},
{
"name": "tijsverkoyen/css-to-inline-styles",
- "version": "2.2.4",
+ "version": "2.2.5",
"source": {
"type": "git",
"url": "https://github.com/tijsverkoyen/CssToInlineStyles.git",
- "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c"
+ "reference": "4348a3a06651827a27d989ad1d13efec6bb49b19"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c",
- "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c",
+ "url": "https://github.com/gitapi/repos/tijsverkoyen/CssToInlineStyles/zipball/4348a3a06651827a27d989ad1d13efec6bb49b19",
+ "reference": "4348a3a06651827a27d989ad1d13efec6bb49b19",
"shasum": ""
},
"require": {
@@ -4469,22 +4801,22 @@
"homepage": "https://github.com/tijsverkoyen/CssToInlineStyles",
"support": {
"issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues",
- "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4"
+ "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.5"
},
- "time": "2021-12-08T09:12:39+00:00"
+ "time": "2022-09-12T13:28:28+00:00"
},
{
"name": "vlucas/phpdotenv",
- "version": "v5.4.1",
+ "version": "v5.5.0",
"source": {
"type": "git",
"url": "https://github.com/vlucas/phpdotenv.git",
- "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f"
+ "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f",
- "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f",
+ "url": "https://github.com/gitapi/repos/vlucas/phpdotenv/zipball/1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7",
+ "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7",
"shasum": ""
},
"require": {
@@ -4499,15 +4831,19 @@
"require-dev": {
"bamarni/composer-bin-plugin": "^1.4.1",
"ext-filter": "*",
- "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10"
+ "phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25"
},
"suggest": {
"ext-filter": "Required to use the boolean validator."
},
"type": "library",
"extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": true
+ },
"branch-alias": {
- "dev-master": "5.4-dev"
+ "dev-master": "5.5-dev"
}
},
"autoload": {
@@ -4539,7 +4875,7 @@
],
"support": {
"issues": "https://github.com/vlucas/phpdotenv/issues",
- "source": "https://github.com/vlucas/phpdotenv/tree/v5.4.1"
+ "source": "https://github.com/vlucas/phpdotenv/tree/v5.5.0"
},
"funding": [
{
@@ -4551,7 +4887,7 @@
"type": "tidelift"
}
],
- "time": "2021-12-12T23:22:04+00:00"
+ "time": "2022-10-16T01:01:54+00:00"
},
{
"name": "voku/portable-ascii",
@@ -4753,8 +5089,9 @@
"serialization"
],
"support": {
- "source": "https://github.com/wikimedia/avro-php/tree/master"
+ "source": "https://github.com/wikimedia/avro-php/tree/v1.9.0"
},
+ "abandoned": "rg/avro-php",
"time": "2019-09-16T15:18:39+00:00"
}
],
@@ -5001,28 +5338,29 @@
},
{
"name": "amphp/parallel-functions",
- "version": "v1.0.0",
+ "version": "v1.1.0",
"source": {
"type": "git",
"url": "https://github.com/amphp/parallel-functions.git",
- "reference": "af9795d51abfafc3676cbe7e17965479491abaad"
+ "reference": "04e92fcacfc921a56dfe12c23b3265e62593a7cb"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/amphp/parallel-functions/zipball/af9795d51abfafc3676cbe7e17965479491abaad",
- "reference": "af9795d51abfafc3676cbe7e17965479491abaad",
+ "url": "https://github.com/gitapi/repos/amphp/parallel-functions/zipball/04e92fcacfc921a56dfe12c23b3265e62593a7cb",
+ "reference": "04e92fcacfc921a56dfe12c23b3265e62593a7cb",
"shasum": ""
},
"require": {
"amphp/amp": "^2.0.3",
- "amphp/parallel": "^1.1",
- "opis/closure": "^3.0.7",
- "php": ">=7"
+ "amphp/parallel": "^1.4",
+ "amphp/serialization": "^1.0",
+ "laravel/serializable-closure": "^1.0",
+ "php": ">=7.4"
},
"require-dev": {
- "amphp/phpunit-util": "^1.0",
- "friendsofphp/php-cs-fixer": "^2.9",
- "phpunit/phpunit": "^6.5"
+ "amphp/php-cs-fixer-config": "v2.x-dev",
+ "amphp/phpunit-util": "^2.0",
+ "phpunit/phpunit": "^9.5.11"
},
"type": "library",
"autoload": {
@@ -5046,7 +5384,7 @@
"description": "Parallel processing made simple.",
"support": {
"issues": "https://github.com/amphp/parallel-functions/issues",
- "source": "https://github.com/amphp/parallel-functions/tree/master"
+ "source": "https://github.com/amphp/parallel-functions/tree/v1.1.0"
},
"funding": [
{
@@ -5054,7 +5392,7 @@
"type": "github"
}
],
- "time": "2020-07-10T17:05:35+00:00"
+ "time": "2022-02-03T19:32:41+00:00"
},
{
"name": "amphp/parser",
@@ -5113,16 +5451,16 @@
},
{
"name": "amphp/process",
- "version": "v1.1.3",
+ "version": "v1.1.4",
"source": {
"type": "git",
"url": "https://github.com/amphp/process.git",
- "reference": "f09e3ed3b0a953ccbfff1140f12be4a884f0aa83"
+ "reference": "76e9495fd6818b43a20167cb11d8a67f7744ee0f"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/amphp/process/zipball/f09e3ed3b0a953ccbfff1140f12be4a884f0aa83",
- "reference": "f09e3ed3b0a953ccbfff1140f12be4a884f0aa83",
+ "url": "https://github.com/gitapi/repos/amphp/process/zipball/76e9495fd6818b43a20167cb11d8a67f7744ee0f",
+ "reference": "76e9495fd6818b43a20167cb11d8a67f7744ee0f",
"shasum": ""
},
"require": {
@@ -5166,7 +5504,7 @@
"homepage": "https://github.com/amphp/process",
"support": {
"issues": "https://github.com/amphp/process/issues",
- "source": "https://github.com/amphp/process/tree/v1.1.3"
+ "source": "https://github.com/amphp/process/tree/v1.1.4"
},
"funding": [
{
@@ -5174,7 +5512,7 @@
"type": "github"
}
],
- "time": "2021-12-17T19:09:33+00:00"
+ "time": "2022-07-06T23:50:12+00:00"
},
{
"name": "amphp/serialization",
@@ -5377,20 +5715,20 @@
},
{
"name": "composer/pcre",
- "version": "2.0.0",
+ "version": "3.1.0",
"source": {
"type": "git",
"url": "https://github.com/composer/pcre.git",
- "reference": "c8e9d27cfc5ed22643c19c160455b473ffd8aabe"
+ "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/composer/pcre/zipball/c8e9d27cfc5ed22643c19c160455b473ffd8aabe",
- "reference": "c8e9d27cfc5ed22643c19c160455b473ffd8aabe",
+ "url": "https://github.com/gitapi/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2",
+ "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2",
"shasum": ""
},
"require": {
- "php": "^7.2 || ^8.0"
+ "php": "^7.4 || ^8.0"
},
"require-dev": {
"phpstan/phpstan": "^1.3",
@@ -5400,7 +5738,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "2.x-dev"
+ "dev-main": "3.x-dev"
}
},
"autoload": {
@@ -5428,7 +5766,7 @@
],
"support": {
"issues": "https://github.com/composer/pcre/issues",
- "source": "https://github.com/composer/pcre/tree/2.0.0"
+ "source": "https://github.com/composer/pcre/tree/3.1.0"
},
"funding": [
{
@@ -5444,7 +5782,7 @@
"type": "tidelift"
}
],
- "time": "2022-02-25T20:05:29+00:00"
+ "time": "2022-11-17T09:50:14+00:00"
},
{
"name": "composer/semver",
@@ -5752,26 +6090,27 @@
},
{
"name": "doctrine/collections",
- "version": "1.6.8",
+ "version": "1.8.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/collections.git",
- "reference": "1958a744696c6bb3bb0d28db2611dc11610e78af"
+ "reference": "2b44dd4cbca8b5744327de78bafef5945c7e7b5e"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/doctrine/collections/zipball/1958a744696c6bb3bb0d28db2611dc11610e78af",
- "reference": "1958a744696c6bb3bb0d28db2611dc11610e78af",
+ "url": "https://github.com/gitapi/repos/doctrine/collections/zipball/2b44dd4cbca8b5744327de78bafef5945c7e7b5e",
+ "reference": "2b44dd4cbca8b5744327de78bafef5945c7e7b5e",
"shasum": ""
},
"require": {
+ "doctrine/deprecations": "^0.5.3 || ^1",
"php": "^7.1.3 || ^8.0"
},
"require-dev": {
- "doctrine/coding-standard": "^9.0",
- "phpstan/phpstan": "^0.12",
+ "doctrine/coding-standard": "^9.0 || ^10.0",
+ "phpstan/phpstan": "^1.4.8",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.1.5",
- "vimeo/psalm": "^4.2.1"
+ "vimeo/psalm": "^4.22"
},
"type": "library",
"autoload": {
@@ -5815,9 +6154,52 @@
],
"support": {
"issues": "https://github.com/doctrine/collections/issues",
- "source": "https://github.com/doctrine/collections/tree/1.6.8"
+ "source": "https://github.com/doctrine/collections/tree/1.8.0"
+ },
+ "time": "2022-09-01T20:12:10+00:00"
+ },
+ {
+ "name": "doctrine/deprecations",
+ "version": "v1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/deprecations.git",
+ "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://github.com/gitapi/repos/doctrine/deprecations/zipball/0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de",
+ "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1|^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^9",
+ "phpunit/phpunit": "^7.5|^8.5|^9.5",
+ "psr/log": "^1|^2|^3"
+ },
+ "suggest": {
+ "psr/log": "Allows logging deprecations via PSR-3 logger implementation"
},
- "time": "2021-08-10T18:51:53+00:00"
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations"
+ }
+ },
+ "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/",
+ "support": {
+ "issues": "https://github.com/doctrine/deprecations/issues",
+ "source": "https://github.com/doctrine/deprecations/tree/v1.0.0"
+ },
+ "time": "2022-05-02T15:47:09+00:00"
},
{
"name": "doctrine/instantiator",
@@ -5891,20 +6273,20 @@
},
{
"name": "fakerphp/faker",
- "version": "v1.19.0",
+ "version": "v1.21.0",
"source": {
"type": "git",
"url": "https://github.com/FakerPHP/Faker.git",
- "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75"
+ "reference": "92efad6a967f0b79c499705c69b662f738cc9e4d"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75",
- "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75",
+ "url": "https://github.com/gitapi/repos/FakerPHP/Faker/zipball/92efad6a967f0b79c499705c69b662f738cc9e4d",
+ "reference": "92efad6a967f0b79c499705c69b662f738cc9e4d",
"shasum": ""
},
"require": {
- "php": "^7.1 || ^8.0",
+ "php": "^7.4 || ^8.0",
"psr/container": "^1.0 || ^2.0",
"symfony/deprecation-contracts": "^2.2 || ^3.0"
},
@@ -5915,7 +6297,8 @@
"bamarni/composer-bin-plugin": "^1.4.1",
"doctrine/persistence": "^1.3 || ^2.0",
"ext-intl": "*",
- "symfony/phpunit-bridge": "^4.4 || ^5.2"
+ "phpunit/phpunit": "^9.5.26",
+ "symfony/phpunit-bridge": "^5.4.16"
},
"suggest": {
"doctrine/orm": "Required to use Faker\\ORM\\Doctrine",
@@ -5927,7 +6310,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "v1.19-dev"
+ "dev-main": "v1.21-dev"
}
},
"autoload": {
@@ -5952,9 +6335,9 @@
],
"support": {
"issues": "https://github.com/FakerPHP/Faker/issues",
- "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0"
+ "source": "https://github.com/FakerPHP/Faker/tree/v1.21.0"
},
- "time": "2022-02-02T17:38:57+00:00"
+ "time": "2022-12-13T13:54:32+00:00"
},
{
"name": "felixfbecker/advanced-json-rpc",
@@ -6059,16 +6442,16 @@
},
{
"name": "gitonomy/gitlib",
- "version": "v1.3.5",
+ "version": "v1.3.7",
"source": {
"type": "git",
"url": "https://github.com/gitonomy/gitlib.git",
- "reference": "793ffe5826c30e64ea499ea9e4bb353dd0892bef"
+ "reference": "00b57b79f02396aa4c7c163f76fe2bc48faebbb7"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/gitonomy/gitlib/zipball/793ffe5826c30e64ea499ea9e4bb353dd0892bef",
- "reference": "793ffe5826c30e64ea499ea9e4bb353dd0892bef",
+ "url": "https://github.com/gitapi/repos/gitonomy/gitlib/zipball/00b57b79f02396aa4c7c163f76fe2bc48faebbb7",
+ "reference": "00b57b79f02396aa4c7c163f76fe2bc48faebbb7",
"shasum": ""
},
"require": {
@@ -6079,6 +6462,7 @@
},
"require-dev": {
"ext-fileinfo": "*",
+ "phpspec/prophecy": "^1.10.2",
"phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.20 || ^9.5.9",
"psr/log": "^1.0"
},
@@ -6121,7 +6505,7 @@
"description": "Library for accessing git",
"support": {
"issues": "https://github.com/gitonomy/gitlib/issues",
- "source": "https://github.com/gitonomy/gitlib/tree/v1.3.5"
+ "source": "https://github.com/gitonomy/gitlib/tree/v1.3.7"
},
"funding": [
{
@@ -6129,7 +6513,7 @@
"type": "tidelift"
}
],
- "time": "2022-03-01T10:56:00+00:00"
+ "time": "2022-10-04T14:20:15+00:00"
},
{
"name": "hamcrest/hamcrest-php",
@@ -6184,23 +6568,23 @@
},
{
"name": "kwn/php-rdkafka-stubs",
- "version": "1.1.1",
+ "version": "v2.2.1",
"source": {
"type": "git",
"url": "https://github.com/kwn/php-rdkafka-stubs.git",
- "reference": "7084dd5973d5ef72b5312edae41553ded3d38bb3"
+ "reference": "23b865d6b3e8fe1f080aa7371dc1da3339361996"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/kwn/php-rdkafka-stubs/zipball/7084dd5973d5ef72b5312edae41553ded3d38bb3",
- "reference": "7084dd5973d5ef72b5312edae41553ded3d38bb3",
+ "url": "https://github.com/gitapi/repos/kwn/php-rdkafka-stubs/zipball/23b865d6b3e8fe1f080aa7371dc1da3339361996",
+ "reference": "23b865d6b3e8fe1f080aa7371dc1da3339361996",
"shasum": ""
},
"require": {
- "ext-rdkafka": "*"
+ "ext-rdkafka": ">=4.0"
},
"require-dev": {
- "phpunit/phpunit": "^4.8"
+ "phpunit/phpunit": "^8.2.4"
},
"type": "library",
"notification-url": "https://packagist.org/downloads/",
@@ -6216,29 +6600,29 @@
"description": "Rdkafka extension stubs for your IDE",
"support": {
"issues": "https://github.com/kwn/php-rdkafka-stubs/issues",
- "source": "https://github.com/kwn/php-rdkafka-stubs/tree/master"
+ "source": "https://github.com/kwn/php-rdkafka-stubs/tree/v2.2.1"
},
- "time": "2018-03-13T19:02:21+00:00"
+ "time": "2022-08-16T15:27:51+00:00"
},
{
"name": "leroy-merlin-br/coding-standard",
- "version": "v1.0.1",
+ "version": "v3.1.0",
"source": {
"type": "git",
- "url": "https://github.com/leroy-merlin-br/php-coding-standard.git",
- "reference": "a7d9c9eff91d384561a0a59617bae8bed11a2de5"
+ "url": "git@github.com:leroy-merlin-br/php-coding-standard.git",
+ "reference": "7c9cc6c20d89a5e8029e4cce5661a0434adcc4e1"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/leroy-merlin-br/php-coding-standard/zipball/a7d9c9eff91d384561a0a59617bae8bed11a2de5",
- "reference": "a7d9c9eff91d384561a0a59617bae8bed11a2de5",
+ "url": "https://github.com/gitapi/repos/leroy-merlin-br/php-coding-standard/zipball/7c9cc6c20d89a5e8029e4cce5661a0434adcc4e1",
+ "reference": "7c9cc6c20d89a5e8029e4cce5661a0434adcc4e1",
"shasum": ""
},
"require": {
- "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
- "php": "^7.1",
- "slevomat/coding-standard": "^4.8.6",
- "squizlabs/php_codesniffer": "^3.4.0"
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7.2",
+ "php": ">=7.4",
+ "slevomat/coding-standard": "^7.0.18",
+ "squizlabs/php_codesniffer": "^3.6.2"
},
"type": "phpcodesniffer-standard",
"notification-url": "https://packagist.org/downloads/",
@@ -6265,24 +6649,20 @@
"standard",
"style"
],
- "support": {
- "issues": "https://github.com/leroy-merlin-br/php-coding-standard/issues",
- "source": "https://github.com/leroy-merlin-br/php-coding-standard/tree/v1.0.1"
- },
- "time": "2020-11-25T15:58:10+00:00"
+ "time": "2022-04-29T20:29:50+00:00"
},
{
"name": "mockery/mockery",
- "version": "1.5.0",
+ "version": "1.5.1",
"source": {
"type": "git",
"url": "https://github.com/mockery/mockery.git",
- "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac"
+ "reference": "e92dcc83d5a51851baf5f5591d32cb2b16e3684e"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac",
- "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac",
+ "url": "https://github.com/gitapi/repos/mockery/mockery/zipball/e92dcc83d5a51851baf5f5591d32cb2b16e3684e",
+ "reference": "e92dcc83d5a51851baf5f5591d32cb2b16e3684e",
"shasum": ""
},
"require": {
@@ -6339,9 +6719,9 @@
],
"support": {
"issues": "https://github.com/mockery/mockery/issues",
- "source": "https://github.com/mockery/mockery/tree/1.5.0"
+ "source": "https://github.com/mockery/mockery/tree/1.5.1"
},
- "time": "2022-01-20T13:18:17+00:00"
+ "time": "2022-09-07T15:32:08+00:00"
},
{
"name": "myclabs/deep-copy",
@@ -6404,16 +6784,16 @@
},
{
"name": "netresearch/jsonmapper",
- "version": "v4.0.0",
+ "version": "v4.1.0",
"source": {
"type": "git",
"url": "https://github.com/cweiske/jsonmapper.git",
- "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d"
+ "reference": "cfa81ea1d35294d64adb9c68aa4cb9e92400e53f"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/cweiske/jsonmapper/zipball/8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d",
- "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d",
+ "url": "https://github.com/gitapi/repos/cweiske/jsonmapper/zipball/cfa81ea1d35294d64adb9c68aa4cb9e92400e53f",
+ "reference": "cfa81ea1d35294d64adb9c68aa4cb9e92400e53f",
"shasum": ""
},
"require": {
@@ -6449,22 +6829,22 @@
"support": {
"email": "cweiske@cweiske.de",
"issues": "https://github.com/cweiske/jsonmapper/issues",
- "source": "https://github.com/cweiske/jsonmapper/tree/v4.0.0"
+ "source": "https://github.com/cweiske/jsonmapper/tree/v4.1.0"
},
- "time": "2020-12-01T19:48:11+00:00"
+ "time": "2022-12-08T20:46:14+00:00"
},
{
"name": "nikic/php-parser",
- "version": "v4.14.0",
+ "version": "v4.15.2",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1"
+ "reference": "f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/nikic/PHP-Parser/zipball/34bea19b6e03d8153165d8f30bba4c3be86184c1",
- "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1",
+ "url": "https://github.com/gitapi/repos/nikic/PHP-Parser/zipball/f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc",
+ "reference": "f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc",
"shasum": ""
},
"require": {
@@ -6505,9 +6885,9 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
- "source": "https://github.com/nikic/PHP-Parser/tree/v4.14.0"
+ "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.2"
},
- "time": "2022-05-31T20:59:12+00:00"
+ "time": "2022-11-12T15:38:23+00:00"
},
{
"name": "ondram/ci-detector",
@@ -6642,22 +7022,22 @@
},
{
"name": "orchestra/testbench",
- "version": "v6.24.1",
+ "version": "v6.25.1",
"source": {
"type": "git",
"url": "https://github.com/orchestral/testbench.git",
- "reference": "7b6a225851f6c148a80e241af5cbd833c83e572c"
+ "reference": "0516123d26d64117bc04f7e9cb982eae2624e750"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/orchestral/testbench/zipball/7b6a225851f6c148a80e241af5cbd833c83e572c",
- "reference": "7b6a225851f6c148a80e241af5cbd833c83e572c",
+ "url": "https://github.com/gitapi/repos/orchestral/testbench/zipball/0516123d26d64117bc04f7e9cb982eae2624e750",
+ "reference": "0516123d26d64117bc04f7e9cb982eae2624e750",
"shasum": ""
},
"require": {
"laravel/framework": "^8.75",
"mockery/mockery": "^1.4.4",
- "orchestra/testbench-core": "^6.28.1",
+ "orchestra/testbench-core": "^6.29.1",
"php": "^7.3 || ^8.0",
"phpunit/phpunit": "^8.5.21 || ^9.5.10",
"spatie/laravel-ray": "^1.26.2"
@@ -6691,7 +7071,7 @@
],
"support": {
"issues": "https://github.com/orchestral/testbench/issues",
- "source": "https://github.com/orchestral/testbench/tree/v6.24.1"
+ "source": "https://github.com/orchestral/testbench/tree/v6.25.1"
},
"funding": [
{
@@ -6703,20 +7083,20 @@
"type": "liberapay"
}
],
- "time": "2022-02-08T12:57:17+00:00"
+ "time": "2022-10-11T14:01:10+00:00"
},
{
"name": "orchestra/testbench-core",
- "version": "v6.28.1",
+ "version": "v6.29.1",
"source": {
"type": "git",
"url": "https://github.com/orchestral/testbench-core.git",
- "reference": "e66074e825e21b40b3433703dc3f76f2bfebebe0"
+ "reference": "29a7586915885f89b8d2203efe20f76afe9cf956"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/orchestral/testbench-core/zipball/e66074e825e21b40b3433703dc3f76f2bfebebe0",
- "reference": "e66074e825e21b40b3433703dc3f76f2bfebebe0",
+ "url": "https://github.com/gitapi/repos/orchestral/testbench-core/zipball/29a7586915885f89b8d2203efe20f76afe9cf956",
+ "reference": "29a7586915885f89b8d2203efe20f76afe9cf956",
"shasum": ""
},
"require": {
@@ -6730,7 +7110,7 @@
"laravel/laravel": "8.x-dev",
"mockery/mockery": "^1.4.4",
"orchestra/canvas": "^6.1",
- "phpunit/phpunit": "^8.5.21 || ^9.5.10 || ^10.0",
+ "phpunit/phpunit": "^8.5.21 || ^9.5.10",
"spatie/laravel-ray": "^1.7.1",
"symfony/process": "^5.0"
},
@@ -6793,7 +7173,7 @@
"type": "liberapay"
}
],
- "time": "2022-02-08T12:50:35+00:00"
+ "time": "2022-10-11T12:12:52+00:00"
},
{
"name": "phar-io/manifest",
@@ -7018,25 +7398,30 @@
},
{
"name": "phpdocumentor/type-resolver",
- "version": "1.6.1",
+ "version": "1.6.2",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "77a32518733312af16a44300404e945338981de3"
+ "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3",
- "reference": "77a32518733312af16a44300404e945338981de3",
+ "url": "https://github.com/gitapi/repos/phpDocumentor/TypeResolver/zipball/48f445a408c131e38cab1c235aa6d2bb7a0bb20d",
+ "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d",
"shasum": ""
},
"require": {
- "php": "^7.2 || ^8.0",
+ "php": "^7.4 || ^8.0",
"phpdocumentor/reflection-common": "^2.0"
},
"require-dev": {
"ext-tokenizer": "*",
- "psalm/phar": "^4.8"
+ "phpstan/extension-installer": "^1.1",
+ "phpstan/phpstan": "^1.8",
+ "phpstan/phpstan-phpunit": "^1.1",
+ "phpunit/phpunit": "^9.5",
+ "rector/rector": "^0.13.9",
+ "vimeo/psalm": "^4.25"
},
"type": "library",
"extra": {
@@ -7062,57 +7447,58 @@
"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.6.1"
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.2"
},
- "time": "2022-03-15T21:29:03+00:00"
+ "time": "2022-10-14T12:47:21+00:00"
},
{
"name": "phpro/grumphp",
- "version": "v1.5.1",
+ "version": "v1.13.0",
"source": {
"type": "git",
"url": "https://github.com/phpro/grumphp.git",
- "reference": "ef3d019f25f6852e61c3af7c8c234b1bf451a34c"
+ "reference": "3ec61c1678c4c370f02b05fef606fd561d923c8e"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/phpro/grumphp/zipball/ef3d019f25f6852e61c3af7c8c234b1bf451a34c",
- "reference": "ef3d019f25f6852e61c3af7c8c234b1bf451a34c",
+ "url": "https://github.com/gitapi/repos/phpro/grumphp/zipball/3ec61c1678c4c370f02b05fef606fd561d923c8e",
+ "reference": "3ec61c1678c4c370f02b05fef606fd561d923c8e",
"shasum": ""
},
"require": {
- "amphp/amp": "^2.4",
+ "amphp/amp": "^2.6",
"amphp/parallel": "^1.4",
- "amphp/parallel-functions": "1.0",
- "composer-plugin-api": "~1.0 || ~2.0",
- "doctrine/collections": "^1.6.7",
+ "amphp/parallel-functions": "^1.1",
+ "composer-plugin-api": "~2.0",
+ "doctrine/collections": "^1.6.8",
"ext-json": "*",
- "gitonomy/gitlib": "^1.0.3",
- "monolog/monolog": "~1.16 || ^2.0",
- "ondram/ci-detector": "^3.5 || ^4.0",
- "opis/closure": "^3.5",
- "php": "^7.3 || ^8.0",
- "psr/container": "^1.0",
- "seld/jsonlint": "~1.1",
- "symfony/config": "~4.4 || ~5.0",
- "symfony/console": "~4.4 || ~5.0",
- "symfony/dependency-injection": "~4.4 || ~5.0",
- "symfony/dotenv": "~4.4 || ~5.0",
- "symfony/event-dispatcher": "~4.4 || ~5.0",
- "symfony/filesystem": "~4.4 || ~5.0",
- "symfony/finder": "~4.4 || ~5.0",
- "symfony/options-resolver": "~4.4 || ~5.0",
- "symfony/process": "~4.4 || ~5.0",
- "symfony/yaml": "~4.4 || ~5.0"
+ "gitonomy/gitlib": "^1.3",
+ "laravel/serializable-closure": "^1.1",
+ "monolog/monolog": "^2.0 || ^3.0",
+ "ondram/ci-detector": "^4.0",
+ "php": "^7.4 || ^8.0",
+ "psr/container": "^1.1 || ^2.0",
+ "seld/jsonlint": "~1.8",
+ "symfony/config": "~5.3 || ~6.0",
+ "symfony/console": "~5.3 || ~6.0",
+ "symfony/dependency-injection": "~5.3 || ~6.0",
+ "symfony/dotenv": "~5.3 || ~6.0",
+ "symfony/event-dispatcher": "~5.3 || ~6.0",
+ "symfony/filesystem": "~5.3 || ~6.0",
+ "symfony/finder": "~5.3 || ~6.0",
+ "symfony/options-resolver": "~5.3 || ~6.0",
+ "symfony/process": "~5.3 || ~6.0",
+ "symfony/yaml": "~5.3 || ~6.0"
},
"require-dev": {
- "brianium/paratest": "^6.3",
- "composer/composer": "^1.10.22 || ^2.0.13",
- "nikic/php-parser": "~4.0",
+ "amphp/sync": "^v1.4",
+ "brianium/paratest": "^6.4",
+ "composer/composer": "^2.2.6",
+ "nikic/php-parser": "~4.13",
"php-parallel-lint/php-parallel-lint": "^1.3",
- "phpspec/phpspec": "^7.1",
+ "phpspec/phpspec": "^7.2",
"phpspec/prophecy-phpunit": "^2.0",
- "phpunit/phpunit": "^9.5"
+ "phpunit/phpunit": "^9.5.13"
},
"suggest": {
"atoum/atoum": "Lets GrumPHP run your unit tests.",
@@ -7177,96 +7563,133 @@
"description": "A composer plugin that enables source code quality checks.",
"support": {
"issues": "https://github.com/phpro/grumphp/issues",
- "source": "https://github.com/phpro/grumphp/tree/v1.5.1"
+ "source": "https://github.com/phpro/grumphp/tree/v1.13.0"
},
- "time": "2022-02-07T13:28:33+00:00"
+ "time": "2022-06-24T08:32:25+00:00"
},
{
- "name": "phpspec/prophecy",
- "version": "v1.15.0",
+ "name": "phpstan/phpdoc-parser",
+ "version": "1.15.3",
"source": {
"type": "git",
- "url": "https://github.com/phpspec/prophecy.git",
- "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13"
+ "url": "https://github.com/phpstan/phpdoc-parser.git",
+ "reference": "61800f71a5526081d1b5633766aa88341f1ade76"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
- "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
+ "url": "https://github.com/gitapi/repos/phpstan/phpdoc-parser/zipball/61800f71a5526081d1b5633766aa88341f1ade76",
+ "reference": "61800f71a5526081d1b5633766aa88341f1ade76",
"shasum": ""
},
"require": {
- "doctrine/instantiator": "^1.2",
- "php": "^7.2 || ~8.0, <8.2",
- "phpdocumentor/reflection-docblock": "^5.2",
- "sebastian/comparator": "^3.0 || ^4.0",
- "sebastian/recursion-context": "^3.0 || ^4.0"
+ "php": "^7.2 || ^8.0"
},
"require-dev": {
- "phpspec/phpspec": "^6.0 || ^7.0",
- "phpunit/phpunit": "^8.0 || ^9.0"
+ "php-parallel-lint/php-parallel-lint": "^1.2",
+ "phpstan/extension-installer": "^1.0",
+ "phpstan/phpstan": "^1.5",
+ "phpstan/phpstan-phpunit": "^1.1",
+ "phpstan/phpstan-strict-rules": "^1.0",
+ "phpunit/phpunit": "^9.5",
+ "symfony/process": "^5.2"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.x-dev"
- }
- },
"autoload": {
"psr-4": {
- "Prophecy\\": "src/Prophecy"
+ "PHPStan\\PhpDocParser\\": [
+ "src/"
+ ]
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
- "authors": [
- {
- "name": "Konstantin Kudryashov",
- "email": "ever.zet@gmail.com",
- "homepage": "http://everzet.com"
- },
- {
- "name": "Marcello Duarte",
- "email": "marcello.duarte@gmail.com"
- }
+ "description": "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/1.15.3"
+ },
+ "time": "2022-12-20T20:56:55+00:00"
+ },
+ {
+ "name": "phpstan/phpstan",
+ "version": "1.9.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpstan/phpstan.git",
+ "reference": "d03bccee595e2146b7c9d174486b84f4dc61b0f2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://github.com/gitapi/repos/phpstan/phpstan/zipball/d03bccee595e2146b7c9d174486b84f4dc61b0f2",
+ "reference": "d03bccee595e2146b7c9d174486b84f4dc61b0f2",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2|^8.0"
+ },
+ "conflict": {
+ "phpstan/phpstan-shim": "*"
+ },
+ "bin": [
+ "phpstan",
+ "phpstan.phar"
],
- "description": "Highly opinionated mocking framework for PHP 5.3+",
- "homepage": "https://github.com/phpspec/prophecy",
+ "type": "library",
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "PHPStan - PHP Static Analysis Tool",
"keywords": [
- "Double",
- "Dummy",
- "fake",
- "mock",
- "spy",
- "stub"
+ "dev",
+ "static analysis"
],
"support": {
- "issues": "https://github.com/phpspec/prophecy/issues",
- "source": "https://github.com/phpspec/prophecy/tree/v1.15.0"
+ "issues": "https://github.com/phpstan/phpstan/issues",
+ "source": "https://github.com/phpstan/phpstan/tree/1.9.4"
},
- "time": "2021-12-08T12:19:24+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/ondrejmirtes",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/phpstan",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-12-17T13:33:52+00:00"
},
{
"name": "phpunit/php-code-coverage",
- "version": "9.2.15",
+ "version": "9.2.22",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f"
+ "reference": "e4bf60d2220b4baaa0572986b5d69870226b06df"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f",
- "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f",
+ "url": "https://github.com/gitapi/repos/sebastianbergmann/php-code-coverage/zipball/e4bf60d2220b4baaa0572986b5d69870226b06df",
+ "reference": "e4bf60d2220b4baaa0572986b5d69870226b06df",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-libxml": "*",
"ext-xmlwriter": "*",
- "nikic/php-parser": "^4.13.0",
+ "nikic/php-parser": "^4.14",
"php": ">=7.3",
"phpunit/php-file-iterator": "^3.0.3",
"phpunit/php-text-template": "^2.0.2",
@@ -7315,7 +7738,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
- "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15"
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.22"
},
"funding": [
{
@@ -7323,7 +7746,7 @@
"type": "github"
}
],
- "time": "2022-03-07T09:28:20+00:00"
+ "time": "2022-12-18T16:40:55+00:00"
},
{
"name": "phpunit/php-file-iterator",
@@ -7568,16 +7991,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "9.5.21",
+ "version": "9.5.27",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1"
+ "reference": "a2bc7ffdca99f92d959b3f2270529334030bba38"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/sebastianbergmann/phpunit/zipball/0e32b76be457de00e83213528f6bb37e2a38fcb1",
- "reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1",
+ "url": "https://github.com/gitapi/repos/sebastianbergmann/phpunit/zipball/a2bc7ffdca99f92d959b3f2270529334030bba38",
+ "reference": "a2bc7ffdca99f92d959b3f2270529334030bba38",
"shasum": ""
},
"require": {
@@ -7592,7 +8015,6 @@
"phar-io/manifest": "^2.0.3",
"phar-io/version": "^3.0.2",
"php": ">=7.3",
- "phpspec/prophecy": "^1.12.1",
"phpunit/php-code-coverage": "^9.2.13",
"phpunit/php-file-iterator": "^3.0.5",
"phpunit/php-invoker": "^3.1.1",
@@ -7600,19 +8022,16 @@
"phpunit/php-timer": "^5.0.2",
"sebastian/cli-parser": "^1.0.1",
"sebastian/code-unit": "^1.0.6",
- "sebastian/comparator": "^4.0.5",
+ "sebastian/comparator": "^4.0.8",
"sebastian/diff": "^4.0.3",
"sebastian/environment": "^5.1.3",
- "sebastian/exporter": "^4.0.3",
+ "sebastian/exporter": "^4.0.5",
"sebastian/global-state": "^5.0.1",
"sebastian/object-enumerator": "^4.0.3",
"sebastian/resource-operations": "^3.0.3",
- "sebastian/type": "^3.0",
+ "sebastian/type": "^3.2",
"sebastian/version": "^3.0.2"
},
- "require-dev": {
- "phpspec/prophecy-phpunit": "^2.0.1"
- },
"suggest": {
"ext-soap": "*",
"ext-xdebug": "*"
@@ -7654,7 +8073,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.21"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.27"
},
"funding": [
{
@@ -7664,9 +8083,13 @@
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit",
+ "type": "tidelift"
}
],
- "time": "2022-06-19T12:14:25+00:00"
+ "time": "2022-12-09T07:31:23+00:00"
},
{
"name": "pimple/pimple",
@@ -7775,6 +8198,66 @@
},
"time": "2021-11-27T18:46:32+00:00"
},
+ {
+ "name": "rector/rector",
+ "version": "0.13.10",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/rectorphp/rector.git",
+ "reference": "d1e069db8ad3b4aea2b968248370c21415e4c180"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://github.com/gitapi/repos/rectorphp/rector/zipball/d1e069db8ad3b4aea2b968248370c21415e4c180",
+ "reference": "d1e069db8ad3b4aea2b968248370c21415e4c180",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2|^8.0",
+ "phpstan/phpstan": "^1.8.2"
+ },
+ "conflict": {
+ "phpstan/phpdoc-parser": "<1.6.2",
+ "rector/rector-cakephp": "*",
+ "rector/rector-doctrine": "*",
+ "rector/rector-laravel": "*",
+ "rector/rector-nette": "*",
+ "rector/rector-phpoffice": "*",
+ "rector/rector-phpunit": "*",
+ "rector/rector-prefixed": "*",
+ "rector/rector-symfony": "*"
+ },
+ "bin": [
+ "bin/rector"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "0.13-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Instant Upgrade and Automated Refactoring of any PHP code",
+ "support": {
+ "issues": "https://github.com/rectorphp/rector/issues",
+ "source": "https://github.com/rectorphp/rector/tree/0.13.10"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/tomasvotruba",
+ "type": "github"
+ }
+ ],
+ "time": "2022-08-03T12:48:10+00:00"
+ },
{
"name": "sebastian/cli-parser",
"version": "1.0.1",
@@ -7944,16 +8427,16 @@
},
{
"name": "sebastian/comparator",
- "version": "4.0.6",
+ "version": "4.0.8",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "55f4261989e546dc112258c7a75935a81a7ce382"
+ "reference": "fa0f136dd2334583309d32b62544682ee972b51a"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382",
- "reference": "55f4261989e546dc112258c7a75935a81a7ce382",
+ "url": "https://github.com/gitapi/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a",
+ "reference": "fa0f136dd2334583309d32b62544682ee972b51a",
"shasum": ""
},
"require": {
@@ -8006,7 +8489,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/comparator/issues",
- "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6"
+ "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8"
},
"funding": [
{
@@ -8014,7 +8497,7 @@
"type": "github"
}
],
- "time": "2020-10-26T15:49:45+00:00"
+ "time": "2022-09-14T12:41:17+00:00"
},
{
"name": "sebastian/complexity",
@@ -8204,16 +8687,16 @@
},
{
"name": "sebastian/exporter",
- "version": "4.0.4",
+ "version": "4.0.5",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9"
+ "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9",
- "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9",
+ "url": "https://github.com/gitapi/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d",
+ "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d",
"shasum": ""
},
"require": {
@@ -8269,7 +8752,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/exporter/issues",
- "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4"
+ "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5"
},
"funding": [
{
@@ -8277,7 +8760,7 @@
"type": "github"
}
],
- "time": "2021-11-11T14:18:36+00:00"
+ "time": "2022-09-14T06:03:37+00:00"
},
{
"name": "sebastian/global-state",
@@ -8632,16 +9115,16 @@
},
{
"name": "sebastian/type",
- "version": "3.0.0",
+ "version": "3.2.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/type.git",
- "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad"
+ "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad",
- "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad",
+ "url": "https://github.com/gitapi/repos/sebastianbergmann/type/zipball/fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e",
+ "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e",
"shasum": ""
},
"require": {
@@ -8653,7 +9136,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-master": "3.2-dev"
}
},
"autoload": {
@@ -8676,7 +9159,7 @@
"homepage": "https://github.com/sebastianbergmann/type",
"support": {
"issues": "https://github.com/sebastianbergmann/type/issues",
- "source": "https://github.com/sebastianbergmann/type/tree/3.0.0"
+ "source": "https://github.com/sebastianbergmann/type/tree/3.2.0"
},
"funding": [
{
@@ -8684,7 +9167,7 @@
"type": "github"
}
],
- "time": "2022-03-15T09:54:48+00:00"
+ "time": "2022-09-12T14:47:03+00:00"
},
{
"name": "sebastian/version",
@@ -8805,31 +9288,39 @@
},
{
"name": "slevomat/coding-standard",
- "version": "4.8.7",
+ "version": "7.2.1",
"source": {
"type": "git",
"url": "https://github.com/slevomat/coding-standard.git",
- "reference": "bff96313d8c7c2ba57a4edb13c1c141df8988c58"
+ "reference": "aff06ae7a84e4534bf6f821dc982a93a5d477c90"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/slevomat/coding-standard/zipball/bff96313d8c7c2ba57a4edb13c1c141df8988c58",
- "reference": "bff96313d8c7c2ba57a4edb13c1c141df8988c58",
+ "url": "https://github.com/gitapi/repos/slevomat/coding-standard/zipball/aff06ae7a84e4534bf6f821dc982a93a5d477c90",
+ "reference": "aff06ae7a84e4534bf6f821dc982a93a5d477c90",
"shasum": ""
},
"require": {
- "php": "^7.1",
- "squizlabs/php_codesniffer": "^3.4.0"
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7",
+ "php": "^7.2 || ^8.0",
+ "phpstan/phpdoc-parser": "^1.5.1",
+ "squizlabs/php_codesniffer": "^3.6.2"
},
"require-dev": {
- "jakub-onderka/php-parallel-lint": "1.0.0",
- "phing/phing": "2.16.1",
- "phpstan/phpstan": "0.9.2",
- "phpstan/phpstan-phpunit": "0.9.4",
- "phpstan/phpstan-strict-rules": "0.9",
- "phpunit/phpunit": "7.5.1"
+ "phing/phing": "2.17.3",
+ "php-parallel-lint/php-parallel-lint": "1.3.2",
+ "phpstan/phpstan": "1.4.10|1.7.1",
+ "phpstan/phpstan-deprecation-rules": "1.0.0",
+ "phpstan/phpstan-phpunit": "1.0.0|1.1.1",
+ "phpstan/phpstan-strict-rules": "1.2.3",
+ "phpunit/phpunit": "7.5.20|8.5.21|9.5.20"
},
"type": "phpcodesniffer-standard",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "7.x-dev"
+ }
+ },
"autoload": {
"psr-4": {
"SlevomatCodingStandard\\": "SlevomatCodingStandard"
@@ -8842,9 +9333,19 @@
"description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.",
"support": {
"issues": "https://github.com/slevomat/coding-standard/issues",
- "source": "https://github.com/slevomat/coding-standard/tree/4.8.7"
+ "source": "https://github.com/slevomat/coding-standard/tree/7.2.1"
},
- "time": "2019-01-03T13:15:50+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/kukulich",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/slevomat/coding-standard",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-05-25T10:58:12+00:00"
},
{
"name": "spatie/backtrace",
@@ -8910,16 +9411,16 @@
},
{
"name": "spatie/laravel-ray",
- "version": "1.29.7",
+ "version": "1.31.0",
"source": {
"type": "git",
"url": "https://github.com/spatie/laravel-ray.git",
- "reference": "97b8ccdb9975e3339069765417990e89474254ee"
+ "reference": "7394694afd89d05879e7a69c54abab73c1199acd"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/spatie/laravel-ray/zipball/97b8ccdb9975e3339069765417990e89474254ee",
- "reference": "97b8ccdb9975e3339069765417990e89474254ee",
+ "url": "https://github.com/gitapi/repos/spatie/laravel-ray/zipball/7394694afd89d05879e7a69c54abab73c1199acd",
+ "reference": "7394694afd89d05879e7a69c54abab73c1199acd",
"shasum": ""
},
"require": {
@@ -8978,7 +9479,7 @@
],
"support": {
"issues": "https://github.com/spatie/laravel-ray/issues",
- "source": "https://github.com/spatie/laravel-ray/tree/1.29.7"
+ "source": "https://github.com/spatie/laravel-ray/tree/1.31.0"
},
"funding": [
{
@@ -8990,7 +9491,7 @@
"type": "other"
}
],
- "time": "2022-05-27T18:45:58+00:00"
+ "time": "2022-09-20T13:13:22+00:00"
},
{
"name": "spatie/macroable",
@@ -9044,16 +9545,16 @@
},
{
"name": "spatie/ray",
- "version": "1.34.5",
+ "version": "1.36.0",
"source": {
"type": "git",
"url": "https://github.com/spatie/ray.git",
- "reference": "2d64ea264eecbdc7ec01e4e8b45978cae80815d2"
+ "reference": "4a4def8cda4806218341b8204c98375aa8c34323"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/spatie/ray/zipball/2d64ea264eecbdc7ec01e4e8b45978cae80815d2",
- "reference": "2d64ea264eecbdc7ec01e4e8b45978cae80815d2",
+ "url": "https://github.com/gitapi/repos/spatie/ray/zipball/4a4def8cda4806218341b8204c98375aa8c34323",
+ "reference": "4a4def8cda4806218341b8204c98375aa8c34323",
"shasum": ""
},
"require": {
@@ -9103,7 +9604,7 @@
],
"support": {
"issues": "https://github.com/spatie/ray/issues",
- "source": "https://github.com/spatie/ray/tree/1.34.5"
+ "source": "https://github.com/spatie/ray/tree/1.36.0"
},
"funding": [
{
@@ -9115,7 +9616,7 @@
"type": "other"
}
],
- "time": "2022-06-03T12:32:57+00:00"
+ "time": "2022-08-11T14:04:18+00:00"
},
{
"name": "squizlabs/php_codesniffer",
@@ -9175,16 +9676,16 @@
},
{
"name": "symfony/config",
- "version": "v5.4.9",
+ "version": "v5.4.11",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
- "reference": "8f551fe22672ac7ab2c95fe46d899f960ed4d979"
+ "reference": "ec79e03125c1d2477e43dde8528535d90cc78379"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/symfony/config/zipball/8f551fe22672ac7ab2c95fe46d899f960ed4d979",
- "reference": "8f551fe22672ac7ab2c95fe46d899f960ed4d979",
+ "url": "https://github.com/gitapi/repos/symfony/config/zipball/ec79e03125c1d2477e43dde8528535d90cc78379",
+ "reference": "ec79e03125c1d2477e43dde8528535d90cc78379",
"shasum": ""
},
"require": {
@@ -9234,7 +9735,7 @@
"description": "Helps you find, load, combine, autofill and validate configuration values of any kind",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/config/tree/v5.4.9"
+ "source": "https://github.com/symfony/config/tree/v5.4.11"
},
"funding": [
{
@@ -9250,20 +9751,20 @@
"type": "tidelift"
}
],
- "time": "2022-05-17T10:39:36+00:00"
+ "time": "2022-07-20T13:00:38+00:00"
},
{
"name": "symfony/dependency-injection",
- "version": "v5.4.10",
+ "version": "v5.4.16",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
- "reference": "88d1c0d38c2e60f757fa11d89cfc885f0b7f5171"
+ "reference": "a93e1863500940780fc1235f52d54397be2d14b3"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/symfony/dependency-injection/zipball/88d1c0d38c2e60f757fa11d89cfc885f0b7f5171",
- "reference": "88d1c0d38c2e60f757fa11d89cfc885f0b7f5171",
+ "url": "https://github.com/gitapi/repos/symfony/dependency-injection/zipball/a93e1863500940780fc1235f52d54397be2d14b3",
+ "reference": "a93e1863500940780fc1235f52d54397be2d14b3",
"shasum": ""
},
"require": {
@@ -9323,7 +9824,7 @@
"description": "Allows you to standardize and centralize the way objects are constructed in your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/dependency-injection/tree/v5.4.10"
+ "source": "https://github.com/symfony/dependency-injection/tree/v5.4.16"
},
"funding": [
{
@@ -9339,7 +9840,7 @@
"type": "tidelift"
}
],
- "time": "2022-06-26T13:00:04+00:00"
+ "time": "2022-11-25T07:33:13+00:00"
},
{
"name": "symfony/dotenv",
@@ -9414,16 +9915,16 @@
},
{
"name": "symfony/filesystem",
- "version": "v5.4.9",
+ "version": "v5.4.13",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "36a017fa4cce1eff1b8e8129ff53513abcef05ba"
+ "reference": "ac09569844a9109a5966b9438fc29113ce77cf51"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/symfony/filesystem/zipball/36a017fa4cce1eff1b8e8129ff53513abcef05ba",
- "reference": "36a017fa4cce1eff1b8e8129ff53513abcef05ba",
+ "url": "https://github.com/gitapi/repos/symfony/filesystem/zipball/ac09569844a9109a5966b9438fc29113ce77cf51",
+ "reference": "ac09569844a9109a5966b9438fc29113ce77cf51",
"shasum": ""
},
"require": {
@@ -9458,7 +9959,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/filesystem/tree/v5.4.9"
+ "source": "https://github.com/symfony/filesystem/tree/v5.4.13"
},
"funding": [
{
@@ -9474,20 +9975,20 @@
"type": "tidelift"
}
],
- "time": "2022-05-20T13:55:35+00:00"
+ "time": "2022-09-21T19:53:16+00:00"
},
{
"name": "symfony/options-resolver",
- "version": "v5.4.3",
+ "version": "v5.4.11",
"source": {
"type": "git",
"url": "https://github.com/symfony/options-resolver.git",
- "reference": "cc1147cb11af1b43f503ac18f31aa3bec213aba8"
+ "reference": "54f14e36aa73cb8f7261d7686691fd4d75ea2690"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/symfony/options-resolver/zipball/cc1147cb11af1b43f503ac18f31aa3bec213aba8",
- "reference": "cc1147cb11af1b43f503ac18f31aa3bec213aba8",
+ "url": "https://github.com/gitapi/repos/symfony/options-resolver/zipball/54f14e36aa73cb8f7261d7686691fd4d75ea2690",
+ "reference": "54f14e36aa73cb8f7261d7686691fd4d75ea2690",
"shasum": ""
},
"require": {
@@ -9527,7 +10028,7 @@
"options"
],
"support": {
- "source": "https://github.com/symfony/options-resolver/tree/v5.4.3"
+ "source": "https://github.com/symfony/options-resolver/tree/v5.4.11"
},
"funding": [
{
@@ -9543,20 +10044,20 @@
"type": "tidelift"
}
],
- "time": "2022-01-02T09:53:40+00:00"
+ "time": "2022-07-20T13:00:38+00:00"
},
{
"name": "symfony/stopwatch",
- "version": "v5.4.5",
+ "version": "v5.4.13",
"source": {
"type": "git",
"url": "https://github.com/symfony/stopwatch.git",
- "reference": "4d04b5c24f3c9a1a168a131f6cbe297155bc0d30"
+ "reference": "6df7a3effde34d81717bbef4591e5ffe32226d69"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/symfony/stopwatch/zipball/4d04b5c24f3c9a1a168a131f6cbe297155bc0d30",
- "reference": "4d04b5c24f3c9a1a168a131f6cbe297155bc0d30",
+ "url": "https://github.com/gitapi/repos/symfony/stopwatch/zipball/6df7a3effde34d81717bbef4591e5ffe32226d69",
+ "reference": "6df7a3effde34d81717bbef4591e5ffe32226d69",
"shasum": ""
},
"require": {
@@ -9589,7 +10090,7 @@
"description": "Provides a way to profile code",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/stopwatch/tree/v5.4.5"
+ "source": "https://github.com/symfony/stopwatch/tree/v5.4.13"
},
"funding": [
{
@@ -9605,20 +10106,20 @@
"type": "tidelift"
}
],
- "time": "2022-02-18T16:06:09+00:00"
+ "time": "2022-09-28T13:19:49+00:00"
},
{
"name": "symfony/yaml",
- "version": "v5.4.10",
+ "version": "v5.4.16",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
- "reference": "04e42926429d9e8b39c174387ab990bf7817f7a2"
+ "reference": "ebd37c71f62d5ec5f6e27de3e06fee492d4c6298"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/symfony/yaml/zipball/04e42926429d9e8b39c174387ab990bf7817f7a2",
- "reference": "04e42926429d9e8b39c174387ab990bf7817f7a2",
+ "url": "https://github.com/gitapi/repos/symfony/yaml/zipball/ebd37c71f62d5ec5f6e27de3e06fee492d4c6298",
+ "reference": "ebd37c71f62d5ec5f6e27de3e06fee492d4c6298",
"shasum": ""
},
"require": {
@@ -9664,7 +10165,7 @@
"description": "Loads and dumps YAML files",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/yaml/tree/v5.4.10"
+ "source": "https://github.com/symfony/yaml/tree/v5.4.16"
},
"funding": [
{
@@ -9680,7 +10181,7 @@
"type": "tidelift"
}
],
- "time": "2022-06-20T11:50:59+00:00"
+ "time": "2022-11-25T16:04:03+00:00"
},
{
"name": "theseer/tokenizer",
@@ -9734,16 +10235,16 @@
},
{
"name": "vimeo/psalm",
- "version": "4.24.0",
+ "version": "4.30.0",
"source": {
"type": "git",
"url": "https://github.com/vimeo/psalm.git",
- "reference": "06dd975cb55d36af80f242561738f16c5f58264f"
+ "reference": "d0bc6e25d89f649e4f36a534f330f8bb4643dd69"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/vimeo/psalm/zipball/06dd975cb55d36af80f242561738f16c5f58264f",
- "reference": "06dd975cb55d36af80f242561738f16c5f58264f",
+ "url": "https://github.com/gitapi/repos/vimeo/psalm/zipball/d0bc6e25d89f649e4f36a534f330f8bb4643dd69",
+ "reference": "d0bc6e25d89f649e4f36a534f330f8bb4643dd69",
"shasum": ""
},
"require": {
@@ -9782,6 +10283,7 @@
"phpdocumentor/reflection-docblock": "^5",
"phpmyadmin/sql-parser": "5.1.0||dev-master",
"phpspec/prophecy": ">=1.9.0",
+ "phpstan/phpdoc-parser": "1.2.* || 1.6.4",
"phpunit/phpunit": "^9.0",
"psalm/plugin-phpunit": "^0.16",
"slevomat/coding-standard": "^7.0",
@@ -9835,9 +10337,9 @@
],
"support": {
"issues": "https://github.com/vimeo/psalm/issues",
- "source": "https://github.com/vimeo/psalm/tree/4.24.0"
+ "source": "https://github.com/vimeo/psalm/tree/4.30.0"
},
- "time": "2022-06-26T11:47:54+00:00"
+ "time": "2022-11-06T20:37:08+00:00"
},
{
"name": "webmozart/path-util",
@@ -9892,16 +10394,16 @@
},
{
"name": "zbateson/mail-mime-parser",
- "version": "2.2.1",
+ "version": "2.2.3",
"source": {
"type": "git",
"url": "https://github.com/zbateson/mail-mime-parser.git",
- "reference": "24955de7ec352b3258c1d4551efd21202cb8710c"
+ "reference": "295c7f82a8c44af685680d9df6714beb812e90ff"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/zbateson/mail-mime-parser/zipball/24955de7ec352b3258c1d4551efd21202cb8710c",
- "reference": "24955de7ec352b3258c1d4551efd21202cb8710c",
+ "url": "https://github.com/gitapi/repos/zbateson/mail-mime-parser/zipball/295c7f82a8c44af685680d9df6714beb812e90ff",
+ "reference": "295c7f82a8c44af685680d9df6714beb812e90ff",
"shasum": ""
},
"require": {
@@ -9961,7 +10463,7 @@
"type": "github"
}
],
- "time": "2022-02-22T21:35:59+00:00"
+ "time": "2022-09-28T16:31:49+00:00"
},
{
"name": "zbateson/mb-wrapper",
@@ -10032,16 +10534,16 @@
},
{
"name": "zbateson/stream-decorators",
- "version": "1.0.6",
+ "version": "1.0.7",
"source": {
"type": "git",
"url": "https://github.com/zbateson/stream-decorators.git",
- "reference": "3403c4323bd1cd15fe54348b031b26b064c706af"
+ "reference": "8f8ca208572963258b7e6d91106181706deacd10"
},
"dist": {
"type": "zip",
- "url": "https://github.com/gitapi/repos/zbateson/stream-decorators/zipball/3403c4323bd1cd15fe54348b031b26b064c706af",
- "reference": "3403c4323bd1cd15fe54348b031b26b064c706af",
+ "url": "https://github.com/gitapi/repos/zbateson/stream-decorators/zipball/8f8ca208572963258b7e6d91106181706deacd10",
+ "reference": "8f8ca208572963258b7e6d91106181706deacd10",
"shasum": ""
},
"require": {
@@ -10081,7 +10583,7 @@
],
"support": {
"issues": "https://github.com/zbateson/stream-decorators/issues",
- "source": "https://github.com/zbateson/stream-decorators/tree/1.0.6"
+ "source": "https://github.com/zbateson/stream-decorators/tree/1.0.7"
},
"funding": [
{
@@ -10089,7 +10591,7 @@
"type": "github"
}
],
- "time": "2021-07-08T19:01:59+00:00"
+ "time": "2022-09-08T15:44:55+00:00"
}
],
"aliases": [],
@@ -10098,9 +10600,9 @@
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
- "ext-rdkafka": "*",
+ "ext-rdkafka": ">=4.0",
"ext-json": "*",
- "php": ">=7.1"
+ "php": ">=7.4"
},
"platform-dev": [],
"plugin-api-version": "2.0.0"
diff --git a/config/kafka.php b/config/kafka.php
index 60865f73..9f9ae370 100644
--- a/config/kafka.php
+++ b/config/kafka.php
@@ -23,8 +23,10 @@
'request_options' => [
'headers' => [
'Authorization' => [
- 'Basic '.base64_encode(
- env('AVRO_SCHEMA_USERNAME').':'.env('AVRO_SCHEMA_PASSWORD')
+ 'Basic ' . base64_encode(
+ env('AVRO_SCHEMA_USERNAME')
+ . ':'
+ . env('AVRO_SCHEMA_PASSWORD')
),
],
],
@@ -44,7 +46,7 @@
'brokers' => [
'default' => [
- 'connections' => 'kafka:9092',
+ 'connections' => env('KAFKA_BROKER_CONNECTIONS', 'kafka:9092'),
// If your broker doest not have authentication, you can
// remove this configuration, or set as empty.
@@ -141,7 +143,9 @@
// Here you can configure which partition you want to send the message
// it can be -1 (RD_KAFKA_PARTITION_UA) to let Kafka decide, or an int with the partition number
- 'partition' => constant('RD_KAFKA_PARTITION_UA') ?? -1,
+ 'partition' => defined('RD_KAFKA_PARTITION_UA')
+ ? constant('RD_KAFKA_PARTITION_UA')
+ : -1,
],
],
],
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 4185716c..1531adc3 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -1,8 +1,26 @@
-FROM leroymerlinbr/php:7.3
+FROM php:7.4-fpm
LABEL maintainer="boitata@leroymerlin.com.br"
USER root:root
+COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer
+
+RUN apt-get update -qq \
+ && apt-get install -qq --no-install-recommends \
+ git zip unzip \
+ libzip-dev libssl-dev \
+ zlib1g-dev libicu-dev \
+ && apt-get clean
+
+RUN pecl install xdebug-3.1.6 \
+ && docker-php-ext-enable \
+ xdebug \
+ && docker-php-ext-configure \
+ intl \
+ && docker-php-ext-install \
+ intl pcntl zip \
+ && rm -rf /tmp/*
+
RUN cd /tmp \
&& git clone https://github.com/edenhill/librdkafka.git \
&& cd librdkafka \
@@ -11,7 +29,7 @@ RUN cd /tmp \
&& make install \
&& rm -rf /tmp/*
-RUN pecl install rdkafka \
+RUN pecl install rdkafka-6.0.3 \
&& docker-php-ext-enable \
rdkafka \
xdebug \
@@ -22,6 +40,7 @@ ARG GID=1000
RUN groupmod -g ${GID} www-data \
&& usermod -u ${UID} -g www-data www-data \
+ && mkdir -p /var/www/html \
&& chown -hR www-data:www-data \
/var/www \
/usr/local/
@@ -29,3 +48,5 @@ RUN groupmod -g ${GID} www-data \
COPY custom.ini /usr/local/etc/php/conf.d/custom.ini
USER www-data:www-data
+WORKDIR /var/www/html
+ENV PATH=$PATH:/var/www/.composer/vendor/bin
diff --git a/grumphp.yml b/grumphp.yml
index 880affc2..f4d4df5d 100644
--- a/grumphp.yml
+++ b/grumphp.yml
@@ -11,6 +11,7 @@ grumphp:
standard: [ phpcs.xml ]
psalm:
config: psalm.xml
+ ignore_patterns: [ 'tests' ]
threads: 4
git_commit_message:
enforce_capitalized_subject: false
diff --git a/phpcs.xml b/phpcs.xml
index 8f82781d..5d004a88 100644
--- a/phpcs.xml
+++ b/phpcs.xml
@@ -20,9 +20,16 @@
config
-
-
- src/Producer.php
+
+ tests/*/Dummies/*.php
+
+
src/Record/ConsumerRecord.php
+ src/Record/ProducerRecord.php
+ src/TopicHandler/Producer/AbstractHandler.php
+ src/TopicHandler/Producer/AbstractProducer.php
+
+
+ src/Producer/Poll.php
diff --git a/psalm-baseline.xml b/psalm-baseline.xml
new file mode 100644
index 00000000..53af71ca
--- /dev/null
+++ b/psalm-baseline.xml
@@ -0,0 +1,24 @@
+
+
+
+
+ consumeStart
+
+
+
+
+ mixed
+
+
+
+
+ $this->queue
+
+
+
+
+ $this->queue
+ $this->queue
+
+
+
diff --git a/psalm.xml b/psalm.xml
index 3b33c700..001c2d31 100644
--- a/psalm.xml
+++ b/psalm.xml
@@ -4,7 +4,9 @@
xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
errorLevel="6"
cacheDirectory="storage/psalm/cache"
- resolveFromConfigFile="true">
+ resolveFromConfigFile="true"
+ errorBaseline="psalm-baseline.xml"
+>
diff --git a/rector.php b/rector.php
new file mode 100644
index 00000000..f43c3035
--- /dev/null
+++ b/rector.php
@@ -0,0 +1,15 @@
+paths([__DIR__ . '/src', __DIR__ . '/tests']);
+
+ $rectorConfig->sets([
+ SetList::CODE_QUALITY,
+ ]);
+
+ $rectorConfig->phpVersion(PhpVersion::PHP_74);
+};
diff --git a/src/AbstractConfigManager.php b/src/AbstractConfigManager.php
index 5f9858d2..8bce1114 100644
--- a/src/AbstractConfigManager.php
+++ b/src/AbstractConfigManager.php
@@ -1,4 +1,5 @@
setting;
diff --git a/src/Authentication/AuthenticationInterface.php b/src/Authentication/AuthenticationInterface.php
index 5e02d3db..8ac02836 100644
--- a/src/Authentication/AuthenticationInterface.php
+++ b/src/Authentication/AuthenticationInterface.php
@@ -1,4 +1,5 @@
conf->set('security.protocol', $this->configManager->get('auth.type'));
+ $this->conf->set(
+ 'security.protocol',
+ $this->configManager->get('auth.type')
+ );
// The mechanisms key is optional when configuring this kind of authentication
// If the user does not specify the mechanism, the default will be 'PLAIN'.
// But, to make config more clear, we are asking the user every time.
- $this->conf->set('sasl.mechanisms', $this->configManager->get('auth.mechanisms'));
- $this->conf->set('sasl.username', $this->configManager->get('auth.username'));
- $this->conf->set('sasl.password', $this->configManager->get('auth.password'));
+ $this->conf->set(
+ 'sasl.mechanisms',
+ $this->configManager->get('auth.mechanisms')
+ );
+ $this->conf->set(
+ 'sasl.username',
+ $this->configManager->get('auth.username')
+ );
+ $this->conf->set(
+ 'sasl.password',
+ $this->configManager->get('auth.password')
+ );
}
}
diff --git a/src/Authentication/SSLAuthentication.php b/src/Authentication/SSLAuthentication.php
index 403ed652..246ab5e7 100644
--- a/src/Authentication/SSLAuthentication.php
+++ b/src/Authentication/SSLAuthentication.php
@@ -1,4 +1,5 @@
conf->set('security.protocol', $this->configManager->get('auth.type'));
- $this->conf->set('ssl.ca.location', $this->configManager->get('auth.ca'));
- $this->conf->set('ssl.certificate.location', $this->configManager->get('auth.certificate'));
- $this->conf->set('ssl.key.location', $this->configManager->get('auth.key'));
+ $this->conf->set(
+ 'security.protocol',
+ $this->configManager->get('auth.type')
+ );
+ $this->conf->set(
+ 'ssl.ca.location',
+ $this->configManager->get('auth.ca')
+ );
+ $this->conf->set(
+ 'ssl.certificate.location',
+ $this->configManager->get('auth.certificate')
+ );
+ $this->conf->set(
+ 'ssl.key.location',
+ $this->configManager->get('auth.key')
+ );
}
}
diff --git a/src/Avro/CachedSchemaRegistryClient.php b/src/Avro/CachedSchemaRegistryClient.php
index 834af9e1..c91e643c 100644
--- a/src/Avro/CachedSchemaRegistryClient.php
+++ b/src/Avro/CachedSchemaRegistryClient.php
@@ -1,4 +1,5 @@
= 200 && $status < 300)) {
- throw new RuntimeException('Unable to get schema for the specific ID: '.$status);
+ }
+
+ if (!($status >= 200 && $status < 300)) {
+ throw new RuntimeException(
+ 'Unable to get schema for the specific ID: ' . $status
+ );
}
$schema = $schema->parse($response['schema'], $schemaId);
@@ -76,12 +78,21 @@ public function getBySubjectAndVersion($subject, $version): Schema
if (404 === $status) {
throw new RuntimeException('Schema not found');
- } elseif (!($status >= 200 && $status < 300)) {
- throw new RuntimeException('Unable to get schema for the specific ID: '.$status);
+ }
+
+ if (!($status >= 200 && $status < 300)) {
+ throw new RuntimeException(
+ 'Unable to get schema for the specific ID: ' . $status
+ );
}
$schemaId = $response['id'];
- $schema = $schema->parse($response['schema'], $schemaId, $subject, $version);
+ $schema = $schema->parse(
+ $response['schema'],
+ $schemaId,
+ $subject,
+ $version
+ );
$this->cacheSchema($schema);
diff --git a/src/Avro/Client.php b/src/Avro/Client.php
index f8406302..e0b714ac 100644
--- a/src/Avro/Client.php
+++ b/src/Avro/Client.php
@@ -1,4 +1,5 @@
getStatusCode(), json_decode($response->getBody(), true)];
+ return [$response->getStatusCode(), json_decode(
+ $response->getBody(),
+ true
+ ),
+ ];
}
private function getContentTypeForPostRequest(): array
diff --git a/src/Avro/ClientFactory.php b/src/Avro/ClientFactory.php
index b193ea15..0e537e4c 100644
--- a/src/Avro/ClientFactory.php
+++ b/src/Avro/ClientFactory.php
@@ -1,4 +1,5 @@
string Schema Decoder Class]
+ * @var array [int Magic Byte => string Schema Decoder Class]
*/
- private $decoders = [
+ private array $decoders = [
SchemaFormats::MAGIC_BYTE_SCHEMAID => SchemaId::class,
SchemaFormats::MAGIC_BYTE_SUBJECT_VERSION => SchemaSubjectAndVersion::class,
];
- /**
- * @var CachedSchemaRegistryClient
- */
- private $registry;
+ private CachedSchemaRegistryClient $registry;
public function __construct(CachedSchemaRegistryClient $registry)
{
diff --git a/src/Avro/Serializer/MessageEncoder.php b/src/Avro/Serializer/MessageEncoder.php
index 15c09c8d..5db2e03e 100644
--- a/src/Avro/Serializer/MessageEncoder.php
+++ b/src/Avro/Serializer/MessageEncoder.php
@@ -1,4 +1,5 @@
string Schema Decoder Class]
+ * @var array [int Magic Byte => string Schema Decoder Class]
*/
- private $encoders = [
+ private array $encoders = [
SchemaFormats::MAGIC_BYTE_SCHEMAID => SchemaId::class,
SchemaFormats::MAGIC_BYTE_SUBJECT_VERSION => SchemaSubjectAndVersion::class,
];
- /**
- * @var CachedSchemaRegistryClient
- */
- private $registry;
+ private CachedSchemaRegistryClient $registry;
- /**
- * @var bool
- */
- private $registerMissingSchemas;
+ private bool $registerMissingSchemas;
- /**
- * @var int
- */
- private $defaultEncodingFormat;
+ private int $defaultEncodingFormat;
public function __construct(CachedSchemaRegistryClient $registry, array $options = [])
{
@@ -60,10 +52,10 @@ public function encodeMessage(
Schema $schema,
$message,
bool $isKey = false,
- int $format = null
+ ?int $format = null
): string {
$suffix = $isKey ? '-key' : '-value';
- $subject = $topic.$suffix;
+ $subject = $topic . $suffix;
$format = $format ?? $this->defaultEncodingFormat;
$encoder = $this->getEncoder($format);
@@ -74,7 +66,7 @@ public function encodeMessage(
private function getEncoder(int $format): EncoderInterface
{
if (!$class = $this->encoders[$format] ?? null) {
- throw new RuntimeException('Unsuported format: '.$format);
+ throw new RuntimeException('Unsuported format: ' . $format);
}
return app($class, ['registry' => $this->registry]);
diff --git a/src/Avro/Serializer/SchemaFormats.php b/src/Avro/Serializer/SchemaFormats.php
index 7bd2601f..65234021 100644
--- a/src/Avro/Serializer/SchemaFormats.php
+++ b/src/Avro/Serializer/SchemaFormats.php
@@ -1,4 +1,5 @@
*/
- protected $rules = [
+ protected array $rules = [
'topic' => 'required',
'broker' => 'required',
'offset_reset' => 'required', // latest, earliest, none
@@ -42,10 +43,22 @@ public function make(array $options, array $arguments): AbstractConfigManager
{
$configName = $options['config_name'] ?? 'kafka';
$topicConfig = $this->getTopicConfig($configName, $arguments['topic']);
- $consumerConfig = $this->getConsumerConfig($topicConfig, $arguments['consumer_group']);
- $brokerConfig = $this->getBrokerConfig($configName, $topicConfig['broker']);
- $schemaConfig = $this->getSchemaConfig($configName, $arguments['topic']);
- $override = array_merge($this->filterValues($options), $this->filterValues($arguments));
+ $consumerConfig = $this->getConsumerConfig(
+ $topicConfig,
+ $arguments['consumer_group']
+ );
+ $brokerConfig = $this->getBrokerConfig(
+ $configName,
+ $topicConfig['broker']
+ );
+ $schemaConfig = $this->getSchemaConfig(
+ $configName,
+ $arguments['topic']
+ );
+ $override = array_merge(
+ $this->filterValues($options),
+ $this->filterValues($arguments)
+ );
$config = array_merge(
$topicConfig,
$brokerConfig,
@@ -60,22 +73,34 @@ public function make(array $options, array $arguments): AbstractConfigManager
return $configManager;
}
+ /**
+ * @psalm-suppress InvalidReturnStatement
+ */
private function getTopicConfig(string $configName, string $topicId): array
{
- $topicConfig = config($configName.'.topics.'.$topicId);
+ $topicConfig = config($configName . '.topics.' . $topicId);
if (!$topicConfig) {
throw new ConfigurationException("Topic '{$topicId}' not found");
}
- $topicConfig['middlewares'] = $this->getMiddlewares($configName, $topicConfig);
+ $topicConfig['middlewares'] = $this->getMiddlewares(
+ $configName,
+ $topicConfig
+ );
return $topicConfig;
}
- private function getConsumerConfig(array $topicConfig, string $consumerGroupId = null): array
+ private function getConsumerConfig(array $topicConfig, ?string $consumerGroupId = null): array
{
- if (!$consumerGroupId && 1 === count($topicConfig['consumer']['consumer_groups'])) {
- $consumerGroupId = current(array_keys($topicConfig['consumer']['consumer_groups']));
+ if (
+ !$consumerGroupId && 1 === count(
+ $topicConfig['consumer']['consumer_groups']
+ )
+ ) {
+ $consumerGroupId = current(
+ array_keys($topicConfig['consumer']['consumer_groups'])
+ );
}
$consumerGroupId = $consumerGroupId ?? 'default';
@@ -83,7 +108,9 @@ private function getConsumerConfig(array $topicConfig, string $consumerGroupId =
$consumerConfig['consumer_group'] = $consumerGroupId;
if (!$consumerConfig) {
- throw new ConfigurationException("Consumer group '{$consumerGroupId}' not found");
+ throw new ConfigurationException(
+ "Consumer group '{$consumerGroupId}' not found"
+ );
}
return $consumerConfig;
@@ -92,7 +119,7 @@ private function getConsumerConfig(array $topicConfig, string $consumerGroupId =
private function getMiddlewares(string $configName, array $topicConfig): array
{
return array_merge(
- config($configName.'.middlewares.consumer', []),
+ config($configName . '.middlewares.consumer', []),
$topicConfig['consumer']['middlewares'] ?? []
);
}
diff --git a/src/Connectors/Consumer/ConnectorInterface.php b/src/Connectors/Consumer/ConnectorInterface.php
index a3cecdd5..3163fca6 100644
--- a/src/Connectors/Consumer/ConnectorInterface.php
+++ b/src/Connectors/Consumer/ConnectorInterface.php
@@ -1,4 +1,5 @@
get('handler'));
- $dispatcher = self::getMiddlewareDispatcher($configManager->middlewares());
-
- return new Manager($consumer, $handler, $dispatcher, $autoCommit, $commitAsync);
- }
-
- protected static function requiresPartition(AbstractConfigManager $configManager): bool
- {
- $partition = $configManager->get('partition');
-
- return !is_null($partition) && $partition >= 0;
+ $dispatcher = self::getMiddlewareDispatcher(
+ $configManager->middlewares()
+ );
+
+ return new Manager(
+ $consumer,
+ $handler,
+ $dispatcher,
+ $autoCommit,
+ $commitAsync
+ );
}
public static function getConsumer(bool $autoCommit, AbstractConfigManager $configManager): ConsumerInterface
{
if (self::requiresPartition($configManager)) {
- return app(LowLevel::class)->getConsumer($autoCommit, $configManager);
+ return app(LowLevel::class)->getConsumer(
+ $autoCommit,
+ $configManager
+ );
}
return app(HighLevel::class)->getConsumer($autoCommit, $configManager);
}
+ protected static function requiresPartition(AbstractConfigManager $configManager): bool
+ {
+ $partition = $configManager->get('partition');
+
+ return !is_null($partition) && $partition >= 0;
+ }
+
private static function getMiddlewareDispatcher(array $middlewares): Dispatcher
{
return new Dispatcher($middlewares);
diff --git a/src/Connectors/Consumer/HighLevel.php b/src/Connectors/Consumer/HighLevel.php
index 7d99b3cf..7a61a171 100644
--- a/src/Connectors/Consumer/HighLevel.php
+++ b/src/Connectors/Consumer/HighLevel.php
@@ -1,4 +1,5 @@
addBrokers($configManager->get('connections'));
$topicConf = $this->getTopicConfigs($configManager);
- $topicConsumer = $consumer->newTopic($configManager->get('topic_id'), $topicConf);
+ $topicConsumer = $consumer->newTopic(
+ $configManager->get('topic_id'),
+ $topicConf
+ );
- $topicConsumer->consumeStart($configManager->get('partition'), $configManager->get('offset'));
+ $topicConsumer->consumeStart(
+ $configManager->get('partition'),
+ $configManager->get('offset')
+ );
return new LowLevelConsumer($topicConsumer, $configManager);
}
@@ -39,7 +46,10 @@ protected function getTopicConfigs(AbstractConfigManager $configManager)
// Set where to start consuming messages when there is no initial offset in
// offset store or the desired offset is out of range.
// 'smallest': start from the beginning
- $topicConfig->set('auto.offset.reset', $configManager->get('offset_reset'));
+ $topicConfig->set(
+ 'auto.offset.reset',
+ $configManager->get('offset_reset')
+ );
return $topicConfig;
}
diff --git a/src/Connectors/Consumer/Manager.php b/src/Connectors/Consumer/Manager.php
index 3e7b7d42..a607995d 100644
--- a/src/Connectors/Consumer/Manager.php
+++ b/src/Connectors/Consumer/Manager.php
@@ -1,4 +1,5 @@
consumer = $consumer;
$this->consumerHandler = $consumerHandler;
$this->dispatcher = $dispatcher;
$this->autoCommit = $autoCommit;
$this->commitAsync = $commitAsync;
+ $this->lastResponse = $lastResponse;
}
public function getConsumer(): ConsumerInterface
@@ -78,9 +63,11 @@ public function handleMessage(): void
$response = null;
} catch (ResponseWarningException $exception) {
$this->consumerHandler->warning($exception);
+
return;
} catch (Throwable $throwable) {
$this->consumerHandler->failed($throwable);
+
return;
}
@@ -95,6 +82,7 @@ private function commit(): void
if ($this->commitAsync) {
$this->consumer->commitAsync();
+
return;
}
diff --git a/src/Connectors/Producer/Config.php b/src/Connectors/Producer/Config.php
index 0b6635a6..90a9cd1d 100644
--- a/src/Connectors/Producer/Config.php
+++ b/src/Connectors/Producer/Config.php
@@ -1,4 +1,5 @@
'required',
'connections' => 'required|string',
'timeout' => 'int',
@@ -26,9 +27,9 @@ class Config extends AbstractConfig
];
/**
- * @var array
+ * @var mixed[]
*/
- protected $default = [
+ protected array $default = [
'timeout' => 1000,
'is_async' => true,
'required_acknowledgment' => true,
@@ -53,7 +54,10 @@ public function makeByTopic(string $topicId): AbstractConfigManager
config('kafka.middlewares.producer', []),
$topicConfig['producer']['middlewares'] ?? []
);
- $brokerConfig = $this->getBrokerConfig('kafka', $topicConfig['broker']);
+ $brokerConfig = $this->getBrokerConfig(
+ 'kafka',
+ $topicConfig['broker']
+ );
$schemaConfig = $this->getSchemaConfig('kafka', $topicId);
$config = array_merge($topicConfig, $brokerConfig, $schemaConfig);
@@ -69,8 +73,8 @@ public function makeByTopic(string $topicId): AbstractConfigManager
private function getTopicConfig(string $topicId): array
{
$topicConfig = array_merge(
- config('kafka.topics.'.$topicId, []),
- config('kafka.topics.'.$topicId.'.producer', [])
+ config('kafka.topics.' . $topicId, []),
+ config('kafka.topics.' . $topicId . '.producer', [])
);
if (!$topicConfig) {
throw new ConfigurationException("Topic '{$topicId}' not found");
diff --git a/src/Connectors/Producer/Connector.php b/src/Connectors/Producer/Connector.php
index 0b0b6dcd..ebe696ea 100644
--- a/src/Connectors/Producer/Connector.php
+++ b/src/Connectors/Producer/Connector.php
@@ -1,4 +1,5 @@
canHandleResponse($handler)) {
- $conf->setDrMsgCb(function ($kafka, Message $message) use ($handler) {
- if ($message->err) {
- $handler->failed($message);
- } else {
- $handler->success($message);
+ $conf->setDrMsgCb(
+ /** @phpcsSuppress SlevomatCodingStandard.Functions.UnusedParameter.UnusedParameter */
+ function ($kafka, Message $message) use ($handler) {
+ if ($message->err) {
+ $handler->failed($message);
+ } else {
+ $handler->success($message);
+ }
}
- });
+ );
}
$conf->set('metadata.broker.list', $configManager->get('connections'));
diff --git a/src/Console/ConsumerCommand.php b/src/Console/ConsumerCommand.php
index 6af23ac1..c4bdab76 100644
--- a/src/Console/ConsumerCommand.php
+++ b/src/Console/ConsumerCommand.php
@@ -1,4 +1,5 @@
get('topic').PHP_EOL;
- $text .= ' on consumer group: '.$configManager->get('consumer_group').PHP_EOL;
- $text .= 'Connecting in '.$configManager->get('connections').PHP_EOL;
+ $text = 'Starting consumer for topic: ' . $configManager->get(
+ 'topic'
+ ) . PHP_EOL;
+ $text .= ' on consumer group: ' . $configManager->get(
+ 'consumer_group'
+ ) . PHP_EOL;
+ $text .= 'Connecting in ' . $configManager->get(
+ 'connections'
+ ) . PHP_EOL;
$text .= 'Running consumer..';
$this->output->writeln($text);
diff --git a/src/Console/ConsumerMakeCommand.php b/src/Console/ConsumerMakeCommand.php
index a77554f0..8c17deb9 100644
--- a/src/Console/ConsumerMakeCommand.php
+++ b/src/Console/ConsumerMakeCommand.php
@@ -1,4 +1,5 @@
remove('middlewares');
foreach ($middlewares as $middleware) {
- $this->middlewares[] = is_string($middleware) ? app($middleware, ['configManager' => $this]) : $middleware;
+ $this->middlewares[] = is_string($middleware)
+ ? app(
+ $middleware,
+ ['configManager' => $this]
+ )
+ : $middleware;
}
if (!$consumerHandler) {
diff --git a/src/Consumers/ConsumerInterface.php b/src/Consumers/ConsumerInterface.php
index 425def13..ee59cd0b 100644
--- a/src/Consumers/ConsumerInterface.php
+++ b/src/Consumers/ConsumerInterface.php
@@ -1,4 +1,5 @@
manager = $manager;
}
- public function run(int $times = null): void
+ public function run(?int $times = null): void
{
if ($times) {
for ($i = 0; $i < $times; $i++) {
diff --git a/src/Exceptions/AuthenticationException.php b/src/Exceptions/AuthenticationException.php
index 894a6bc8..78740ce3 100644
--- a/src/Exceptions/AuthenticationException.php
+++ b/src/Exceptions/AuthenticationException.php
@@ -1,4 +1,5 @@
publishes([
- __DIR__.'/../config/kafka.php' => config_path('kafka.php'),
+ __DIR__ . '/../config/kafka.php' => config_path('kafka.php'),
], 'config');
- $this->mergeConfigFrom(__DIR__.'/../config/kafka.php', 'kafka');
+ $this->mergeConfigFrom(__DIR__ . '/../config/kafka.php', 'kafka');
}
public function register()
diff --git a/src/Middlewares/AvroSchemaDecoder.php b/src/Middlewares/AvroSchemaDecoder.php
index 5d7f9f9c..4ae626c9 100644
--- a/src/Middlewares/AvroSchemaDecoder.php
+++ b/src/Middlewares/AvroSchemaDecoder.php
@@ -1,31 +1,27 @@
configManager = $configManager;
if (!$this->configManager->get('url')) {
- throw new ConfigurationException("Avro schema url not found, it's required to use AvroSchemaDecoder Middleware");
+ throw new ConfigurationException(
+ "Avro schema url not found, it's required to use AvroSchemaDecoder Middleware"
+ );
}
$this->decoder = new MessageDecoder($factory->make($configManager));
@@ -33,7 +29,9 @@ public function __construct(AbstractConfigManager $configManager, ClientFactory
public function process(RecordInterface $record, Closure $next)
{
- $record->setPayload($this->decoder->decodeMessage($record->getPayload()));
+ $record->setPayload(
+ $this->decoder->decodeMessage($record->getPayload())
+ );
return $next($record);
}
diff --git a/src/Middlewares/AvroSchemaMixedEncoder.php b/src/Middlewares/AvroSchemaMixedEncoder.php
index f73de303..4df0beb7 100644
--- a/src/Middlewares/AvroSchemaMixedEncoder.php
+++ b/src/Middlewares/AvroSchemaMixedEncoder.php
@@ -1,4 +1,5 @@
get('url')) {
- throw new ConfigurationException("Avro schema url not found, it's required to use AvroSchemaEncoder Middleware");
+ throw new ConfigurationException(
+ "Avro schema url not found, it's required to use AvroSchemaEncoder Middleware"
+ );
}
$schemaRegistry = $factory->make($configManager);
@@ -46,10 +40,16 @@ public function __construct(SchemaId $schemaIdEncoder, ClientFactory $factory, A
public function process(RecordInterface $record, Closure $next)
{
$topic = $this->configManager->get('topic_id');
- $schema = $this->schemaRegistry->getBySubjectAndVersion("{$topic}-value", 'latest');
+ $schema = $this->schemaRegistry->getBySubjectAndVersion(
+ "{$topic}-value",
+ 'latest'
+ );
$arrayPayload = json_decode($record->getPayload(), true);
- $encodedPayload = $this->schemaIdEncoder->encode($schema, $arrayPayload);
+ $encodedPayload = $this->schemaIdEncoder->encode(
+ $schema,
+ $arrayPayload
+ );
$record->setPayload($encodedPayload);
diff --git a/src/Middlewares/Handler/AbstractMiddlewareHandler.php b/src/Middlewares/Handler/AbstractMiddlewareHandler.php
index 083b042d..43681dc3 100644
--- a/src/Middlewares/Handler/AbstractMiddlewareHandler.php
+++ b/src/Middlewares/Handler/AbstractMiddlewareHandler.php
@@ -1,4 +1,5 @@
*/
- protected $queue;
-
- public function __construct(iterable $queue)
- {
- $this->queue = $queue;
- }
+ protected iterable $queue;
/**
* Handles the current entry in the middleware queue and advances.
*/
abstract public function handle(RecordInterface $record);
+
+ public function __construct(iterable $queue)
+ {
+ $this->queue = $queue;
+ }
}
diff --git a/src/Middlewares/Handler/Consumer.php b/src/Middlewares/Handler/Consumer.php
index dedb5b97..ef81d3ec 100644
--- a/src/Middlewares/Handler/Consumer.php
+++ b/src/Middlewares/Handler/Consumer.php
@@ -1,4 +1,5 @@
consumerTopicHandler = $consumerTopicHandler;
}
+ /**
+ * @phpcsSuppress SlevomatCodingStandard.Functions.UnusedParameter.UnusedParameter
+ * @return mixed
+ */
public function process(RecordInterface $record, Closure $next)
{
$this->consumerTopicHandler->handle($record);
diff --git a/src/Middlewares/Handler/Dispatcher.php b/src/Middlewares/Handler/Dispatcher.php
index 25bbc7bc..991211ff 100644
--- a/src/Middlewares/Handler/Dispatcher.php
+++ b/src/Middlewares/Handler/Dispatcher.php
@@ -1,4 +1,5 @@
partition = $partition;
}
- public function process(RecordInterface $record, Closure $next): void
+ public function __destruct()
{
- $this->topic->produce($this->getPartition($record), 0, $record->getPayload(), $record->getKey());
-
- $this->poll->handleResponse();
+ $this->poll->flushMessage();
}
- public function __destruct()
+ /**
+ * @phpcsSuppress SlevomatCodingStandard.Functions.UnusedParameter.UnusedParameter
+ */
+ public function process(RecordInterface $record, Closure $next): void
{
- $this->poll->flushMessage();
+ $this->topic->produce(
+ $this->getPartition($record),
+ 0,
+ $record->getPayload(),
+ $record->getKey()
+ );
+
+ $this->poll->handleResponse();
}
public function getPartition(RecordInterface $record): int
{
- return is_null($record->getPartition()) ? $this->partition : $record->getPartition();
+ return is_null(
+ $record->getPartition()
+ )
+ ? $this->partition
+ : $record->getPartition();
}
}
diff --git a/src/Middlewares/JsonDecode.php b/src/Middlewares/JsonDecode.php
index 1258064a..15bce984 100644
--- a/src/Middlewares/JsonDecode.php
+++ b/src/Middlewares/JsonDecode.php
@@ -1,4 +1,5 @@
log->info('Processing kafka record: '.$record->getPayload(), [
- 'original' => (array) $record->getOriginal(),
- ]);
+ $this->log->info(
+ 'Processing kafka record: ' . $record->getPayload(),
+ [
+ 'original' => (array) $record->getOriginal(),
+ ]
+ );
return $next($record);
}
diff --git a/src/Middlewares/MiddlewareInterface.php b/src/Middlewares/MiddlewareInterface.php
index 6c2ba78e..12e63d88 100644
--- a/src/Middlewares/MiddlewareInterface.php
+++ b/src/Middlewares/MiddlewareInterface.php
@@ -1,4 +1,5 @@
connector = $connector;
}
- /**
- * @throws JsonException When an array is passed and something wrong happens while encoding it into json
- */
public function produce(HandlerInterface $producerHandler): void
{
$middlewareDispatcher = $this->build($producerHandler);
@@ -43,20 +34,34 @@ public function build(HandlerInterface $producerHandler): Dispatcher
$configManager = $this->getConfigManager($producerHandler);
$middlewares = $configManager->middlewares();
- $middlewares[] = $this->getProducerMiddleware($producerHandler, $configManager);
+ $middlewares[] = $this->getProducerMiddleware(
+ $producerHandler,
+ $configManager
+ );
return new Dispatcher($middlewares);
}
- public function getProducerMiddleware(HandlerInterface $producerHandler, AbstractConfigManager $configManager): ProducerMiddleware
- {
- $producer = $this->connector->getProducerTopic($producerHandler, $configManager);
+ public function getProducerMiddleware(
+ HandlerInterface $producerHandler,
+ AbstractConfigManager $configManager
+ ): ProducerMiddleware {
+ $producer = $this->connector->getProducerTopic(
+ $producerHandler,
+ $configManager
+ );
$topic = $producer->newTopic($configManager->get('topic_id'));
- $poll = app(Poll::class, ['producer' => $producer, 'configManager' => $configManager]);
+ $poll = app(
+ Poll::class,
+ ['producer' => $producer, 'configManager' => $configManager]
+ );
$partition = $configManager->get('partition');
- return app(ProducerMiddleware::class, compact('topic', 'poll', 'partition'));
+ return app(
+ ProducerMiddleware::class,
+ compact('topic', 'poll', 'partition')
+ );
}
private function getConfigManager(HandlerInterface $producerHandler): AbstractConfigManager
diff --git a/src/Producer/Poll.php b/src/Producer/Poll.php
index 0f65815e..afb8d081 100644
--- a/src/Producer/Poll.php
+++ b/src/Producer/Poll.php
@@ -1,4 +1,5 @@
isAsync = $configManager->get('is_async');
$this->maxPollRecords = $configManager->get('max_poll_records');
- $this->requiredAcknowledgment = $configManager->get('required_acknowledgment');
+ $this->requiredAcknowledgment = $configManager->get(
+ 'required_acknowledgment'
+ );
$this->maxFlushAttempts = $configManager->get('flush_attempts');
$this->timeout = $configManager->get('timeout');
@@ -55,6 +39,7 @@ public function __construct(Producer $producer, AbstractConfigManager $configMan
public function handleResponse(): void
{
+ $this->producer->poll(self::NON_BLOCKING_POLL);
$this->processedMessagesCount++;
if (!$this->isAsync) {
@@ -75,7 +60,11 @@ public function flushMessage(): void
}
for ($flushAttempts = 0; $flushAttempts < $this->maxFlushAttempts; $flushAttempts++) {
- if (0 === $this->producer->poll($this->timeout)) {
+ if (
+ RD_KAFKA_RESP_ERR_NO_ERROR === $this->producer->flush(
+ $this->timeout
+ )
+ ) {
return;
}
diff --git a/src/ProducerConfigManager.php b/src/ProducerConfigManager.php
index 3fe183cc..59f3b35a 100644
--- a/src/ProducerConfigManager.php
+++ b/src/ProducerConfigManager.php
@@ -1,8 +1,12 @@
setting = $config;
@@ -12,7 +16,12 @@ public function set(array $config, ?array $commandConfig = null): void
$this->remove('middlewares');
foreach ($middlewares as $middleware) {
- $this->middlewares[] = is_string($middleware) ? app($middleware, ['configManager' => $this]) : $middleware;
+ $this->middlewares[] = is_string($middleware)
+ ? app(
+ $middleware,
+ ['configManager' => $this]
+ )
+ : $middleware;
}
}
}
diff --git a/src/Record/ConsumerRecord.php b/src/Record/ConsumerRecord.php
index 458ada0b..3410d5c3 100644
--- a/src/Record/ConsumerRecord.php
+++ b/src/Record/ConsumerRecord.php
@@ -1,4 +1,5 @@
original = $response;
@@ -116,20 +110,20 @@ private function throwResponseErrorException(): void
{
if (RD_KAFKA_RESP_ERR__TIMED_OUT === $this->original->err) {
throw new ResponseTimeoutException(
- 'Consumer finished to process or timed out: '.$this->original->errstr(),
+ 'Consumer finished to process or timed out: ' . $this->original->errstr(),
$this->original->err
);
}
if (in_array($this->original->err, self::KAFKA_ERROR_WHITELIST)) {
throw new ResponseWarningException(
- 'Invalid response: '.$this->original->errstr(),
+ 'Invalid response: ' . $this->original->errstr(),
$this->original->err
);
}
throw new ResponseErrorException(
- 'Error response: '.$this->original->errstr(),
+ 'Error response: ' . $this->original->errstr(),
$this->original->err
);
}
diff --git a/src/Record/ProducerRecord.php b/src/Record/ProducerRecord.php
index 9eb110a1..ff3582a1 100644
--- a/src/Record/ProducerRecord.php
+++ b/src/Record/ProducerRecord.php
@@ -1,4 +1,5 @@
payload = $payload;
$this->original = $payload;
diff --git a/src/Record/RecordInterface.php b/src/Record/RecordInterface.php
index c739357e..8cb47e99 100644
--- a/src/Record/RecordInterface.php
+++ b/src/Record/RecordInterface.php
@@ -1,4 +1,5 @@
configOptions = $configOptions;
}
+ /**
+ * @phpcsSuppress SlevomatCodingStandard.Functions.UnusedParameter.UnusedParameter
+ */
public function warning(ResponseWarningException $exception): void
{
}
+ /**
+ * @phpcsSuppress SlevomatCodingStandard.Functions.UnusedParameter.UnusedParameter
+ */
public function failed(Throwable $throwable): void
{
}
diff --git a/src/TopicHandler/Consumer/Handler.php b/src/TopicHandler/Consumer/Handler.php
index 1f82cac2..b7fccb0f 100644
--- a/src/TopicHandler/Consumer/Handler.php
+++ b/src/TopicHandler/Consumer/Handler.php
@@ -1,4 +1,5 @@
record = $record;
$this->topic = $topic;
@@ -77,7 +69,9 @@ private function encodeRecord(array $record): string
$record = json_encode($record, JSON_PRESERVE_ZERO_FRACTION);
if (JSON_ERROR_NONE !== json_last_error()) {
- throw new JsonException('Cannot convert data into a valid JSON. Reason: '.json_last_error_msg());
+ throw new JsonException(
+ 'Cannot convert data into a valid JSON. Reason: ' . json_last_error_msg()
+ );
}
return $record;
diff --git a/src/TopicHandler/Producer/AbstractProducer.php b/src/TopicHandler/Producer/AbstractProducer.php
index 6fde4472..e95a6f63 100644
--- a/src/TopicHandler/Producer/AbstractProducer.php
+++ b/src/TopicHandler/Producer/AbstractProducer.php
@@ -1,4 +1,5 @@
record = $record;
$this->key = $key;
@@ -64,7 +59,9 @@ private function encodeRecord(array $record): string
$record = json_encode($record, JSON_PRESERVE_ZERO_FRACTION);
if (JSON_ERROR_NONE !== json_last_error()) {
- throw new JsonException('Cannot convert data into a valid JSON. Reason: '.json_last_error_msg());
+ throw new JsonException(
+ 'Cannot convert data into a valid JSON. Reason: ' . json_last_error_msg()
+ );
}
return $record;
diff --git a/src/TopicHandler/Producer/HandleableResponseInterface.php b/src/TopicHandler/Producer/HandleableResponseInterface.php
index 14a17a10..d91cb5e3 100644
--- a/src/TopicHandler/Producer/HandleableResponseInterface.php
+++ b/src/TopicHandler/Producer/HandleableResponseInterface.php
@@ -1,4 +1,5 @@
handle($messageProducer->createRecord());
- $consumer = $this->app->make(Consumer::class, ['configOptions' => $consumerConfigOptions]);
+ $consumer = $this->app->make(
+ Consumer::class,
+ ['configOptions' => $consumerConfigOptions]
+ );
$expected = ['id' => 'MESSAGE_ID'];
// Actions
diff --git a/tests/Integration/Dummies/MessageConsumer.php b/tests/Integration/Dummies/MessageConsumer.php
index 48f8e28a..5d86f423 100644
--- a/tests/Integration/Dummies/MessageConsumer.php
+++ b/tests/Integration/Dummies/MessageConsumer.php
@@ -1,4 +1,5 @@
record = $record;
- $this->topic = $topic ?? 'default';
- $this->key = 'recordId123';
+ $this->topic = $topic;
+ $this->key = $key ?? 'recordId123';
+ $this->partition = $partition;
}
public function success(Message $message): void
diff --git a/tests/Integration/Dummies/MessageProducerWithConfigOptions.php b/tests/Integration/Dummies/MessageProducerWithConfigOptions.php
index c00152c5..7f97e509 100644
--- a/tests/Integration/Dummies/MessageProducerWithConfigOptions.php
+++ b/tests/Integration/Dummies/MessageProducerWithConfigOptions.php
@@ -1,4 +1,5 @@
withoutAuthentication();
- }
+ protected string $secondLowLevelMessage;
public function testShouldRunAProducerAndReceiveMessagesWithAHighLevelConsumer(): void
{
// Given That I
$this->haveAConsumerHandlerConfigured();
+ $this->haveNoPartitionConfigured();
$this->haveSomeRandomMessagesProduced();
// I Expect That
@@ -58,6 +45,13 @@ public function testShouldRunAProducerAndReceiveMessagesWithALowLevelConsumer():
$this->runTheLowLevelConsumerSkippingTheFirstTwoMessagesAndLimitingToTwoMessagesConsumed();
}
+ protected function setUp(): void
+ {
+ parent::setUp();
+
+ $this->withoutAuthentication();
+ }
+
protected function withoutAuthentication(): void
{
config(['kafka.brokers.default.auth' => []]);
@@ -65,7 +59,9 @@ protected function withoutAuthentication(): void
protected function haveAConsumerHandlerConfigured(): void
{
- config(['kafka.topics.default.consumer.consumer_groups.test-consumer-group.handler' => MessageConsumer::class]);
+ config(
+ ['kafka.topics.default.consumer.consumer_groups.test-consumer-group.handler' => MessageConsumer::class]
+ );
}
protected function runTheConsumer(): void
@@ -132,7 +128,13 @@ protected function runTheLowLevelConsumerSkippingTheFirstTwoMessagesAndLimitingT
private function haveSomeRandomMessagesProduced(): void
{
$this->highLevelMessage = Str::random(10);
- $producer = app(MessageProducer::class, ['record' => $this->highLevelMessage]);
+ $producer = app(
+ MessageProducer::class,
+ [
+ 'record' => $this->highLevelMessage,
+ 'topic' => 'default',
+ ]
+ );
Metamorphosis::produce($producer);
Metamorphosis::produce($producer);
@@ -140,8 +142,8 @@ private function haveSomeRandomMessagesProduced(): void
private function produceRecordMessage(string $record): string
{
- $producer = app(MessageProducer::class, compact('record'));
- $producer->topic = 'low_level';
+ $topic = 'low_level';
+ $producer = app(MessageProducer::class, compact('record', 'topic'));
Metamorphosis::produce($producer);
Metamorphosis::produce($producer);
@@ -180,4 +182,11 @@ private function haveFourProducedMessages(): void
$this->produceRecordMessage($this->firstLowLevelMessage);
$this->produceRecordMessage($this->secondLowLevelMessage);
}
+
+ private function haveNoPartitionConfigured(): void
+ {
+ config(
+ ['kafka.topics.default.consumer.consumer_groups.test-consumer-group.partition' => -1]
+ );
+ }
}
diff --git a/tests/Integration/ProducerWithAvroTest.php b/tests/Integration/ProducerWithAvroTest.php
index 0e7a0c7c..449370da 100644
--- a/tests/Integration/ProducerWithAvroTest.php
+++ b/tests/Integration/ProducerWithAvroTest.php
@@ -1,4 +1,5 @@
haveSomeRandomMessagesProduced();
+ $this->expectNotToPerformAssertions();
}
protected function haveAHandlerConfigured(): void
@@ -29,7 +31,10 @@ protected function haveAHandlerConfigured(): void
'kafka' => [
'brokers' => [
'test' => [
- 'connections' => 'kafka:9092',
+ 'connections' => env(
+ 'KAFKA_BROKER_CONNECTIONS',
+ 'kafka:9092'
+ ),
],
],
'topics' => [
@@ -88,8 +93,14 @@ protected function haveAHandlerConfigured(): void
private function haveSomeRandomMessagesProduced(): void
{
- $saleOrderProducer = app(MessageProducer::class, ['record' => ['saleOrderId' => 'SALE_ORDER_ID'], 'topic' => 'sale_order']);
- $productProducer = app(MessageProducer::class, ['record' => ['productId' => 'PRODUCT_ID'], 'topic' => 'product']);
+ $saleOrderProducer = app(
+ MessageProducer::class,
+ ['record' => ['saleOrderId' => 'SALE_ORDER_ID'], 'topic' => 'sale_order']
+ );
+ $productProducer = app(
+ MessageProducer::class,
+ ['record' => ['productId' => 'PRODUCT_ID'], 'topic' => 'product']
+ );
$saleOrderSchemaResponse = '{
"subject":"sale_order-value",
diff --git a/tests/Integration/ProducerWithConfigOptionsTest.php b/tests/Integration/ProducerWithConfigOptionsTest.php
index 29914915..3382b590 100644
--- a/tests/Integration/ProducerWithConfigOptionsTest.php
+++ b/tests/Integration/ProducerWithConfigOptionsTest.php
@@ -1,4 +1,5 @@
myMessagesHaveBeenProduced();
+ $this->expectNotToPerformAssertions();
// When I
$this->haveSomeRandomMessageProduced();
@@ -49,7 +45,10 @@ protected function runTheConsumer(): void
'kafka_new_config' => [
'brokers' => [
'override' => [
- 'connections' => 'kafka:9092',
+ 'connections' => env(
+ 'KAFKA_BROKER_CONNECTIONS',
+ 'kafka:9092'
+ ),
],
],
'topics' => [
@@ -81,7 +80,8 @@ protected function runTheConsumer(): void
protected function haveAHandlerConfigured(): void
{
- $broker = new Broker('kafka:9092', new None());
+ $connections = env('KAFKA_BROKER_CONNECTIONS', 'kafka:9092');
+ $broker = new Broker($connections, new None());
$this->producerConfigOptions = new ProducerConfigOptions(
'sale_order_override',
$broker,
diff --git a/tests/LaravelTestCase.php b/tests/LaravelTestCase.php
index 5ec8b44e..3409efd0 100644
--- a/tests/LaravelTestCase.php
+++ b/tests/LaravelTestCase.php
@@ -1,4 +1,5 @@
instance(AbstractHandler::class, m::mock(AbstractHandler::class));
+ $handler = $this->instance(
+ AbstractHandler::class,
+ m::mock(AbstractHandler::class)
+ );
$config = [
'middlewares' => [],
'handler' => AbstractHandler::class,
diff --git a/tests/Unit/Authentication/FactoryTest.php b/tests/Unit/Authentication/FactoryTest.php
index da153e39..53999f8a 100644
--- a/tests/Unit/Authentication/FactoryTest.php
+++ b/tests/Unit/Authentication/FactoryTest.php
@@ -1,4 +1,5 @@
setAvroSchema($parsedSchema);
$schema->setSchemaId('123');
+ $schema->setSubject(null);
+ $schema->setVersion(null);
$response = [
'schema' => $schemaString,
@@ -112,7 +115,9 @@ public function testGetByIdMayReturnErrors(): void
// Expectations
$this->expectException(RuntimeException::class);
- $this->expectExceptionMessage("Unable to get schema for the specific ID: {$status}");
+ $this->expectExceptionMessage(
+ "Unable to get schema for the specific ID: {$status}"
+ );
$httpClient->expects()
->get('schemas/ids/123')
->andReturn([$status, $response]);
@@ -197,7 +202,9 @@ public function testGetBySubjectAndVersionMayReturnErrors(): void
// Expectations
$this->expectException(RuntimeException::class);
- $this->expectExceptionMessage("Unable to get schema for the specific ID: {$status}");
+ $this->expectExceptionMessage(
+ "Unable to get schema for the specific ID: {$status}"
+ );
$httpClient->expects()
->get('subjects/some-kafka-topic/versions/1')
->andReturn([$status, $response]);
@@ -236,6 +243,8 @@ public function testGetBySubjectAndVersionShouldHitCache(): void
private function getSchemaTest(): string
{
- return file_get_contents(__DIR__.'/../fixtures/schemas/sales_price.avsc');
+ return file_get_contents(
+ __DIR__ . '/../fixtures/schemas/sales_price.avsc'
+ );
}
}
diff --git a/tests/Unit/Avro/Serializer/MessageDecoderTest.php b/tests/Unit/Avro/Serializer/MessageDecoderTest.php
index c5d13379..dfc41241 100644
--- a/tests/Unit/Avro/Serializer/MessageDecoderTest.php
+++ b/tests/Unit/Avro/Serializer/MessageDecoderTest.php
@@ -1,4 +1,5 @@
true, 'default_encoding_format' => SchemaFormats::MAGIC_BYTE_SCHEMAID]);
+ $serializer = new MessageEncoder(
+ $registry,
+ ['register_missing_schemas' => true, 'default_encoding_format' => SchemaFormats::MAGIC_BYTE_SCHEMAID]
+ );
$topic = 'my-topic';
$schema = m::mock(Schema::class);
$avroSchema = new AvroSchema('array');
@@ -60,7 +64,13 @@ public function testShouldEncodeRecordWithSchemaIdRegisteringMissingSchemas(): v
->andReturn($avroSchema);
// Actions
- $result = $serializer->encodeMessage($topic, $schema, $record, true, SchemaFormats::MAGIC_BYTE_SCHEMAID);
+ $result = $serializer->encodeMessage(
+ $topic,
+ $schema,
+ $record,
+ true,
+ SchemaFormats::MAGIC_BYTE_SCHEMAID
+ );
// Assertions
$this->assertSame("\x00\x00\x00\x00\x00\x00", $result);
@@ -92,10 +102,19 @@ public function testShouldEncodeRecordWithSubjectAndVersion(): void
->andReturn($avroSchema);
// Actions
- $result = $serializer->encodeMessage($topic, $schema, $record, false, SchemaFormats::MAGIC_BYTE_SUBJECT_VERSION);
+ $result = $serializer->encodeMessage(
+ $topic,
+ $schema,
+ $record,
+ false,
+ SchemaFormats::MAGIC_BYTE_SUBJECT_VERSION
+ );
// Assertions
- $this->assertSame("\x01\x00\x00\x00\x0Emy-topic-value\x00\x00\x00\x00\x00", $result);
+ $this->assertSame(
+ "\x01\x00\x00\x00\x0Emy-topic-value\x00\x00\x00\x00\x00",
+ $result
+ );
}
public function testShouldNotEncodeRecordWithInvalidFormat(): void
@@ -120,7 +139,10 @@ public function testShouldEncodeRecordWithSubjectAndVersionRegisteringMissingSch
{
// Set
$registry = m::mock(CachedSchemaRegistryClient::class);
- $serializer = new MessageEncoder($registry, ['register_missing_schemas' => true]);
+ $serializer = new MessageEncoder(
+ $registry,
+ ['register_missing_schemas' => true]
+ );
$topic = 'my-topic';
$subject = "{$topic}-value";
$schema = m::mock(Schema::class);
@@ -142,9 +164,18 @@ public function testShouldEncodeRecordWithSubjectAndVersionRegisteringMissingSch
->andReturn($avroSchema);
// Actions
- $result = $serializer->encodeMessage($topic, $schema, $record, true, SchemaFormats::MAGIC_BYTE_SUBJECT_VERSION);
+ $result = $serializer->encodeMessage(
+ $topic,
+ $schema,
+ $record,
+ true,
+ SchemaFormats::MAGIC_BYTE_SUBJECT_VERSION
+ );
// Assertions
- $this->assertSame("\x01\x00\x00\x00\x0Emy-topic-value\x00\x00\x00\x00\$my awesome message", $result);
+ $this->assertSame(
+ "\x01\x00\x00\x00\x0Emy-topic-value\x00\x00\x00\x00\$my awesome message",
+ $result
+ );
}
}
diff --git a/tests/Unit/Connectors/Consumer/ConfigTest.php b/tests/Unit/Connectors/Consumer/ConfigTest.php
index 1fe82e83..9e1c26f9 100644
--- a/tests/Unit/Connectors/Consumer/ConfigTest.php
+++ b/tests/Unit/Connectors/Consumer/ConfigTest.php
@@ -1,4 +1,5 @@
ConsumerHandlerDummy::class]);
- $consumerHandler = $this->instance(ConsumerHandlerDummy::class, m::mock(ConsumerHandlerDummy::class));
+ config(
+ ['kafka.topics.default.consumer.consumer_groups.test-consumer-group.handler' => ConsumerHandlerDummy::class]
+ );
+ $consumerHandler = $this->instance(
+ ConsumerHandlerDummy::class,
+ m::mock(ConsumerHandlerDummy::class)
+ );
$configOptions = m::mock(ConsumerConfigOptions::class);
$config = new Config();
diff --git a/tests/Unit/Connectors/Consumer/FactoryTest.php b/tests/Unit/Connectors/Consumer/FactoryTest.php
index 8080d39d..a90471d6 100644
--- a/tests/Unit/Connectors/Consumer/FactoryTest.php
+++ b/tests/Unit/Connectors/Consumer/FactoryTest.php
@@ -1,4 +1,5 @@
make(
+ ['timeout' => 61],
+ ['topic' => 'topic_key', 'consumer_group' => 'with-partition']
+ );
+ $manager = Factory::make($configManager);
+
+ // Assertions
+ $this->assertInstanceOf(LowLevel::class, $manager->getConsumer());
+ }
+
+ public function testItMakesManagerWithLowLevelConsumerWhenPartitionIsNotValid(): void
+ {
+ // Set
+ $config = new Config();
+ $configManager = $config->make(
+ ['timeout' => 61],
+ ['topic' => 'topic_key', 'consumer_group' => 'with-partition', 'partition' => -1]
+ );
+ $manager = Factory::make($configManager);
+
+ // Assertions
+ $this->assertInstanceOf(HighLevel::class, $manager->getConsumer());
+ }
+
+ public function testItMakesHighLevelClass(): void
+ {
+ // Set
+ $config = new Config();
+ $configManager = $config->make(
+ ['timeout' => 61],
+ ['topic' => 'topic_key', 'consumer_group' => 'without-partition']
+ );
+ $manager = Factory::make($configManager);
+
+ // Assertions
+ $this->assertInstanceOf(HighLevel::class, $manager->getConsumer());
+ }
+
protected function setUp(): void
{
parent::setUp();
+ $connections = env('KAFKA_BROKER_CONNECTIONS', 'kafka:9092');
config([
'kafka' => [
'brokers' => [
'default' => [
- 'connections' => 'kafka:123',
+ 'connections' => $connections,
],
],
'topics' => [
@@ -44,37 +88,4 @@ protected function setUp(): void
],
]);
}
-
- public function testItMakesManagerWithLowLevelConsumer(): void
- {
- // Set
- $config = new Config();
- $configManager = $config->make(['timeout' => 61], ['topic' => 'topic_key', 'consumer_group' => 'with-partition']);
- $manager = Factory::make($configManager);
-
- // Assertions
- $this->assertInstanceOf(LowLevel::class, $manager->getConsumer());
- }
-
- public function testItMakesManagerWithLowLevelConsumerWhenPartitionIsNotValid(): void
- {
- // Set
- $config = new Config();
- $configManager = $config->make(['timeout' => 61], ['topic' => 'topic_key', 'consumer_group' => 'with-partition', 'partition' => -1]);
- $manager = Factory::make($configManager);
-
- // Assertions
- $this->assertInstanceOf(HighLevel::class, $manager->getConsumer());
- }
-
- public function testItMakesHighLevelClass(): void
- {
- // Set
- $config = new Config();
- $configManager = $config->make(['timeout' => 61], ['topic' => 'topic_key', 'consumer_group' => 'without-partition']);
- $manager = Factory::make($configManager);
-
- // Assertions
- $this->assertInstanceOf(HighLevel::class, $manager->getConsumer());
- }
}
diff --git a/tests/Unit/Connectors/Consumer/HighLevelTest.php b/tests/Unit/Connectors/Consumer/HighLevelTest.php
index 1afca75f..52d58fc4 100644
--- a/tests/Unit/Connectors/Consumer/HighLevelTest.php
+++ b/tests/Unit/Connectors/Consumer/HighLevelTest.php
@@ -1,4 +1,5 @@
set([
- 'connections' => 'kafka:123',
+ 'connections' => $connections,
'consumer_group' => 'some-group',
'topic_id' => 'some_topic',
'offset_reset' => 'earliest',
diff --git a/tests/Unit/Connectors/Consumer/LowLevelTest.php b/tests/Unit/Connectors/Consumer/LowLevelTest.php
index 93394fce..039d096c 100644
--- a/tests/Unit/Connectors/Consumer/LowLevelTest.php
+++ b/tests/Unit/Connectors/Consumer/LowLevelTest.php
@@ -1,4 +1,5 @@
set([
- 'connections' => 'kafka:123',
+ 'connections' => $connections,
'consumer_group' => 'some-group',
'topic' => 'some_topic',
'offset_reset' => 'earliest',
diff --git a/tests/Unit/Connectors/Consumer/ManagerTest.php b/tests/Unit/Connectors/Consumer/ManagerTest.php
index e47d996c..3f6546c1 100644
--- a/tests/Unit/Connectors/Consumer/ManagerTest.php
+++ b/tests/Unit/Connectors/Consumer/ManagerTest.php
@@ -1,4 +1,5 @@
set([
- 'connections' => 'kafka:2019',
- 'topic' => 'topic_key',
- 'broker' => 'default',
- 'offset_reset' => 'earliest',
- 'offset' => 0,
- 'timeout' => 30,
- 'handler' => ConsumerHandlerDummy::class,
- 'middlewares' => [],
- 'consumer_group' => 'consumer-id',
- ]);
- }
/**
* @dataProvider getThrowableScenarios
@@ -66,13 +50,22 @@ public function testShouldHandlerAnyThrowable(Throwable $throwable): void
public function testShouldHandleMultiplesMessages(): void
{
// Set
- $consumerRecord = $this->instance(ConsumerRecord::class, m::mock(ConsumerRecord::class));
+ $consumerRecord = $this->instance(
+ ConsumerRecord::class,
+ m::mock(ConsumerRecord::class)
+ );
$consumer = m::mock(ConsumerInterface::class);
$consumerHandler = m::mock(ConsumerHandler::class);
$dispatcher = m::mock(Dispatcher::class);
- $runner = new Manager($consumer, $consumerHandler, $dispatcher, true, false);
+ $runner = new Manager(
+ $consumer,
+ $consumerHandler,
+ $dispatcher,
+ true,
+ false
+ );
$kafkaMessage1 = new KafkaMessage();
$kafkaMessage1->payload = 'original message 1';
@@ -87,11 +80,23 @@ public function testShouldHandleMultiplesMessages(): void
$kafkaMessage3->err = RD_KAFKA_RESP_ERR_NO_ERROR;
// Expectations
- $consumer->shouldReceive()
- ->consume()
- ->times(3)
- ->andReturn($kafkaMessage1, $kafkaMessage2, $kafkaMessage3);
+ $consumer->shouldReceive('consume')
+ ->times(4)
+ ->andReturnUsing(
+ function () use ($messages, &$count, $exception) {
+ $message = $messages[$count] ?? null;
+ if (!$message) {
+ throw $exception;
+ }
+ $count++;
+
+ return $message;
+ }
+ );
+ $consumerHandler->expects()
+ ->failed($exception);
+
$dispatcher->expects()
->handle($consumerRecord)
->times(3);
@@ -109,9 +114,17 @@ public function testShouldCallWarningWhenErrorOccurs(): void
$consumerHandler = m::mock(ConsumerHandler::class);
$dispatcher = m::mock(Dispatcher::class);
- $runner = new Manager($consumer, $consumerHandler, $dispatcher, true, false);
+ $runner = new Manager(
+ $consumer,
+ $consumerHandler,
+ $dispatcher,
+ true,
+ false
+ );
- $exception = new ResponseWarningException('Error occurs when consuming.');
+ $exception = new ResponseWarningException(
+ 'Error occurs when consuming.'
+ );
// Expectations
$consumer->shouldReceive('consume')
@@ -130,13 +143,22 @@ public function testShouldCallWarningWhenErrorOccurs(): void
public function testShouldHandleAsyncCommit(): void
{
// Set
- $consumerRecord = $this->instance(ConsumerRecord::class, m::mock(ConsumerRecord::class));
+ $consumerRecord = $this->instance(
+ ConsumerRecord::class,
+ m::mock(ConsumerRecord::class)
+ );
$consumer = m::mock(ConsumerInterface::class);
$consumerHandler = m::mock(ConsumerHandler::class);
$dispatcher = m::mock(Dispatcher::class);
- $runner = new Manager($consumer, $consumerHandler, $dispatcher, false, true);
+ $runner = new Manager(
+ $consumer,
+ $consumerHandler,
+ $dispatcher,
+ false,
+ true
+ );
$kafkaMessage1 = new KafkaMessage();
$kafkaMessage1->payload = 'original message 1';
@@ -148,20 +170,24 @@ public function testShouldHandleAsyncCommit(): void
$messages = [$kafkaMessage1, $kafkaMessage2];
$count = 0;
- $exception = new ResponseTimeoutException('Consume timeout or finished to processed.');
+ $exception = new ResponseTimeoutException(
+ 'Consume timeout or finished to processed.'
+ );
// Expectations
$consumer->shouldReceive('consume')
->times(3)
- ->andReturnUsing(function () use ($messages, &$count, $exception) {
- $message = $messages[$count] ?? null;
- if (!$message) {
- throw $exception;
+ ->andReturnUsing(
+ function () use ($messages, &$count, $exception) {
+ $message = $messages[$count] ?? null;
+ if (!$message) {
+ throw $exception;
+ }
+ $count++;
+
+ return $message;
}
- $count++;
-
- return $message;
- });
+ );
$consumer->expects()
->commitAsync()
@@ -201,5 +227,23 @@ public function getThrowableScenarios(): array
'throwable' => new TypeError(),
],
];
+
+ protected function setUp(): void
+ {
+ parent::setUp();
+
+ $configManager = new ConsumerConfigManager();
+ $configManager->set([
+ 'connections' => 'kafka:2019',
+ 'topic' => 'topic_key',
+ 'broker' => 'default',
+ 'offset_reset' => 'earliest',
+ 'offset' => 0,
+ 'timeout' => 30,
+ 'handler' => ConsumerHandlerDummy::class,
+ 'middlewares' => [],
+ 'consumer_group' => 'consumer-id',
+ ]);
+
}
}
diff --git a/tests/Unit/Connectors/Producer/ConfigTest.php b/tests/Unit/Connectors/Producer/ConfigTest.php
index 5629ad65..82adae08 100644
--- a/tests/Unit/Connectors/Producer/ConfigTest.php
+++ b/tests/Unit/Connectors/Producer/ConfigTest.php
@@ -1,4 +1,5 @@
-1,
'broker' => 'default',
'topic' => 'default',
- 'connections' => 'kafka:9092',
+ 'connections' => env('KAFKA_BROKER_CONNECTIONS', 'kafka:9092'),
'auth' => [
'type' => 'ssl',
- 'ca' => '/var/www/html/vendor/orchestra/testbench-core/laravel/storage/ca.pem',
- 'certificate' => '/var/www/html/vendor/orchestra/testbench-core/laravel/storage/kafka.cert',
- 'key' => '/var/www/html/vendor/orchestra/testbench-core/laravel/storage/kafka.key',
+ 'ca' => base_path('storage/ca.pem'),
+ 'certificate' => base_path('storage/kafka.cert'),
+ 'key' => base_path('storage/kafka.key'),
],
];
@@ -71,12 +72,12 @@ public function testShouldNotOverrideDefaultParametersWhenConfigIsSet(): void
'flush_attempts' => 10,
'broker' => 'default',
'topic' => 'default',
- 'connections' => 'kafka:9092',
+ 'connections' => env('KAFKA_BROKER_CONNECTIONS', 'kafka:9092'),
'auth' => [
'type' => 'ssl',
- 'ca' => '/var/www/html/vendor/orchestra/testbench-core/laravel/storage/ca.pem',
- 'certificate' => '/var/www/html/vendor/orchestra/testbench-core/laravel/storage/kafka.cert',
- 'key' => '/var/www/html/vendor/orchestra/testbench-core/laravel/storage/kafka.key',
+ 'ca' => base_path('storage/ca.pem'),
+ 'certificate' => base_path('storage/kafka.cert'),
+ 'key' => base_path('storage/kafka.key'),
],
];
@@ -92,7 +93,10 @@ public function testShouldOverrideDefaultParametersWhenConfigOptionsExists(): vo
// Set
config(['kafka.topics.default.producer.max_poll_records' => 3000]);
$config = new Config();
- $broker = new Broker('kafka:9092', new SaslSsl('PLAIN', 'USERNAME', 'PASSWORD'));
+ $broker = new Broker(
+ 'kafka:9092',
+ new SaslSsl('PLAIN', 'USERNAME', 'PASSWORD')
+ );
$configOptions = new ProducerConfigOptions('TOPIC-ID', $broker);
$expected = [
diff --git a/tests/Unit/Connectors/Producer/ConnectorTest.php b/tests/Unit/Connectors/Producer/ConnectorTest.php
index 2cafe6cc..e0cb6123 100644
--- a/tests/Unit/Connectors/Producer/ConnectorTest.php
+++ b/tests/Unit/Connectors/Producer/ConnectorTest.php
@@ -1,4 +1,5 @@
withAnyArgs();
$conf->expects()
- ->set('metadata.broker.list', 0);
+ ->set('metadata.broker.list', 'kafka:9092');
$configManager->expects()
->get('connections')
@@ -78,11 +81,13 @@ public function testItShouldMakeSetupWithoutHandleResponse(): void
$configOptions = m::mock(ProducerConfigOptions::class);
$connector = new Connector();
- $handler = new class('record', $configOptions) extends AbstractProducer implements HandlerInterface {
+ $handler = new class ('record', $configOptions) extends AbstractProducer implements HandlerInterface {
+ /** @phpcsSuppress SlevomatCodingStandard.Functions.UnusedParameter.UnusedParameter */
public function success(Message $message): void
{
}
+ /** @phpcsSuppress SlevomatCodingStandard.Functions.UnusedParameter.UnusedParameter */
public function failed(Message $message): void
{
}
@@ -93,7 +98,7 @@ public function failed(Message $message): void
->never();
$conf->expects()
- ->set('metadata.broker.list', 0);
+ ->set('metadata.broker.list', 'kafka:9092');
$configManager->expects()
->get('connections')
diff --git a/tests/Unit/Console/ConsumerCommandTest.php b/tests/Unit/Console/ConsumerCommandTest.php
index 566237fa..26132745 100644
--- a/tests/Unit/Console/ConsumerCommandTest.php
+++ b/tests/Unit/Console/ConsumerCommandTest.php
@@ -1,4 +1,5 @@
[
- 'brokers' => [
- 'default' => [
- 'connections' => 'test_kafka:6680',
- 'auth' => [],
- ],
- ],
- 'topics' => [
- 'topic_key' => [
- 'topic_id' => 'topic_name',
- 'broker' => 'default',
- 'consumer' => [
- 'consumer_groups' => [
- 'default' => [
- 'offset_reset' => 'earliest',
- 'handler' => ConsumerHandlerDummy::class,
- 'timeout' => 123,
- ],
- ],
- ],
- ],
- ],
- ],
- ]);
- }
-
public function testItCallsCommandWithInvalidTopic(): void
{
// Set
@@ -161,4 +131,38 @@ public function testItOverridesBrokerConnectionWhenCallingCommand(): void
$this->artisan($command, $parameters);
}
+
+ protected function setUp(): void
+ {
+ parent::setUp();
+
+ config([
+ 'kafka' => [
+ 'brokers' => [
+ 'default' => [
+ 'connections' => env(
+ 'KAFKA_BROKER_CONNECTIONS',
+ 'kafka:9092'
+ ),
+ 'auth' => [],
+ ],
+ ],
+ 'topics' => [
+ 'topic_key' => [
+ 'topic_id' => 'topic_name',
+ 'broker' => 'default',
+ 'consumer' => [
+ 'consumer_groups' => [
+ 'default' => [
+ 'offset_reset' => 'earliest',
+ 'handler' => ConsumerHandlerDummy::class,
+ 'timeout' => 123,
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ]);
+ }
}
diff --git a/tests/Unit/Console/ConsumerMakeCommandTest.php b/tests/Unit/Console/ConsumerMakeCommandTest.php
index 25f7f379..e68259c9 100644
--- a/tests/Unit/Console/ConsumerMakeCommandTest.php
+++ b/tests/Unit/Console/ConsumerMakeCommandTest.php
@@ -1,4 +1,5 @@
instance(AbstractHandler::class, m::mock(AbstractHandler::class));
+ $handler = $this->instance(
+ AbstractHandler::class,
+ m::mock(AbstractHandler::class)
+ );
$config = [
'middlewares' => [],
'handler' => AbstractHandler::class,
diff --git a/tests/Unit/Consumers/HighLevelTest.php b/tests/Unit/Consumers/HighLevelTest.php
index 71967f80..3969ea27 100644
--- a/tests/Unit/Consumers/HighLevelTest.php
+++ b/tests/Unit/Consumers/HighLevelTest.php
@@ -1,4 +1,5 @@
andReturnUsing(function () use (&$count) {
if (3 === $count) {
$exception = new Exception('Error when consuming.');
+
throw $exception;
}
$count++;
+
return;
});
@@ -45,7 +48,7 @@ public function testItShouldRunADeterminedNumberOfTimes(): void
// Expectations
$manager->shouldReceive('handleMessage')
->times(3)
- ->andReturnUsing(function () use (&$count) {
+ ->andReturnUsing(function () {
return;
});
@@ -62,7 +65,7 @@ public function testItShouldRunADeterminedNumberOfTimesButStopsOnException(): vo
// Expectations
$manager->shouldReceive('handleMessage')
->times(1)
- ->andReturnUsing(function () use (&$count) {
+ ->andReturnUsing(function () {
throw new Exception('Error when consuming.');
});
diff --git a/tests/Unit/Dummies/ConsumerHandlerDummy.php b/tests/Unit/Dummies/ConsumerHandlerDummy.php
index 52ffc955..fc9f6fec 100644
--- a/tests/Unit/Dummies/ConsumerHandlerDummy.php
+++ b/tests/Unit/Dummies/ConsumerHandlerDummy.php
@@ -1,4 +1,5 @@
record = $record;
$this->topic = $topic;
diff --git a/tests/Unit/Dummies/SecondProducerHandlerDummy.php b/tests/Unit/Dummies/SecondProducerHandlerDummy.php
index f5712e18..26f4b5d5 100644
--- a/tests/Unit/Dummies/SecondProducerHandlerDummy.php
+++ b/tests/Unit/Dummies/SecondProducerHandlerDummy.php
@@ -1,11 +1,12 @@
record = $record;
$this->topic = $topic;
diff --git a/tests/Unit/Facades/MetamorphosisTest.php b/tests/Unit/Facades/MetamorphosisTest.php
index dbf6e420..ceee5b54 100644
--- a/tests/Unit/Facades/MetamorphosisTest.php
+++ b/tests/Unit/Facades/MetamorphosisTest.php
@@ -1,4 +1,5 @@
set([
- 'topic_id' => 'topic_name',
- 'timeout' => 4000,
- 'is_async' => true,
- 'max_poll_records' => 500,
- 'flush_attempts' => 10,
- 'required_acknowledgment' => true,
- 'partition' => 0,
- ]);
- }
-
public function testItShouldSendMessageToKafkaBroker(): void
{
// Set
@@ -53,4 +38,20 @@ public function testItShouldSendMessageToKafkaBroker(): void
$producerHandler = new Producer($producerTopic, $poll, 1);
$producerHandler->process($record, $closure);
}
+
+ protected function setUp(): void
+ {
+ parent::setUp();
+
+ $configManager = new ProducerConfigManager();
+ $configManager->set([
+ 'topic_id' => 'topic_name',
+ 'timeout' => 4000,
+ 'is_async' => true,
+ 'max_poll_records' => 500,
+ 'flush_attempts' => 10,
+ 'required_acknowledgment' => true,
+ 'partition' => 0,
+ ]);
+ }
}
diff --git a/tests/Unit/Middlewares/JsonDecodeTest.php b/tests/Unit/Middlewares/JsonDecodeTest.php
index cfbc0d5a..1f721e40 100644
--- a/tests/Unit/Middlewares/JsonDecodeTest.php
+++ b/tests/Unit/Middlewares/JsonDecodeTest.php
@@ -1,4 +1,5 @@
expects()
- ->info('Processing kafka record: original record', [
- 'original' => [
- 'err' => RD_KAFKA_RESP_ERR_NO_ERROR,
- 'topic_name' => null,
- 'partition' => null,
- 'payload' => 'original record',
- 'len' => null,
- 'key' => null,
- 'offset' => null,
- 'timestamp' => null,
- 'headers' => null,
- 'opaque' => null,
- ],
- ]);
+ ->info('Processing kafka record: original record', m::on(
+ static function (array $context): bool {
+ $original = $context['original'];
+ $expected = [
+ 'err' => RD_KAFKA_RESP_ERR_NO_ERROR,
+ 'topic_name' => null,
+ 'timestamp' => null,
+ 'payload' => 'original record',
+ 'len' => null,
+ 'key' => null,
+ 'opaque' => null,
+ ];
+
+ foreach ($expected as $key => $expectedValue) {
+ if (!array_key_exists($key, $original)) {
+ return false;
+ }
+
+ if ($original[$key] !== $expectedValue) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+ ));
// Actions
$middleware->process($record, $closure);
diff --git a/tests/Unit/Producer/PollTest.php b/tests/Unit/Producer/PollTest.php
index b2b72a90..8bda848d 100644
--- a/tests/Unit/Producer/PollTest.php
+++ b/tests/Unit/Producer/PollTest.php
@@ -1,4 +1,5 @@
shouldReceive('poll')
+ $kafkaProducer->expects()
+ ->poll(0);
+
+ $kafkaProducer->shouldReceive('flush')
->never();
// Actions
@@ -39,10 +43,10 @@ public function testShouldThrowExceptionWhenFlushFailed(): void
$configManager = new ProducerConfigManager();
$configManager->set([
'topic_id' => 'topic_name',
- 'timeout' => 4000,
+ 'timeout' => 1000,
'is_async' => false,
'max_poll_records' => 500,
- 'flush_attempts' => 10,
+ 'flush_attempts' => 3,
'required_acknowledgment' => true,
'partition' => 0,
]);
@@ -52,8 +56,11 @@ public function testShouldThrowExceptionWhenFlushFailed(): void
// Expectations
$kafkaProducer->expects()
- ->poll(4000)
- ->times(10)
+ ->poll(0);
+
+ $kafkaProducer->expects()
+ ->flush(1000)
+ ->times(3)
->andReturn(1);
$this->expectException(RuntimeException::class);
@@ -80,7 +87,11 @@ public function testItShouldHandleResponseEveryTimeWhenAsyncModeIsTrue(): void
// Expectations
$kafkaProducer->expects()
- ->poll(4000)
+ ->poll(0)
+ ->times(3);
+
+ $kafkaProducer->expects()
+ ->flush(4000)
->times(3)
->andReturn(0);
diff --git a/tests/Unit/ProducerConfigManagerTest.php b/tests/Unit/ProducerConfigManagerTest.php
index 6ddac8bc..26500f5d 100644
--- a/tests/Unit/ProducerConfigManagerTest.php
+++ b/tests/Unit/ProducerConfigManagerTest.php
@@ -1,4 +1,5 @@
assertSame($expected, $configManager->get());
- $this->assertInstanceOf(MiddlewareDummy::class, current($configManager->middlewares()));
+ $this->assertInstanceOf(
+ MiddlewareDummy::class,
+ current($configManager->middlewares())
+ );
}
}
diff --git a/tests/Unit/ProducerTest.php b/tests/Unit/ProducerTest.php
index bdf9806b..5a93dc8c 100644
--- a/tests/Unit/ProducerTest.php
+++ b/tests/Unit/ProducerTest.php
@@ -1,4 +1,5 @@
withAnyArgs();
// Actions
- $result = $producer->produce($producerHandler);
-
- // Assertions
- $this->assertNull($result);
+ $producer->produce($producerHandler);
}
public function testItShouldThrowJsonExceptionWhenPassingMalFormattedArray(): void
@@ -149,7 +147,7 @@ public function testItShouldThrowJsonExceptionWhenPassingMalFormattedArray(): vo
$kafkaProducer = m::mock(KafkaProducer::class);
$producerTopic = m::mock(ProducerTopic::class);
- $producerHandler = new class($record, $topic) extends AbstractHandler {
+ $producerHandler = new class ($record, $topic) extends AbstractHandler {
};
// Expectations
@@ -198,7 +196,7 @@ public function testItShouldThrowJsonExceptionWhenPassingMalFormattedArray(): vo
->andReturn($producerTopic);
$kafkaProducer->expects()
- ->poll(1000)
+ ->flush(1000)
->andReturn(0);
$producerMiddleware->expects()
@@ -225,7 +223,7 @@ public function testShouldBuildDispatcher(): void
$producerTopic = m::mock(ProducerTopic::class);
$configManager = m::mock(ProducerConfigManager::class);
- $producerHandler = new class($record, $topic) extends AbstractHandler {
+ $producerHandler = new class ($record, $topic) extends AbstractHandler {
};
// Expectations
@@ -274,7 +272,7 @@ public function testShouldBuildDispatcher(): void
->andReturn($producerTopic);
$kafkaProducer->expects()
- ->poll(1000)
+ ->flush(1000)
->andReturn(0);
// Actions
@@ -297,9 +295,10 @@ public function testShouldBuildDispatcherWithConfigOptions(): void
$kafkaProducer = m::mock(KafkaProducer::class);
$producerTopic = m::mock(ProducerTopic::class);
$configManager = m::mock(ProducerConfigManager::class);
- $broker = new Broker('kafka:9092', new None());
+ $connections = env('KAFKA_BROKER_CONNECTIONS', 'kafka:9092');
+ $broker = new Broker($connections, new None());
$configOptions = new ProducerConfigOptions($topicId, $broker);
- $producerHandler = new class($record, $configOptions) extends AbstractProducer {
+ $producerHandler = new class ($record, $configOptions) extends AbstractProducer {
};
// Expectations
@@ -348,7 +347,7 @@ public function testShouldBuildDispatcherWithConfigOptions(): void
->andReturn($producerTopic);
$kafkaProducer->expects()
- ->poll(1000)
+ ->flush(1000)
->andReturn(0);
// Actions
diff --git a/tests/Unit/Record/ConsumerRecordTest.php b/tests/Unit/Record/ConsumerRecordTest.php
index b4b460c4..8ca70ba1 100644
--- a/tests/Unit/Record/ConsumerRecordTest.php
+++ b/tests/Unit/Record/ConsumerRecordTest.php
@@ -1,4 +1,5 @@
andReturn('Process timed out.');
$this->expectException(ResponseTimeoutException::class);
- $this->expectExceptionMessage('Consumer finished to process or timed out: Process timed out.');
+ $this->expectExceptionMessage(
+ 'Consumer finished to process or timed out: Process timed out.'
+ );
$this->expectExceptionCode(RD_KAFKA_RESP_ERR__TIMED_OUT);
// Actions
diff --git a/tests/Unit/Record/ProducerRecordTest.php b/tests/Unit/Record/ProducerRecordTest.php
index 4f0ea300..d877e15f 100644
--- a/tests/Unit/Record/ProducerRecordTest.php
+++ b/tests/Unit/Record/ProducerRecordTest.php
@@ -1,4 +1,5 @@
'earliest',
];
// Actions
- $result = ConsumerFactory::make($brokerData, $topicData, $avroSchemaData);
+ $result = ConsumerFactory::make(
+ $brokerData,
+ $topicData,
+ $avroSchemaData
+ );
// Assertions
$this->assertInstanceOf(Consumer::class, $result);
diff --git a/tests/Unit/TopicHandler/ConfigOptions/Factories/ProducerFactoryTest.php b/tests/Unit/TopicHandler/ConfigOptions/Factories/ProducerFactoryTest.php
index 2c7e1c82..b9dac202 100644
--- a/tests/Unit/TopicHandler/ConfigOptions/Factories/ProducerFactoryTest.php
+++ b/tests/Unit/TopicHandler/ConfigOptions/Factories/ProducerFactoryTest.php
@@ -1,4 +1,5 @@
assertInstanceOf(Producer::class, $result);
diff --git a/tests/Unit/TopicHandler/ConfigOptions/ProducerTest.php b/tests/Unit/TopicHandler/ConfigOptions/ProducerTest.php
index 900e8b27..5fff3e12 100644
--- a/tests/Unit/TopicHandler/ConfigOptions/ProducerTest.php
+++ b/tests/Unit/TopicHandler/ConfigOptions/ProducerTest.php
@@ -1,4 +1,5 @@