diff --git a/.gitattributes b/.gitattributes
index 418a22e..86e122e 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,6 +1,25 @@
+# Set the default behavior, in case people don't have core.autocrlf set.
+* text eol=lf
+
+# These files are binary and should be left untouched
+# (binary is a macro for -text -diff)
+*.png binary
+*.jpg binary
+*.jpeg binary
+*.gif binary
+*.ico binary
+*.webp binary
+*.bmp binary
+*.ttf binary
+*.blp binary
+*.db2 binary
+
# Ignoring files for distribution archieves
.github/ export-ignore
-etc/ export-ignore
+etc/ci/ export-ignore
+etc/dev-app/ export-ignore
+etc/qa/ export-ignore
+examples/ export-ignore
tests/ export-ignore
var/ export-ignore
.devcontainer.json export-ignore
@@ -8,6 +27,9 @@ var/ export-ignore
.gitattributes export-ignore
.gitignore export-ignore
CONTRIBUTING.md export-ignore
-infection.json.dist export-ignore
+composer.lock export-ignore
Makefile export-ignore
README.md export-ignore
+
+# Diffing
+*.php diff=php
diff --git a/.github/renovate.json b/.github/renovate.json
index c3a6d94..1c478c4 100644
--- a/.github/renovate.json
+++ b/.github/renovate.json
@@ -1,6 +1,10 @@
{
- "$schema": "https://docs.renovatebot.com/renovate-schema.json",
- "extends": [
- "github>WyriHaximus/renovate-config:php-package"
- ]
+ "$schema": "https://docs.renovatebot.com/renovate-schema.json",
+ "extends": [
+ "github>WyriHaximus/renovate-config:php-package"
+ ],
+ "constraints": {
+ "php": "8.4.x",
+ "composer": "2.x"
+ }
}
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yaml
similarity index 100%
rename from .github/workflows/ci.yml
rename to .github/workflows/ci.yaml
diff --git a/.github/workflows/release-managment.yaml b/.github/workflows/release-management.yaml
similarity index 94%
rename from .github/workflows/release-managment.yaml
rename to .github/workflows/release-management.yaml
index c49b362..e472b26 100644
--- a/.github/workflows/release-managment.yaml
+++ b/.github/workflows/release-management.yaml
@@ -17,7 +17,7 @@ permissions:
jobs:
release-managment:
name: Create Release
- uses: WyriHaximus/github-workflows/.github/workflows/package-release-managment.yaml@main
+ uses: WyriHaximus/github-workflows/.github/workflows/package-release-management.yaml@main
with:
milestone: ${{ github.event.milestone.title }}
description: ${{ github.event.milestone.title }}
diff --git a/LICENSE b/LICENSE
index 9324b85..c07da2a 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2019 Cees-Jan Kiewiet
+Copyright (c) 2026 Cees-Jan Kiewiet
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/Makefile b/Makefile
index f83636a..e34003c 100644
--- a/Makefile
+++ b/Makefile
@@ -3,11 +3,17 @@ SHELL=bash
.PHONY: *
-COMPOSER_SHOW_EXTENSION_LIST=$(shell composer show -t | grep -o "\-\-\(ext-\).\+" | sort | uniq | cut -d- -f4- | tr -d '\n' | grep . | sed '/^$$/d' | xargs | sed -e 's/ /, /g' | tr -cd '[:alnum:],' | sed 's/.$$//')
-SLIM_DOCKER_IMAGE=$(shell php -r 'echo count(array_intersect(["gd", "vips"], explode(",", "${COMPOSER_SHOW_EXTENSION_LIST}"))) > 0 ? "" : "-slim";')
-COMPOSER_CACHE_DIR=$(shell composer config --global cache-dir -q || echo ${HOME}/.composer-php/cache)
-PHP_VERSION:=$(shell docker run --rm -v "`pwd`:`pwd`" jess/jq jq -r -c '.config.platform.php' "`pwd`/composer.json" | php -r "echo str_replace('|', '.', explode('.', implode('|', explode('.', stream_get_contents(STDIN), 2)), 2)[0]);")
-COMPOSER_CONTAINER_CACHE_DIR=$(shell docker run --rm -it "ghcr.io/wyrihaximusnet/php:${PHP_VERSION}-nts-alpine${SLIM_DOCKER_IMAGE}-dev" composer config --global cache-dir -q || echo ${HOME}/.composer-php/cache)
+DOCKER_AVAILABLE=$(shell ((command -v docker >/dev/null 2>&1) && echo 0 || echo 1))
+CONTAINER_REGISTRY_REPO="ghcr.io/wyrihaximusnet/php"
+SLIM_DOCKER_IMAGE="-slim"
+NTS_OR_ZTS_DOCKER_IMAGE="zts"
+OTEL_PHP_FIBERS_ENABLED=false
+NEEDS_DOCKER_SOCKET=FALSE
+PHP_VERSION="8.4"
+CONTAINER_NAME=$(shell echo "${CONTAINER_REGISTRY_REPO}:${PHP_VERSION}-${NTS_OR_ZTS_DOCKER_IMAGE}-alpine${SLIM_DOCKER_IMAGE}-dev")
+CONTAINER_NAME_INTERACTIVE_SHELL=$(shell echo "${CONTAINER_REGISTRY_REPO}:${PHP_VERSION}-zts-alpine-dev")
+COMPOSER_CACHE_DIR=$(shell (command -v composer >/dev/null 2>&1) && composer config --global cache-dir -q 2>/dev/null || echo ${HOME}/.composer-php/cache)
+COMPOSER_CONTAINER_CACHE_DIR=$(shell ((command -v docker >/dev/null 2>&1) && docker run --rm -it ${CONTAINER_NAME} composer config --global cache-dir -q) || echo ${HOME}/.composer-php/cache)
ifneq ("$(wildcard /.you-are-in-a-wyrihaximus.net-php-docker-image)","")
IN_DOCKER=TRUE
@@ -17,12 +23,34 @@ endif
ifeq ("$(IN_DOCKER)","TRUE")
DOCKER_RUN:=
+ DOCKER_RUN_WITH_SOCKET:=
+ DOCKER_SHELL:=
+ DOCKER_INTERACTIVE_SHELL:=
else
- DOCKER_RUN:=docker run --rm -it \
- -v "`pwd`:`pwd`" \
- -v "${COMPOSER_CACHE_DIR}:${COMPOSER_CONTAINER_CACHE_DIR}" \
- -w "`pwd`" \
- "ghcr.io/wyrihaximusnet/php:${PHP_VERSION}-zts-alpine${SLIM_DOCKER_IMAGE}-dev"
+ ifeq ($(DOCKER_AVAILABLE),0)
+ DOCKER_COMMON_OPS:=-v "`pwd`:`pwd`" -w "`pwd`" -v "${COMPOSER_CACHE_DIR}:${COMPOSER_CONTAINER_CACHE_DIR}" -e OTEL_PHP_FIBERS_ENABLED="${OTEL_PHP_FIBERS_ENABLED}" --ulimit nofile=1000000
+ ifeq ("$(NEEDS_DOCKER_SOCKET)","TRUE")
+ ifneq ("$(wildcard /var/run/docker.sock)","")
+ DOCKER_SOCKET_OPS:=-v "/var/run/docker.sock:/var/run/docker.sock"
+ DOCKER_SOCKET_CONTAINER_NAME_SUFFIX:=-root
+ else
+ DOCKER_SOCKET_OPS:=
+ DOCKER_SOCKET_CONTAINER_NAME_SUFFIX:=
+ endif
+ else
+ DOCKER_SOCKET_OPS:=
+ DOCKER_SOCKET_CONTAINER_NAME_SUFFIX:=
+ endif
+ DOCKER_RUN:=docker run --rm -i ${DOCKER_COMMON_OPS} "${CONTAINER_NAME}"
+ DOCKER_RUN_WITH_SOCKET:=docker run --rm -i ${DOCKER_COMMON_OPS} ${DOCKER_SOCKET_OPS} "${CONTAINER_NAME}${DOCKER_SOCKET_CONTAINER_NAME_SUFFIX}"
+ DOCKER_SHELL:=docker run --rm -it ${DOCKER_COMMON_OPS} "${CONTAINER_NAME}"
+ DOCKER_INTERACTIVE_SHELL:=docker run --rm -it ${DOCKER_COMMON_OPS} "${CONTAINER_NAME_INTERACTIVE_SHELL}"
+ else
+ DOCKER_RUN:=
+ DOCKER_RUN_WITH_SOCKET:=
+ DOCKER_SHELL:=
+ DOCKER_INTERACTIVE_SHELL:=
+ endif
endif
ifneq (,$(findstring icrosoft,$(shell cat /proc/version)))
@@ -31,18 +59,383 @@ else
THREADS=$(shell nproc)
endif
-all: ## Runs everything ###
- @grep -E '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) | grep -v "###" | awk 'BEGIN {FS = ":.*?## "}; {printf "%s\n", $$1}' | xargs --open-tty $(MAKE)
+## Run everything extra point
+all: ## Runs everything ####
+ $(DOCKER_RUN_WITH_SOCKET) make all-raw
+all-raw: ## The real runs everything, but due to sponge it has to be ran inside DOCKER_RUN ##U##
+ $(MAKE) composer-validate syntax-php backward-compatibility-check ## Count: 3
-syntax-php: ## Lint PHP syntax
- $(DOCKER_RUN) vendor/bin/parallel-lint -e stub --exclude vendor .
-shell: ## Provides Shell access in the expected environment ###
- $(DOCKER_RUN) ash
+## Temporary set of migrations to get all my repos in shape
+migrations-git-enforce-gitattributes-contents: #### Enforce .gitattributes contents ##*I*##
+ ($(DOCKER_RUN) php -r 'file_put_contents(".gitattributes", base64_decode("IyBTZXQgdGhlIGRlZmF1bHQgYmVoYXZpb3IsIGluIGNhc2UgcGVvcGxlIGRvbid0IGhhdmUgY29yZS5hdXRvY3JsZiBzZXQuCiogdGV4dCBlb2w9bGYKCiMgVGhlc2UgZmlsZXMgYXJlIGJpbmFyeSBhbmQgc2hvdWxkIGJlIGxlZnQgdW50b3VjaGVkCiMgKGJpbmFyeSBpcyBhIG1hY3JvIGZvciAtdGV4dCAtZGlmZikKKi5wbmcgYmluYXJ5CiouanBnIGJpbmFyeQoqLmpwZWcgYmluYXJ5CiouZ2lmIGJpbmFyeQoqLmljbyBiaW5hcnkKKi53ZWJwIGJpbmFyeQoqLmJtcCBiaW5hcnkKKi50dGYgYmluYXJ5CiouYmxwIGJpbmFyeQoqLmRiMiBiaW5hcnkKCiMgSWdub3JpbmcgZmlsZXMgZm9yIGRpc3RyaWJ1dGlvbiBhcmNoaWV2ZXMKLmdpdGh1Yi8gZXhwb3J0LWlnbm9yZQpldGMvY2kvIGV4cG9ydC1pZ25vcmUKZXRjL2Rldi1hcHAvIGV4cG9ydC1pZ25vcmUKZXRjL3FhLyBleHBvcnQtaWdub3JlCmV4YW1wbGVzLyBleHBvcnQtaWdub3JlCnRlc3RzLyBleHBvcnQtaWdub3JlCnZhci8gZXhwb3J0LWlnbm9yZQouZGV2Y29udGFpbmVyLmpzb24gZXhwb3J0LWlnbm9yZQouZWRpdG9yY29uZmlnIGV4cG9ydC1pZ25vcmUKLmdpdGF0dHJpYnV0ZXMgZXhwb3J0LWlnbm9yZQouZ2l0aWdub3JlIGV4cG9ydC1pZ25vcmUKQ09OVFJJQlVUSU5HLm1kIGV4cG9ydC1pZ25vcmUKY29tcG9zZXIubG9jayBleHBvcnQtaWdub3JlCk1ha2VmaWxlIGV4cG9ydC1pZ25vcmUKUkVBRE1FLm1kIGV4cG9ydC1pZ25vcmUKCiMgRGlmZmluZwoqLnBocCBkaWZmPXBocAo="));' || true)
-task-list-ci: ## CI: Generate a JSON array of jobs to run, matches the commands run when running `make (|all)` ###
- @grep -E '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) | grep -v "###" | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "%s\n", $$1}' | jq --raw-input --slurp -c 'split("\n")| .[0:-1]'
+migrations-git-make-sure-gitignore-exists: #### Make sure .gitignore exists ##*I*##
+ ($(DOCKER_RUN) touch .gitignore || true)
-help: ## Show this help ###
+migrations-git-make-sure-gitignore-ignores-var: #### Make sure .gitignore ignores var/* ##*I*##
+ ($(DOCKER_RUN) php -r '$$gitignoreFile = ".gitignore"; if (!file_exists($$gitignoreFile)) {exit;} $$txt = file_get_contents($$gitignoreFile); if (!is_string($$txt)) {exit;} if (strpos($$txt, "var/*") !== false) {exit;} file_put_contents($$gitignoreFile, "var/*\n", FILE_APPEND);' || true)
+
+migrations-git-make-sure-gitignore-excludes-var-gitkeep: #### Make sure .gitignore excludes var/.gitkeep ##*I*##
+ ($(DOCKER_RUN) php -r '$$gitignoreFile = ".gitignore"; if (!file_exists($$gitignoreFile)) {exit;} $$txt = file_get_contents($$gitignoreFile); if (!is_string($$txt)) {exit;} if (strpos($$txt, "!var/.gitkeep") !== false) {exit;} file_put_contents($$gitignoreFile, "!var/.gitkeep\n", FILE_APPEND);' || true)
+
+migrations-docs-update-readme-copyright-c-year-to-current: #### Update readme copyright year to current ##*I*##
+ ($(DOCKER_RUN) php -r '$$readmeFile = "README.md"; $$copyRight = "Copyright (c) "; $$currentYear = date("Y"); if (!file_exists($$readmeFile)) {exit;} $$readmeContents = file_get_contents($$readmeFile); foreach (range(2000, 2100) as $$year) { $$readmeContents = str_replace($$copyRight . $$year, $$copyRight . $$currentYear, $$readmeContents); } file_put_contents($$readmeFile, $$readmeContents); ' || true)
+
+migrations-docs-update-readme-copyright-year-to-current: #### Update readme copyright year to current ##*I*##
+ ($(DOCKER_RUN) php -r '$$readmeFile = "README.md"; $$copyRight = "Copyright "; $$currentYear = date("Y"); if (!file_exists($$readmeFile)) {exit;} $$readmeContents = file_get_contents($$readmeFile); foreach (range(2000, 2100) as $$year) { $$readmeContents = str_replace($$copyRight . $$year, $$copyRight . $$currentYear, $$readmeContents); } file_put_contents($$readmeFile, $$readmeContents); ' || true)
+
+migrations-docs-update-etc-readme-template-copyright-c-year-to-current: #### Update readme template in etc/ copyright year to current ##*I*##
+ ($(DOCKER_RUN) php -r '$$readmeFile = "etc/README.md.twig"; $$copyRight = "Copyright (c) "; $$currentYear = date("Y"); if (!file_exists($$readmeFile)) {exit;} $$readmeContents = file_get_contents($$readmeFile); foreach (range(2000, 2100) as $$year) { $$readmeContents = str_replace($$copyRight . $$year, $$copyRight . $$currentYear, $$readmeContents); } file_put_contents($$readmeFile, $$readmeContents); ' || true)
+
+migrations-docs-update-etc-readme-template-copyright-year-to-current: #### Update readme template in etc/ copyright year to current ##*I*##
+ ($(DOCKER_RUN) php -r '$$readmeFile = "etc/README.md.twig"; $$copyRight = "Copyright "; $$currentYear = date("Y"); if (!file_exists($$readmeFile)) {exit;} $$readmeContents = file_get_contents($$readmeFile); foreach (range(2000, 2100) as $$year) { $$readmeContents = str_replace($$copyRight . $$year, $$copyRight . $$currentYear, $$readmeContents); } file_put_contents($$readmeFile, $$readmeContents); ' || true)
+
+migrations-docs-create-license-when-it-doesnt-exists: #### Create license when it doesn't exists ##*I*##
+ ($(DOCKER_RUN) php -r '$$licenseFile = "LICENSE"; if (file_exists($$licenseFile)) {exit;} file_put_contents($$licenseFile, base64_decode("VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMDEgQ2Vlcy1KYW4gS2lld2lldAoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQpTT0ZUV0FSRS4K"));' || true)
+
+migrations-docs-update-license-copyright-c-year-to-current: #### Update license copyright year to current ##*I*##
+ ($(DOCKER_RUN) php -r '$$licenseFile = "LICENSE"; $$copyRight = "Copyright (c) "; $$currentYear = date("Y"); if (!file_exists($$licenseFile)) {exit;} $$licenseContents = file_get_contents($$licenseFile); foreach (range(2000, 2100) as $$year) { $$licenseContents = str_replace($$copyRight . $$year, $$copyRight . $$currentYear, $$licenseContents); } file_put_contents($$licenseFile, $$licenseContents); ' || true)
+
+migrations-docs-update-license-copyright-year-to-current: #### Update license copyright year to current ##*I*##
+ ($(DOCKER_RUN) php -r '$$licenseFile = "LICENSE"; $$copyRight = "Copyright "; $$currentYear = date("Y"); if (!file_exists($$licenseFile)) {exit;} $$licenseContents = file_get_contents($$licenseFile); foreach (range(2000, 2100) as $$year) { $$licenseContents = str_replace($$copyRight . $$year, $$copyRight . $$currentYear, $$licenseContents); } file_put_contents($$licenseFile, $$licenseContents); ' || true)
+
+migrations-php-make-sure-var-exists: #### Make sure var/ exists ##*I*##
+ ($(DOCKER_RUN) mkdir var || true)
+
+migrations-php-make-sure-var-gitkeep-exists: #### Make sure var/.gitkeep exists ##*I*##
+ ($(DOCKER_RUN) touch var/.gitkeep || true)
+
+migrations-php-make-sure-etc-exists: #### Make sure etc/ exists ##*I*##
+ ($(DOCKER_RUN) mkdir etc || true)
+
+migrations-php-make-sure-etc-ci-exists: #### Make sure etc/ci/ exists ##*I*##
+ ($(DOCKER_RUN) mkdir etc/ci || true)
+
+migrations-php-make-sure-etc-qa-exists: #### Make sure etc/qa/ exists ##*I*##
+ ($(DOCKER_RUN) mkdir etc/qa || true)
+
+migrations-php-move-psalm-xml-config-to-etc: #### Move psalm.xml to etc/qa/psalm.xml ##*I*##
+ ($(DOCKER_RUN) mv psalm.xml etc/qa/psalm.xml || true)
+
+migrations-php-remove-psalm-xml-config: #### Make sure we remove etc/qa/psalm.xml ##*I*##
+ ($(DOCKER_RUN) rm etc/qa/psalm.xml || true)
+
+migrations-php-remove-old-phpunit-xml-dist-config: #### Make sure we remove phpunit.xml.dist ##*I*##
+ ($(DOCKER_RUN) rm phpunit.xml.dist || true)
+
+migrations-php-remove-old-phpunit-xml-config: #### Make sure we remove phpunit.xml ##*I*##
+ ($(DOCKER_RUN) rm phpunit.xml || true)
+
+migrations-php-ensure-etc-ci-markdown-link-checker-json-exists: #### Make sure we have etc/ci/markdown-link-checker.json ##*I*##
+ ($(DOCKER_RUN) php -r '$$markdownLinkCheckerFile = "etc/ci/markdown-link-checker.json"; $$json = json_decode("{\"httpHeaders\": [{\"urls\": [\"https://docs.github.com/\"],\"headers\": {\"Accept-Encoding\": \"zstd, br, gzip, deflate\"}}]}"); if (file_exists($$markdownLinkCheckerFile)) {exit;} file_put_contents($$markdownLinkCheckerFile, json_encode($$json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . "\r\n");' || true)
+
+migrations-php-move-infection-config-to-etc: #### Move infection.json.dist to etc/qa/infection.json5 ##*I*##
+ ($(DOCKER_RUN) mv infection.json.dist etc/qa/infection.json5 || true)
+
+migrations-php-infection-create-config-if-not-exists: #### Create Infection config file if it doesn't exists at etc/qa/infection.json5 ##*I*##
+ ($(DOCKER_RUN) php -r '$$infectionFile = "etc/qa/infection.json5"; $$infectionConfig = base64_decode("ewogICAgInRpbWVvdXQiOiAxMjAsCiAgICAic291cmNlIjogewogICAgICAgICJkaXJlY3RvcmllcyI6IFsKICAgICAgICAgICAgInNyYyIKICAgICAgICBdCiAgICB9LAogICAgImxvZ3MiOiB7CiAgICAgICAgInRleHQiOiAiLi4vLi4vdmFyL2luZmVjdGlvbi5sb2ciLAogICAgICAgICJzdW1tYXJ5IjogIi4uLy4uL3Zhci9pbmZlY3Rpb24tc3VtbWFyeS5sb2ciLAogICAgICAgICJqc29uIjogIi4uLy4uL3Zhci9pbmZlY3Rpb24uanNvbiIsCiAgICAgICAgInBlck11dGF0b3IiOiAiLi4vLi4vdmFyL2luZmVjdGlvbi1wZXItbXV0YXRvci5tZCIsCiAgICAgICAgImdpdGh1YiI6IHRydWUKICAgIH0sCiAgICAibWluTXNpIjogMTAwLAogICAgIm1pbkNvdmVyZWRNc2kiOiAxMDAsCiAgICAiaWdub3JlTXNpV2l0aE5vTXV0YXRpb25zIjogdHJ1ZSwKICAgICJtdXRhdG9ycyI6IHsKICAgICAgICAiQGRlZmF1bHQiOiB0cnVlCiAgICB9Cn0K"); if (file_exists($$infectionFile)) {exit;} file_put_contents($$infectionFile, $$infectionConfig);' || true)
+
+migrations-php-remove-phpunit-config-dir-from-infection: #### Drop XXX from etc/qa/infection.json5 ##*I*##
+ ($(DOCKER_RUN) php -r '$$infectionFile = "etc/qa/infection.json5"; if (!file_exists($$infectionFile)) {exit;} $$json = json_decode(file_get_contents($$infectionFile), true); if (!is_array($$json)) {exit;} if (!array_key_exists("phpUnit", $$json)) {exit;} unset($$json["phpUnit"]); file_put_contents($$infectionFile, json_encode($$json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . "\r\n");' || true)
+
+migrations-php-fix-logs-relative-paths-for-infection: #### Fix logs paths in etc/qa/infection.json5 ##*I*##
+ ($(DOCKER_RUN) php -r '$$infectionFile = "etc/qa/infection.json5"; if (!file_exists($$infectionFile)) {exit;} $$json = json_decode(file_get_contents($$infectionFile), true); if (!is_array($$json)) {exit;} if (!array_key_exists("logs", $$json)) {exit;} foreach ($$json["logs"] as $$logsKey => $$logsPath) { if (is_string($$json["logs"][$$logsKey]) && str_starts_with($$json["logs"][$$logsKey], "./var/infection")) { $$json["logs"][$$logsKey] = str_replace("./var/infection", "../../var/infection", $$json["logs"][$$logsKey]); } } file_put_contents($$infectionFile, json_encode($$json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . "\r\n");' || true)
+
+migrations-php-infection-ensure-log-text-has-the-correct-path: #### Ensure infection's log.text has config directive has the correct path ##*I*##
+ ($(DOCKER_RUN) php -r '$$infectionFile = "etc/qa/infection.json5"; if (!file_exists($$infectionFile)) {exit;} $$json = json_decode(file_get_contents($$infectionFile), true); if (!is_array($$json)) {exit;} if (!array_key_exists("logs", $$json)) { $$json["logs"] = []; } $$json["logs"]["text"] = "../../var/infection.log"; file_put_contents($$infectionFile, json_encode($$json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . "\r\n");' || true)
+
+migrations-php-infection-ensure-log-summary-has-the-correct-path: #### Ensure infection's log.summary has config directive has the correct path ##*I*##
+ ($(DOCKER_RUN) php -r '$$infectionFile = "etc/qa/infection.json5"; if (!file_exists($$infectionFile)) {exit;} $$json = json_decode(file_get_contents($$infectionFile), true); if (!is_array($$json)) {exit;} if (!array_key_exists("logs", $$json)) { $$json["logs"] = []; } $$json["logs"]["summary"] = "../../var/infection-summary.log"; file_put_contents($$infectionFile, json_encode($$json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . "\r\n");' || true)
+
+migrations-php-infection-ensure-log-json-has-the-correct-path: #### Ensure infection's log.json has config directive has the correct path ##*I*##
+ ($(DOCKER_RUN) php -r '$$infectionFile = "etc/qa/infection.json5"; if (!file_exists($$infectionFile)) {exit;} $$json = json_decode(file_get_contents($$infectionFile), true); if (!is_array($$json)) {exit;} if (!array_key_exists("logs", $$json)) { $$json["logs"] = []; } $$json["logs"]["json"] = "../../var/infection.json"; file_put_contents($$infectionFile, json_encode($$json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . "\r\n");' || true)
+
+migrations-php-infection-ensure-log-per-mutator-has-the-correct-path: #### Ensure infection's log.perMutator has config directive has the correct path ##*I*##
+ ($(DOCKER_RUN) php -r '$$infectionFile = "etc/qa/infection.json5"; if (!file_exists($$infectionFile)) {exit;} $$json = json_decode(file_get_contents($$infectionFile), true); if (!is_array($$json)) {exit;} if (!array_key_exists("logs", $$json)) { $$json["logs"] = []; } $$json["logs"]["perMutator"] = "../../var/infection-per-mutator.md"; file_put_contents($$infectionFile, json_encode($$json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . "\r\n");' || true)
+
+migrations-php-add-github-true-to-for-infection: #### Ensure we configure infection to emit logs to GitHub in etc/qa/infection.json5 ##*I*##
+ ($(DOCKER_RUN) php -r '$$infectionFile = "etc/qa/infection.json5"; if (!file_exists($$infectionFile)) {exit;} $$json = json_decode(file_get_contents($$infectionFile), true); if (!is_array($$json)) {exit;} if (!array_key_exists("logs", $$json)) {exit;} if (array_key_exists("github", $$json["logs"])) {exit;} $$json["logs"]["github"] = true; file_put_contents($$infectionFile, json_encode($$json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . "\r\n");' || true)
+
+migrations-php-make-paths-compatible-with-infection-0-32: #### We update path to be relative to etc/qa/infection.json5 as of 0.32 ##*I*##
+ ($(DOCKER_RUN) php -r '$$infectionFile = "etc/qa/infection.json5"; if (!file_exists($$infectionFile)) {exit;} $$json = json_decode(file_get_contents($$infectionFile), true); if (!is_array($$json)) {exit;} if (!array_key_exists("source", $$json)) {exit;} if (!array_key_exists("directories", $$json["source"])) {exit;} foreach ($$json["source"]["directories"] as $$key => $$value) { if (!str_starts_with($$value, "../../")) {$$json["source"]["directories"][$$key] = "../../" . $$value;} } file_put_contents($$infectionFile, json_encode($$json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . "\r\n");' || true)
+
+migrations-php-set-phpunit-ensure-config-file-exists: #### Make sure we have a PHPUnit config file at etc/qa/phpunit.xml ##*I*##
+ ($(DOCKER_RUN) php -r '$$phpUnitConfigFIle = "etc/qa/phpunit.xml"; if (file_exists($$phpUnitConfigFIle)) {exit;} file_put_contents($$phpUnitConfigFIle, base64_decode("PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHBocHVuaXQKICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCiAgICBib290c3RyYXA9Ii4uLy4uL3ZlbmRvci9hdXRvbG9hZC5waHAiCiAgICBjb2xvcnM9InRydWUiCiAgICB4c2k6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0iLi4vLi4vdmVuZG9yL3BocHVuaXQvcGhwdW5pdC9waHB1bml0LnhzZCIKICAgIGNhY2hlRGlyZWN0b3J5PSIuLi8uLi92YXIvcGhwdW5pdC9jYWNoZSIKICAgIGRpc3BsYXlEZXRhaWxzT25UZXN0c1RoYXRUcmlnZ2VyRGVwcmVjYXRpb25zPSJ0cnVlIgogICAgZGlzcGxheURldGFpbHNPblRlc3RzVGhhdFRyaWdnZXJFcnJvcnM9InRydWUiCiAgICBkaXNwbGF5RGV0YWlsc09uVGVzdHNUaGF0VHJpZ2dlck5vdGljZXM9InRydWUiCiAgICBkaXNwbGF5RGV0YWlsc09uVGVzdHNUaGF0VHJpZ2dlcldhcm5pbmdzPSJ0cnVlIgogICAgZGlzcGxheURldGFpbHNPblBocHVuaXREZXByZWNhdGlvbnM9InRydWUiCj4KICAgIDx0ZXN0c3VpdGVzPgogICAgICAgIDx0ZXN0c3VpdGUgbmFtZT0iVGVzdCBTdWl0ZSI+CiAgICAgICAgICAgIDxkaXJlY3Rvcnk+Li4vLi4vdGVzdHMvPC9kaXJlY3Rvcnk+CiAgICAgICAgPC90ZXN0c3VpdGU+CiAgICA8L3Rlc3RzdWl0ZXM+CiAgICA8c291cmNlPgogICAgICAgIDxpbmNsdWRlPgogICAgICAgICAgICA8ZGlyZWN0b3J5IHN1ZmZpeD0iLnBocCI+Li4vLi4vc3JjLzwvZGlyZWN0b3J5PgogICAgICAgIDwvaW5jbHVkZT4KICAgIDwvc291cmNlPgogICAgPGV4dGVuc2lvbnM+CiAgICAgICAgPGJvb3RzdHJhcCBjbGFzcz0iRXJnZWJuaXNcUEhQVW5pdFxTbG93VGVzdERldGVjdG9yXEV4dGVuc2lvbiIvPgogICAgPC9leHRlbnNpb25zPgo8L3BocHVuaXQ+Cg=="));' || true)
+
+migrations-php-set-phpunit-xsd-path-to-local: #### Ensure that the PHPUnit XDS referred in etc/qa/phpunit.xml points to vendor/phpunit/phpunit/phpunit.xsd so we don't go over the network ##*I*##
+ ($(DOCKER_RUN) php -r '$$phpUnitConfigFIle = "etc/qa/phpunit.xml"; if (!file_exists($$phpUnitConfigFIle)) {exit;} $$xml = file_get_contents($$phpUnitConfigFIle); if (!is_string($$xml)) {exit;} for ($$major = 0; $$major < 23; $$major++) { for ($$minor = 0; $$minor < 23; $$minor++) { $$xml = str_replace("https://schema.phpunit.de/" . $$major . "." . $$minor . "/phpunit.xsd", "../../vendor/phpunit/phpunit/phpunit.xsd", $$xml); } } file_put_contents($$phpUnitConfigFIle, $$xml);' || true)
+
+migrations-php-set-phpunit-make-sure-we-see-all-the-warnings-deprecations-etc-etc-that-will-make-phpunit-do-a-non-happy-exit: #### Make sure we see all the warnings, deprecations, etc etc that will make PHPunit do a non-happy exit ##*I*##
+ ($(DOCKER_RUN) php -r '$$phpUnitConfigFIle = "etc/qa/phpunit.xml"; if (!file_exists($$phpUnitConfigFIle)) {exit;} $$xml = file_get_contents($$phpUnitConfigFIle); if (!is_string($$xml)) {exit;} $$xml = str_replace(base64_decode("PHBocHVuaXQgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgYm9vdHN0cmFwPSIuLi8uLi92ZW5kb3IvYXV0b2xvYWQucGhwIiBjb2xvcnM9InRydWUiIHhzaTpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uPSIuLi8uLi92ZW5kb3IvcGhwdW5pdC9waHB1bml0L3BocHVuaXQueHNkIiBjYWNoZURpcmVjdG9yeT0iLi4vLi4vdmFyL3BocHVuaXQvY2FjaGUiPg=="), base64_decode("PHBocHVuaXQKICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCiAgICBib290c3RyYXA9Ii4uLy4uL3ZlbmRvci9hdXRvbG9hZC5waHAiCiAgICBjb2xvcnM9InRydWUiCiAgICB4c2k6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0iLi4vLi4vdmVuZG9yL3BocHVuaXQvcGhwdW5pdC9waHB1bml0LnhzZCIKICAgIGNhY2hlRGlyZWN0b3J5PSIuLi8uLi92YXIvcGhwdW5pdC9jYWNoZSIKICAgIGRpc3BsYXlEZXRhaWxzT25UZXN0c1RoYXRUcmlnZ2VyRGVwcmVjYXRpb25zPSJ0cnVlIgogICAgZGlzcGxheURldGFpbHNPblRlc3RzVGhhdFRyaWdnZXJFcnJvcnM9InRydWUiCiAgICBkaXNwbGF5RGV0YWlsc09uVGVzdHNUaGF0VHJpZ2dlck5vdGljZXM9InRydWUiCiAgICBkaXNwbGF5RGV0YWlsc09uVGVzdHNUaGF0VHJpZ2dlcldhcm5pbmdzPSJ0cnVlIgogICAgZGlzcGxheURldGFpbHNPblBocHVuaXREZXByZWNhdGlvbnM9InRydWUiCj4="), $$xml); file_put_contents($$phpUnitConfigFIle, $$xml);' || true)
+
+migrations-php-move-phpstan: #### Move phpstan.neon to etc/qa/phpstan.neon ##*I*##
+ ($(DOCKER_RUN) mv phpstan.neon etc/qa/phpstan.neon || true)
+
+migrations-php-set-phpstan-ensure-config-file-exists: #### Make sure we have a PHPStan config file at etc/qa/phpstan.neon ##*I*##
+ ($(DOCKER_RUN) php -r '$$phpStanConfigFIle = "etc/qa/phpstan.neon"; if (file_exists($$phpStanConfigFIle)) {exit;} file_put_contents($$phpStanConfigFIle, "#parameters:");' || true)
+
+migrations-php-set-phpstan-uncomment-parameters: #### Ensure PHPStan config as parameters not commented out in etc/qa/phpstan.neon ##*I*##
+ ($(DOCKER_RUN) php -r '$$phpStanConfigFIle = "etc/qa/phpstan.neon"; if (!file_exists($$phpStanConfigFIle)) {exit;} $$neon = file_get_contents($$phpStanConfigFIle); if (!is_string($$neon)) {exit;} if (!str_starts_with($$neon, "#parameters:")) {exit;} $$neon = str_replace("#parameters:", "parameters:", $$neon); file_put_contents($$phpStanConfigFIle, $$neon);' || true)
+
+migrations-php-set-phpstan-add-parameters-if-it-isnt-present-in-the-config-file: #### Add parameters to PHPStan config file at etc/qa/phpstan.neon if it's not present ##*I*##
+ ($(DOCKER_RUN) php -r '$$phpStanConfigFIle = "etc/qa/phpstan.neon"; if (!file_exists($$phpStanConfigFIle)) {exit;} $$neon = file_get_contents($$phpStanConfigFIle); if (!is_string($$neon)) {exit;} if (strpos($$neon, "parameters:") !== false) {exit;} file_put_contents($$phpStanConfigFIle, "parameters:", FILE_APPEND);' || true)
+
+migrations-php-set-phpstan-paths-in-config: #### Ensure PHPStan config has the etc, src, and (optionally) tests paths set in etc/qa/phpstan.neon ##*I*##
+ ($(DOCKER_RUN) php -r '$$phpStanConfigFIle = "etc/qa/phpstan.neon"; $$pathsString = "\n\tpaths:\n\t\t- ../../etc\n\t\t- ../../src\n\t\t- ../../tests"; $$pathsStringWithoutTests = "\n\tpaths:\n\t\t- ../../etc\n\t\t- ../../src"; if (!file_exists($$phpStanConfigFIle)) {exit;} $$neon = file_get_contents($$phpStanConfigFIle); if (!is_string($$neon)) {exit;} if (strpos($$neon, $$pathsString) !== false || strpos($$neon, $$pathsStringWithoutTests) !== false) {exit;} $$neon = str_replace("parameters:", "parameters:" . $$pathsString, $$neon); file_put_contents($$phpStanConfigFIle, $$neon);' || true)
+
+migrations-php-set-phpstan-level-max-in-config: #### Ensure PHPStan config has level set to max in etc/qa/phpstan.neon ##*I*##
+ ($(DOCKER_RUN) php -r '$$phpStanConfigFIle = "etc/qa/phpstan.neon"; $$levelString = "\n\tlevel: max"; if (!file_exists($$phpStanConfigFIle)) {exit;} $$neon = file_get_contents($$phpStanConfigFIle); if (!is_string($$neon)) {exit;} if (strpos($$neon, $$levelString) !== false) {exit;} $$neon = str_replace("parameters:", "parameters:" . $$levelString, $$neon); file_put_contents($$phpStanConfigFIle, $$neon);' || true)
+
+migrations-php-set-phpstan-resolve-ergebnis-noExtends-classesAllowedToBeExtended: #### Ensure PHPStan config uses ergebnis.noExtends.classesAllowedToBeExtended not ergebnis.classesAllowedToBeExtended ##*I*##
+ ($(DOCKER_RUN) php -r '$$phpStanConfigFIle = "etc/qa/phpstan.neon"; if (!file_exists($$phpStanConfigFIle)) {exit;} $$neon = file_get_contents($$phpStanConfigFIle); if (!is_string($$neon)) {exit;} $$neon = str_replace("\tergebnis:\n\t\tclassesAllowedToBeExtended:\n", "\tergebnis:\n\t\tnoExtends:\n\t\t\tclassesAllowedToBeExtended:\n", $$neon); file_put_contents($$phpStanConfigFIle, $$neon);' || true)
+
+migrations-php-set-phpstan-drop-checkGenericClassInNonGenericObjectType: #### Ensure PHPStan config doesn't contain checkGenericClassInNonGenericObjectType as it's no longer a valid config option ##*I*##
+ ($(DOCKER_RUN) php -r '$$phpStanConfigFIle = "etc/qa/phpstan.neon"; if (!file_exists($$phpStanConfigFIle)) {exit;} $$neon = file_get_contents($$phpStanConfigFIle); if (!is_string($$neon)) {exit;} $$neon = str_replace("\tcheckGenericClassInNonGenericObjectType: false\n", "", $$neon); file_put_contents($$phpStanConfigFIle, $$neon);' || true)
+
+migrations-php-phpstan-add-prefix-for-anything-that-starts-with-vendor-in-a-list: #### PHPStan add ../../ to anything in a list that starts with vendor ##*I*##
+ ($(DOCKER_RUN) php -r '$$phpStanConfigFIle = "etc/qa/phpstan.neon"; if (!file_exists($$phpStanConfigFIle)) {exit;} $$neon = file_get_contents($$phpStanConfigFIle); if (!is_string($$neon)) {exit;} $$neon = str_replace("- vendor", "- ../../vendor", $$neon); file_put_contents($$phpStanConfigFIle, $$neon);' || true)
+
+migrations-php-set-phpstan-drop-include-test-utilities-rules: #### Ensure PHPStan config doesn't contain include for wyrihaximus/async-utilities/rules.neon as it's now an extension ##*I*##
+ ($(DOCKER_RUN) php -r '$$phpStanConfigFIle = "etc/qa/phpstan.neon"; if (!file_exists($$phpStanConfigFIle)) {exit;} $$neon = file_get_contents($$phpStanConfigFIle); if (!is_string($$neon)) {exit;} $$neon = str_replace("\nincludes:\n\t- ../../vendor/wyrihaximus/test-utilities/rules.neon\n", "", $$neon); file_put_contents($$phpStanConfigFIle, $$neon);' || true)
+
+migrations-php-set-phpstan-drop-include-async-test-utilities-rules: #### Ensure PHPStan config doesn't contain include for wyrihaximus/async-test-utilities/rules.neon as it's now an extension ##*I*##
+ ($(DOCKER_RUN) php -r '$$phpStanConfigFIle = "etc/qa/phpstan.neon"; if (!file_exists($$phpStanConfigFIle)) {exit;} $$neon = file_get_contents($$phpStanConfigFIle); if (!is_string($$neon)) {exit;} $$neon = str_replace("\nincludes:\n\t- ../../vendor/wyrihaximus/async-test-utilities/rules.neon", "", $$neon); file_put_contents($$phpStanConfigFIle, $$neon);' || true)
+
+migrations-php-set-rector-create-config-if-not-exists: #### Create Rector config file if it doesn't exists at etc/qa/rector.php ##*I*##
+ ($(DOCKER_RUN) php -r '$$rectorConfigFile = "etc/qa/rector.php"; $$defaultRectorConfig = "", "", $$xml); file_put_contents($$phpcsConfigFile, $$xml);' || true)
+
+migrations-php-phpcs-make-cache-is-correct-relatively: #### Make sure PHPCS cache path is has ../../var/.phpcs.cache and not .phpcs.cache ##*I*##
+ ($(DOCKER_RUN) php -r '$$phpcsConfigFile = "etc/qa/phpcs.xml"; if (!file_exists($$phpcsConfigFile)) {exit;} $$xml = file_get_contents($$phpcsConfigFile); if (!is_string($$xml)) {exit;} $$xml = str_replace("", "", $$xml); file_put_contents($$phpcsConfigFile, $$xml);' || true)
+
+migrations-php-phpcs-make-sure-config-has-correct-relative-path-for-etc: #### Make sure PHPCS has ../../ prefixing etc/ to ensure correct relative path ##*I*##
+ ($(DOCKER_RUN) php -r '$$phpcsConfigFile = "etc/qa/phpcs.xml"; if (!file_exists($$phpcsConfigFile)) {exit;} $$xml = file_get_contents($$phpcsConfigFile); if (!is_string($$xml)) {exit;} $$xml = str_replace("etc", "../../etc/", $$xml); file_put_contents($$phpcsConfigFile, $$xml);' || true)
+
+migrations-php-phpcs-make-sure-etc-has-no-trailing-slash: #### Make sure PHPCS has no tailing / on etc ##*I*##
+ ($(DOCKER_RUN) php -r '$$phpcsConfigFile = "etc/qa/phpcs.xml"; if (!file_exists($$phpcsConfigFile)) {exit;} $$xml = file_get_contents($$phpcsConfigFile); if (!is_string($$xml)) {exit;} $$xml = str_replace("../../etc/", "../../etc", $$xml); file_put_contents($$phpcsConfigFile, $$xml);' || true)
+
+migrations-php-phpcs-make-sure-config-has-correct-relative-path-for-src: #### Make sure PHPCS has ../../ prefixing src/ to ensure correct relative path ##*I*##
+ ($(DOCKER_RUN) php -r '$$phpcsConfigFile = "etc/qa/phpcs.xml"; if (!file_exists($$phpcsConfigFile)) {exit;} $$xml = file_get_contents($$phpcsConfigFile); if (!is_string($$xml)) {exit;} $$xml = str_replace("src", "../../src/", $$xml); file_put_contents($$phpcsConfigFile, $$xml);' || true)
+
+migrations-php-phpcs-make-sure-src-has-no-trailing-slash: #### Make sure PHPCS has no tailing / on src ##*I*##
+ ($(DOCKER_RUN) php -r '$$phpcsConfigFile = "etc/qa/phpcs.xml"; if (!file_exists($$phpcsConfigFile)) {exit;} $$xml = file_get_contents($$phpcsConfigFile); if (!is_string($$xml)) {exit;} $$xml = str_replace("../../src/", "../../src", $$xml); file_put_contents($$phpcsConfigFile, $$xml);' || true)
+
+migrations-php-phpcs-make-sure-config-has-correct-relative-path-for-tests: #### Make sure PHPCS has ../../ prefixing tests/ to ensure correct relative path ##*I*##
+ ($(DOCKER_RUN) php -r '$$phpcsConfigFile = "etc/qa/phpcs.xml"; if (!file_exists($$phpcsConfigFile)) {exit;} $$xml = file_get_contents($$phpcsConfigFile); if (!is_string($$xml)) {exit;} $$xml = str_replace("tests", "../../tests/", $$xml); file_put_contents($$phpcsConfigFile, $$xml);' || true)
+
+migrations-php-phpcs-make-sure-tests-has-no-trailing-slash: #### Make sure PHPCS has no tailing / on tests ##*I*##
+ ($(DOCKER_RUN) php -r '$$phpcsConfigFile = "etc/qa/phpcs.xml"; if (!file_exists($$phpcsConfigFile)) {exit;} $$xml = file_get_contents($$phpcsConfigFile); if (!is_string($$xml)) {exit;} $$xml = str_replace("../../tests/", "../../tests", $$xml); file_put_contents($$phpcsConfigFile, $$xml);' || true)
+
+migrations-php-phpcs-make-sure-etc-is-ran-through: #### Make sure PHPCS runs through etc ##*I*##
+ ($(DOCKER_RUN) php -r '$$phpcsConfigFile = "etc/qa/phpcs.xml"; if (!file_exists($$phpcsConfigFile)) {exit;} $$xml = file_get_contents($$phpcsConfigFile); if (!is_string($$xml)) {exit;} if (strpos($$xml, "../../etc") !== false) {exit;} $$xml = str_replace("../../src", "../../etc\n ../../src", $$xml); file_put_contents($$phpcsConfigFile, $$xml);' || true)
+
+migrations-phpcs-include-examples-directory-when-present: #### Make sure PHPCS runs through examples when it exists ##*I*##
+ ($(DOCKER_RUN) php -r 'if (!file_exists("examples/")) {exit;} $$phpcsConfigFile = "etc/qa/phpcs.xml"; if (!file_exists($$phpcsConfigFile)) {exit;} $$xml = file_get_contents($$phpcsConfigFile); if (!is_string($$xml)) {exit;} if (strpos($$xml, "../../examples") !== false) {exit;} $$xml = str_replace("../../etc", "../../etc\n ../../examples", $$xml); file_put_contents($$phpcsConfigFile, $$xml);' || true)
+
+migrations-php-move-composer-require-checker: #### Move composer-require-checker.json to etc/qa/composer-require-checker.json ##*I*##
+ ($(DOCKER_RUN) mv composer-require-checker.json etc/qa/composer-require-checker.json || true)
+
+migrations-php-composer-require-checker-create-config-if-not-exists: #### Create Composer Require Checker config file if it doesn't exists at etc/qa/composer-require-checker.json ##*I*##
+ ($(DOCKER_RUN) php -r '$$composerRequireCheckerConfigFile = "etc/qa/composer-require-checker.json"; $$composerRequireCheckerConfig = base64_decode("ewogICJzeW1ib2wtd2hpdGVsaXN0IiA6IFsKICAgICJudWxsIiwgInRydWUiLCAiZmFsc2UiLAogICAgInN0YXRpYyIsICJzZWxmIiwgInBhcmVudCIsCiAgICAiYXJyYXkiLCAic3RyaW5nIiwgImludCIsICJmbG9hdCIsICJib29sIiwgIml0ZXJhYmxlIiwgImNhbGxhYmxlIiwgInZvaWQiLCAib2JqZWN0IgogIF0sCiAgInBocC1jb3JlLWV4dGVuc2lvbnMiIDogWwogICAgIkNvcmUiLAogICAgImRhdGUiLAogICAgInBjcmUiLAogICAgIlBoYXIiLAogICAgIlJlZmxlY3Rpb24iLAogICAgIlNQTCIsCiAgICAic3RhbmRhcmQiCiAgXSwKICAic2Nhbi1maWxlcyIgOiBbXQp9Cg=="); if (file_exists($$composerRequireCheckerConfigFile)) {exit;} file_put_contents($$composerRequireCheckerConfigFile, $$composerRequireCheckerConfig);' || true)
+
+migrations-inline-code-phpstan-remove-line-phpstan-ignore-next-line: #### Remove all lines that contains @phpstan-ignore-next-line ##*I*##
+ ($(DOCKER_RUN) php -r '$$possibleDirectories = ["src", "tests", "etc", "examples"]; foreach ($$possibleDirectories as $$possibleDirectory) { if (!file_exists($$possibleDirectory)) {continue;} $$i = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($$possibleDirectory)); $$i->rewind(); while ($$i->valid()) { if (!is_file($$i->key()) || (is_file($$i->key()) && !str_ends_with($$i->key(), ".php"))) { $$i->next(); continue; } $$fileContents = explode("\n", file_get_contents($$i->key())); foreach ($$fileContents as $$lineNumber => $$lineContent) { if (str_contains($$lineContent, "@phpstan-ignore-next-line")) { unset($$fileContents[$$lineNumber]); } } file_put_contents($$i->key(), implode("\n", $$fileContents)); $$i->next(); } }' || true)
+
+migrations-inline-code-phpstan-remove-rest-of-line-phpstan-ignore-line: #### Remove rest of line for all lines that contain @phpstan-ignore-line ##*I*##
+ ($(DOCKER_RUN) php -r '$$possibleDirectories = ["src", "tests", "etc", "examples"]; foreach ($$possibleDirectories as $$possibleDirectory) { if (!file_exists($$possibleDirectory)) {continue;} $$i = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($$possibleDirectory)); $$i->rewind(); while ($$i->valid()) { if (!is_file($$i->key()) || (is_file($$i->key()) && !str_ends_with($$i->key(), ".php"))) { $$i->next(); continue; } $$fileContents = explode("\n", file_get_contents($$i->key())); foreach ($$fileContents as $$lineNumber => $$lineContent) { if (str_contains($$lineContent, "/** @phpstan-ignore-line")) { [$$fileContents[$$lineNumber]] = explode("/** @phpstan-ignore-line", $$lineContent); } } file_put_contents($$i->key(), implode("\n", $$fileContents)); $$i->next(); } }' || true)
+
+migrations-inline-code-psalm-remove-line-psalm-suppress: #### Remove all lines that contain @psalm-suppress ##*I*##
+ ($(DOCKER_RUN) php -r '$$possibleDirectories = ["src", "tests", "etc", "examples"]; foreach ($$possibleDirectories as $$possibleDirectory) { if (!file_exists($$possibleDirectory)) {continue;} $$i = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($$possibleDirectory)); $$i->rewind(); while ($$i->valid()) { if (!is_file($$i->key()) || (is_file($$i->key()) && !str_ends_with($$i->key(), ".php"))) { $$i->next(); continue; } $$fileContents = explode("\n", file_get_contents($$i->key())); foreach ($$fileContents as $$lineNumber => $$lineContent) { if (str_contains($$lineContent, "@psalm-suppress")) { unset($$fileContents[$$lineNumber]); } } file_put_contents($$i->key(), implode("\n", $$fileContents)); $$i->next(); } }' || true)
+
+migrations-inline-code-remove-line-internal: #### Remove all lines that contain @internal ##*I*##
+ ($(DOCKER_RUN) php -r '$$possibleDirectories = ["src", "tests", "etc", "examples"]; foreach ($$possibleDirectories as $$possibleDirectory) { if (!file_exists($$possibleDirectory)) {continue;} $$i = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($$possibleDirectory)); $$i->rewind(); while ($$i->valid()) { if (!is_file($$i->key()) || (is_file($$i->key()) && !str_ends_with($$i->key(), ".php"))) { $$i->next(); continue; } $$fileContents = explode("\n", file_get_contents($$i->key())); foreach ($$fileContents as $$lineNumber => $$lineContent) { if (str_contains($$lineContent, "@internal")) { unset($$fileContents[$$lineNumber]); } } file_put_contents($$i->key(), implode("\n", $$fileContents)); $$i->next(); } }' || true)
+
+migrations-supported-features-php-ensure-we-only-cs-check-and-fix-tests-if-unit-tests-is-enabled: #### Ensure we only cs check/fix tests/ if unit-tests is enabled ##*I*##
+ ($(DOCKER_RUN) php -r 'if (in_array("unit-tests", ["linux","macos","windows","zts"])) {exit;} $$phpCSCongifFIle = "etc/qa/phpcs.xml"; $$fileContents = explode("\n", file_get_contents($$phpCSCongifFIle)); foreach ($$fileContents as $$lineNumber => $$lineContent) { if (str_contains($$lineContent, "../../tests")) { unset($$fileContents[$$lineNumber]); } } file_put_contents($$phpCSCongifFIle, implode("\n", $$fileContents));' || true)
+
+migrations-supported-features-php-ensure-we-only-staticly-analyse-tests-with-phpstan-if-unit-tests-is-enabled: #### Ensure we only staticly analyse tests/ with PHPStan if unit-tests is enabled ##*I*##
+ ($(DOCKER_RUN) php -r 'if (in_array("unit-tests", ["linux","macos","windows","zts"])) {exit;} $$phpStanCongifFIle = "etc/qa/phpstan.neon"; $$fileContents = explode("\n", file_get_contents($$phpStanCongifFIle)); foreach ($$fileContents as $$lineNumber => $$lineContent) { if (str_contains($$lineContent, "- ../../tests")) { unset($$fileContents[$$lineNumber]); } } file_put_contents($$phpStanCongifFIle, implode("\n", $$fileContents));' || true)
+
+migrations-supported-features-php-ensure-no-phpunit-config-file-is-present-when-unit-tests-are-disabled: #### Ensure we remove the PHPUnit config file when unit-tests aren't enabled ##*I*##
+ ($(DOCKER_RUN) php -r 'if (in_array("unit-tests", ["linux","macos","windows","zts"])) {exit;} @unlink("etc/qa/phpunit.xml");' || true)
+
+migrations-supported-features-php-ensure-no-infectionphp-config-file-is-present-when-unit-tests-are-disabled: #### Ensure we remove the InfectionPHP config file when unit-tests aren't enabled ##*I*##
+ ($(DOCKER_RUN) php -r 'if (in_array("unit-tests", ["linux","macos","windows","zts"])) {exit;} @unlink("etc/qa/infection.json5");' || true)
+
+migrations-php-make-sure-github-exists: #### Make sure .github/ exists ##*I*##
+ ($(DOCKER_RUN) mkdir .github || true)
+
+migrations-github-codeowners: #### Ensure a CODEOWNERS file is present, create only if it doesn't exist yet ##*I*##
+ ($(DOCKER_RUN) php -r '$$codeOwnersFile = ".github/CODEOWNERS"; if (file_exists($$codeOwnersFile)) {exit;} file_put_contents($$codeOwnersFile, "* @WyriHaximus" . PHP_EOL);' || true)
+
+migrations-php-make-sure-github-workflows-exists: #### Make sure .github/workflows exists ##*I*##
+ ($(DOCKER_RUN) mkdir .github/workflows || true)
+
+migrations-github-actions-remove-composer-diff: #### Remove composer-diff.yaml it has been folded into centralized workflows through ci.yaml ##*I*##
+ ($(DOCKER_RUN) rm .github/workflows/composer-diff.yaml || true)
+
+migrations-github-actions-remove-markdown-check-links: #### Remove markdown-check-links.yaml it has been folded into centralized workflows through ci.yaml ##*I*##
+ ($(DOCKER_RUN) rm .github/workflows/markdown-check-links.yaml || true)
+
+migrations-github-actions-remove-markdown-craft-release: #### Remove craft-release.yaml it has been folded into centralized workflows through release-management.yaml ##*I*##
+ ($(DOCKER_RUN) rm .github/workflows/craft-release.yaml || true)
+
+migrations-github-actions-remove-set-milestone-on-pr: #### Remove set-milestone-on-pr.yaml it has been folded into centralized workflows through release-management.yaml ##*I*##
+ ($(DOCKER_RUN) rm .github/workflows/set-milestone-on-pr.yaml || true)
+
+migrations-github-actions-move-ci: #### Move .github/workflows/ci.yml to .github/workflows/ci.yaml ##*I*##
+ ($(DOCKER_RUN) mv .github/workflows/ci.yml .github/workflows/ci.yaml || true)
+
+migrations-github-actions-remove-ci-if-its-old-style-php-ci-workflow: #### Remove CI Workflow if its the old style PHP CI Workflow ##*I*##
+ ($(DOCKER_RUN) php -r '$$ciWorkflowFile = ".github/workflows/ci.yaml"; if (!file_exists($$ciWorkflowFile)) {exit;} $$yaml = file_get_contents($$ciWorkflowFile); if (!is_string($$yaml)) {exit;} if (strpos($$yaml, "composer: [lowest, locked, highest]") !== false || strpos($$yaml, "composer: [lowest, current, highest]") !== false || strpos($$yaml, "- run: make ${{ matrix.check }}") !== false || strpos($$yaml, base64_decode("aWY6IG1hdHJpeC5jaGVjayA9PSAnYmFja3dhcmQtY29tcGF0aWJpbGl0eS1jaGVjayc=")) !== false) { unlink($$ciWorkflowFile); }' || true)
+
+migrations-github-actions-create-ci-if-not-exists: #### Create CI Workflow if it doesn't exists at .github/workflows/ci.yaml ##*I*##
+ ($(DOCKER_RUN) php -r '$$ciWorkflowFile = ".github/workflows/ci.yaml"; $$ciWorkflowContents = base64_decode("bmFtZTogQ29udGludW91cyBJbnRlZ3JhdGlvbgpvbjoKICBwdXNoOgogICAgYnJhbmNoZXM6CiAgICAgIC0gJ21haW4nCiAgICAgIC0gJ21hc3RlcicKICAgICAgLSAncmVmcy9oZWFkcy92WzAtOV0rLlswLTldKy5bMC05XSsnCiAgcHVsbF9yZXF1ZXN0OgojIyBUaGlzIHdvcmtmbG93IG5lZWRzIHRoZSBgcHVsbC1yZXF1ZXN0YCBwZXJtaXNzaW9ucyB0byB3b3JrIGZvciB0aGUgcGFja2FnZSBkaWZmaW5nCiMjIFJlZnM6IGh0dHBzOi8vZG9jcy5naXRodWIuY29tL2VuL2FjdGlvbnMvcmVmZXJlbmNlL3dvcmtmbG93LXN5bnRheC1mb3ItZ2l0aHViLWFjdGlvbnMjcGVybWlzc2lvbnMKcGVybWlzc2lvbnM6CiAgcHVsbC1yZXF1ZXN0czogd3JpdGUKICBjb250ZW50czogcmVhZApqb2JzOgogIGNpOgogICAgbmFtZTogQ29udGludW91cyBJbnRlZ3JhdGlvbgogICAgdXNlczogV3lyaUhheGltdXMvZ2l0aHViLXdvcmtmbG93cy8uZ2l0aHViL3dvcmtmbG93cy9wYWNrYWdlLnlhbWxAbWFpbgo="); if (file_exists($$ciWorkflowFile)) {exit;} file_put_contents($$ciWorkflowFile, $$ciWorkflowContents);' || true)
+
+migrations-github-actions-move-release-management: #### Move .github/workflows/release-managment.yaml to .github/workflows/release-management.yaml ##*I*##
+ ($(DOCKER_RUN) mv .github/workflows/release-managment.yaml .github/workflows/release-management.yaml || true)
+
+migrations-github-actions-fix-management-in-release-management-referenced-workflow-file: #### Fix management in release-management referenced workflow file ##*I*##
+ ($(DOCKER_RUN) sed -i -e 's/release-managment.yaml/release-management.yaml/g' .github/workflows/release-management.yaml || true)
+
+migrations-github-actions-create-release-management-if-not-exists: #### Create Release Management Workflow if it doesn't exists at .github/workflows/release-management.yaml ##*I*##
+ ($(DOCKER_RUN) php -r '$$releaseManagementWorkflowFile = ".github/workflows/release-management.yaml"; $$releaseManagementWorkflowContents = base64_decode("bmFtZTogUmVsZWFzZSBNYW5hZ2VtZW50Cm9uOgogIHB1bGxfcmVxdWVzdDoKICAgIHR5cGVzOgogICAgICAtIG9wZW5lZAogICAgICAtIGxhYmVsZWQKICAgICAgLSB1bmxhYmVsZWQKICAgICAgLSBzeW5jaHJvbml6ZQogICAgICAtIHJlb3BlbmVkCiAgICAgIC0gbWlsZXN0b25lZAogICAgICAtIGRlbWlsZXN0b25lZAogICAgICAtIHJlYWR5X2Zvcl9yZXZpZXcKICBtaWxlc3RvbmU6CiAgICB0eXBlczoKICAgICAgLSBjbG9zZWQKcGVybWlzc2lvbnM6CiAgY29udGVudHM6IHdyaXRlCiAgaXNzdWVzOiB3cml0ZQogIHB1bGwtcmVxdWVzdHM6IHdyaXRlCmpvYnM6CiAgcmVsZWFzZS1tYW5hZ21lbnQ6CiAgICBuYW1lOiBSZWxlYXNlIE1hbmFnZW1lbnQKICAgIHVzZXM6IFd5cmlIYXhpbXVzL2dpdGh1Yi13b3JrZmxvd3MvLmdpdGh1Yi93b3JrZmxvd3MvcGFja2FnZS1yZWxlYXNlLW1hbmFnZW1lbnQueWFtbEBtYWluCiAgICB3aXRoOgogICAgICBtaWxlc3RvbmU6ICR7eyBnaXRodWIuZXZlbnQubWlsZXN0b25lLnRpdGxlIH19CiAgICAgIGRlc2NyaXB0aW9uOiAke3sgZ2l0aHViLmV2ZW50Lm1pbGVzdG9uZS50aXRsZSB9fQo="); if (file_exists($$releaseManagementWorkflowFile)) {exit;} file_put_contents($$releaseManagementWorkflowFile, $$releaseManagementWorkflowContents);' || true)
+
+migrations-renovate-remove-dependabot-config: #### Make sure we remove .github/dependabot.yml ##*I*##
+ ($(DOCKER_RUN) rm .github/dependabot.yml || true)
+ ($(DOCKER_RUN) rm .github/dependabot.yaml || true)
+
+migrations-renovate-move-config: #### Move renovate.json to .github/renovate.json ##*I*##
+ ($(DOCKER_RUN) mv renovate.json .github/renovate.json || true)
+
+migrations-renovate-create-config-if-not-exists: #### Create Renovate Config if it doesn't exists at .github/renovate.json ##*I*##
+ ($(DOCKER_RUN) php -r '$$renovateConfigFile = ".github/renovate.json"; $$renovateConfigContents = base64_decode("ewogICIkc2NoZW1hIjogImh0dHBzOi8vZG9jcy5yZW5vdmF0ZWJvdC5jb20vcmVub3ZhdGUtc2NoZW1hLmpzb24iLAogICJleHRlbmRzIjogWwogICAgImdpdGh1Yj5XeXJpSGF4aW11cy9yZW5vdmF0ZS1jb25maWc6cGhwLXBhY2thZ2UiCiAgXQp9Cg=="); if (file_exists($$renovateConfigFile)) {exit;} file_put_contents($$renovateConfigFile, $$renovateConfigContents);' || true)
+
+migrations-renovate-point-at-correct-config: #### Ensure .github/renovate.json points at github>WyriHaximus/renovate-config:php-package instead of local>WyriHaximus/renovate-config ##*I*##
+ ($(DOCKER_RUN) php -r '$$renovateFIle = ".github/renovate.json"; if (!file_exists($$renovateFIle)) {exit;} file_put_contents($$renovateFIle, str_replace("local>WyriHaximus/renovate-config", "github>WyriHaximus/renovate-config:php-package", file_get_contents($$renovateFIle)));' || true)
+
+migration-renovate-set-php-constraint: #### Always keep renovate's constraints.php in sync with composer.json's config.platform.php ##*I*##
+ ($(DOCKER_RUN) php -r '$$composerFIle = "composer.json"; if (!file_exists($$composerFIle)) {exit;} $$json = json_decode(file_get_contents($$composerFIle), true); if (!array_key_exists("config", $$json)) {exit;} if (!array_key_exists("platform", $$json["config"])) {exit;} if (!array_key_exists("php", $$json["config"]["platform"])) {exit;} $$phpVersionConstraint = str_replace(".13", ".x", $$json["config"]["platform"]["php"]); $$renovateFIle = ".github/renovate.json"; if (!file_exists($$renovateFIle)) {exit;} $$json = json_decode(file_get_contents($$renovateFIle), true); if (!is_array($$json)) {exit;} if (!array_key_exists("constraints", $$json)) {$$json["constraints"] = [];} $$json["constraints"]["php"] = $$phpVersionConstraint; file_put_contents($$renovateFIle, json_encode($$json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . "\r\n");' || true)
+
+migration-renovate-set-composer-constraint: #### Always keep renovate's constraints.composer at 2.x ##*I*##
+ ($(DOCKER_RUN) php -r '$$renovateFIle = ".github/renovate.json"; if (!file_exists($$renovateFIle)) {exit;} $$json = json_decode(file_get_contents($$renovateFIle), true); if (!is_array($$json)) {exit;} if (!array_key_exists("constraints", $$json)) {$$json["constraints"] = [];} $$json["constraints"]["composer"] = "2.x"; file_put_contents($$renovateFIle, json_encode($$json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . "\r\n");' || true)
+
+
+## Our default jobs
+
+on-install-or-update: ## Tasks, like migrations, that specifically have be run after composer install or update. These will also run by self hosted Renovate ####
+ $(DOCKER_RUN) $(MAKE) migrations-git-enforce-gitattributes-contents migrations-git-make-sure-gitignore-exists migrations-git-make-sure-gitignore-ignores-var migrations-git-make-sure-gitignore-excludes-var-gitkeep migrations-docs-update-readme-copyright-c-year-to-current migrations-docs-update-readme-copyright-year-to-current migrations-docs-update-etc-readme-template-copyright-c-year-to-current migrations-docs-update-etc-readme-template-copyright-year-to-current migrations-docs-create-license-when-it-doesnt-exists migrations-docs-update-license-copyright-c-year-to-current migrations-docs-update-license-copyright-year-to-current migrations-php-make-sure-var-exists migrations-php-make-sure-var-gitkeep-exists migrations-php-make-sure-etc-exists migrations-php-make-sure-etc-ci-exists migrations-php-make-sure-etc-qa-exists migrations-php-move-psalm-xml-config-to-etc migrations-php-remove-psalm-xml-config migrations-php-remove-old-phpunit-xml-dist-config migrations-php-remove-old-phpunit-xml-config migrations-php-ensure-etc-ci-markdown-link-checker-json-exists migrations-php-move-infection-config-to-etc migrations-php-infection-create-config-if-not-exists migrations-php-remove-phpunit-config-dir-from-infection migrations-php-fix-logs-relative-paths-for-infection migrations-php-infection-ensure-log-text-has-the-correct-path migrations-php-infection-ensure-log-summary-has-the-correct-path migrations-php-infection-ensure-log-json-has-the-correct-path migrations-php-infection-ensure-log-per-mutator-has-the-correct-path migrations-php-add-github-true-to-for-infection migrations-php-make-paths-compatible-with-infection-0-32 migrations-php-set-phpunit-ensure-config-file-exists migrations-php-set-phpunit-xsd-path-to-local migrations-php-set-phpunit-make-sure-we-see-all-the-warnings-deprecations-etc-etc-that-will-make-phpunit-do-a-non-happy-exit migrations-php-move-phpstan migrations-php-set-phpstan-ensure-config-file-exists migrations-php-set-phpstan-uncomment-parameters migrations-php-set-phpstan-add-parameters-if-it-isnt-present-in-the-config-file migrations-php-set-phpstan-paths-in-config migrations-php-set-phpstan-level-max-in-config migrations-php-set-phpstan-resolve-ergebnis-noExtends-classesAllowedToBeExtended migrations-php-set-phpstan-drop-checkGenericClassInNonGenericObjectType migrations-php-phpstan-add-prefix-for-anything-that-starts-with-vendor-in-a-list migrations-php-set-phpstan-drop-include-test-utilities-rules migrations-php-set-phpstan-drop-include-async-test-utilities-rules migrations-php-set-rector-create-config-if-not-exists migrations-php-composer-unused-create-config-if-not-exists migrations-php-composer-unused-drop-commented-out-line-scattered-across-my-repos migrations-php-move-phpcs migrations-php-move-phpcs-not-dist migrations-php-set-phpcs-ensure-config-file-exists migrations-php-phpcs-make-basepath-is-correct-relatively migrations-php-phpcs-make-cache-is-correct-relatively migrations-php-phpcs-make-sure-config-has-correct-relative-path-for-etc migrations-php-phpcs-make-sure-etc-has-no-trailing-slash migrations-php-phpcs-make-sure-config-has-correct-relative-path-for-src migrations-php-phpcs-make-sure-src-has-no-trailing-slash migrations-php-phpcs-make-sure-config-has-correct-relative-path-for-tests migrations-php-phpcs-make-sure-tests-has-no-trailing-slash migrations-php-phpcs-make-sure-etc-is-ran-through migrations-phpcs-include-examples-directory-when-present migrations-php-move-composer-require-checker migrations-php-composer-require-checker-create-config-if-not-exists migrations-inline-code-phpstan-remove-line-phpstan-ignore-next-line migrations-inline-code-phpstan-remove-rest-of-line-phpstan-ignore-line migrations-inline-code-psalm-remove-line-psalm-suppress migrations-inline-code-remove-line-internal migrations-supported-features-php-ensure-we-only-cs-check-and-fix-tests-if-unit-tests-is-enabled migrations-supported-features-php-ensure-we-only-staticly-analyse-tests-with-phpstan-if-unit-tests-is-enabled migrations-supported-features-php-ensure-no-phpunit-config-file-is-present-when-unit-tests-are-disabled migrations-supported-features-php-ensure-no-infectionphp-config-file-is-present-when-unit-tests-are-disabled migrations-php-make-sure-github-exists migrations-github-codeowners migrations-php-make-sure-github-workflows-exists migrations-github-actions-remove-composer-diff migrations-github-actions-remove-markdown-check-links migrations-github-actions-remove-markdown-craft-release migrations-github-actions-remove-set-milestone-on-pr migrations-github-actions-move-ci migrations-github-actions-remove-ci-if-its-old-style-php-ci-workflow migrations-github-actions-create-ci-if-not-exists migrations-github-actions-move-release-management migrations-github-actions-fix-management-in-release-management-referenced-workflow-file migrations-github-actions-create-release-management-if-not-exists migrations-renovate-remove-dependabot-config migrations-renovate-move-config migrations-renovate-create-config-if-not-exists migrations-renovate-point-at-correct-config migration-renovate-set-php-constraint migration-renovate-set-composer-constraint composer-validate syntax-php composer-normalize ## Count: 93
+
+composer-validate: ## Ensure we don't require any package we don't use in this package directly ##*IC*##
+ $(DOCKER_SHELL) composer validate
+
+syntax-php: ## Lint PHP syntax ##*ILH*##
+ $(DOCKER_RUN) vendor/bin/parallel-lint --exclude vendor .
+
+composer-normalize: #### Normalize composer.json ##*I*##
+ $(DOCKER_RUN) composer normalize
+ $(MAKE) update-lock
+
+rector-upgrade: ## Upgrade any automatically upgradable old code ##*I*##^code-style^##
+ $(DOCKER_RUN) vendor/bin/rector -c ./etc/qa/rector.php
+
+cs-fix: ## Fix any automatically fixable code style issues ##*I*##^code-style^##
+ $(DOCKER_RUN) vendor/bin/phpcbf --parallel=1 --cache=./var/.phpcs.cache.json --standard=./etc/qa/phpcs.xml || $(MAKE) cs
+
+cs-fix-debug: ## Fix any automatically fixable code style issues, but with debugging output ####^code-style^##
+ $(DOCKER_RUN) vendor/bin/phpcbf --parallel=1 --cache=./var/.phpcs.cache.json --standard=./etc/qa/phpcs.xml -vvvv
+
+cs: ## Check the code for code style issues ##*LCH*##^code-style^##
+ $(DOCKER_SHELL) vendor/bin/phpcs --parallel=1 --cache=./var/.phpcs.cache.json --standard=./etc/qa/phpcs.xml
+
+stan: ## Run static analysis (PHPStan) ##*LCH*##^static-analysis^##
+ $(DOCKER_SHELL) vendor/bin/phpstan analyse --ansi --configuration=./etc/qa/phpstan.neon
+
+unit-testing: ## Run tests ##*A*##^unit-tests^##
+ $(DOCKER_RUN_WITH_SOCKET) vendor/bin/phpunit --colors=always -c ./etc/qa/phpunit.xml $(shell $(DOCKER_SHELL) php -r 'if (function_exists("xdebug_get_code_coverage")) { echo " --coverage-text --coverage-html ./var/tests-unit-coverage-html --coverage-clover ./var/tests-unit-clover-coverage.xml"; }')
+
+unit-testing-raw: ## Run tests ##*D*##^unit-tests^##
+ php vendor/phpunit/phpunit/phpunit --colors=always -c ./etc/qa/phpunit.xml $(shell php -r 'if (function_exists("xdebug_get_code_coverage")) { echo " --coverage-text --coverage-html ./var/tests-unit-coverage-html --coverage-clover ./var/tests-unit-clover-coverage.xml"; }')
+
+unit-testing-filter: ## Run tests with specified filter ####^unit-tests^##
+ $(DOCKER_RUN_WITH_SOCKET) vendor/bin/phpunit --colors=always --filter=$(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS)) -c ./etc/qa/phpunit.xml $(shell $(DOCKER_SHELL) php -r 'if (function_exists("xdebug_get_code_coverage")) { echo " --coverage-text --coverage-html ./var/tests-unit-coverage-html --coverage-clover ./var/tests-unit-clover-coverage.xml"; }')
+
+mutation-testing: ## Run mutation testing ##*LCH*##^static-analysis|unit-tests^##
+ $(DOCKER_RUN_WITH_SOCKET) vendor/bin/infection --ansi --log-verbosity=all --ignore-msi-with-no-mutations --configuration=./etc/qa/infection.json5 --static-analysis-tool=phpstan --static-analysis-tool-options="--memory-limit=-1" --threads=$(THREADS)
+
+mutation-testing-raw: ## Run mutation testing ####^static-analysis|unit-tests^##
+ vendor/bin/infection --ansi --log-verbosity=all --ignore-msi-with-no-mutations --configuration=./etc/qa/infection.json5 --static-analysis-tool=phpstan --static-analysis-tool-options="--memory-limit=-1" --threads=$(THREADS)
+
+composer-require-checker: ## Ensure we require every package used in this package directly ##*C*##^composer-dependency-checkers^##
+ $(DOCKER_SHELL) vendor/bin/composer-require-checker --ignore-parse-errors --ansi -vvv --config-file=./etc/qa/composer-require-checker.json
+
+composer-unused: ## Ensure we don't require any package we don't use in this package directly ##*C*##^composer-dependency-checkers^##
+ $(DOCKER_SHELL) vendor/bin/composer-unused --ansi --configuration=./etc/qa/composer-unused.php
+
+backward-compatibility-check: ## Check code for backwards incompatible changes ##*C*##
+ $(MAKE) backward-compatibility-check-raw || true
+
+backward-compatibility-check-raw: ## Check code for backwards incompatible changes, doesn't ignore the failure ###
+ $(DOCKER_SHELL) vendor/bin/roave-backward-compatibility-check
+
+install: ### Install dependencies ####
+ $(DOCKER_SHELL) composer install
+
+composer-require: ### Require passed dependencies ####
+ $(DOCKER_INTERACTIVE_SHELL) composer require -W $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS))
+
+update: ### Update dependencies ####
+ $(DOCKER_SHELL) composer update -W
+
+update-lock: ### Update lockfile ####
+ $(DOCKER_RUN) COMPOSER_DISABLE_NETWORK=1 composer update --lock --no-scripts || $(DOCKER_RUN) composer update --lock --no-scripts
+
+outdated: ### Show outdated dependencies ####
+ $(DOCKER_SHELL) composer outdated
+
+composer-show: ### Show dependencies ####
+ $(DOCKER_SHELL) composer show
+
+shell: ## Provides Shell access in the expected environment ####
+ $(DOCKER_INTERACTIVE_SHELL) bash
+
+help: ## Show this help ####
@printf "\033[33mUsage:\033[0m\n make [target]\n\n\033[33mTargets:\033[0m\n"
- @grep -E '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[32m%-32s\033[0m %s\n", $$1, $$2}' | tr -d '#'
+ @grep -E '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) | grep -v "##U##" | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[32m%-32s\033[0m %s\n", $$1, $$2}' | tr -d '#'
+
+task-list-ci-all: ## CI: Generate a JSON array of jobs to run on all variations
+ @echo "[\"composer-validate\",\"syntax-php\",\"backward-compatibility-check\"]" ## Count: 3
+
+task-list-ci-dos: ## CI: Generate a JSON array of jobs to run Directly on the OS variations
+ @echo "[]" ## Count: 0
+
+task-list-ci-low: ## CI: Generate a JSON array of jobs to run against the lowest dependencies on the primary threading target
+ @echo "[\"syntax-php\"]" ## Count: 1
+
+task-list-ci-locked: ## CI: Generate a JSON array of jobs to run against the locked dependencies on the primary threading target
+ @echo "[\"composer-validate\",\"backward-compatibility-check\"]" ## Count: 2
+
+task-list-ci-high: ## CI: Generate a JSON array of jobs to run against the highest dependencies on the primary threading target
+ @echo "[\"syntax-php\"]" ## Count: 1
+
+supported-features: ## CI: List the features this package supports
+ @echo "[\"linux\",\"macos\",\"windows\",\"zts\"]" ## Count: 4
+
diff --git a/composer.json b/composer.json
index 0a139ad..09e7294 100644
--- a/composer.json
+++ b/composer.json
@@ -1,49 +1,60 @@
{
- "name": "react-parallel/stubs",
- "description": "\ud83e\udecf Stubs (for PHPstan)",
- "license": "MIT",
- "type": "phpstan-extension",
- "authors": [
- {
- "name": "Cees-Jan Kiewiet",
- "email": "ceesjank@gmail.com",
- "homepage": "http://wyrihaximus.net/"
- }
- ],
- "require": {
- "php": "^8.4",
- "ext-parallel": "*"
- },
- "require-dev": {
- "wyrihaximus/async-test-utilities": "^10.0.0"
+ "name": "react-parallel/stubs",
+ "description": "\ud83e\udecf Stubs (for PHPstan)",
+ "license": "MIT",
+ "type": "phpstan-extension",
+ "authors": [
+ {
+ "name": "Cees-Jan Kiewiet",
+ "email": "ceesjank@gmail.com",
+ "homepage": "http://wyrihaximus.net/"
+ }
+ ],
+ "require": {
+ "php": "^8.4",
+ "ext-parallel": "*"
+ },
+ "require-dev": {
+ "wyrihaximus/async-test-utilities": "^13.1.0",
+ "wyrihaximus/makefiles": "^0.11.0"
+ },
+ "config": {
+ "allow-plugins": {
+ "dealerdirect/phpcodesniffer-composer-installer": true,
+ "ergebnis/composer-normalize": true,
+ "icanhazstring/composer-unused": true,
+ "infection/extension-installer": true,
+ "phpstan/extension-installer": true,
+ "wyrihaximus/makefiles": true,
+ "wyrihaximus/test-utilities": true
},
- "config": {
- "allow-plugins": {
- "dealerdirect/phpcodesniffer-composer-installer": true,
- "ergebnis/composer-normalize": true,
- "icanhazstring/composer-unused": true,
- "infection/extension-installer": true,
- "phpstan/extension-installer": true,
- "wyrihaximus/test-utilities": true
- },
- "platform": {
- "php": "8.4.13"
- },
- "sort-packages": true
+ "platform": {
+ "php": "8.4.13"
},
- "extra": {
- "phpstan": {
- "includes": [
- "extension.neon"
- ]
- }
+ "sort-packages": true
+ },
+ "extra": {
+ "phpstan": {
+ "includes": [
+ "extension.neon"
+ ]
},
- "scripts": {
- "post-install-cmd": [
- "composer normalize"
- ],
- "post-update-cmd": [
- "composer normalize"
- ]
+ "wyrihaximus": {
+ "supported-features": {
+ "code-style": false,
+ "composer-dependency-checkers": false,
+ "static-analysis": false,
+ "unit-tests": false,
+ "zts": true
+ }
}
+ },
+ "scripts": {
+ "post-install-cmd": [
+ "make on-install-or-update || true"
+ ],
+ "post-update-cmd": [
+ "make on-install-or-update || true"
+ ]
+ }
}
diff --git a/composer.lock b/composer.lock
index f06fde2..5efabf7 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,21 +4,21 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "e0d8cd573ca1f2b2701af1bd9eb7c099",
+ "content-hash": "32189a77dc5d2d2f60b7b604acb911f7",
"packages": [],
"packages-dev": [
{
"name": "azjezz/psl",
- "version": "3.3.0",
+ "version": "4.3.0",
"source": {
"type": "git",
- "url": "https://github.com/azjezz/psl.git",
- "reference": "78078f2c505473d2a28319ffe426b2a82ac76790"
+ "url": "https://github.com/php-standard-library/php-standard-library.git",
+ "reference": "74c95be0214eb7ea39146ed00ac4eb71b45d787b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/azjezz/psl/zipball/78078f2c505473d2a28319ffe426b2a82ac76790",
- "reference": "78078f2c505473d2a28319ffe426b2a82ac76790",
+ "url": "https://api.github.com/repos/php-standard-library/php-standard-library/zipball/74c95be0214eb7ea39146ed00ac4eb71b45d787b",
+ "reference": "74c95be0214eb7ea39146ed00ac4eb71b45d787b",
"shasum": ""
},
"require": {
@@ -27,17 +27,15 @@
"ext-json": "*",
"ext-mbstring": "*",
"ext-sodium": "*",
- "php": "~8.2.0 || ~8.3.0 || ~8.4.0",
- "revolt/event-loop": "^1.0.6"
+ "php": "~8.3.0 || ~8.4.0 || ~8.5.0",
+ "revolt/event-loop": "^1.0.7"
},
"require-dev": {
- "carthage-software/mago": "~0.13.1",
+ "carthage-software/mago": "^1.6.0",
+ "infection/infection": "^0.31.2",
"php-coveralls/php-coveralls": "^2.7.0",
- "php-standard-library/psalm-plugin": "^2.3.0",
- "phpbench/phpbench": "^1.2.15",
- "phpunit/phpunit": "^9.6.18",
- "roave/infection-static-analysis-plugin": "^1.36.0",
- "vimeo/psalm": "^6.0.0"
+ "phpbench/phpbench": "^1.4.0",
+ "phpunit/phpunit": "^9.6.22"
},
"suggest": {
"php-standard-library/phpstan-extension": "PHPStan integration",
@@ -70,29 +68,34 @@
],
"description": "PHP Standard Library",
"support": {
- "issues": "https://github.com/azjezz/psl/issues",
- "source": "https://github.com/azjezz/psl/tree/3.3.0"
+ "issues": "https://github.com/php-standard-library/php-standard-library/issues",
+ "source": "https://github.com/php-standard-library/php-standard-library/tree/4.3.0"
},
"funding": [
{
"url": "https://github.com/azjezz",
"type": "github"
+ },
+ {
+ "url": "https://github.com/veewee",
+ "type": "github"
}
],
- "time": "2025-03-03T00:07:00+00:00"
+ "abandoned": "php-standard-library/php-standard-library",
+ "time": "2026-02-24T01:58:53+00:00"
},
{
"name": "beberlei/assert",
- "version": "v3.3.3",
+ "version": "v3.3.4",
"source": {
"type": "git",
"url": "https://github.com/beberlei/assert.git",
- "reference": "b5fd8eacd8915a1b627b8bfc027803f1939734dd"
+ "reference": "f193f4613c7d7fbcee2c05e4daff4061d49c040e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/beberlei/assert/zipball/b5fd8eacd8915a1b627b8bfc027803f1939734dd",
- "reference": "b5fd8eacd8915a1b627b8bfc027803f1939734dd",
+ "url": "https://api.github.com/repos/beberlei/assert/zipball/f193f4613c7d7fbcee2c05e4daff4061d49c040e",
+ "reference": "f193f4613c7d7fbcee2c05e4daff4061d49c040e",
"shasum": ""
},
"require": {
@@ -144,9 +147,9 @@
],
"support": {
"issues": "https://github.com/beberlei/assert/issues",
- "source": "https://github.com/beberlei/assert/tree/v3.3.3"
+ "source": "https://github.com/beberlei/assert/tree/v3.3.4"
},
- "time": "2024-07-15T13:18:35+00:00"
+ "time": "2026-06-10T19:47:05+00:00"
},
{
"name": "colinodell/json5",
@@ -284,16 +287,16 @@
},
{
"name": "composer-unused/symbol-parser",
- "version": "0.3.1",
+ "version": "0.3.3",
"source": {
"type": "git",
"url": "https://github.com/composer-unused/symbol-parser.git",
- "reference": "a55ecd3c10867be27a2eabf31cd1600160d250ae"
+ "reference": "afa62007cca768bd1ecbc0e8ed347c675c239410"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer-unused/symbol-parser/zipball/a55ecd3c10867be27a2eabf31cd1600160d250ae",
- "reference": "a55ecd3c10867be27a2eabf31cd1600160d250ae",
+ "url": "https://api.github.com/repos/composer-unused/symbol-parser/zipball/afa62007cca768bd1ecbc0e8ed347c675c239410",
+ "reference": "afa62007cca768bd1ecbc0e8ed347c675c239410",
"shasum": ""
},
"require": {
@@ -303,16 +306,17 @@
"phpstan/phpdoc-parser": "^1.25 || ^2",
"psr/container": "^1.0 || ^2.0",
"psr/log": "^1.1 || ^2 || ^3",
- "symfony/finder": "^5.3 || ^6.0 || ^7.0"
+ "symfony/finder": "^5.3 || ^6.0 || ^7.0 || ^8.0"
},
"require-dev": {
- "ergebnis/composer-normalize": "^2.45",
+ "ergebnis/composer-normalize": "^2.49",
"ext-ds": "*",
"phpstan/phpstan": "^2.1",
- "phpunit/phpunit": "^9.6.10 || ^10.5",
+ "phpunit/phpunit": "^10.5",
"roave/security-advisories": "dev-master",
- "squizlabs/php_codesniffer": "^3.11.3",
- "symfony/serializer": "^5.4"
+ "squizlabs/php_codesniffer": "^4.0.1",
+ "symfony/property-access": "^5.4 || ^6.0 || ^7.0 || ^8.0",
+ "symfony/serializer": "^5.4 || ^6.0 || ^7.0 || ^8.0"
},
"type": "library",
"autoload": {
@@ -351,20 +355,20 @@
"type": "other"
}
],
- "time": "2025-03-19T09:13:50+00:00"
+ "time": "2026-01-29T13:38:57+00:00"
},
{
"name": "composer/ca-bundle",
- "version": "1.5.8",
+ "version": "1.5.12",
"source": {
"type": "git",
"url": "https://github.com/composer/ca-bundle.git",
- "reference": "719026bb30813accb68271fee7e39552a58e9f65"
+ "reference": "00a2f4201641d5c53f7fc0195e6c8d9fcc321a78"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/ca-bundle/zipball/719026bb30813accb68271fee7e39552a58e9f65",
- "reference": "719026bb30813accb68271fee7e39552a58e9f65",
+ "url": "https://api.github.com/repos/composer/ca-bundle/zipball/00a2f4201641d5c53f7fc0195e6c8d9fcc321a78",
+ "reference": "00a2f4201641d5c53f7fc0195e6c8d9fcc321a78",
"shasum": ""
},
"require": {
@@ -411,7 +415,7 @@
"support": {
"irc": "irc://irc.freenode.org/composer",
"issues": "https://github.com/composer/ca-bundle/issues",
- "source": "https://github.com/composer/ca-bundle/tree/1.5.8"
+ "source": "https://github.com/composer/ca-bundle/tree/1.5.12"
},
"funding": [
{
@@ -423,26 +427,26 @@
"type": "github"
}
],
- "time": "2025-08-20T18:49:47+00:00"
+ "time": "2026-05-19T11:26:22+00:00"
},
{
"name": "composer/class-map-generator",
- "version": "1.6.2",
+ "version": "1.7.3",
"source": {
"type": "git",
"url": "https://github.com/composer/class-map-generator.git",
- "reference": "ba9f089655d4cdd64e762a6044f411ccdaec0076"
+ "reference": "86d8208fc3c649a3a999daf1a63c25201be2990f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/class-map-generator/zipball/ba9f089655d4cdd64e762a6044f411ccdaec0076",
- "reference": "ba9f089655d4cdd64e762a6044f411ccdaec0076",
+ "url": "https://api.github.com/repos/composer/class-map-generator/zipball/86d8208fc3c649a3a999daf1a63c25201be2990f",
+ "reference": "86d8208fc3c649a3a999daf1a63c25201be2990f",
"shasum": ""
},
"require": {
"composer/pcre": "^2.1 || ^3.1",
"php": "^7.2 || ^8.0",
- "symfony/finder": "^4.4 || ^5.3 || ^6 || ^7"
+ "symfony/finder": "^4.4 || ^5.3 || ^6 || ^7 || ^8"
},
"require-dev": {
"phpstan/phpstan": "^1.12 || ^2",
@@ -450,7 +454,7 @@
"phpstan/phpstan-phpunit": "^1 || ^2",
"phpstan/phpstan-strict-rules": "^1.1 || ^2",
"phpunit/phpunit": "^8",
- "symfony/filesystem": "^5.4 || ^6"
+ "symfony/filesystem": "^5.4 || ^6 || ^7 || ^8"
},
"type": "library",
"extra": {
@@ -480,7 +484,7 @@
],
"support": {
"issues": "https://github.com/composer/class-map-generator/issues",
- "source": "https://github.com/composer/class-map-generator/tree/1.6.2"
+ "source": "https://github.com/composer/class-map-generator/tree/1.7.3"
},
"funding": [
{
@@ -492,44 +496,46 @@
"type": "github"
}
],
- "time": "2025-08-20T18:52:43+00:00"
+ "time": "2026-05-05T09:17:07+00:00"
},
{
"name": "composer/composer",
- "version": "2.8.11",
+ "version": "2.10.1",
"source": {
"type": "git",
"url": "https://github.com/composer/composer.git",
- "reference": "00e1a3396eea67033775c4a49c772376f45acd73"
+ "reference": "4120703b9bda8795075047b40361d7ec4d2abe49"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/composer/zipball/00e1a3396eea67033775c4a49c772376f45acd73",
- "reference": "00e1a3396eea67033775c4a49c772376f45acd73",
+ "url": "https://api.github.com/repos/composer/composer/zipball/4120703b9bda8795075047b40361d7ec4d2abe49",
+ "reference": "4120703b9bda8795075047b40361d7ec4d2abe49",
"shasum": ""
},
"require": {
"composer/ca-bundle": "^1.5",
"composer/class-map-generator": "^1.4.0",
"composer/metadata-minifier": "^1.0",
- "composer/pcre": "^2.2 || ^3.2",
+ "composer/pcre": "^2.3 || ^3.3",
"composer/semver": "^3.3",
"composer/spdx-licenses": "^1.5.7",
"composer/xdebug-handler": "^2.0.2 || ^3.0.3",
- "justinrainbow/json-schema": "^6.3.1",
+ "ext-json": "*",
+ "justinrainbow/json-schema": "^6.5.1",
"php": "^7.2.5 || ^8.0",
"psr/log": "^1.0 || ^2.0 || ^3.0",
- "react/promise": "^2.11 || ^3.3",
+ "react/promise": "^3.3",
"seld/jsonlint": "^1.4",
"seld/phar-utils": "^1.2",
"seld/signal-handler": "^2.0",
- "symfony/console": "^5.4.35 || ^6.3.12 || ^7.0.3",
- "symfony/filesystem": "^5.4.35 || ^6.3.12 || ^7.0.3",
- "symfony/finder": "^5.4.35 || ^6.3.12 || ^7.0.3",
+ "symfony/console": "^5.4.47 || ^6.4.25 || ^7.1.10 || ^8.0",
+ "symfony/filesystem": "^5.4.45 || ^6.4.24 || ^7.1.10 || ^8.0",
+ "symfony/finder": "^5.4.45 || ^6.4.24 || ^7.1.10 || ^8.0",
"symfony/polyfill-php73": "^1.24",
"symfony/polyfill-php80": "^1.24",
"symfony/polyfill-php81": "^1.24",
- "symfony/process": "^5.4.35 || ^6.3.12 || ^7.0.3"
+ "symfony/polyfill-php84": "^1.30",
+ "symfony/process": "^5.4.47 || ^6.4.25 || ^7.1.10 || ^8.0"
},
"require-dev": {
"phpstan/phpstan": "^1.11.8",
@@ -537,12 +543,13 @@
"phpstan/phpstan-phpunit": "^1.4.0",
"phpstan/phpstan-strict-rules": "^1.6.0",
"phpstan/phpstan-symfony": "^1.4.0",
- "symfony/phpunit-bridge": "^6.4.3 || ^7.0.1"
+ "symfony/phpunit-bridge": "^6.4.25 || ^7.3.3 || ^8.0"
},
"suggest": {
- "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages",
- "ext-zip": "Enabling the zip extension allows you to unzip archives",
- "ext-zlib": "Allow gzip compression of HTTP requests"
+ "ext-curl": "Provides HTTP support (will fallback to PHP streams if missing)",
+ "ext-openssl": "Enables access to repositories and packages over HTTPS",
+ "ext-zip": "Allows direct extraction of ZIP archives (unzip/7z binaries will be used instead if available)",
+ "ext-zlib": "Enables gzip for HTTP requests"
},
"bin": [
"bin/composer"
@@ -555,7 +562,7 @@
]
},
"branch-alias": {
- "dev-main": "2.8-dev"
+ "dev-main": "2.10-dev"
}
},
"autoload": {
@@ -590,7 +597,7 @@
"irc": "ircs://irc.libera.chat:6697/composer",
"issues": "https://github.com/composer/composer/issues",
"security": "https://github.com/composer/composer/security/policy",
- "source": "https://github.com/composer/composer/tree/2.8.11"
+ "source": "https://github.com/composer/composer/tree/2.10.1"
},
"funding": [
{
@@ -602,7 +609,7 @@
"type": "github"
}
],
- "time": "2025-08-21T09:29:39+00:00"
+ "time": "2026-06-04T08:25:59+00:00"
},
{
"name": "composer/metadata-minifier",
@@ -675,28 +682,29 @@
},
{
"name": "composer/pcre",
- "version": "3.3.2",
+ "version": "3.4.0",
"source": {
"type": "git",
"url": "https://github.com/composer/pcre.git",
- "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e"
+ "reference": "d5a341b3fb61f3001970940afb1d332968a183ed"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e",
- "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e",
+ "url": "https://api.github.com/repos/composer/pcre/zipball/d5a341b3fb61f3001970940afb1d332968a183ed",
+ "reference": "d5a341b3fb61f3001970940afb1d332968a183ed",
"shasum": ""
},
"require": {
"php": "^7.4 || ^8.0"
},
"conflict": {
- "phpstan/phpstan": "<1.11.10"
+ "phpstan/phpstan": "<2.2.2"
},
"require-dev": {
- "phpstan/phpstan": "^1.12 || ^2",
- "phpstan/phpstan-strict-rules": "^1 || ^2",
- "phpunit/phpunit": "^8 || ^9"
+ "phpstan/phpstan": "^2",
+ "phpstan/phpstan-deprecation-rules": "^2",
+ "phpstan/phpstan-strict-rules": "^2",
+ "phpunit/phpunit": "^9"
},
"type": "library",
"extra": {
@@ -734,7 +742,7 @@
],
"support": {
"issues": "https://github.com/composer/pcre/issues",
- "source": "https://github.com/composer/pcre/tree/3.3.2"
+ "source": "https://github.com/composer/pcre/tree/3.4.0"
},
"funding": [
{
@@ -744,13 +752,9 @@
{
"url": "https://github.com/composer",
"type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
- "type": "tidelift"
}
],
- "time": "2024-11-12T16:29:46+00:00"
+ "time": "2026-06-07T11:47:49+00:00"
},
{
"name": "composer/semver",
@@ -831,24 +835,24 @@
},
{
"name": "composer/spdx-licenses",
- "version": "1.5.9",
+ "version": "1.6.0",
"source": {
"type": "git",
"url": "https://github.com/composer/spdx-licenses.git",
- "reference": "edf364cefe8c43501e21e88110aac10b284c3c9f"
+ "reference": "5ecd0cb4177696f9fd48f1605dda81db3dee7889"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/edf364cefe8c43501e21e88110aac10b284c3c9f",
- "reference": "edf364cefe8c43501e21e88110aac10b284c3c9f",
+ "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/5ecd0cb4177696f9fd48f1605dda81db3dee7889",
+ "reference": "5ecd0cb4177696f9fd48f1605dda81db3dee7889",
"shasum": ""
},
"require": {
- "php": "^5.3.2 || ^7.0 || ^8.0"
+ "php": "^7.2 || ^8.0"
},
"require-dev": {
"phpstan/phpstan": "^1.11",
- "symfony/phpunit-bridge": "^3 || ^7"
+ "symfony/phpunit-bridge": "^6.4.25 || ^7.3.3 || ^8.0"
},
"type": "library",
"extra": {
@@ -891,7 +895,7 @@
"support": {
"irc": "ircs://irc.libera.chat:6697/composer",
"issues": "https://github.com/composer/spdx-licenses/issues",
- "source": "https://github.com/composer/spdx-licenses/tree/1.5.9"
+ "source": "https://github.com/composer/spdx-licenses/tree/1.6.0"
},
"funding": [
{
@@ -901,13 +905,9 @@
{
"url": "https://github.com/composer",
"type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
- "type": "tidelift"
}
],
- "time": "2025-05-12T21:07:07+00:00"
+ "time": "2026-04-08T20:18:39+00:00"
},
{
"name": "composer/xdebug-handler",
@@ -977,29 +977,29 @@
},
{
"name": "dealerdirect/phpcodesniffer-composer-installer",
- "version": "v1.1.2",
+ "version": "v1.2.1",
"source": {
"type": "git",
"url": "https://github.com/PHPCSStandards/composer-installer.git",
- "reference": "e9cf5e4bbf7eeaf9ef5db34938942602838fc2b1"
+ "reference": "963f0c67bffde0eac41b56be71ac0e8ba132f0bd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/e9cf5e4bbf7eeaf9ef5db34938942602838fc2b1",
- "reference": "e9cf5e4bbf7eeaf9ef5db34938942602838fc2b1",
+ "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/963f0c67bffde0eac41b56be71ac0e8ba132f0bd",
+ "reference": "963f0c67bffde0eac41b56be71ac0e8ba132f0bd",
"shasum": ""
},
"require": {
"composer-plugin-api": "^2.2",
"php": ">=5.4",
- "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0"
+ "squizlabs/php_codesniffer": "^3.1.0 || ^4.0"
},
"require-dev": {
"composer/composer": "^2.2",
"ext-json": "*",
"ext-zip": "*",
"php-parallel-lint/php-parallel-lint": "^1.4.0",
- "phpcompatibility/php-compatibility": "^9.0",
+ "phpcompatibility/php-compatibility": "^9.0 || ^10.0.0@dev",
"yoast/phpunit-polyfills": "^1.0"
},
"type": "composer-plugin",
@@ -1069,27 +1069,27 @@
"type": "thanks_dev"
}
],
- "time": "2025-07-17T20:45:56+00:00"
+ "time": "2026-05-06T08:26:05+00:00"
},
{
"name": "doctrine/coding-standard",
- "version": "13.0.1",
+ "version": "14.0.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/coding-standard.git",
- "reference": "0affd62169186f32de725ca612e6129e81186a21"
+ "reference": "897a7dc209e49ee6cf04e689c41112df17967130"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/coding-standard/zipball/0affd62169186f32de725ca612e6129e81186a21",
- "reference": "0affd62169186f32de725ca612e6129e81186a21",
+ "url": "https://api.github.com/repos/doctrine/coding-standard/zipball/897a7dc209e49ee6cf04e689c41112df17967130",
+ "reference": "897a7dc209e49ee6cf04e689c41112df17967130",
"shasum": ""
},
"require": {
"dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7 || ^1.0.0",
"php": "^7.4 || ^8.0",
- "slevomat/coding-standard": "^8.16",
- "squizlabs/php_codesniffer": "^3.7"
+ "slevomat/coding-standard": "^8.23",
+ "squizlabs/php_codesniffer": "^4"
},
"type": "phpcodesniffer-standard",
"notification-url": "https://packagist.org/downloads/",
@@ -1123,22 +1123,22 @@
],
"support": {
"issues": "https://github.com/doctrine/coding-standard/issues",
- "source": "https://github.com/doctrine/coding-standard/tree/13.0.1"
+ "source": "https://github.com/doctrine/coding-standard/tree/14.0.0"
},
- "time": "2025-05-14T10:54:19+00:00"
+ "time": "2025-09-21T18:21:47+00:00"
},
{
"name": "ergebnis/composer-normalize",
- "version": "2.48.2",
+ "version": "2.52.0",
"source": {
"type": "git",
"url": "https://github.com/ergebnis/composer-normalize.git",
- "reference": "86dc9731b8320f49e9be9ad6d8e4de9b8b0e9b8b"
+ "reference": "988f83f5e51a42cdd2337e5fcd935432f8dfa33c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ergebnis/composer-normalize/zipball/86dc9731b8320f49e9be9ad6d8e4de9b8b0e9b8b",
- "reference": "86dc9731b8320f49e9be9ad6d8e4de9b8b0e9b8b",
+ "url": "https://api.github.com/repos/ergebnis/composer-normalize/zipball/988f83f5e51a42cdd2337e5fcd935432f8dfa33c",
+ "reference": "988f83f5e51a42cdd2337e5fcd935432f8dfa33c",
"shasum": ""
},
"require": {
@@ -1152,27 +1152,27 @@
"php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0"
},
"require-dev": {
- "composer/composer": "^2.8.3",
+ "composer/composer": "^2.9.8",
"ergebnis/license": "^2.7.0",
- "ergebnis/php-cs-fixer-config": "^6.53.0",
- "ergebnis/phpstan-rules": "^2.11.0",
- "ergebnis/phpunit-slow-test-detector": "^2.20.0",
+ "ergebnis/php-cs-fixer-config": "^6.62.1",
+ "ergebnis/phpstan-rules": "^2.13.1",
+ "ergebnis/phpunit-slow-test-detector": "^2.24.0",
+ "ergebnis/rector-rules": "^1.18.1",
"fakerphp/faker": "^1.24.1",
- "infection/infection": "~0.26.6",
"phpstan/extension-installer": "^1.4.3",
- "phpstan/phpstan": "^2.1.17",
- "phpstan/phpstan-deprecation-rules": "^2.0.3",
- "phpstan/phpstan-phpunit": "^2.0.7",
- "phpstan/phpstan-strict-rules": "^2.0.6",
- "phpunit/phpunit": "^9.6.20",
- "rector/rector": "^2.1.4",
+ "phpstan/phpstan": "^2.1.54",
+ "phpstan/phpstan-deprecation-rules": "^2.0.4",
+ "phpstan/phpstan-phpunit": "^2.0.16",
+ "phpstan/phpstan-strict-rules": "^2.0.11",
+ "phpunit/phpunit": "^9.6.33",
+ "rector/rector": "^2.4.3",
"symfony/filesystem": "^5.4.41"
},
"type": "composer-plugin",
"extra": {
"class": "Ergebnis\\Composer\\Normalize\\NormalizePlugin",
"branch-alias": {
- "dev-main": "2.49-dev"
+ "dev-main": "2.52-dev"
},
"plugin-optional": true,
"composer-normalize": {
@@ -1209,7 +1209,7 @@
"security": "https://github.com/ergebnis/composer-normalize/blob/main/.github/SECURITY.md",
"source": "https://github.com/ergebnis/composer-normalize"
},
- "time": "2025-09-06T11:42:34+00:00"
+ "time": "2026-05-15T15:39:24+00:00"
},
{
"name": "ergebnis/json",
@@ -1368,36 +1368,38 @@
},
{
"name": "ergebnis/json-pointer",
- "version": "3.7.1",
+ "version": "3.8.0",
"source": {
"type": "git",
"url": "https://github.com/ergebnis/json-pointer.git",
- "reference": "43bef355184e9542635e35dd2705910a3df4c236"
+ "reference": "b58c3c468a7ff109fdf9a255f17de29ecbe5276c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ergebnis/json-pointer/zipball/43bef355184e9542635e35dd2705910a3df4c236",
- "reference": "43bef355184e9542635e35dd2705910a3df4c236",
+ "url": "https://api.github.com/repos/ergebnis/json-pointer/zipball/b58c3c468a7ff109fdf9a255f17de29ecbe5276c",
+ "reference": "b58c3c468a7ff109fdf9a255f17de29ecbe5276c",
"shasum": ""
},
"require": {
"php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0"
},
"require-dev": {
- "ergebnis/composer-normalize": "^2.43.0",
- "ergebnis/data-provider": "^3.2.0",
- "ergebnis/license": "^2.4.0",
- "ergebnis/php-cs-fixer-config": "^6.32.0",
- "ergebnis/phpunit-slow-test-detector": "^2.15.0",
- "fakerphp/faker": "^1.23.1",
+ "ergebnis/composer-normalize": "^2.50.0",
+ "ergebnis/data-provider": "^3.6.0",
+ "ergebnis/license": "^2.7.0",
+ "ergebnis/php-cs-fixer-config": "^6.60.2",
+ "ergebnis/phpstan-rules": "^2.13.1",
+ "ergebnis/phpunit-slow-test-detector": "^2.24.0",
+ "ergebnis/rector-rules": "^1.16.0",
+ "fakerphp/faker": "^1.24.1",
"infection/infection": "~0.26.6",
"phpstan/extension-installer": "^1.4.3",
- "phpstan/phpstan": "^1.12.10",
- "phpstan/phpstan-deprecation-rules": "^1.2.1",
- "phpstan/phpstan-phpunit": "^1.4.0",
- "phpstan/phpstan-strict-rules": "^1.6.1",
- "phpunit/phpunit": "^9.6.19",
- "rector/rector": "^1.2.10"
+ "phpstan/phpstan": "^2.1.46",
+ "phpstan/phpstan-deprecation-rules": "^2.0.4",
+ "phpstan/phpstan-phpunit": "^2.0.16",
+ "phpstan/phpstan-strict-rules": "^2.0.10",
+ "phpunit/phpunit": "^9.6.34",
+ "rector/rector": "^2.4.0"
},
"type": "library",
"extra": {
@@ -1437,7 +1439,7 @@
"security": "https://github.com/ergebnis/json-pointer/blob/main/.github/SECURITY.md",
"source": "https://github.com/ergebnis/json-pointer"
},
- "time": "2025-09-06T09:28:19+00:00"
+ "time": "2026-04-07T14:52:13+00:00"
},
{
"name": "ergebnis/json-printer",
@@ -1593,35 +1595,35 @@
},
{
"name": "ergebnis/phpstan-rules",
- "version": "2.12.0",
+ "version": "2.13.1",
"source": {
"type": "git",
"url": "https://github.com/ergebnis/phpstan-rules.git",
- "reference": "c4e0121a937b3b551f800a86e7d78794da2783ea"
+ "reference": "f69db86b98595c34fc1f61c89fe3b380141aa519"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ergebnis/phpstan-rules/zipball/c4e0121a937b3b551f800a86e7d78794da2783ea",
- "reference": "c4e0121a937b3b551f800a86e7d78794da2783ea",
+ "url": "https://api.github.com/repos/ergebnis/phpstan-rules/zipball/f69db86b98595c34fc1f61c89fe3b380141aa519",
+ "reference": "f69db86b98595c34fc1f61c89fe3b380141aa519",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
"php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0",
- "phpstan/phpstan": "^2.1.8"
+ "phpstan/phpstan": "^2.1.35"
},
"require-dev": {
"codeception/codeception": "^4.0.0 || ^5.0.0",
"doctrine/orm": "^2.20.0 || ^3.3.0",
- "ergebnis/composer-normalize": "^2.47.0",
- "ergebnis/license": "^2.6.0",
- "ergebnis/php-cs-fixer-config": "^6.54.0",
+ "ergebnis/composer-normalize": "^2.49.0",
+ "ergebnis/license": "^2.7.0",
+ "ergebnis/php-cs-fixer-config": "^6.59.0",
"ergebnis/phpunit-slow-test-detector": "^2.20.0",
"fakerphp/faker": "^1.24.1",
"phpstan/extension-installer": "^1.4.3",
"phpstan/phpstan-deprecation-rules": "^2.0.3",
- "phpstan/phpstan-phpunit": "^2.0.7",
- "phpstan/phpstan-strict-rules": "^2.0.6",
+ "phpstan/phpstan-phpunit": "^2.0.12",
+ "phpstan/phpstan-strict-rules": "^2.0.8",
"phpunit/phpunit": "^9.6.21",
"psr/container": "^2.0.2",
"symfony/finder": "^5.4.45",
@@ -1662,30 +1664,30 @@
"security": "https://github.com/ergebnis/phpstan-rules/blob/main/.github/SECURITY.md",
"source": "https://github.com/ergebnis/phpstan-rules"
},
- "time": "2025-09-07T13:31:33+00:00"
+ "time": "2026-01-27T17:13:06+00:00"
},
{
"name": "ergebnis/phpunit-slow-test-detector",
- "version": "2.20.0",
+ "version": "2.24.0",
"source": {
"type": "git",
"url": "https://github.com/ergebnis/phpunit-slow-test-detector.git",
- "reference": "36225d36071cb0e7aae3e05a8baa82ace28e1094"
+ "reference": "e713c1397b09e07892657cdf909731d29481ff4c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ergebnis/phpunit-slow-test-detector/zipball/36225d36071cb0e7aae3e05a8baa82ace28e1094",
- "reference": "36225d36071cb0e7aae3e05a8baa82ace28e1094",
+ "url": "https://api.github.com/repos/ergebnis/phpunit-slow-test-detector/zipball/e713c1397b09e07892657cdf909731d29481ff4c",
+ "reference": "e713c1397b09e07892657cdf909731d29481ff4c",
"shasum": ""
},
"require": {
"php": "~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0",
- "phpunit/phpunit": "^6.5.0 || ^7.5.0 || ^8.5.19 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0"
+ "phpunit/phpunit": "^6.5.0 || ^7.5.0 || ^8.5.19 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0"
},
"require-dev": {
- "ergebnis/composer-normalize": "^2.47.0",
- "ergebnis/license": "^2.6.0",
- "ergebnis/php-cs-fixer-config": "^6.52.0",
+ "ergebnis/composer-normalize": "^2.50.0",
+ "ergebnis/license": "^2.7.0",
+ "ergebnis/php-cs-fixer-config": "^6.60.1",
"fakerphp/faker": "~1.20.0",
"phpstan/extension-installer": "^1.4.3",
"phpstan/phpstan": "^1.12.11",
@@ -1735,7 +1737,7 @@
"security": "https://github.com/ergebnis/phpunit-slow-test-detector/blob/main/.github/SECURITY.md",
"source": "https://github.com/ergebnis/phpunit-slow-test-detector"
},
- "time": "2025-08-19T07:48:39+00:00"
+ "time": "2026-03-13T10:52:55+00:00"
},
{
"name": "fidry/cpu-core-counter",
@@ -1851,16 +1853,16 @@
},
{
"name": "icanhazstring/composer-unused",
- "version": "0.9.4",
+ "version": "0.9.6",
"source": {
"type": "git",
"url": "https://github.com/composer-unused/composer-unused.git",
- "reference": "28070aae000ad09b1b4952f2d446c5efb96ab71c"
+ "reference": "c60030af7954a528746dd2180c10b5e0871e84c7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer-unused/composer-unused/zipball/28070aae000ad09b1b4952f2d446c5efb96ab71c",
- "reference": "28070aae000ad09b1b4952f2d446c5efb96ab71c",
+ "url": "https://api.github.com/repos/composer-unused/composer-unused/zipball/c60030af7954a528746dd2180c10b5e0871e84c7",
+ "reference": "c60030af7954a528746dd2180c10b5e0871e84c7",
"shasum": ""
},
"require": {
@@ -1875,19 +1877,19 @@
"phpstan/phpdoc-parser": "^1.25 || ^2",
"psr/container": "^1.0 || ^2.0",
"psr/log": "^1.1 || ^2 || ^3",
- "symfony/config": "^6.0 || ^7.0",
- "symfony/console": "^6.0 || ^7.0",
- "symfony/dependency-injection": "^6.0 || ^7.0",
- "symfony/property-access": "^6.0 || ^7.0",
- "symfony/serializer": "^6.0 || ^7.0",
- "webmozart/assert": "^1.10",
+ "symfony/config": "^6.0 || ^7.0 || ^8.0",
+ "symfony/console": "^6.0 || ^7.0 || ^8.0",
+ "symfony/dependency-injection": "^6.0 || ^7.0 || ^8.0",
+ "symfony/property-access": "^6.0 || ^7.0 || ^8.0",
+ "symfony/serializer": "^6.0 || ^7.0 || ^8.0",
+ "webmozart/assert": "^1.10 || ^2.0",
"webmozart/glob": "^4.4"
},
"require-dev": {
"bamarni/composer-bin-plugin": "^1.8",
"codeception/verify": "^3.1",
"dg/bypass-finals": "^1.6",
- "ergebnis/composer-normalize": "^2.42",
+ "ergebnis/composer-normalize": "^2.49",
"ext-ds": "*",
"ext-zend-opcache": "*",
"jangregor/phpstan-prophecy": "^2.1.1",
@@ -1895,11 +1897,11 @@
"php-ds/php-ds": "^1.5",
"phpspec/prophecy-phpunit": "^2.2.0",
"phpstan/extension-installer": "^1.3",
- "phpstan/phpstan": "^2.1.8",
- "phpstan/phpstan-phpunit": "^2.0.4",
- "phpunit/phpunit": "^9.6.13",
+ "phpstan/phpstan": "^2.1.37",
+ "phpstan/phpstan-phpunit": "^2.0.12",
+ "phpunit/phpunit": "^9.6.34",
"roave/security-advisories": "dev-master",
- "squizlabs/php_codesniffer": "^3.9"
+ "squizlabs/php_codesniffer": "^3.13"
},
"bin": [
"bin/composer-unused"
@@ -1948,29 +1950,31 @@
"type": "other"
}
],
- "time": "2025-07-29T18:30:11+00:00"
+ "time": "2026-01-30T05:52:24+00:00"
},
{
"name": "infection/abstract-testframework-adapter",
- "version": "0.5.0",
+ "version": "0.5.1",
"source": {
"type": "git",
"url": "https://github.com/infection/abstract-testframework-adapter.git",
- "reference": "18925e20d15d1a5995bb85c9dc09e8751e1e069b"
+ "reference": "b24bf3e850f70cd20a10621f08c3cef66f147ac8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/infection/abstract-testframework-adapter/zipball/18925e20d15d1a5995bb85c9dc09e8751e1e069b",
- "reference": "18925e20d15d1a5995bb85c9dc09e8751e1e069b",
+ "url": "https://api.github.com/repos/infection/abstract-testframework-adapter/zipball/b24bf3e850f70cd20a10621f08c3cef66f147ac8",
+ "reference": "b24bf3e850f70cd20a10621f08c3cef66f147ac8",
"shasum": ""
},
"require": {
- "php": "^7.4 || ^8.0"
+ "php": "^8.3"
},
"require-dev": {
- "ergebnis/composer-normalize": "^2.8",
- "friendsofphp/php-cs-fixer": "^2.17",
- "phpunit/phpunit": "^9.5"
+ "ergebnis/composer-normalize": "^2.18",
+ "fidry/makefile": "^1.0",
+ "friendsofphp/php-cs-fixer": "^3.95.2",
+ "phpunit/phpunit": "^12.0 || ^13.0",
+ "rector/rector": "^2.4.5"
},
"type": "library",
"autoload": {
@@ -1991,7 +1995,7 @@
"description": "Abstract Test Framework Adapter for Infection",
"support": {
"issues": "https://github.com/infection/abstract-testframework-adapter/issues",
- "source": "https://github.com/infection/abstract-testframework-adapter/tree/0.5.0"
+ "source": "https://github.com/infection/abstract-testframework-adapter/tree/0.5.1"
},
"funding": [
{
@@ -2003,7 +2007,7 @@
"type": "open_collective"
}
],
- "time": "2021-08-17T18:49:12+00:00"
+ "time": "2026-05-28T19:10:29+00:00"
},
{
"name": "infection/extension-installer",
@@ -2073,21 +2077,21 @@
},
{
"name": "infection/include-interceptor",
- "version": "0.2.5",
+ "version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/infection/include-interceptor.git",
- "reference": "0cc76d95a79d9832d74e74492b0a30139904bdf7"
+ "reference": "c083331bc0cd1cd319ac1b7a08e3ad4a34aa7992"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/infection/include-interceptor/zipball/0cc76d95a79d9832d74e74492b0a30139904bdf7",
- "reference": "0cc76d95a79d9832d74e74492b0a30139904bdf7",
+ "url": "https://api.github.com/repos/infection/include-interceptor/zipball/c083331bc0cd1cd319ac1b7a08e3ad4a34aa7992",
+ "reference": "c083331bc0cd1cd319ac1b7a08e3ad4a34aa7992",
"shasum": ""
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^2.16",
- "infection/infection": "^0.15.0",
+ "infection/infection": "^0.19.0",
"phan/phan": "^2.4 || ^3",
"php-coveralls/php-coveralls": "^2.2",
"phpstan/phpstan": "^0.12.8",
@@ -2113,7 +2117,7 @@
"description": "Stream Wrapper: Include Interceptor. Allows to replace included (autoloaded) file with another one.",
"support": {
"issues": "https://github.com/infection/include-interceptor/issues",
- "source": "https://github.com/infection/include-interceptor/tree/0.2.5"
+ "source": "https://github.com/infection/include-interceptor/tree/1.0.0"
},
"funding": [
{
@@ -2125,20 +2129,20 @@
"type": "open_collective"
}
],
- "time": "2021-08-09T10:03:57+00:00"
+ "time": "2024-05-03T21:48:06+00:00"
},
{
"name": "infection/infection",
- "version": "0.31.2",
+ "version": "0.33.2",
"source": {
"type": "git",
"url": "https://github.com/infection/infection.git",
- "reference": "242785d48ac2dc00a1d3a77b2048b289dc82cbc9"
+ "reference": "c0250ea5c1082e26798a236b05d1cb319175ab3e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/infection/infection/zipball/242785d48ac2dc00a1d3a77b2048b289dc82cbc9",
- "reference": "242785d48ac2dc00a1d3a77b2048b289dc82cbc9",
+ "url": "https://api.github.com/repos/infection/infection/zipball/c0250ea5c1082e26798a236b05d1cb319175ab3e",
+ "reference": "c0250ea5c1082e26798a236b05d1cb319175ab3e",
"shasum": ""
},
"require": {
@@ -2152,43 +2156,50 @@
"fidry/cpu-core-counter": "^1.0",
"infection/abstract-testframework-adapter": "^0.5.0",
"infection/extension-installer": "^0.1.0",
- "infection/include-interceptor": "^0.2.5",
+ "infection/include-interceptor": "^0.2.5 || ^1.0.0",
"infection/mutator": "^0.4",
"justinrainbow/json-schema": "^6.0",
- "nikic/php-parser": "^5.3",
+ "nikic/php-parser": "^5.6.2",
"ondram/ci-detector": "^4.1.0",
- "php": "^8.2",
- "sanmai/di-container": "^0.1.4",
+ "php": "^8.3",
+ "psr/log": "^2.0 || ^3.0",
+ "sanmai/di-container": "^0.1.12",
"sanmai/duoclock": "^0.1.0",
"sanmai/later": "^0.1.7",
- "sanmai/pipeline": "^7.0",
- "sebastian/diff": "^4.0 || ^5.0 || ^6.0 || ^7.0",
- "symfony/console": "^6.4 || ^7.0",
- "symfony/filesystem": "^6.4 || ^7.0",
- "symfony/finder": "^6.4 || ^7.0",
- "symfony/process": "^6.4 || ^7.0",
+ "sanmai/pipeline": "^7.2",
+ "sebastian/diff": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0",
+ "symfony/console": "^6.4 || ^7.0 || ^8.0",
+ "symfony/filesystem": "^6.4 || ^7.0 || ^8.0",
+ "symfony/finder": "^6.4 || ^7.0 || ^8.0",
+ "symfony/polyfill-php85": "^1.33",
+ "symfony/process": "^6.4 || ^7.0 || ^8.0",
"thecodingmachine/safe": "^v3.0",
- "webmozart/assert": "^1.11"
+ "webmozart/assert": "^1.11 || ^2.0"
},
"conflict": {
"antecedent/patchwork": "<2.1.25",
"dg/bypass-finals": "<1.4.1"
},
"require-dev": {
+ "carthage-software/mago": "^1.20",
"ext-simplexml": "*",
"fidry/makefile": "^1.0",
+ "fig/log-test": "^1.2",
+ "phpat/phpat": "^0.12.4",
+ "phpbench/phpbench": "^1.4",
"phpstan/extension-installer": "^1.4",
"phpstan/phpstan": "^2.1",
"phpstan/phpstan-phpunit": "^2.0",
"phpstan/phpstan-strict-rules": "^2.0",
"phpstan/phpstan-webmozart-assert": "^2.0",
"phpunit/phpunit": "^11.5.27",
- "rector/rector": "^2.0",
- "shipmonk/dead-code-detector": "^0.12.0",
+ "rector/rector": "^2.2.4",
+ "shipmonk/dead-code-detector": "^0.15",
"shipmonk/name-collision-detector": "^2.1",
"sidz/phpstan-rules": "^0.5.1",
- "symfony/yaml": "^6.4 || ^7.0",
- "thecodingmachine/phpstan-safe-rule": "^1.4"
+ "symfony/yaml": "^6.4 || ^7.0 || ^8.0",
+ "thecodingmachine/phpstan-safe-rule": "^1.4",
+ "webmozarts/strict-phpunit": "^7.15"
},
"bin": [
"bin/infection"
@@ -2244,7 +2255,7 @@
],
"support": {
"issues": "https://github.com/infection/infection/issues",
- "source": "https://github.com/infection/infection/tree/0.31.2"
+ "source": "https://github.com/infection/infection/tree/0.33.2"
},
"funding": [
{
@@ -2256,7 +2267,7 @@
"type": "open_collective"
}
],
- "time": "2025-08-21T06:43:51+00:00"
+ "time": "2026-05-20T07:03:50+00:00"
},
{
"name": "infection/mutator",
@@ -2313,23 +2324,23 @@
},
{
"name": "jetbrains/phpstorm-stubs",
- "version": "v2024.3",
+ "version": "v2026.1",
"source": {
"type": "git",
- "url": "https://github.com/JetBrains/phpstorm-stubs.git",
- "reference": "0e82bdfe850c71857ee4ee3501ed82a9fc5d043c"
+ "url": "https://github.com/JetBrains/phpstorm-stubs",
+ "reference": "2cdd054c4109dfb76667c9198bf9427606354243"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/JetBrains/phpstorm-stubs/zipball/0e82bdfe850c71857ee4ee3501ed82a9fc5d043c",
- "reference": "0e82bdfe850c71857ee4ee3501ed82a9fc5d043c",
+ "url": "https://api.github.com/repos/JetBrains/phpstorm-stubs/zipball/2cdd054c4109dfb76667c9198bf9427606354243",
+ "reference": "2cdd054c4109dfb76667c9198bf9427606354243",
"shasum": ""
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "v3.64.0",
- "nikic/php-parser": "v5.3.1",
- "phpdocumentor/reflection-docblock": "5.6.0",
- "phpunit/phpunit": "11.4.3"
+ "friendsofphp/php-cs-fixer": "^v3.86",
+ "nikic/php-parser": "^v5.6",
+ "phpdocumentor/reflection-docblock": "^5.6",
+ "phpunit/phpunit": "^12.3"
},
"type": "library",
"autoload": {
@@ -2353,28 +2364,25 @@
"stubs",
"type"
],
- "support": {
- "source": "https://github.com/JetBrains/phpstorm-stubs/tree/v2024.3"
- },
- "time": "2024-12-14T08:03:12+00:00"
+ "time": "2026-02-19T20:12:01+00:00"
},
{
"name": "justinrainbow/json-schema",
- "version": "6.5.2",
+ "version": "6.9.0",
"source": {
"type": "git",
"url": "https://github.com/jsonrainbow/json-schema.git",
- "reference": "ac0d369c09653cf7af561f6d91a705bc617a87b8"
+ "reference": "bd1bda2ebfc8bff418565941771ea8f03c557886"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/ac0d369c09653cf7af561f6d91a705bc617a87b8",
- "reference": "ac0d369c09653cf7af561f6d91a705bc617a87b8",
+ "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/bd1bda2ebfc8bff418565941771ea8f03c557886",
+ "reference": "bd1bda2ebfc8bff418565941771ea8f03c557886",
"shasum": ""
},
"require": {
"ext-json": "*",
- "marc-mabe/php-enum": "^4.0",
+ "marc-mabe/php-enum": "^4.4",
"php": "^7.2 || ^8.0"
},
"require-dev": {
@@ -2429,9 +2437,9 @@
],
"support": {
"issues": "https://github.com/jsonrainbow/json-schema/issues",
- "source": "https://github.com/jsonrainbow/json-schema/tree/6.5.2"
+ "source": "https://github.com/jsonrainbow/json-schema/tree/6.9.0"
},
- "time": "2025-09-09T09:42:27+00:00"
+ "time": "2026-06-05T14:05:24+00:00"
},
{
"name": "localheinz/diff",
@@ -2490,37 +2498,42 @@
},
{
"name": "maglnet/composer-require-checker",
- "version": "4.16.1",
+ "version": "4.20.0",
"source": {
"type": "git",
"url": "https://github.com/maglnet/ComposerRequireChecker.git",
- "reference": "2449a6298a0c39d940287d5d3afaf05a6f80fd0c"
+ "reference": "c62d517ef5ac2d347dd9b3d02c1cc16c0f1091e2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/maglnet/ComposerRequireChecker/zipball/2449a6298a0c39d940287d5d3afaf05a6f80fd0c",
- "reference": "2449a6298a0c39d940287d5d3afaf05a6f80fd0c",
+ "url": "https://api.github.com/repos/maglnet/ComposerRequireChecker/zipball/c62d517ef5ac2d347dd9b3d02c1cc16c0f1091e2",
+ "reference": "c62d517ef5ac2d347dd9b3d02c1cc16c0f1091e2",
"shasum": ""
},
"require": {
+ "azjezz/psl": "^4.2.0",
"composer-runtime-api": "^2.0.0",
"ext-phar": "*",
- "nikic/php-parser": "^5.4.0",
- "php": "~8.2.0 || ~8.3.0 || ~8.4.0",
- "symfony/console": "^6.4.1 || ^7.0.1",
- "webmozart/assert": "^1.11.0",
+ "nikic/php-parser": "^5.7.0",
+ "php": "~8.3.0 || ~8.4.0 || ~8.5.0",
+ "symfony/console": "^7.4.1",
"webmozart/glob": "^4.7.0"
},
+ "conflict": {
+ "revolt/event-loop": "< 1.0.8"
+ },
"require-dev": {
- "doctrine/coding-standard": "^12.0.0",
+ "doctrine/coding-standard": "^14.0.0",
"ext-zend-opcache": "*",
- "phing/phing": "^3.0.1",
- "phpstan/phpstan": "^2.1.2",
- "phpunit/phpunit": "^11.5.7",
- "psalm/plugin-phpunit": "^0.19.2",
- "roave/infection-static-analysis-plugin": "^1.36.0",
+ "phing/phing": "^3.1.1",
+ "php-standard-library/phpstan-extension": "^2.0.2",
+ "php-standard-library/psalm-plugin": "^2.3",
+ "phpstan/phpstan": "^2.1.33",
+ "phpunit/phpunit": "^12.5.4",
+ "psalm/plugin-phpunit": "^0.19.5",
+ "roave/infection-static-analysis-plugin": "^1.42.0",
"spatie/temporary-directory": "^2.3.0",
- "vimeo/psalm": "^6.4.0"
+ "vimeo/psalm": "^6.14.3"
},
"bin": [
"bin/composer-require-checker"
@@ -2565,22 +2578,22 @@
],
"support": {
"issues": "https://github.com/maglnet/ComposerRequireChecker/issues",
- "source": "https://github.com/maglnet/ComposerRequireChecker/tree/4.16.1"
+ "source": "https://github.com/maglnet/ComposerRequireChecker/tree/4.20.0"
},
- "time": "2025-02-07T09:09:45+00:00"
+ "time": "2025-12-29T11:34:42+00:00"
},
{
"name": "marc-mabe/php-enum",
- "version": "v4.7.1",
+ "version": "v4.7.2",
"source": {
"type": "git",
"url": "https://github.com/marc-mabe/php-enum.git",
- "reference": "7159809e5cfa041dca28e61f7f7ae58063aae8ed"
+ "reference": "bb426fcdd65c60fb3638ef741e8782508fda7eef"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/marc-mabe/php-enum/zipball/7159809e5cfa041dca28e61f7f7ae58063aae8ed",
- "reference": "7159809e5cfa041dca28e61f7f7ae58063aae8ed",
+ "url": "https://api.github.com/repos/marc-mabe/php-enum/zipball/bb426fcdd65c60fb3638ef741e8782508fda7eef",
+ "reference": "bb426fcdd65c60fb3638ef741e8782508fda7eef",
"shasum": ""
},
"require": {
@@ -2638,9 +2651,9 @@
],
"support": {
"issues": "https://github.com/marc-mabe/php-enum/issues",
- "source": "https://github.com/marc-mabe/php-enum/tree/v4.7.1"
+ "source": "https://github.com/marc-mabe/php-enum/tree/v4.7.2"
},
- "time": "2024-11-28T04:54:44+00:00"
+ "time": "2025-09-14T11:18:39+00:00"
},
{
"name": "mockery/mockery",
@@ -2785,107 +2798,18 @@
],
"time": "2025-08-01T08:46:24+00:00"
},
- {
- "name": "nette/utils",
- "version": "v4.0.8",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/utils.git",
- "reference": "c930ca4e3cf4f17dcfb03037703679d2396d2ede"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/utils/zipball/c930ca4e3cf4f17dcfb03037703679d2396d2ede",
- "reference": "c930ca4e3cf4f17dcfb03037703679d2396d2ede",
- "shasum": ""
- },
- "require": {
- "php": "8.0 - 8.5"
- },
- "conflict": {
- "nette/finder": "<3",
- "nette/schema": "<1.2.2"
- },
- "require-dev": {
- "jetbrains/phpstorm-attributes": "^1.2",
- "nette/tester": "^2.5",
- "phpstan/phpstan-nette": "^2.0@stable",
- "tracy/tracy": "^2.9"
- },
- "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()"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Nette\\": "src"
- },
- "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/v4.0.8"
- },
- "time": "2025-08-06T21:43:34+00:00"
- },
{
"name": "nikic/php-parser",
- "version": "v5.6.1",
+ "version": "v5.7.0",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2"
+ "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2",
- "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82",
+ "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82",
"shasum": ""
},
"require": {
@@ -2928,9 +2852,9 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
- "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.1"
+ "source": "https://github.com/nikic/PHP-Parser/tree/v5.7.0"
},
- "time": "2025-08-13T20:13:15+00:00"
+ "time": "2025-12-06T11:56:16+00:00"
},
{
"name": "nikolaposa/version",
@@ -2995,33 +2919,33 @@
},
{
"name": "ocramius/package-versions",
- "version": "2.10.0",
+ "version": "2.12.0",
"source": {
"type": "git",
"url": "https://github.com/Ocramius/PackageVersions.git",
- "reference": "b2181b8f0e2adeef0db76a209e1a69369d8abe6f"
+ "reference": "18b02a63e837246e812cae72e211db32d7980019"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/b2181b8f0e2adeef0db76a209e1a69369d8abe6f",
- "reference": "b2181b8f0e2adeef0db76a209e1a69369d8abe6f",
+ "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/18b02a63e837246e812cae72e211db32d7980019",
+ "reference": "18b02a63e837246e812cae72e211db32d7980019",
"shasum": ""
},
"require": {
"composer-runtime-api": "^2.2.0",
- "php": "~8.2.0 || ~8.3.0 || ~8.4.0"
+ "php": "~8.4.0 || ~8.5.0"
},
"replace": {
"composer/package-versions-deprecated": "*"
},
"require-dev": {
- "composer/composer": "^2.8.5",
- "doctrine/coding-standard": "^12.0.0",
+ "composer/composer": "^2.9.8",
+ "doctrine/coding-standard": "^14.0.0",
"ext-zip": "^1.15.0",
- "phpunit/phpunit": "^11.5.6",
- "psalm/plugin-phpunit": "^0.19.2",
- "roave/infection-static-analysis-plugin": "^1.36.0",
- "vimeo/psalm": "^6.3.0"
+ "phpunit/phpunit": "^13.1.11",
+ "psalm/plugin-phpunit": "^0.19.7",
+ "roave/infection-static-analysis-plugin": "^1.44.0",
+ "vimeo/psalm": "^6.16.1"
},
"type": "library",
"autoload": {
@@ -3042,7 +2966,7 @@
"description": "Provides efficient querying for installed package versions (no runtime IO)",
"support": {
"issues": "https://github.com/Ocramius/PackageVersions/issues",
- "source": "https://github.com/Ocramius/PackageVersions/tree/2.10.0"
+ "source": "https://github.com/Ocramius/PackageVersions/tree/2.12.0"
},
"funding": [
{
@@ -3054,7 +2978,7 @@
"type": "tidelift"
}
],
- "time": "2025-02-05T12:31:16+00:00"
+ "time": "2026-05-21T19:52:53+00:00"
},
{
"name": "ondram/ci-detector",
@@ -3464,16 +3388,16 @@
},
{
"name": "phpstan/phpdoc-parser",
- "version": "2.3.0",
+ "version": "2.3.2",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpdoc-parser.git",
- "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495"
+ "reference": "a004701b11273a26cd7955a61d67a7f1e525a45a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/1e0cd5370df5dd2e556a36b9c62f62e555870495",
- "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495",
+ "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/a004701b11273a26cd7955a61d67a7f1e525a45a",
+ "reference": "a004701b11273a26cd7955a61d67a7f1e525a45a",
"shasum": ""
},
"require": {
@@ -3505,22 +3429,17 @@
"description": "PHPDoc parser with support for nullable, intersection and generic types",
"support": {
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
- "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.0"
+ "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.2"
},
- "time": "2025-08-30T15:50:23+00:00"
+ "time": "2026-01-25T14:56:51+00:00"
},
{
"name": "phpstan/phpstan",
- "version": "2.1.25",
- "source": {
- "type": "git",
- "url": "https://github.com/phpstan/phpstan.git",
- "reference": "4087d28bd252895874e174d65e26b2c202ed893a"
- },
+ "version": "2.2.2",
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/4087d28bd252895874e174d65e26b2c202ed893a",
- "reference": "4087d28bd252895874e174d65e26b2c202ed893a",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e5cc34d491a90e79c216d824f60fe21fd4d93bd6",
+ "reference": "e5cc34d491a90e79c216d824f60fe21fd4d93bd6",
"shasum": ""
},
"require": {
@@ -3543,6 +3462,17 @@
"license": [
"MIT"
],
+ "authors": [
+ {
+ "name": "Ondřej Mirtes"
+ },
+ {
+ "name": "Markus Staab"
+ },
+ {
+ "name": "Vincent Langlet"
+ }
+ ],
"description": "PHPStan - PHP Static Analysis Tool",
"keywords": [
"dev",
@@ -3565,25 +3495,25 @@
"type": "github"
}
],
- "time": "2025-09-12T14:26:42+00:00"
+ "time": "2026-06-05T09:00:01+00:00"
},
{
"name": "phpstan/phpstan-deprecation-rules",
- "version": "2.0.3",
+ "version": "2.0.4",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan-deprecation-rules.git",
- "reference": "468e02c9176891cc901143da118f09dc9505fc2f"
+ "reference": "6b5571001a7f04fa0422254c30a0017ec2f2cacc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/468e02c9176891cc901143da118f09dc9505fc2f",
- "reference": "468e02c9176891cc901143da118f09dc9505fc2f",
+ "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/6b5571001a7f04fa0422254c30a0017ec2f2cacc",
+ "reference": "6b5571001a7f04fa0422254c30a0017ec2f2cacc",
"shasum": ""
},
"require": {
"php": "^7.4 || ^8.0",
- "phpstan/phpstan": "^2.1.15"
+ "phpstan/phpstan": "^2.1.39"
},
"require-dev": {
"php-parallel-lint/php-parallel-lint": "^1.2",
@@ -3608,11 +3538,14 @@
"MIT"
],
"description": "PHPStan rules for detecting usage of deprecated classes, methods, properties, constants and traits.",
+ "keywords": [
+ "static analysis"
+ ],
"support": {
"issues": "https://github.com/phpstan/phpstan-deprecation-rules/issues",
- "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/2.0.3"
+ "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/2.0.4"
},
- "time": "2025-05-14T10:56:57+00:00"
+ "time": "2026-02-09T13:21:14+00:00"
},
{
"name": "phpstan/phpstan-mockery",
@@ -3665,21 +3598,21 @@
},
{
"name": "phpstan/phpstan-phpunit",
- "version": "2.0.7",
+ "version": "2.0.16",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan-phpunit.git",
- "reference": "9a9b161baee88a5f5c58d816943cff354ff233dc"
+ "reference": "6ab598e1bc106e6827fd346ae4a12b4a5d634c32"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/9a9b161baee88a5f5c58d816943cff354ff233dc",
- "reference": "9a9b161baee88a5f5c58d816943cff354ff233dc",
+ "url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/6ab598e1bc106e6827fd346ae4a12b4a5d634c32",
+ "reference": "6ab598e1bc106e6827fd346ae4a12b4a5d634c32",
"shasum": ""
},
"require": {
"php": "^7.4 || ^8.0",
- "phpstan/phpstan": "^2.1.18"
+ "phpstan/phpstan": "^2.1.32"
},
"conflict": {
"phpunit/phpunit": "<7.0"
@@ -3710,29 +3643,32 @@
"MIT"
],
"description": "PHPUnit extensions and rules for PHPStan",
+ "keywords": [
+ "static analysis"
+ ],
"support": {
"issues": "https://github.com/phpstan/phpstan-phpunit/issues",
- "source": "https://github.com/phpstan/phpstan-phpunit/tree/2.0.7"
+ "source": "https://github.com/phpstan/phpstan-phpunit/tree/2.0.16"
},
- "time": "2025-07-13T11:31:46+00:00"
+ "time": "2026-02-14T09:05:21+00:00"
},
{
"name": "phpstan/phpstan-strict-rules",
- "version": "2.0.6",
+ "version": "2.0.11",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan-strict-rules.git",
- "reference": "f9f77efa9de31992a832ff77ea52eb42d675b094"
+ "reference": "9b000a578b85b32945b358b172c7b20e91189024"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/f9f77efa9de31992a832ff77ea52eb42d675b094",
- "reference": "f9f77efa9de31992a832ff77ea52eb42d675b094",
+ "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/9b000a578b85b32945b358b172c7b20e91189024",
+ "reference": "9b000a578b85b32945b358b172c7b20e91189024",
"shasum": ""
},
"require": {
"php": "^7.4 || ^8.0",
- "phpstan/phpstan": "^2.0.4"
+ "phpstan/phpstan": "^2.1.39"
},
"require-dev": {
"php-parallel-lint/php-parallel-lint": "^1.2",
@@ -3758,42 +3694,46 @@
"MIT"
],
"description": "Extra strict and opinionated rules for PHPStan",
+ "keywords": [
+ "static analysis"
+ ],
"support": {
"issues": "https://github.com/phpstan/phpstan-strict-rules/issues",
- "source": "https://github.com/phpstan/phpstan-strict-rules/tree/2.0.6"
+ "source": "https://github.com/phpstan/phpstan-strict-rules/tree/2.0.11"
},
- "time": "2025-07-21T12:19:29+00:00"
+ "time": "2026-05-02T06:54:10+00:00"
},
{
"name": "phpunit/php-code-coverage",
- "version": "12.3.7",
+ "version": "14.2.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "bbede0f5593dad37af3be6a6f8e6ae1885e8a0a9"
+ "reference": "10d7da3628a99289cdf4c662dd7f0d73f1baec83"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/bbede0f5593dad37af3be6a6f8e6ae1885e8a0a9",
- "reference": "bbede0f5593dad37af3be6a6f8e6ae1885e8a0a9",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/10d7da3628a99289cdf4c662dd7f0d73f1baec83",
+ "reference": "10d7da3628a99289cdf4c662dd7f0d73f1baec83",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-libxml": "*",
+ "ext-mbstring": "*",
"ext-xmlwriter": "*",
- "nikic/php-parser": "^5.6.1",
- "php": ">=8.3",
- "phpunit/php-file-iterator": "^6.0",
- "phpunit/php-text-template": "^5.0",
- "sebastian/complexity": "^5.0",
- "sebastian/environment": "^8.0.3",
- "sebastian/lines-of-code": "^4.0",
- "sebastian/version": "^6.0",
- "theseer/tokenizer": "^1.2.3"
+ "nikic/php-parser": "^5.7.0",
+ "php": ">=8.4",
+ "phpunit/php-text-template": "^6.0",
+ "sebastian/complexity": "^6.0",
+ "sebastian/environment": "^9.3.2",
+ "sebastian/git-state": "^1.0",
+ "sebastian/lines-of-code": "^5.0.1",
+ "sebastian/version": "^7.0",
+ "theseer/tokenizer": "^2.0.1"
},
"require-dev": {
- "phpunit/phpunit": "^12.3.7"
+ "phpunit/phpunit": "^13.2.0"
},
"suggest": {
"ext-pcov": "PHP extension that provides line coverage",
@@ -3802,7 +3742,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "12.3.x-dev"
+ "dev-main": "14.2.x-dev"
}
},
"autoload": {
@@ -3831,7 +3771,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
"security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
- "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/12.3.7"
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/14.2.2"
},
"funding": [
{
@@ -3851,32 +3791,32 @@
"type": "tidelift"
}
],
- "time": "2025-09-10T09:59:06+00:00"
+ "time": "2026-06-08T11:50:38+00:00"
},
{
"name": "phpunit/php-file-iterator",
- "version": "6.0.0",
+ "version": "7.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "961bc913d42fe24a257bfff826a5068079ac7782"
+ "reference": "6e5aa1fb0a95b1703d83e721299ee18bb4e2de50"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/961bc913d42fe24a257bfff826a5068079ac7782",
- "reference": "961bc913d42fe24a257bfff826a5068079ac7782",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6e5aa1fb0a95b1703d83e721299ee18bb4e2de50",
+ "reference": "6e5aa1fb0a95b1703d83e721299ee18bb4e2de50",
"shasum": ""
},
"require": {
- "php": ">=8.3"
+ "php": ">=8.4"
},
"require-dev": {
- "phpunit/phpunit": "^12.0"
+ "phpunit/phpunit": "^13.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "6.0-dev"
+ "dev-main": "7.0-dev"
}
},
"autoload": {
@@ -3904,36 +3844,48 @@
"support": {
"issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
"security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy",
- "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/6.0.0"
+ "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/7.0.0"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpunit/php-file-iterator",
+ "type": "tidelift"
}
],
- "time": "2025-02-07T04:58:37+00:00"
+ "time": "2026-02-06T04:33:26+00:00"
},
{
"name": "phpunit/php-invoker",
- "version": "6.0.0",
+ "version": "7.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-invoker.git",
- "reference": "12b54e689b07a25a9b41e57736dfab6ec9ae5406"
+ "reference": "42e5c5cae0c65df12d1b1a3ab52bf3f50f244d88"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/12b54e689b07a25a9b41e57736dfab6ec9ae5406",
- "reference": "12b54e689b07a25a9b41e57736dfab6ec9ae5406",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/42e5c5cae0c65df12d1b1a3ab52bf3f50f244d88",
+ "reference": "42e5c5cae0c65df12d1b1a3ab52bf3f50f244d88",
"shasum": ""
},
"require": {
- "php": ">=8.3"
+ "php": ">=8.4"
},
"require-dev": {
"ext-pcntl": "*",
- "phpunit/phpunit": "^12.0"
+ "phpunit/phpunit": "^13.0"
},
"suggest": {
"ext-pcntl": "*"
@@ -3941,7 +3893,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "6.0-dev"
+ "dev-main": "7.0-dev"
}
},
"autoload": {
@@ -3968,40 +3920,52 @@
"support": {
"issues": "https://github.com/sebastianbergmann/php-invoker/issues",
"security": "https://github.com/sebastianbergmann/php-invoker/security/policy",
- "source": "https://github.com/sebastianbergmann/php-invoker/tree/6.0.0"
+ "source": "https://github.com/sebastianbergmann/php-invoker/tree/7.0.0"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpunit/php-invoker",
+ "type": "tidelift"
}
],
- "time": "2025-02-07T04:58:58+00:00"
+ "time": "2026-02-06T04:34:47+00:00"
},
{
"name": "phpunit/php-text-template",
- "version": "5.0.0",
+ "version": "6.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-text-template.git",
- "reference": "e1367a453f0eda562eedb4f659e13aa900d66c53"
+ "reference": "a47af19f93f76aa3368303d752aa5272ca3299f4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/e1367a453f0eda562eedb4f659e13aa900d66c53",
- "reference": "e1367a453f0eda562eedb4f659e13aa900d66c53",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/a47af19f93f76aa3368303d752aa5272ca3299f4",
+ "reference": "a47af19f93f76aa3368303d752aa5272ca3299f4",
"shasum": ""
},
"require": {
- "php": ">=8.3"
+ "php": ">=8.4"
},
"require-dev": {
- "phpunit/phpunit": "^12.0"
+ "phpunit/phpunit": "^13.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "5.0-dev"
+ "dev-main": "6.0-dev"
}
},
"autoload": {
@@ -4028,40 +3992,52 @@
"support": {
"issues": "https://github.com/sebastianbergmann/php-text-template/issues",
"security": "https://github.com/sebastianbergmann/php-text-template/security/policy",
- "source": "https://github.com/sebastianbergmann/php-text-template/tree/5.0.0"
+ "source": "https://github.com/sebastianbergmann/php-text-template/tree/6.0.0"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpunit/php-text-template",
+ "type": "tidelift"
}
],
- "time": "2025-02-07T04:59:16+00:00"
+ "time": "2026-02-06T04:36:37+00:00"
},
{
"name": "phpunit/php-timer",
- "version": "8.0.0",
+ "version": "9.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-timer.git",
- "reference": "f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc"
+ "reference": "a0e12065831f6ab0d83120dc61513eb8d9a966f6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc",
- "reference": "f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/a0e12065831f6ab0d83120dc61513eb8d9a966f6",
+ "reference": "a0e12065831f6ab0d83120dc61513eb8d9a966f6",
"shasum": ""
},
"require": {
- "php": ">=8.3"
+ "php": ">=8.4"
},
"require-dev": {
- "phpunit/phpunit": "^12.0"
+ "phpunit/phpunit": "^13.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "8.0-dev"
+ "dev-main": "9.0-dev"
}
},
"autoload": {
@@ -4088,28 +4064,40 @@
"support": {
"issues": "https://github.com/sebastianbergmann/php-timer/issues",
"security": "https://github.com/sebastianbergmann/php-timer/security/policy",
- "source": "https://github.com/sebastianbergmann/php-timer/tree/8.0.0"
+ "source": "https://github.com/sebastianbergmann/php-timer/tree/9.0.0"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpunit/php-timer",
+ "type": "tidelift"
}
],
- "time": "2025-02-07T04:59:38+00:00"
+ "time": "2026-02-06T04:37:53+00:00"
},
{
"name": "phpunit/phpunit",
- "version": "12.3.10",
+ "version": "13.1.14",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "0d401d0df2e3c1703be425ecdc2d04f5c095938d"
+ "reference": "cdd419c33c040c6b570e51dba8ecbe81d399da53"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0d401d0df2e3c1703be425ecdc2d04f5c095938d",
- "reference": "0d401d0df2e3c1703be425ecdc2d04f5c095938d",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/cdd419c33c040c6b570e51dba8ecbe81d399da53",
+ "reference": "cdd419c33c040c6b570e51dba8ecbe81d399da53",
"shasum": ""
},
"require": {
@@ -4122,21 +4110,23 @@
"myclabs/deep-copy": "^1.13.4",
"phar-io/manifest": "^2.0.4",
"phar-io/version": "^3.2.1",
- "php": ">=8.3",
- "phpunit/php-code-coverage": "^12.3.7",
- "phpunit/php-file-iterator": "^6.0.0",
- "phpunit/php-invoker": "^6.0.0",
- "phpunit/php-text-template": "^5.0.0",
- "phpunit/php-timer": "^8.0.0",
- "sebastian/cli-parser": "^4.0.0",
- "sebastian/comparator": "^7.1.3",
- "sebastian/diff": "^7.0.0",
- "sebastian/environment": "^8.0.3",
- "sebastian/exporter": "^7.0.0",
- "sebastian/global-state": "^8.0.2",
- "sebastian/object-enumerator": "^7.0.0",
- "sebastian/type": "^6.0.3",
- "sebastian/version": "^6.0.0",
+ "php": ">=8.4.1",
+ "phpunit/php-code-coverage": "^14.1.10",
+ "phpunit/php-file-iterator": "^7.0.0",
+ "phpunit/php-invoker": "^7.0.0",
+ "phpunit/php-text-template": "^6.0.0",
+ "phpunit/php-timer": "^9.0.0",
+ "sebastian/cli-parser": "^5.0.0",
+ "sebastian/comparator": "^8.2.1",
+ "sebastian/diff": "^8.3.0",
+ "sebastian/environment": "^9.3.2",
+ "sebastian/exporter": "^8.1.0",
+ "sebastian/git-state": "^1.0",
+ "sebastian/global-state": "^9.0.1",
+ "sebastian/object-enumerator": "^8.0.0",
+ "sebastian/recursion-context": "^8.0.0",
+ "sebastian/type": "^7.0.1",
+ "sebastian/version": "^7.0.0",
"staabm/side-effects-detector": "^1.0.5"
},
"bin": [
@@ -4145,7 +4135,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "12.3-dev"
+ "dev-main": "13.1-dev"
}
},
"autoload": {
@@ -4177,31 +4167,15 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/12.3.10"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/13.1.14"
},
"funding": [
{
- "url": "https://phpunit.de/sponsors.html",
- "type": "custom"
- },
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- },
- {
- "url": "https://liberapay.com/sebastianbergmann",
- "type": "liberapay"
- },
- {
- "url": "https://thanks.dev/u/gh/sebastianbergmann",
- "type": "thanks_dev"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit",
- "type": "tidelift"
+ "url": "https://phpunit.de/sponsoring.html",
+ "type": "other"
}
],
- "time": "2025-09-11T10:35:19+00:00"
+ "time": "2026-06-04T06:16:42+00:00"
},
{
"name": "psr/clock",
@@ -4431,16 +4405,16 @@
},
{
"name": "react/event-loop",
- "version": "v1.5.0",
+ "version": "v1.6.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/event-loop.git",
- "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354"
+ "reference": "ba276bda6083df7e0050fd9b33f66ad7a4ac747a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/reactphp/event-loop/zipball/bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354",
- "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354",
+ "url": "https://api.github.com/repos/reactphp/event-loop/zipball/ba276bda6083df7e0050fd9b33f66ad7a4ac747a",
+ "reference": "ba276bda6083df7e0050fd9b33f66ad7a4ac747a",
"shasum": ""
},
"require": {
@@ -4491,7 +4465,7 @@
],
"support": {
"issues": "https://github.com/reactphp/event-loop/issues",
- "source": "https://github.com/reactphp/event-loop/tree/v1.5.0"
+ "source": "https://github.com/reactphp/event-loop/tree/v1.6.0"
},
"funding": [
{
@@ -4499,7 +4473,7 @@
"type": "open_collective"
}
],
- "time": "2023-11-13T13:48:05+00:00"
+ "time": "2025-11-17T20:46:25+00:00"
},
{
"name": "react/promise",
@@ -4576,21 +4550,21 @@
},
{
"name": "rector/rector",
- "version": "2.1.7",
+ "version": "2.4.5",
"source": {
"type": "git",
"url": "https://github.com/rectorphp/rector.git",
- "reference": "c34cc07c4698f007a20dc5c99ff820089ae413ce"
+ "reference": "cbd86024be5014d3c14d9f0b3f7aae8ecbffd62c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/rectorphp/rector/zipball/c34cc07c4698f007a20dc5c99ff820089ae413ce",
- "reference": "c34cc07c4698f007a20dc5c99ff820089ae413ce",
+ "url": "https://api.github.com/repos/rectorphp/rector/zipball/cbd86024be5014d3c14d9f0b3f7aae8ecbffd62c",
+ "reference": "cbd86024be5014d3c14d9f0b3f7aae8ecbffd62c",
"shasum": ""
},
"require": {
"php": "^7.4|^8.0",
- "phpstan/phpstan": "^2.1.18"
+ "phpstan/phpstan": "^2.1.56"
},
"conflict": {
"rector/rector-doctrine": "*",
@@ -4624,7 +4598,7 @@
],
"support": {
"issues": "https://github.com/rectorphp/rector/issues",
- "source": "https://github.com/rectorphp/rector/tree/2.1.7"
+ "source": "https://github.com/rectorphp/rector/tree/2.4.5"
},
"funding": [
{
@@ -4632,20 +4606,20 @@
"type": "github"
}
],
- "time": "2025-09-10T11:13:58+00:00"
+ "time": "2026-05-26T21:03:22+00:00"
},
{
"name": "revolt/event-loop",
- "version": "v1.0.7",
+ "version": "v1.0.9",
"source": {
"type": "git",
"url": "https://github.com/revoltphp/event-loop.git",
- "reference": "09bf1bf7f7f574453efe43044b06fafe12216eb3"
+ "reference": "44061cf513e53c6200372fc935ac42271566295d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/revoltphp/event-loop/zipball/09bf1bf7f7f574453efe43044b06fafe12216eb3",
- "reference": "09bf1bf7f7f574453efe43044b06fafe12216eb3",
+ "url": "https://api.github.com/repos/revoltphp/event-loop/zipball/44061cf513e53c6200372fc935ac42271566295d",
+ "reference": "44061cf513e53c6200372fc935ac42271566295d",
"shasum": ""
},
"require": {
@@ -4655,7 +4629,7 @@
"ext-json": "*",
"jetbrains/phpstorm-stubs": "^2019.3",
"phpunit/phpunit": "^9",
- "psalm/phar": "^5.15"
+ "psalm/phar": "6.16.*"
},
"type": "library",
"extra": {
@@ -4702,52 +4676,53 @@
],
"support": {
"issues": "https://github.com/revoltphp/event-loop/issues",
- "source": "https://github.com/revoltphp/event-loop/tree/v1.0.7"
+ "source": "https://github.com/revoltphp/event-loop/tree/v1.0.9"
},
- "time": "2025-01-25T19:27:39+00:00"
+ "time": "2026-05-16T17:55:38+00:00"
},
{
"name": "roave/backward-compatibility-check",
- "version": "8.14.0",
+ "version": "8.19.0",
"source": {
"type": "git",
"url": "https://github.com/Roave/BackwardCompatibilityCheck.git",
- "reference": "fd16ae2d416d750e19c60b8e73e6066f8e602290"
+ "reference": "810eb88eeff37ef300653bcfb77ca51a314777a2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Roave/BackwardCompatibilityCheck/zipball/fd16ae2d416d750e19c60b8e73e6066f8e602290",
- "reference": "fd16ae2d416d750e19c60b8e73e6066f8e602290",
+ "url": "https://api.github.com/repos/Roave/BackwardCompatibilityCheck/zipball/810eb88eeff37ef300653bcfb77ca51a314777a2",
+ "reference": "810eb88eeff37ef300653bcfb77ca51a314777a2",
"shasum": ""
},
"require": {
- "azjezz/psl": "^3.2.0",
- "composer/composer": "^2.8.5",
+ "azjezz/psl": "^4.2.1",
+ "composer/composer": "^2.9.5",
"ext-dom": "*",
"ext-json": "*",
"ext-libxml": "*",
"ext-simplexml": "*",
- "nikic/php-parser": "^5.4.0",
- "nikolaposa/version": "^4.2.0",
- "ocramius/package-versions": "^2.10.0",
- "php": "~8.2.0 || ~8.3.0 || ~8.4.0",
- "roave/better-reflection": "^6.57.0",
- "symfony/console": "^7.2.1"
+ "nikic/php-parser": "^5.7.0",
+ "nikolaposa/version": "^4.2.1",
+ "ocramius/package-versions": "^2.11.0",
+ "php": "~8.3.0 || ~8.4.0 || ~8.5.0",
+ "roave/better-reflection": "^6.69.0",
+ "symfony/console": "^7.4.4"
},
"conflict": {
+ "marc-mabe/php-enum": "<4.7.2",
"revolt/event-loop": "<0.2.5",
"symfony/process": "<5.3.7"
},
"require-dev": {
- "doctrine/coding-standard": "^12.0.0",
- "estahn/phpunit-json-assertions": "^4.0",
+ "doctrine/coding-standard": "^14.0.0",
+ "justinrainbow/json-schema": "^6.6.4",
"php-standard-library/psalm-plugin": "^2.3.0",
- "phpunit/phpunit": "^11.5.7",
- "psalm/plugin-phpunit": "^0.19.2",
- "roave/infection-static-analysis-plugin": "^1.36.0",
+ "phpunit/phpunit": "^12.5.11",
+ "psalm/plugin-phpunit": "^0.19.5",
+ "roave/infection-static-analysis-plugin": "^1.43.0",
"roave/security-advisories": "dev-master",
- "squizlabs/php_codesniffer": "^3.11.3",
- "vimeo/psalm": "^6.6.1"
+ "squizlabs/php_codesniffer": "^4.0.1",
+ "vimeo/psalm": "^6.15.1"
},
"bin": [
"bin/roave-backward-compatibility-check"
@@ -4775,36 +4750,36 @@
"description": "Tool to compare two revisions of a public API to check for BC breaks",
"support": {
"issues": "https://github.com/Roave/BackwardCompatibilityCheck/issues",
- "source": "https://github.com/Roave/BackwardCompatibilityCheck/tree/8.14.0"
+ "source": "https://github.com/Roave/BackwardCompatibilityCheck/tree/8.19.0"
},
- "time": "2025-06-09T13:47:09+00:00"
+ "time": "2026-02-13T19:14:25+00:00"
},
{
"name": "roave/better-reflection",
- "version": "6.63.0",
+ "version": "6.71.0",
"source": {
"type": "git",
"url": "https://github.com/Roave/BetterReflection.git",
- "reference": "0df4a31468d26c3d565482dff7b223c8cab1065a"
+ "reference": "3ec176d4a161b4e8764edc625d69ff624ca390b1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Roave/BetterReflection/zipball/0df4a31468d26c3d565482dff7b223c8cab1065a",
- "reference": "0df4a31468d26c3d565482dff7b223c8cab1065a",
+ "url": "https://api.github.com/repos/Roave/BetterReflection/zipball/3ec176d4a161b4e8764edc625d69ff624ca390b1",
+ "reference": "3ec176d4a161b4e8764edc625d69ff624ca390b1",
"shasum": ""
},
"require": {
"ext-json": "*",
- "jetbrains/phpstorm-stubs": "2024.3",
- "nikic/php-parser": "^5.6.1",
- "php": "~8.2.0 || ~8.3.2 || ~8.4.1 || ~8.5.0"
+ "jetbrains/phpstorm-stubs": "2026.1",
+ "nikic/php-parser": "^5.7.0",
+ "php": "~8.4.1 || ~8.5.0"
},
"conflict": {
"thecodingmachine/safe": "<1.1.3"
},
"require-dev": {
- "phpbench/phpbench": "^1.4.1",
- "phpunit/phpunit": "^11.5.36"
+ "phpbench/phpbench": "^1.6.1",
+ "phpunit/phpunit": "^13.1.8"
},
"suggest": {
"composer/composer": "Required to use the ComposerSourceLocator"
@@ -4844,22 +4819,22 @@
"description": "Better Reflection - an improved code reflection API",
"support": {
"issues": "https://github.com/Roave/BetterReflection/issues",
- "source": "https://github.com/Roave/BetterReflection/tree/6.63.0"
+ "source": "https://github.com/Roave/BetterReflection/tree/6.71.0"
},
- "time": "2025-09-09T11:18:57+00:00"
+ "time": "2026-05-02T10:56:00+00:00"
},
{
"name": "sanmai/di-container",
- "version": "0.1.5",
+ "version": "0.1.17",
"source": {
"type": "git",
"url": "https://github.com/sanmai/di-container.git",
- "reference": "355534ad7970fc7dab4211ecaf2da5c546855ee8"
+ "reference": "a901c4a8778c9212ef4d66607525281af2f787bd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sanmai/di-container/zipball/355534ad7970fc7dab4211ecaf2da5c546855ee8",
- "reference": "355534ad7970fc7dab4211ecaf2da5c546855ee8",
+ "url": "https://api.github.com/repos/sanmai/di-container/zipball/a901c4a8778c9212ef4d66607525281af2f787bd",
+ "reference": "a901c4a8778c9212ef4d66607525281af2f787bd",
"shasum": ""
},
"require": {
@@ -4870,14 +4845,18 @@
"require-dev": {
"ergebnis/composer-normalize": "^2.8",
"friendsofphp/php-cs-fixer": "^3.17",
- "infection/infection": ">=0.29",
+ "infection/infection": ">=0.31",
"php-coveralls/php-coveralls": "^2.4.1",
+ "phpbench/phpbench": "^1.4",
"phpstan/extension-installer": "^1.4",
"phpunit/phpunit": "^11.5.25",
"sanmai/phpstan-rules": "^0.3.10"
},
"type": "library",
"extra": {
+ "branch-alias": {
+ "dev-main": "0.1.x-dev"
+ },
"preferred-install": "dist"
},
"autoload": {
@@ -4913,7 +4892,7 @@
],
"support": {
"issues": "https://github.com/sanmai/di-container/issues",
- "source": "https://github.com/sanmai/di-container/tree/0.1.5"
+ "source": "https://github.com/sanmai/di-container/tree/0.1.17"
},
"funding": [
{
@@ -4921,20 +4900,20 @@
"type": "github"
}
],
- "time": "2025-08-04T09:43:58+00:00"
+ "time": "2026-06-01T08:52:14+00:00"
},
{
"name": "sanmai/duoclock",
- "version": "0.1.1",
+ "version": "0.1.3",
"source": {
"type": "git",
"url": "https://github.com/sanmai/DuoClock.git",
- "reference": "30aa40092396dc96b68c8e8d49162619574477e2"
+ "reference": "47461e3ff65b7308635047831a55615652e7be1a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sanmai/DuoClock/zipball/30aa40092396dc96b68c8e8d49162619574477e2",
- "reference": "30aa40092396dc96b68c8e8d49162619574477e2",
+ "url": "https://api.github.com/repos/sanmai/DuoClock/zipball/47461e3ff65b7308635047831a55615652e7be1a",
+ "reference": "47461e3ff65b7308635047831a55615652e7be1a",
"shasum": ""
},
"require": {
@@ -4952,8 +4931,7 @@
"phpstan/extension-installer": "^1.4",
"phpstan/phpstan": "^2",
"phpunit/phpunit": "^11.5.25",
- "sanmai/phpstan-rules": "^0.3.1",
- "vimeo/psalm": "^6.12"
+ "sanmai/phpstan-rules": "^0.3.1"
},
"type": "library",
"extra": {
@@ -4977,7 +4955,7 @@
"description": "PHP time mocking for tests - PSR-20 clock with mockable sleep(), time(), and TimeSpy for PHPUnit testing",
"support": {
"issues": "https://github.com/sanmai/DuoClock/issues",
- "source": "https://github.com/sanmai/DuoClock/tree/0.1.1"
+ "source": "https://github.com/sanmai/DuoClock/tree/0.1.3"
},
"funding": [
{
@@ -4985,7 +4963,7 @@
"type": "github"
}
],
- "time": "2025-07-28T02:17:28+00:00"
+ "time": "2025-12-26T06:12:34+00:00"
},
{
"name": "sanmai/later",
@@ -5053,16 +5031,16 @@
},
{
"name": "sanmai/pipeline",
- "version": "7.1",
+ "version": "7.9",
"source": {
"type": "git",
"url": "https://github.com/sanmai/pipeline.git",
- "reference": "d01565ef9f5cd7d1019c5f8bee09497067511f36"
+ "reference": "d7046ecce91ae57fca403be694888371a21250eb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sanmai/pipeline/zipball/d01565ef9f5cd7d1019c5f8bee09497067511f36",
- "reference": "d01565ef9f5cd7d1019c5f8bee09497067511f36",
+ "url": "https://api.github.com/repos/sanmai/pipeline/zipball/d7046ecce91ae57fca403be694888371a21250eb",
+ "reference": "d7046ecce91ae57fca403be694888371a21250eb",
"shasum": ""
},
"require": {
@@ -5072,20 +5050,20 @@
"ergebnis/composer-normalize": "^2.8",
"esi/phpunit-coverage-check": ">2",
"friendsofphp/php-cs-fixer": "^3.17",
- "infection/infection": ">=0.30.3",
+ "infection/infection": ">=0.32.3",
"league/pipeline": "^0.3 || ^1.0",
"php-coveralls/php-coveralls": "^2.4.1",
"phpstan/extension-installer": "^1.4",
"phpstan/phpstan": "^2",
"phpunit/phpunit": ">=9.4 <12",
- "sanmai/phpstan-rules": "^0.3.0",
+ "sanmai/phpstan-rules": "^0.3.11",
"sanmai/phpunit-double-colon-syntax": "^0.1.1",
"vimeo/psalm": ">=2"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "v6.x-dev"
+ "dev-main": "7.x-dev"
}
},
"autoload": {
@@ -5109,7 +5087,7 @@
"description": "General-purpose collections pipeline",
"support": {
"issues": "https://github.com/sanmai/pipeline/issues",
- "source": "https://github.com/sanmai/pipeline/tree/7.1"
+ "source": "https://github.com/sanmai/pipeline/tree/7.9"
},
"funding": [
{
@@ -5117,32 +5095,32 @@
"type": "github"
}
],
- "time": "2025-07-27T07:02:29+00:00"
+ "time": "2026-01-16T11:54:05+00:00"
},
{
"name": "sebastian/cli-parser",
- "version": "4.1.0",
+ "version": "5.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/cli-parser.git",
- "reference": "8fd93be538992d556aaa45c74570129448a42084"
+ "reference": "48a4654fa5e48c1c81214e9930048a572d4b23ca"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/8fd93be538992d556aaa45c74570129448a42084",
- "reference": "8fd93be538992d556aaa45c74570129448a42084",
+ "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/48a4654fa5e48c1c81214e9930048a572d4b23ca",
+ "reference": "48a4654fa5e48c1c81214e9930048a572d4b23ca",
"shasum": ""
},
"require": {
- "php": ">=8.3"
+ "php": ">=8.4"
},
"require-dev": {
- "phpunit/phpunit": "^12.0"
+ "phpunit/phpunit": "^13.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "4.1-dev"
+ "dev-main": "5.0-dev"
}
},
"autoload": {
@@ -5166,7 +5144,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/cli-parser/issues",
"security": "https://github.com/sebastianbergmann/cli-parser/security/policy",
- "source": "https://github.com/sebastianbergmann/cli-parser/tree/4.1.0"
+ "source": "https://github.com/sebastianbergmann/cli-parser/tree/5.0.0"
},
"funding": [
{
@@ -5186,31 +5164,31 @@
"type": "tidelift"
}
],
- "time": "2025-09-13T14:16:18+00:00"
+ "time": "2026-02-06T04:39:44+00:00"
},
{
"name": "sebastian/comparator",
- "version": "7.1.3",
+ "version": "8.2.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "dc904b4bb3ab070865fa4068cd84f3da8b945148"
+ "reference": "ce999bf08b2c387a5423fe56961c32eed3f88089"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/dc904b4bb3ab070865fa4068cd84f3da8b945148",
- "reference": "dc904b4bb3ab070865fa4068cd84f3da8b945148",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/ce999bf08b2c387a5423fe56961c32eed3f88089",
+ "reference": "ce999bf08b2c387a5423fe56961c32eed3f88089",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-mbstring": "*",
- "php": ">=8.3",
- "sebastian/diff": "^7.0",
- "sebastian/exporter": "^7.0"
+ "php": ">=8.4",
+ "sebastian/diff": "^8.3",
+ "sebastian/exporter": "^8.0.3"
},
"require-dev": {
- "phpunit/phpunit": "^12.2"
+ "phpunit/phpunit": "^13.1.10"
},
"suggest": {
"ext-bcmath": "For comparing BcMath\\Number objects"
@@ -5218,7 +5196,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "7.1-dev"
+ "dev-main": "8.2-dev"
}
},
"autoload": {
@@ -5258,7 +5236,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/comparator/issues",
"security": "https://github.com/sebastianbergmann/comparator/security/policy",
- "source": "https://github.com/sebastianbergmann/comparator/tree/7.1.3"
+ "source": "https://github.com/sebastianbergmann/comparator/tree/8.2.1"
},
"funding": [
{
@@ -5278,33 +5256,33 @@
"type": "tidelift"
}
],
- "time": "2025-08-20T11:27:00+00:00"
+ "time": "2026-05-21T04:46:40+00:00"
},
{
"name": "sebastian/complexity",
- "version": "5.0.0",
+ "version": "6.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/complexity.git",
- "reference": "bad4316aba5303d0221f43f8cee37eb58d384bbb"
+ "reference": "c5651c795c98093480df79350cb050813fc7a2f3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/bad4316aba5303d0221f43f8cee37eb58d384bbb",
- "reference": "bad4316aba5303d0221f43f8cee37eb58d384bbb",
+ "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/c5651c795c98093480df79350cb050813fc7a2f3",
+ "reference": "c5651c795c98093480df79350cb050813fc7a2f3",
"shasum": ""
},
"require": {
"nikic/php-parser": "^5.0",
- "php": ">=8.3"
+ "php": ">=8.4"
},
"require-dev": {
- "phpunit/phpunit": "^12.0"
+ "phpunit/phpunit": "^13.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "5.0-dev"
+ "dev-main": "6.0-dev"
}
},
"autoload": {
@@ -5328,41 +5306,53 @@
"support": {
"issues": "https://github.com/sebastianbergmann/complexity/issues",
"security": "https://github.com/sebastianbergmann/complexity/security/policy",
- "source": "https://github.com/sebastianbergmann/complexity/tree/5.0.0"
+ "source": "https://github.com/sebastianbergmann/complexity/tree/6.0.0"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/complexity",
+ "type": "tidelift"
}
],
- "time": "2025-02-07T04:55:25+00:00"
+ "time": "2026-02-06T04:41:32+00:00"
},
{
"name": "sebastian/diff",
- "version": "7.0.0",
+ "version": "8.3.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/diff.git",
- "reference": "7ab1ea946c012266ca32390913653d844ecd085f"
+ "reference": "b36d33b6e796513de7cb7df053afb3f55eefcd47"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7ab1ea946c012266ca32390913653d844ecd085f",
- "reference": "7ab1ea946c012266ca32390913653d844ecd085f",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/b36d33b6e796513de7cb7df053afb3f55eefcd47",
+ "reference": "b36d33b6e796513de7cb7df053afb3f55eefcd47",
"shasum": ""
},
"require": {
- "php": ">=8.3"
+ "php": ">=8.4"
},
"require-dev": {
- "phpunit/phpunit": "^12.0",
+ "phpunit/phpunit": "^13.0",
"symfony/process": "^7.2"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "7.0-dev"
+ "dev-main": "8.3-dev"
}
},
"autoload": {
@@ -5395,35 +5385,47 @@
"support": {
"issues": "https://github.com/sebastianbergmann/diff/issues",
"security": "https://github.com/sebastianbergmann/diff/security/policy",
- "source": "https://github.com/sebastianbergmann/diff/tree/7.0.0"
+ "source": "https://github.com/sebastianbergmann/diff/tree/8.3.0"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/diff",
+ "type": "tidelift"
}
],
- "time": "2025-02-07T04:55:46+00:00"
+ "time": "2026-05-15T04:58:09+00:00"
},
{
"name": "sebastian/environment",
- "version": "8.0.3",
+ "version": "9.3.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "24a711b5c916efc6d6e62aa65aa2ec98fef77f68"
+ "reference": "6c9e487c9eb706a8d258102a1c0b0a3e53e86c2e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/24a711b5c916efc6d6e62aa65aa2ec98fef77f68",
- "reference": "24a711b5c916efc6d6e62aa65aa2ec98fef77f68",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6c9e487c9eb706a8d258102a1c0b0a3e53e86c2e",
+ "reference": "6c9e487c9eb706a8d258102a1c0b0a3e53e86c2e",
"shasum": ""
},
"require": {
- "php": ">=8.3"
+ "php": ">=8.4"
},
"require-dev": {
- "phpunit/phpunit": "^12.0"
+ "phpunit/phpunit": "^13.1.11"
},
"suggest": {
"ext-posix": "*"
@@ -5431,7 +5433,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "8.0-dev"
+ "dev-main": "9.3-dev"
}
},
"autoload": {
@@ -5459,7 +5461,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/environment/issues",
"security": "https://github.com/sebastianbergmann/environment/security/policy",
- "source": "https://github.com/sebastianbergmann/environment/tree/8.0.3"
+ "source": "https://github.com/sebastianbergmann/environment/tree/9.3.2"
},
"funding": [
{
@@ -5479,34 +5481,34 @@
"type": "tidelift"
}
],
- "time": "2025-08-12T14:11:56+00:00"
+ "time": "2026-05-25T13:41:38+00:00"
},
{
"name": "sebastian/exporter",
- "version": "7.0.0",
+ "version": "8.1.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "76432aafc58d50691a00d86d0632f1217a47b688"
+ "reference": "c0d29a945f8cf82f300a05e69874508e307ca4c6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/76432aafc58d50691a00d86d0632f1217a47b688",
- "reference": "76432aafc58d50691a00d86d0632f1217a47b688",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/c0d29a945f8cf82f300a05e69874508e307ca4c6",
+ "reference": "c0d29a945f8cf82f300a05e69874508e307ca4c6",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
- "php": ">=8.3",
- "sebastian/recursion-context": "^7.0"
+ "php": ">=8.4",
+ "sebastian/recursion-context": "^8.0"
},
"require-dev": {
- "phpunit/phpunit": "^12.0"
+ "phpunit/phpunit": "^13.1.10"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "7.0-dev"
+ "dev-main": "8.1-dev"
}
},
"autoload": {
@@ -5549,43 +5551,52 @@
"support": {
"issues": "https://github.com/sebastianbergmann/exporter/issues",
"security": "https://github.com/sebastianbergmann/exporter/security/policy",
- "source": "https://github.com/sebastianbergmann/exporter/tree/7.0.0"
+ "source": "https://github.com/sebastianbergmann/exporter/tree/8.1.0"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter",
+ "type": "tidelift"
}
],
- "time": "2025-02-07T04:56:42+00:00"
+ "time": "2026-05-21T11:50:56+00:00"
},
{
- "name": "sebastian/global-state",
- "version": "8.0.2",
+ "name": "sebastian/git-state",
+ "version": "1.0.0",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/global-state.git",
- "reference": "ef1377171613d09edd25b7816f05be8313f9115d"
+ "url": "https://github.com/sebastianbergmann/git-state.git",
+ "reference": "792a952e0eba55b6960a48aeceb9f371aad1f76b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/ef1377171613d09edd25b7816f05be8313f9115d",
- "reference": "ef1377171613d09edd25b7816f05be8313f9115d",
+ "url": "https://api.github.com/repos/sebastianbergmann/git-state/zipball/792a952e0eba55b6960a48aeceb9f371aad1f76b",
+ "reference": "792a952e0eba55b6960a48aeceb9f371aad1f76b",
"shasum": ""
},
"require": {
- "php": ">=8.3",
- "sebastian/object-reflector": "^5.0",
- "sebastian/recursion-context": "^7.0"
+ "php": ">=8.4"
},
"require-dev": {
- "ext-dom": "*",
- "phpunit/phpunit": "^12.0"
+ "phpunit/phpunit": "^13.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "8.0-dev"
+ "dev-main": "1.0-dev"
}
},
"autoload": {
@@ -5600,10 +5611,82 @@
"authors": [
{
"name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
}
],
- "description": "Snapshotting of global state",
+ "description": "Library for describing the state of a Git checkout",
+ "homepage": "https://github.com/sebastianbergmann/git-state",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/git-state/issues",
+ "security": "https://github.com/sebastianbergmann/git-state/security/policy",
+ "source": "https://github.com/sebastianbergmann/git-state/tree/1.0.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/git-state",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2026-03-21T12:54:28+00:00"
+ },
+ {
+ "name": "sebastian/global-state",
+ "version": "9.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/global-state.git",
+ "reference": "ba68ba79da690cf7eddefd3ce5b78b20b9ba9945"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/ba68ba79da690cf7eddefd3ce5b78b20b9ba9945",
+ "reference": "ba68ba79da690cf7eddefd3ce5b78b20b9ba9945",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.4",
+ "sebastian/object-reflector": "^6.0",
+ "sebastian/recursion-context": "^8.0"
+ },
+ "require-dev": {
+ "ext-dom": "*",
+ "phpunit/phpunit": "^13.1.13"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "9.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Snapshotting of global state",
"homepage": "https://www.github.com/sebastianbergmann/global-state",
"keywords": [
"global state"
@@ -5611,7 +5694,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/global-state/issues",
"security": "https://github.com/sebastianbergmann/global-state/security/policy",
- "source": "https://github.com/sebastianbergmann/global-state/tree/8.0.2"
+ "source": "https://github.com/sebastianbergmann/global-state/tree/9.0.1"
},
"funding": [
{
@@ -5631,33 +5714,33 @@
"type": "tidelift"
}
],
- "time": "2025-08-29T11:29:25+00:00"
+ "time": "2026-06-01T15:11:33+00:00"
},
{
"name": "sebastian/lines-of-code",
- "version": "4.0.0",
+ "version": "5.0.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/lines-of-code.git",
- "reference": "97ffee3bcfb5805568d6af7f0f893678fc076d2f"
+ "reference": "d2cff273a90c79b0eb590baa682d4b5c318bdbb7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/97ffee3bcfb5805568d6af7f0f893678fc076d2f",
- "reference": "97ffee3bcfb5805568d6af7f0f893678fc076d2f",
+ "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/d2cff273a90c79b0eb590baa682d4b5c318bdbb7",
+ "reference": "d2cff273a90c79b0eb590baa682d4b5c318bdbb7",
"shasum": ""
},
"require": {
- "nikic/php-parser": "^5.0",
- "php": ">=8.3"
+ "nikic/php-parser": "^5.7.0",
+ "php": ">=8.4"
},
"require-dev": {
- "phpunit/phpunit": "^12.0"
+ "phpunit/phpunit": "^13.1.10"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "4.0-dev"
+ "dev-main": "5.0-dev"
}
},
"autoload": {
@@ -5681,42 +5764,54 @@
"support": {
"issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
"security": "https://github.com/sebastianbergmann/lines-of-code/security/policy",
- "source": "https://github.com/sebastianbergmann/lines-of-code/tree/4.0.0"
+ "source": "https://github.com/sebastianbergmann/lines-of-code/tree/5.0.1"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/lines-of-code",
+ "type": "tidelift"
}
],
- "time": "2025-02-07T04:57:28+00:00"
+ "time": "2026-05-19T16:23:37+00:00"
},
{
"name": "sebastian/object-enumerator",
- "version": "7.0.0",
+ "version": "8.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/object-enumerator.git",
- "reference": "1effe8e9b8e068e9ae228e542d5d11b5d16db894"
+ "reference": "b39ab125fd9a7434b0ecbc4202eebce11a98cfc5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1effe8e9b8e068e9ae228e542d5d11b5d16db894",
- "reference": "1effe8e9b8e068e9ae228e542d5d11b5d16db894",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/b39ab125fd9a7434b0ecbc4202eebce11a98cfc5",
+ "reference": "b39ab125fd9a7434b0ecbc4202eebce11a98cfc5",
"shasum": ""
},
"require": {
- "php": ">=8.3",
- "sebastian/object-reflector": "^5.0",
- "sebastian/recursion-context": "^7.0"
+ "php": ">=8.4",
+ "sebastian/object-reflector": "^6.0",
+ "sebastian/recursion-context": "^8.0"
},
"require-dev": {
- "phpunit/phpunit": "^12.0"
+ "phpunit/phpunit": "^13.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "7.0-dev"
+ "dev-main": "8.0-dev"
}
},
"autoload": {
@@ -5739,40 +5834,52 @@
"support": {
"issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
"security": "https://github.com/sebastianbergmann/object-enumerator/security/policy",
- "source": "https://github.com/sebastianbergmann/object-enumerator/tree/7.0.0"
+ "source": "https://github.com/sebastianbergmann/object-enumerator/tree/8.0.0"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/object-enumerator",
+ "type": "tidelift"
}
],
- "time": "2025-02-07T04:57:48+00:00"
+ "time": "2026-02-06T04:46:36+00:00"
},
{
"name": "sebastian/object-reflector",
- "version": "5.0.0",
+ "version": "6.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/object-reflector.git",
- "reference": "4bfa827c969c98be1e527abd576533293c634f6a"
+ "reference": "3ca042c2c60b0eab094f8a1b6a7093f4d4c72200"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/4bfa827c969c98be1e527abd576533293c634f6a",
- "reference": "4bfa827c969c98be1e527abd576533293c634f6a",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/3ca042c2c60b0eab094f8a1b6a7093f4d4c72200",
+ "reference": "3ca042c2c60b0eab094f8a1b6a7093f4d4c72200",
"shasum": ""
},
"require": {
- "php": ">=8.3"
+ "php": ">=8.4"
},
"require-dev": {
- "phpunit/phpunit": "^12.0"
+ "phpunit/phpunit": "^13.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "5.0-dev"
+ "dev-main": "6.0-dev"
}
},
"autoload": {
@@ -5795,40 +5902,52 @@
"support": {
"issues": "https://github.com/sebastianbergmann/object-reflector/issues",
"security": "https://github.com/sebastianbergmann/object-reflector/security/policy",
- "source": "https://github.com/sebastianbergmann/object-reflector/tree/5.0.0"
+ "source": "https://github.com/sebastianbergmann/object-reflector/tree/6.0.0"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/object-reflector",
+ "type": "tidelift"
}
],
- "time": "2025-02-07T04:58:17+00:00"
+ "time": "2026-02-06T04:47:13+00:00"
},
{
"name": "sebastian/recursion-context",
- "version": "7.0.1",
+ "version": "8.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/recursion-context.git",
- "reference": "0b01998a7d5b1f122911a66bebcb8d46f0c82d8c"
+ "reference": "74c5af21f6a5833e91767ca068c4d3dfec15317e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/0b01998a7d5b1f122911a66bebcb8d46f0c82d8c",
- "reference": "0b01998a7d5b1f122911a66bebcb8d46f0c82d8c",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/74c5af21f6a5833e91767ca068c4d3dfec15317e",
+ "reference": "74c5af21f6a5833e91767ca068c4d3dfec15317e",
"shasum": ""
},
"require": {
- "php": ">=8.3"
+ "php": ">=8.4"
},
"require-dev": {
- "phpunit/phpunit": "^12.0"
+ "phpunit/phpunit": "^13.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "7.0-dev"
+ "dev-main": "8.0-dev"
}
},
"autoload": {
@@ -5859,7 +5978,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/recursion-context/issues",
"security": "https://github.com/sebastianbergmann/recursion-context/security/policy",
- "source": "https://github.com/sebastianbergmann/recursion-context/tree/7.0.1"
+ "source": "https://github.com/sebastianbergmann/recursion-context/tree/8.0.0"
},
"funding": [
{
@@ -5879,32 +5998,32 @@
"type": "tidelift"
}
],
- "time": "2025-08-13T04:44:59+00:00"
+ "time": "2026-02-06T04:51:28+00:00"
},
{
"name": "sebastian/type",
- "version": "6.0.3",
+ "version": "7.0.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/type.git",
- "reference": "e549163b9760b8f71f191651d22acf32d56d6d4d"
+ "reference": "fee0309275847fefd7636167085e379c1dbf6990"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/e549163b9760b8f71f191651d22acf32d56d6d4d",
- "reference": "e549163b9760b8f71f191651d22acf32d56d6d4d",
+ "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fee0309275847fefd7636167085e379c1dbf6990",
+ "reference": "fee0309275847fefd7636167085e379c1dbf6990",
"shasum": ""
},
"require": {
- "php": ">=8.3"
+ "php": ">=8.4"
},
"require-dev": {
- "phpunit/phpunit": "^12.0"
+ "phpunit/phpunit": "^13.1.10"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "6.0-dev"
+ "dev-main": "7.0-dev"
}
},
"autoload": {
@@ -5928,7 +6047,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/type/issues",
"security": "https://github.com/sebastianbergmann/type/security/policy",
- "source": "https://github.com/sebastianbergmann/type/tree/6.0.3"
+ "source": "https://github.com/sebastianbergmann/type/tree/7.0.1"
},
"funding": [
{
@@ -5948,29 +6067,29 @@
"type": "tidelift"
}
],
- "time": "2025-08-09T06:57:12+00:00"
+ "time": "2026-05-20T06:49:11+00:00"
},
{
"name": "sebastian/version",
- "version": "6.0.0",
+ "version": "7.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/version.git",
- "reference": "3e6ccf7657d4f0a59200564b08cead899313b53c"
+ "reference": "ad37a5552c8e2b88572249fdc19b6da7792e021b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/3e6ccf7657d4f0a59200564b08cead899313b53c",
- "reference": "3e6ccf7657d4f0a59200564b08cead899313b53c",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/ad37a5552c8e2b88572249fdc19b6da7792e021b",
+ "reference": "ad37a5552c8e2b88572249fdc19b6da7792e021b",
"shasum": ""
},
"require": {
- "php": ">=8.3"
+ "php": ">=8.4"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "6.0-dev"
+ "dev-main": "7.0-dev"
}
},
"autoload": {
@@ -5994,28 +6113,40 @@
"support": {
"issues": "https://github.com/sebastianbergmann/version/issues",
"security": "https://github.com/sebastianbergmann/version/security/policy",
- "source": "https://github.com/sebastianbergmann/version/tree/6.0.0"
+ "source": "https://github.com/sebastianbergmann/version/tree/7.0.0"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/version",
+ "type": "tidelift"
}
],
- "time": "2025-02-07T05:00:38+00:00"
+ "time": "2026-02-06T04:52:52+00:00"
},
{
"name": "seld/jsonlint",
- "version": "1.11.0",
+ "version": "1.12.1",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/jsonlint.git",
- "reference": "1748aaf847fc731cfad7725aec413ee46f0cc3a2"
+ "reference": "9a90eb5d32d5a500296bf43f946d60246444d5f7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/1748aaf847fc731cfad7725aec413ee46f0cc3a2",
- "reference": "1748aaf847fc731cfad7725aec413ee46f0cc3a2",
+ "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/9a90eb5d32d5a500296bf43f946d60246444d5f7",
+ "reference": "9a90eb5d32d5a500296bf43f946d60246444d5f7",
"shasum": ""
},
"require": {
@@ -6054,7 +6185,7 @@
],
"support": {
"issues": "https://github.com/Seldaek/jsonlint/issues",
- "source": "https://github.com/Seldaek/jsonlint/tree/1.11.0"
+ "source": "https://github.com/Seldaek/jsonlint/tree/1.12.1"
},
"funding": [
{
@@ -6066,7 +6197,7 @@
"type": "tidelift"
}
],
- "time": "2024-07-11T14:55:45+00:00"
+ "time": "2026-06-12T11:32:29+00:00"
},
{
"name": "seld/phar-utils",
@@ -6179,49 +6310,60 @@
},
{
"name": "shipmonk/dead-code-detector",
- "version": "0.13.3",
+ "version": "1.2.1",
"source": {
"type": "git",
"url": "https://github.com/shipmonk-rnd/dead-code-detector.git",
- "reference": "40ab4426238c26aa0ddb963b41ffd438450153a1"
+ "reference": "b2f49bbcf6246c2058b2b7c6770bc6db06def5b2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/shipmonk-rnd/dead-code-detector/zipball/40ab4426238c26aa0ddb963b41ffd438450153a1",
- "reference": "40ab4426238c26aa0ddb963b41ffd438450153a1",
+ "url": "https://api.github.com/repos/shipmonk-rnd/dead-code-detector/zipball/b2f49bbcf6246c2058b2b7c6770bc6db06def5b2",
+ "reference": "b2f49bbcf6246c2058b2b7c6770bc6db06def5b2",
"shasum": ""
},
"require": {
- "php": "^7.4 || ^8.0",
- "phpstan/phpstan": "^2.1.12"
+ "php": "^8.1",
+ "phpstan/phpstan": "^2.1.41"
},
"require-dev": {
+ "behat/behat": "^3.14",
"composer-runtime-api": "^2.0",
"composer/semver": "^3.4",
"doctrine/orm": "^2.19 || ^3.0",
- "editorconfig-checker/editorconfig-checker": "^10.6.0",
- "ergebnis/composer-normalize": "^2.45.0",
+ "editorconfig-checker/editorconfig-checker": "^10.7.0",
+ "ergebnis/composer-normalize": "^2.48.1",
+ "laravel/framework": "^10.0 || ^11.0 || ^12.0",
"nette/application": "^3.1",
"nette/component-model": "^3.0",
+ "nette/neon": "^3.4",
+ "nette/tester": "^2.4",
"nette/utils": "^3.0 || ^4.0",
"nikic/php-parser": "^5.4.0",
- "phpstan/phpstan-phpunit": "^2.0.4",
- "phpstan/phpstan-strict-rules": "^2.0.3",
- "phpstan/phpstan-symfony": "^2.0.2",
- "phpunit/phpcov": "^8.2",
- "phpunit/phpunit": "^9.6.22",
- "shipmonk/coding-standard": "^0.1.3",
- "shipmonk/composer-dependency-analyser": "^1.8.2",
+ "phpbench/phpbench": "^1.2",
+ "phpstan/phpstan-phpunit": "^2.0.16",
+ "phpstan/phpstan-strict-rules": "^2.0.10",
+ "phpstan/phpstan-symfony": "^2.0.15",
+ "phpunit/phpcov": "^9.0.2",
+ "phpunit/phpunit": "^10.5.46",
+ "shipmonk/coding-standard": "^0.2.2",
+ "shipmonk/composer-dependency-analyser": "^1.8.4",
+ "shipmonk/coverage-guard": "^1.0.2",
"shipmonk/name-collision-detector": "^2.1.1",
- "shipmonk/phpstan-dev": "^0.1.1",
- "shipmonk/phpstan-rules": "^4.1.0",
- "symfony/contracts": "^2.5 || ^3.0",
- "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0",
- "symfony/doctrine-bridge": "^5.4 || ^6.0 || ^7.0",
- "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0",
- "symfony/http-kernel": "^5.4 || ^6.0 || ^7.0",
- "symfony/routing": "^5.4 || ^6.0 || ^7.0",
- "symfony/validator": "^5.4 || ^6.0 || ^7.0",
+ "shipmonk/phpstan-dev": "^0.1.6",
+ "shipmonk/phpstan-rules": "^4.3.6",
+ "symfony/contracts": "^2.5 || ^3.0 || ^4.0",
+ "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0 || ^8.0",
+ "symfony/doctrine-bridge": "^5.4 || ^6.0 || ^7.0 || ^8.0",
+ "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0 || ^8.0",
+ "symfony/form": "^5.4 || ^6.0 || ^7.0 || ^8.0",
+ "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0 || ^8.0",
+ "symfony/http-kernel": "^5.4 || ^6.0 || ^7.0 || ^8.0",
+ "symfony/routing": "^5.4 || ^6.0 || ^7.0 || ^8.0",
+ "symfony/scheduler": "^6.3 || ^7.0 || ^8.0",
+ "symfony/ux-live-component": "^2.34",
+ "symfony/ux-twig-component": "^2.34",
+ "symfony/validator": "^5.4 || ^6.0 || ^7.0 || ^8.0",
"twig/twig": "^3.0"
},
"type": "phpstan-extension",
@@ -6250,27 +6392,27 @@
],
"support": {
"issues": "https://github.com/shipmonk-rnd/dead-code-detector/issues",
- "source": "https://github.com/shipmonk-rnd/dead-code-detector/tree/0.13.3"
+ "source": "https://github.com/shipmonk-rnd/dead-code-detector/tree/1.2.1"
},
- "time": "2025-09-01T09:03:40+00:00"
+ "time": "2026-06-12T07:26:41+00:00"
},
{
"name": "shipmonk/phpstan-rules",
- "version": "4.2.1",
+ "version": "4.4.0",
"source": {
"type": "git",
"url": "https://github.com/shipmonk-rnd/phpstan-rules.git",
- "reference": "2c3a585230138ce1f4b276fe203cc378693dece8"
+ "reference": "5c972b16fa6d202d0d0d2c888e29f7d9fc0a9908"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/shipmonk-rnd/phpstan-rules/zipball/2c3a585230138ce1f4b276fe203cc378693dece8",
- "reference": "2c3a585230138ce1f4b276fe203cc378693dece8",
+ "url": "https://api.github.com/repos/shipmonk-rnd/phpstan-rules/zipball/5c972b16fa6d202d0d0d2c888e29f7d9fc0a9908",
+ "reference": "5c972b16fa6d202d0d0d2c888e29f7d9fc0a9908",
"shasum": ""
},
"require": {
- "php": "^7.4 || ^8.0",
- "phpstan/phpstan": "^2.1.8"
+ "php": "^8.1",
+ "phpstan/phpstan": "^2.1.33"
},
"require-dev": {
"editorconfig-checker/editorconfig-checker": "^10.6.0",
@@ -6278,12 +6420,13 @@
"phpstan/phpstan-deprecation-rules": "^2.0.1",
"phpstan/phpstan-phpunit": "^2.0.4",
"phpstan/phpstan-strict-rules": "^2.0.3",
- "phpunit/phpunit": "^9.6.22",
- "shipmonk/coding-standard": "^0.1.3",
+ "phpunit/phpunit": "^10.5.46",
+ "shipmonk/coding-standard": "^0.2.0",
"shipmonk/composer-dependency-analyser": "^1.8.1",
- "shipmonk/dead-code-detector": "^0.9.0",
+ "shipmonk/coverage-guard": "^1.0.0",
+ "shipmonk/dead-code-detector": "^1.0",
"shipmonk/name-collision-detector": "^2.1.1",
- "shipmonk/phpstan-dev": "^0.1.1"
+ "shipmonk/phpstan-dev": "^0.1.5"
},
"type": "phpstan-extension",
"extra": {
@@ -6309,38 +6452,38 @@
],
"support": {
"issues": "https://github.com/shipmonk-rnd/phpstan-rules/issues",
- "source": "https://github.com/shipmonk-rnd/phpstan-rules/tree/4.2.1"
+ "source": "https://github.com/shipmonk-rnd/phpstan-rules/tree/4.4.0"
},
- "time": "2025-09-04T07:48:25+00:00"
+ "time": "2026-05-18T12:07:24+00:00"
},
{
"name": "slevomat/coding-standard",
- "version": "8.22.1",
+ "version": "8.29.0",
"source": {
"type": "git",
"url": "https://github.com/slevomat/coding-standard.git",
- "reference": "1dd80bf3b93692bedb21a6623c496887fad05fec"
+ "reference": "81fce13c4ef4b53a03e5cfa6ce36afc191c1598e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/1dd80bf3b93692bedb21a6623c496887fad05fec",
- "reference": "1dd80bf3b93692bedb21a6623c496887fad05fec",
+ "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/81fce13c4ef4b53a03e5cfa6ce36afc191c1598e",
+ "reference": "81fce13c4ef4b53a03e5cfa6ce36afc191c1598e",
"shasum": ""
},
"require": {
- "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7 || ^1.1.2",
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7 || ^1.2.1",
"php": "^7.4 || ^8.0",
- "phpstan/phpdoc-parser": "^2.3.0",
- "squizlabs/php_codesniffer": "^3.13.4"
+ "phpstan/phpdoc-parser": "^2.3.2",
+ "squizlabs/php_codesniffer": "^4.0.1"
},
"require-dev": {
- "phing/phing": "3.0.1|3.1.0",
+ "phing/phing": "3.0.1|3.1.2",
"php-parallel-lint/php-parallel-lint": "1.4.0",
- "phpstan/phpstan": "2.1.24",
- "phpstan/phpstan-deprecation-rules": "2.0.3",
- "phpstan/phpstan-phpunit": "2.0.7",
- "phpstan/phpstan-strict-rules": "2.0.6",
- "phpunit/phpunit": "9.6.8|10.5.48|11.4.4|11.5.36|12.3.10"
+ "phpstan/phpstan": "2.1.54",
+ "phpstan/phpstan-deprecation-rules": "2.0.4",
+ "phpstan/phpstan-phpunit": "2.0.16",
+ "phpstan/phpstan-strict-rules": "2.0.11",
+ "phpunit/phpunit": "9.6.34|10.5.63|11.4.4|11.5.55|12.5.24"
},
"type": "phpcodesniffer-standard",
"extra": {
@@ -6364,7 +6507,7 @@
],
"support": {
"issues": "https://github.com/slevomat/coding-standard/issues",
- "source": "https://github.com/slevomat/coding-standard/tree/8.22.1"
+ "source": "https://github.com/slevomat/coding-standard/tree/8.29.0"
},
"funding": [
{
@@ -6376,41 +6519,36 @@
"type": "tidelift"
}
],
- "time": "2025-09-13T08:53:30+00:00"
+ "time": "2026-05-07T05:48:08+00:00"
},
{
"name": "squizlabs/php_codesniffer",
- "version": "3.13.4",
+ "version": "4.0.1",
"source": {
"type": "git",
"url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git",
- "reference": "ad545ea9c1b7d270ce0fc9cbfb884161cd706119"
+ "reference": "0525c73950de35ded110cffafb9892946d7771b5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/ad545ea9c1b7d270ce0fc9cbfb884161cd706119",
- "reference": "ad545ea9c1b7d270ce0fc9cbfb884161cd706119",
+ "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/0525c73950de35ded110cffafb9892946d7771b5",
+ "reference": "0525c73950de35ded110cffafb9892946d7771b5",
"shasum": ""
},
"require": {
"ext-simplexml": "*",
"ext-tokenizer": "*",
"ext-xmlwriter": "*",
- "php": ">=5.4.0"
+ "php": ">=7.2.0"
},
"require-dev": {
- "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4"
+ "phpunit/phpunit": "^8.4.0 || ^9.3.4 || ^10.5.32 || 11.3.3 - 11.5.28 || ^11.5.31"
},
"bin": [
"bin/phpcbf",
"bin/phpcs"
],
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.x-dev"
- }
- },
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
@@ -6429,7 +6567,7 @@
"homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors"
}
],
- "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
+ "description": "PHP_CodeSniffer tokenizes PHP files and detects violations of a defined set of coding standards.",
"homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer",
"keywords": [
"phpcs",
@@ -6460,7 +6598,7 @@
"type": "thanks_dev"
}
],
- "time": "2025-09-05T05:47:09+00:00"
+ "time": "2025-11-10T16:43:36+00:00"
},
{
"name": "staabm/phpstan-psr3",
@@ -6587,34 +6725,33 @@
},
{
"name": "symfony/config",
- "version": "v7.3.2",
+ "version": "v8.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
- "reference": "faef36e271bbeb74a9d733be4b56419b157762e2"
+ "reference": "429783a0c649696f2058ea5ab5315f082dba6de9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/config/zipball/faef36e271bbeb74a9d733be4b56419b157762e2",
- "reference": "faef36e271bbeb74a9d733be4b56419b157762e2",
+ "url": "https://api.github.com/repos/symfony/config/zipball/429783a0c649696f2058ea5ab5315f082dba6de9",
+ "reference": "429783a0c649696f2058ea5ab5315f082dba6de9",
"shasum": ""
},
"require": {
- "php": ">=8.2",
+ "php": ">=8.4.1",
"symfony/deprecation-contracts": "^2.5|^3",
- "symfony/filesystem": "^7.1",
- "symfony/polyfill-ctype": "~1.8"
+ "symfony/filesystem": "^7.4|^8.0",
+ "symfony/polyfill-ctype": "^1.8"
},
"conflict": {
- "symfony/finder": "<6.4",
"symfony/service-contracts": "<2.5"
},
"require-dev": {
- "symfony/event-dispatcher": "^6.4|^7.0",
- "symfony/finder": "^6.4|^7.0",
- "symfony/messenger": "^6.4|^7.0",
+ "symfony/event-dispatcher": "^7.4|^8.0",
+ "symfony/finder": "^7.4|^8.0",
+ "symfony/messenger": "^7.4|^8.0",
"symfony/service-contracts": "^2.5|^3",
- "symfony/yaml": "^6.4|^7.0"
+ "symfony/yaml": "^7.4|^8.0"
},
"type": "library",
"autoload": {
@@ -6642,7 +6779,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/v7.3.2"
+ "source": "https://github.com/symfony/config/tree/v8.1.0"
},
"funding": [
{
@@ -6662,20 +6799,20 @@
"type": "tidelift"
}
],
- "time": "2025-07-26T13:55:06+00:00"
+ "time": "2026-05-29T05:06:50+00:00"
},
{
"name": "symfony/console",
- "version": "v7.3.3",
+ "version": "v7.4.13",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7"
+ "reference": "85095d2573eaefaf35e40b9513a9bf09f72cd217"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7",
- "reference": "cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7",
+ "url": "https://api.github.com/repos/symfony/console/zipball/85095d2573eaefaf35e40b9513a9bf09f72cd217",
+ "reference": "85095d2573eaefaf35e40b9513a9bf09f72cd217",
"shasum": ""
},
"require": {
@@ -6683,7 +6820,7 @@
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-mbstring": "~1.0",
"symfony/service-contracts": "^2.5|^3",
- "symfony/string": "^7.2"
+ "symfony/string": "^7.2|^8.0"
},
"conflict": {
"symfony/dependency-injection": "<6.4",
@@ -6697,16 +6834,16 @@
},
"require-dev": {
"psr/log": "^1|^2|^3",
- "symfony/config": "^6.4|^7.0",
- "symfony/dependency-injection": "^6.4|^7.0",
- "symfony/event-dispatcher": "^6.4|^7.0",
- "symfony/http-foundation": "^6.4|^7.0",
- "symfony/http-kernel": "^6.4|^7.0",
- "symfony/lock": "^6.4|^7.0",
- "symfony/messenger": "^6.4|^7.0",
- "symfony/process": "^6.4|^7.0",
- "symfony/stopwatch": "^6.4|^7.0",
- "symfony/var-dumper": "^6.4|^7.0"
+ "symfony/config": "^6.4|^7.0|^8.0",
+ "symfony/dependency-injection": "^6.4|^7.0|^8.0",
+ "symfony/event-dispatcher": "^6.4|^7.0|^8.0",
+ "symfony/http-foundation": "^6.4|^7.0|^8.0",
+ "symfony/http-kernel": "^6.4|^7.0|^8.0",
+ "symfony/lock": "^6.4|^7.0|^8.0",
+ "symfony/messenger": "^6.4|^7.0|^8.0",
+ "symfony/process": "^6.4|^7.0|^8.0",
+ "symfony/stopwatch": "^6.4|^7.0|^8.0",
+ "symfony/var-dumper": "^6.4|^7.0|^8.0"
},
"type": "library",
"autoload": {
@@ -6740,7 +6877,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v7.3.3"
+ "source": "https://github.com/symfony/console/tree/v7.4.13"
},
"funding": [
{
@@ -6760,43 +6897,40 @@
"type": "tidelift"
}
],
- "time": "2025-08-25T06:35:40+00:00"
+ "time": "2026-05-24T08:56:14+00:00"
},
{
"name": "symfony/dependency-injection",
- "version": "v7.3.3",
+ "version": "v8.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
- "reference": "ab6c38dad5da9b15b1f7afb2f5c5814112e70261"
+ "reference": "b6ba1f45127106885de4b77558c5ecca8feb1e1b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/ab6c38dad5da9b15b1f7afb2f5c5814112e70261",
- "reference": "ab6c38dad5da9b15b1f7afb2f5c5814112e70261",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/b6ba1f45127106885de4b77558c5ecca8feb1e1b",
+ "reference": "b6ba1f45127106885de4b77558c5ecca8feb1e1b",
"shasum": ""
},
"require": {
- "php": ">=8.2",
+ "php": ">=8.4.1",
"psr/container": "^1.1|^2.0",
"symfony/deprecation-contracts": "^2.5|^3",
- "symfony/service-contracts": "^3.5",
- "symfony/var-exporter": "^6.4.20|^7.2.5"
+ "symfony/service-contracts": "^3.6",
+ "symfony/var-exporter": "^8.1"
},
"conflict": {
- "ext-psr": "<1.1|>=2",
- "symfony/config": "<6.4",
- "symfony/finder": "<6.4",
- "symfony/yaml": "<6.4"
+ "ext-psr": "<1.1|>=2"
},
"provide": {
"psr/container-implementation": "1.1|2.0",
"symfony/service-implementation": "1.1|2.0|3.0"
},
"require-dev": {
- "symfony/config": "^6.4|^7.0",
- "symfony/expression-language": "^6.4|^7.0",
- "symfony/yaml": "^6.4|^7.0"
+ "symfony/config": "^7.4|^8.0",
+ "symfony/expression-language": "^7.4|^8.0",
+ "symfony/yaml": "^7.4|^8.0"
},
"type": "library",
"autoload": {
@@ -6824,7 +6958,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/v7.3.3"
+ "source": "https://github.com/symfony/dependency-injection/tree/v8.1.0"
},
"funding": [
{
@@ -6844,20 +6978,20 @@
"type": "tidelift"
}
],
- "time": "2025-08-14T09:54:27+00:00"
+ "time": "2026-05-29T05:06:50+00:00"
},
{
"name": "symfony/deprecation-contracts",
- "version": "v3.6.0",
+ "version": "v3.7.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
- "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62"
+ "reference": "50f59d1f3ca46d41ac911f97a78626b6756af35b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62",
- "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/50f59d1f3ca46d41ac911f97a78626b6756af35b",
+ "reference": "50f59d1f3ca46d41ac911f97a78626b6756af35b",
"shasum": ""
},
"require": {
@@ -6870,7 +7004,7 @@
"name": "symfony/contracts"
},
"branch-alias": {
- "dev-main": "3.6-dev"
+ "dev-main": "3.7-dev"
}
},
"autoload": {
@@ -6895,7 +7029,7 @@
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0"
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.7.0"
},
"funding": [
{
@@ -6906,34 +7040,39 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2024-09-25T14:21:43+00:00"
+ "time": "2026-04-13T15:52:40+00:00"
},
{
"name": "symfony/filesystem",
- "version": "v7.3.2",
+ "version": "v8.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "edcbb768a186b5c3f25d0643159a787d3e63b7fd"
+ "reference": "99aec13b82b4967ec5088222c4a3ecca955949c2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/edcbb768a186b5c3f25d0643159a787d3e63b7fd",
- "reference": "edcbb768a186b5c3f25d0643159a787d3e63b7fd",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/99aec13b82b4967ec5088222c4a3ecca955949c2",
+ "reference": "99aec13b82b4967ec5088222c4a3ecca955949c2",
"shasum": ""
},
"require": {
- "php": ">=8.2",
+ "php": ">=8.4.1",
+ "symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-mbstring": "~1.8"
},
"require-dev": {
- "symfony/process": "^6.4|^7.0"
+ "symfony/process": "^7.4|^8.0"
},
"type": "library",
"autoload": {
@@ -6961,7 +7100,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/filesystem/tree/v7.3.2"
+ "source": "https://github.com/symfony/filesystem/tree/v8.1.0"
},
"funding": [
{
@@ -6981,27 +7120,27 @@
"type": "tidelift"
}
],
- "time": "2025-07-07T08:17:47+00:00"
+ "time": "2026-05-29T05:06:50+00:00"
},
{
"name": "symfony/finder",
- "version": "v7.3.2",
+ "version": "v8.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
- "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe"
+ "reference": "58d2e767a66052c1487356f953445634a8194c64"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/2a6614966ba1074fa93dae0bc804227422df4dfe",
- "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/58d2e767a66052c1487356f953445634a8194c64",
+ "reference": "58d2e767a66052c1487356f953445634a8194c64",
"shasum": ""
},
"require": {
- "php": ">=8.2"
+ "php": ">=8.4.1"
},
"require-dev": {
- "symfony/filesystem": "^6.4|^7.0"
+ "symfony/filesystem": "^7.4|^8.0"
},
"type": "library",
"autoload": {
@@ -7029,7 +7168,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/finder/tree/v7.3.2"
+ "source": "https://github.com/symfony/finder/tree/v8.1.0"
},
"funding": [
{
@@ -7049,20 +7188,20 @@
"type": "tidelift"
}
],
- "time": "2025-07-15T13:41:35+00:00"
+ "time": "2026-05-29T05:06:50+00:00"
},
{
"name": "symfony/polyfill-ctype",
- "version": "v1.33.0",
+ "version": "v1.37.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638"
+ "reference": "141046a8f9477948ff284fa65be2095baafb94f2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638",
- "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/141046a8f9477948ff284fa65be2095baafb94f2",
+ "reference": "141046a8f9477948ff284fa65be2095baafb94f2",
"shasum": ""
},
"require": {
@@ -7112,7 +7251,7 @@
"portable"
],
"support": {
- "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0"
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.37.0"
},
"funding": [
{
@@ -7132,20 +7271,107 @@
"type": "tidelift"
}
],
- "time": "2024-09-09T11:45:10+00:00"
+ "time": "2026-04-10T16:19:22+00:00"
+ },
+ {
+ "name": "symfony/polyfill-deepclone",
+ "version": "v1.40.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-deepclone.git",
+ "reference": "dca4ccba5f360070b574414dce4c1e7a559844fa"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-deepclone/zipball/dca4ccba5f360070b574414dce4c1e7a559844fa",
+ "reference": "dca4ccba5f360070b574414dce4c1e7a559844fa",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1"
+ },
+ "provide": {
+ "ext-deepclone": "*"
+ },
+ "suggest": {
+ "ext-deepclone": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\DeepClone\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the deepclone extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "deepclone",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-deepclone/tree/v1.40.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2026-06-12T07:27:17+00:00"
},
{
"name": "symfony/polyfill-intl-grapheme",
- "version": "v1.33.0",
+ "version": "v1.38.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
- "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70"
+ "reference": "e9247d281d694a5120554d9afaf54e070e88a603"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70",
- "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/e9247d281d694a5120554d9afaf54e070e88a603",
+ "reference": "e9247d281d694a5120554d9afaf54e070e88a603",
"shasum": ""
},
"require": {
@@ -7194,7 +7420,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0"
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.38.1"
},
"funding": [
{
@@ -7214,20 +7440,20 @@
"type": "tidelift"
}
],
- "time": "2025-06-27T09:58:17+00:00"
+ "time": "2026-05-26T05:58:03+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
- "version": "v1.33.0",
+ "version": "v1.38.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
- "reference": "3833d7255cc303546435cb650316bff708a1c75c"
+ "reference": "2d446c214bdbe5b71bde5011b060a05fece3ae6b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c",
- "reference": "3833d7255cc303546435cb650316bff708a1c75c",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/2d446c214bdbe5b71bde5011b060a05fece3ae6b",
+ "reference": "2d446c214bdbe5b71bde5011b060a05fece3ae6b",
"shasum": ""
},
"require": {
@@ -7279,7 +7505,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.0"
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.38.0"
},
"funding": [
{
@@ -7299,20 +7525,20 @@
"type": "tidelift"
}
],
- "time": "2024-09-09T11:45:10+00:00"
+ "time": "2026-05-25T13:48:31+00:00"
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.33.0",
+ "version": "v1.38.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493"
+ "reference": "d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493",
- "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6",
+ "reference": "d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6",
"shasum": ""
},
"require": {
@@ -7364,7 +7590,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0"
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.38.2"
},
"funding": [
{
@@ -7384,11 +7610,11 @@
"type": "tidelift"
}
],
- "time": "2024-12-23T08:48:59+00:00"
+ "time": "2026-05-27T06:59:30+00:00"
},
{
"name": "symfony/polyfill-php73",
- "version": "v1.33.0",
+ "version": "v1.37.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php73.git",
@@ -7444,7 +7670,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php73/tree/v1.33.0"
+ "source": "https://github.com/symfony/polyfill-php73/tree/v1.37.0"
},
"funding": [
{
@@ -7468,16 +7694,16 @@
},
{
"name": "symfony/polyfill-php80",
- "version": "v1.33.0",
+ "version": "v1.37.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608"
+ "reference": "dfb55726c3a76ea3b6459fcfda1ec2d80a682411"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608",
- "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dfb55726c3a76ea3b6459fcfda1ec2d80a682411",
+ "reference": "dfb55726c3a76ea3b6459fcfda1ec2d80a682411",
"shasum": ""
},
"require": {
@@ -7528,7 +7754,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0"
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.37.0"
},
"funding": [
{
@@ -7548,20 +7774,20 @@
"type": "tidelift"
}
],
- "time": "2025-01-02T08:10:11+00:00"
+ "time": "2026-04-10T16:19:22+00:00"
},
{
"name": "symfony/polyfill-php81",
- "version": "v1.33.0",
+ "version": "v1.38.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php81.git",
- "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c"
+ "reference": "6bfb9c766cacffbc8e118cb87217d08ed84e5cd7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c",
- "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c",
+ "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/6bfb9c766cacffbc8e118cb87217d08ed84e5cd7",
+ "reference": "6bfb9c766cacffbc8e118cb87217d08ed84e5cd7",
"shasum": ""
},
"require": {
@@ -7608,7 +7834,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php81/tree/v1.33.0"
+ "source": "https://github.com/symfony/polyfill-php81/tree/v1.38.1"
},
"funding": [
{
@@ -7628,20 +7854,20 @@
"type": "tidelift"
}
],
- "time": "2024-09-09T11:45:10+00:00"
+ "time": "2026-05-26T12:45:58+00:00"
},
{
"name": "symfony/polyfill-php84",
- "version": "v1.33.0",
+ "version": "v1.38.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php84.git",
- "reference": "d8ced4d875142b6a7426000426b8abc631d6b191"
+ "reference": "f4e1dfaee5b74aba5964fe1fd4dfc7ba5e3085fa"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/d8ced4d875142b6a7426000426b8abc631d6b191",
- "reference": "d8ced4d875142b6a7426000426b8abc631d6b191",
+ "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/f4e1dfaee5b74aba5964fe1fd4dfc7ba5e3085fa",
+ "reference": "f4e1dfaee5b74aba5964fe1fd4dfc7ba5e3085fa",
"shasum": ""
},
"require": {
@@ -7688,7 +7914,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php84/tree/v1.33.0"
+ "source": "https://github.com/symfony/polyfill-php84/tree/v1.38.1"
},
"funding": [
{
@@ -7708,24 +7934,104 @@
"type": "tidelift"
}
],
- "time": "2025-06-24T13:30:11+00:00"
+ "time": "2026-05-26T12:51:13+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php85",
+ "version": "v1.38.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php85.git",
+ "reference": "ba2ba04f3352cfa2dcbbcb90aee13ed967f505b1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php85/zipball/ba2ba04f3352cfa2dcbbcb90aee13ed967f505b1",
+ "reference": "ba2ba04f3352cfa2dcbbcb90aee13ed967f505b1",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php85\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.5+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php85/tree/v1.38.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2026-05-26T02:25:22+00:00"
},
{
"name": "symfony/process",
- "version": "v7.3.3",
+ "version": "v8.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
- "reference": "32241012d521e2e8a9d713adb0812bb773b907f1"
+ "reference": "c4a9e58f235a6bf7f97ffbfedae2687353ac79e5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/32241012d521e2e8a9d713adb0812bb773b907f1",
- "reference": "32241012d521e2e8a9d713adb0812bb773b907f1",
+ "url": "https://api.github.com/repos/symfony/process/zipball/c4a9e58f235a6bf7f97ffbfedae2687353ac79e5",
+ "reference": "c4a9e58f235a6bf7f97ffbfedae2687353ac79e5",
"shasum": ""
},
"require": {
- "php": ">=8.2"
+ "php": ">=8.4.1"
},
"type": "library",
"autoload": {
@@ -7753,7 +8059,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/process/tree/v7.3.3"
+ "source": "https://github.com/symfony/process/tree/v8.1.0"
},
"funding": [
{
@@ -7773,28 +8079,29 @@
"type": "tidelift"
}
],
- "time": "2025-08-18T09:42:54+00:00"
+ "time": "2026-05-29T05:06:50+00:00"
},
{
"name": "symfony/property-access",
- "version": "v7.3.3",
+ "version": "v8.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/property-access.git",
- "reference": "4a4389e5c8bd1d0320d80a23caa6a1ac71cb81a7"
+ "reference": "9261ef060f26cc7b728f67f141ba19b98a6209a9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/property-access/zipball/4a4389e5c8bd1d0320d80a23caa6a1ac71cb81a7",
- "reference": "4a4389e5c8bd1d0320d80a23caa6a1ac71cb81a7",
+ "url": "https://api.github.com/repos/symfony/property-access/zipball/9261ef060f26cc7b728f67f141ba19b98a6209a9",
+ "reference": "9261ef060f26cc7b728f67f141ba19b98a6209a9",
"shasum": ""
},
"require": {
- "php": ">=8.2",
- "symfony/property-info": "^6.4|^7.0"
+ "php": ">=8.4.1",
+ "symfony/property-info": "^7.4.4|^8.0.4"
},
"require-dev": {
- "symfony/cache": "^6.4|^7.0"
+ "symfony/cache": "^7.4|^8.0",
+ "symfony/var-exporter": "^7.4|^8.0"
},
"type": "library",
"autoload": {
@@ -7833,7 +8140,7 @@
"reflection"
],
"support": {
- "source": "https://github.com/symfony/property-access/tree/v7.3.3"
+ "source": "https://github.com/symfony/property-access/tree/v8.1.0"
},
"funding": [
{
@@ -7853,41 +8160,37 @@
"type": "tidelift"
}
],
- "time": "2025-08-04T15:15:28+00:00"
+ "time": "2026-05-29T05:06:50+00:00"
},
{
"name": "symfony/property-info",
- "version": "v7.3.1",
+ "version": "v8.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/property-info.git",
- "reference": "90586acbf2a6dd13bee4f09f09111c8bd4773970"
+ "reference": "4721e8c56d0cd2378e0ef9a9899f810008b859f7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/property-info/zipball/90586acbf2a6dd13bee4f09f09111c8bd4773970",
- "reference": "90586acbf2a6dd13bee4f09f09111c8bd4773970",
+ "url": "https://api.github.com/repos/symfony/property-info/zipball/4721e8c56d0cd2378e0ef9a9899f810008b859f7",
+ "reference": "4721e8c56d0cd2378e0ef9a9899f810008b859f7",
"shasum": ""
},
"require": {
- "php": ">=8.2",
- "symfony/deprecation-contracts": "^2.5|^3",
- "symfony/string": "^6.4|^7.0",
- "symfony/type-info": "~7.2.8|^7.3.1"
+ "php": ">=8.4.1",
+ "symfony/string": "^7.4|^8.0",
+ "symfony/type-info": "^7.4.7|^8.0.7"
},
"conflict": {
- "phpdocumentor/reflection-docblock": "<5.2",
- "phpdocumentor/type-resolver": "<1.5.1",
- "symfony/cache": "<6.4",
- "symfony/dependency-injection": "<6.4",
- "symfony/serializer": "<6.4"
+ "phpdocumentor/reflection-docblock": "<5.2|>=7",
+ "phpdocumentor/type-resolver": "<1.5.1"
},
"require-dev": {
- "phpdocumentor/reflection-docblock": "^5.2",
+ "phpdocumentor/reflection-docblock": "^5.2|^6.0",
"phpstan/phpdoc-parser": "^1.0|^2.0",
- "symfony/cache": "^6.4|^7.0",
- "symfony/dependency-injection": "^6.4|^7.0",
- "symfony/serializer": "^6.4|^7.0"
+ "symfony/cache": "^7.4|^8.0",
+ "symfony/dependency-injection": "^7.4|^8.0",
+ "symfony/serializer": "^7.4|^8.0"
},
"type": "library",
"autoload": {
@@ -7923,7 +8226,7 @@
"validator"
],
"support": {
- "source": "https://github.com/symfony/property-info/tree/v7.3.1"
+ "source": "https://github.com/symfony/property-info/tree/v8.1.0"
},
"funding": [
{
@@ -7934,67 +8237,67 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2025-06-27T19:55:54+00:00"
+ "time": "2026-05-29T05:06:50+00:00"
},
{
"name": "symfony/serializer",
- "version": "v7.3.3",
+ "version": "v8.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/serializer.git",
- "reference": "5608b04d8daaf29432d76ecc618b0fac169c2dfb"
+ "reference": "d101886195c5f772cf7033641fe9c40c3e3969e1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/serializer/zipball/5608b04d8daaf29432d76ecc618b0fac169c2dfb",
- "reference": "5608b04d8daaf29432d76ecc618b0fac169c2dfb",
+ "url": "https://api.github.com/repos/symfony/serializer/zipball/d101886195c5f772cf7033641fe9c40c3e3969e1",
+ "reference": "d101886195c5f772cf7033641fe9c40c3e3969e1",
"shasum": ""
},
"require": {
- "php": ">=8.2",
+ "php": ">=8.4.1",
"symfony/deprecation-contracts": "^2.5|^3",
- "symfony/polyfill-ctype": "~1.8",
- "symfony/polyfill-php84": "^1.30"
+ "symfony/polyfill-ctype": "^1.8"
},
"conflict": {
- "phpdocumentor/reflection-docblock": "<3.2.2",
- "phpdocumentor/type-resolver": "<1.4.0",
- "symfony/dependency-injection": "<6.4",
- "symfony/property-access": "<6.4",
- "symfony/property-info": "<6.4",
- "symfony/uid": "<6.4",
- "symfony/validator": "<6.4",
- "symfony/yaml": "<6.4"
+ "phpdocumentor/reflection-docblock": "<5.2|>=7",
+ "phpdocumentor/type-resolver": "<1.5.1",
+ "symfony/property-access": "<8.1",
+ "symfony/property-info": "<7.4",
+ "symfony/type-info": "<7.4"
},
"require-dev": {
- "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0",
+ "phpdocumentor/reflection-docblock": "^5.2|^6.0",
"phpstan/phpdoc-parser": "^1.0|^2.0",
"seld/jsonlint": "^1.10",
- "symfony/cache": "^6.4|^7.0",
- "symfony/config": "^6.4|^7.0",
- "symfony/console": "^6.4|^7.0",
- "symfony/dependency-injection": "^7.2",
- "symfony/error-handler": "^6.4|^7.0",
- "symfony/filesystem": "^6.4|^7.0",
- "symfony/form": "^6.4|^7.0",
- "symfony/http-foundation": "^6.4|^7.0",
- "symfony/http-kernel": "^6.4|^7.0",
- "symfony/messenger": "^6.4|^7.0",
- "symfony/mime": "^6.4|^7.0",
- "symfony/property-access": "^6.4|^7.0",
- "symfony/property-info": "^6.4|^7.0",
+ "symfony/cache": "^7.4|^8.0",
+ "symfony/config": "^7.4|^8.0",
+ "symfony/console": "^7.4|^8.0",
+ "symfony/dependency-injection": "^7.4|^8.0",
+ "symfony/error-handler": "^7.4|^8.0",
+ "symfony/filesystem": "^7.4|^8.0",
+ "symfony/form": "^7.4|^8.0",
+ "symfony/http-foundation": "^7.4|^8.0",
+ "symfony/http-kernel": "^7.4|^8.0",
+ "symfony/messenger": "^7.4|^8.0",
+ "symfony/mime": "^7.4|^8.0",
+ "symfony/property-access": "^8.1",
+ "symfony/property-info": "^7.4|^8.0",
"symfony/translation-contracts": "^2.5|^3",
- "symfony/type-info": "^7.1.8",
- "symfony/uid": "^6.4|^7.0",
- "symfony/validator": "^6.4|^7.0",
- "symfony/var-dumper": "^6.4|^7.0",
- "symfony/var-exporter": "^6.4|^7.0",
- "symfony/yaml": "^6.4|^7.0"
+ "symfony/type-info": "^7.4|^8.0",
+ "symfony/uid": "^7.4|^8.0",
+ "symfony/validator": "^7.4|^8.0",
+ "symfony/var-dumper": "^7.4|^8.0",
+ "symfony/var-exporter": "^7.4|^8.0",
+ "symfony/yaml": "^7.4|^8.0"
},
"type": "library",
"autoload": {
@@ -8022,7 +8325,7 @@
"description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/serializer/tree/v7.3.3"
+ "source": "https://github.com/symfony/serializer/tree/v8.1.0"
},
"funding": [
{
@@ -8042,20 +8345,20 @@
"type": "tidelift"
}
],
- "time": "2025-08-27T11:34:33+00:00"
+ "time": "2026-05-29T05:06:50+00:00"
},
{
"name": "symfony/service-contracts",
- "version": "v3.6.0",
+ "version": "v3.7.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
- "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4"
+ "reference": "d25d82433a80eba6aa0e6c24b61d7370d99e444a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4",
- "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d25d82433a80eba6aa0e6c24b61d7370d99e444a",
+ "reference": "d25d82433a80eba6aa0e6c24b61d7370d99e444a",
"shasum": ""
},
"require": {
@@ -8073,7 +8376,7 @@
"name": "symfony/contracts"
},
"branch-alias": {
- "dev-main": "3.6-dev"
+ "dev-main": "3.7-dev"
}
},
"autoload": {
@@ -8109,7 +8412,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/service-contracts/tree/v3.6.0"
+ "source": "https://github.com/symfony/service-contracts/tree/v3.7.0"
},
"funding": [
{
@@ -8120,44 +8423,47 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2025-04-25T09:37:31+00:00"
+ "time": "2026-03-28T09:44:51+00:00"
},
{
"name": "symfony/string",
- "version": "v7.3.3",
+ "version": "v8.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "17a426cce5fd1f0901fefa9b2a490d0038fd3c9c"
+ "reference": "afd5944f4005862d961efb85c8bbd5c523c4e3c9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/17a426cce5fd1f0901fefa9b2a490d0038fd3c9c",
- "reference": "17a426cce5fd1f0901fefa9b2a490d0038fd3c9c",
+ "url": "https://api.github.com/repos/symfony/string/zipball/afd5944f4005862d961efb85c8bbd5c523c4e3c9",
+ "reference": "afd5944f4005862d961efb85c8bbd5c523c4e3c9",
"shasum": ""
},
"require": {
- "php": ">=8.2",
- "symfony/polyfill-ctype": "~1.8",
- "symfony/polyfill-intl-grapheme": "~1.0",
- "symfony/polyfill-intl-normalizer": "~1.0",
- "symfony/polyfill-mbstring": "~1.0"
+ "php": ">=8.4.1",
+ "symfony/polyfill-ctype": "^1.8",
+ "symfony/polyfill-intl-grapheme": "^1.33",
+ "symfony/polyfill-intl-normalizer": "^1.0",
+ "symfony/polyfill-mbstring": "^1.0"
},
"conflict": {
"symfony/translation-contracts": "<2.5"
},
"require-dev": {
- "symfony/emoji": "^7.1",
- "symfony/error-handler": "^6.4|^7.0",
- "symfony/http-client": "^6.4|^7.0",
- "symfony/intl": "^6.4|^7.0",
+ "symfony/emoji": "^7.4|^8.0",
+ "symfony/http-client": "^7.4|^8.0",
+ "symfony/intl": "^7.4|^8.0",
"symfony/translation-contracts": "^2.5|^3.0",
- "symfony/var-exporter": "^6.4|^7.0"
+ "symfony/var-exporter": "^7.4|^8.0"
},
"type": "library",
"autoload": {
@@ -8196,7 +8502,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v7.3.3"
+ "source": "https://github.com/symfony/string/tree/v8.1.0"
},
"funding": [
{
@@ -8216,26 +8522,25 @@
"type": "tidelift"
}
],
- "time": "2025-08-25T06:35:40+00:00"
+ "time": "2026-05-29T05:06:50+00:00"
},
{
"name": "symfony/type-info",
- "version": "v7.3.3",
+ "version": "v8.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/type-info.git",
- "reference": "aa64b58ed04517d4d730202dd035895743c23273"
+ "reference": "9f24df8a79781b9b9f030fea7dfd2f3bd1e7e7e7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/type-info/zipball/aa64b58ed04517d4d730202dd035895743c23273",
- "reference": "aa64b58ed04517d4d730202dd035895743c23273",
+ "url": "https://api.github.com/repos/symfony/type-info/zipball/9f24df8a79781b9b9f030fea7dfd2f3bd1e7e7e7",
+ "reference": "9f24df8a79781b9b9f030fea7dfd2f3bd1e7e7e7",
"shasum": ""
},
"require": {
- "php": ">=8.2",
- "psr/container": "^1.1|^2.0",
- "symfony/deprecation-contracts": "^2.5|^3"
+ "php": ">=8.4.1",
+ "psr/container": "^1.1|^2.0"
},
"conflict": {
"phpstan/phpdoc-parser": "<1.30"
@@ -8279,7 +8584,7 @@
"type"
],
"support": {
- "source": "https://github.com/symfony/type-info/tree/v7.3.3"
+ "source": "https://github.com/symfony/type-info/tree/v8.1.0"
},
"funding": [
{
@@ -8299,30 +8604,31 @@
"type": "tidelift"
}
],
- "time": "2025-08-28T09:38:04+00:00"
+ "time": "2026-05-29T05:06:50+00:00"
},
{
"name": "symfony/var-exporter",
- "version": "v7.3.3",
+ "version": "v8.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-exporter.git",
- "reference": "d4dfcd2a822cbedd7612eb6fbd260e46f87b7137"
+ "reference": "2dd18582c5f6c024db9fc0ff9c76d873af726f34"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-exporter/zipball/d4dfcd2a822cbedd7612eb6fbd260e46f87b7137",
- "reference": "d4dfcd2a822cbedd7612eb6fbd260e46f87b7137",
+ "url": "https://api.github.com/repos/symfony/var-exporter/zipball/2dd18582c5f6c024db9fc0ff9c76d873af726f34",
+ "reference": "2dd18582c5f6c024db9fc0ff9c76d873af726f34",
"shasum": ""
},
"require": {
- "php": ">=8.2",
- "symfony/deprecation-contracts": "^2.5|^3"
+ "php": ">=8.4.1",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/polyfill-deepclone": "^1.37"
},
"require-dev": {
- "symfony/property-access": "^6.4|^7.0",
- "symfony/serializer": "^6.4|^7.0",
- "symfony/var-dumper": "^6.4|^7.0"
+ "symfony/property-access": "^7.4|^8.0",
+ "symfony/serializer": "^7.4|^8.0",
+ "symfony/var-dumper": "^7.4|^8.0"
},
"type": "library",
"autoload": {
@@ -8347,11 +8653,12 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Allows exporting any serializable PHP data structure to plain PHP code",
+ "description": "Provides tools to export, instantiate, hydrate, clone and lazy-load PHP objects",
"homepage": "https://symfony.com",
"keywords": [
"clone",
"construct",
+ "deep-clone",
"export",
"hydrate",
"instantiate",
@@ -8360,7 +8667,7 @@
"serialize"
],
"support": {
- "source": "https://github.com/symfony/var-exporter/tree/v7.3.3"
+ "source": "https://github.com/symfony/var-exporter/tree/v8.1.0"
},
"funding": [
{
@@ -8380,20 +8687,77 @@
"type": "tidelift"
}
],
- "time": "2025-08-18T13:10:53+00:00"
+ "time": "2026-05-29T05:06:50+00:00"
+ },
+ {
+ "name": "symplify/phpstan-extensions",
+ "version": "12.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symplify/phpstan-extensions.git",
+ "reference": "5ce15cb084eb3bc7f92b77020c59ff3d318746d5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symplify/phpstan-extensions/zipball/5ce15cb084eb3bc7f92b77020c59ff3d318746d5",
+ "reference": "5ce15cb084eb3bc7f92b77020c59ff3d318746d5",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.4 || ^8.0",
+ "phpstan/phpstan": "^2.0"
+ },
+ "type": "phpstan-extension",
+ "extra": {
+ "phpstan": {
+ "includes": [
+ "config/config.neon"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symplify\\PHPStanExtensions\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Pre-escaped error messages in 'symplify' error format, container aware test case and other useful extensions for PHPStan",
+ "keywords": [
+ "phpstan-extension",
+ "static analysis"
+ ],
+ "support": {
+ "issues": "https://github.com/symplify/phpstan-extensions/issues",
+ "source": "https://github.com/symplify/phpstan-extensions/tree/12.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://www.paypal.me/rectorphp",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/tomasvotruba",
+ "type": "github"
+ }
+ ],
+ "abandoned": "symplify/phpstan-rules",
+ "time": "2025-11-12T16:46:04+00:00"
},
{
"name": "thecodingmachine/safe",
- "version": "v3.3.0",
+ "version": "v3.4.0",
"source": {
"type": "git",
"url": "https://github.com/thecodingmachine/safe.git",
- "reference": "2cdd579eeaa2e78e51c7509b50cc9fb89a956236"
+ "reference": "705683a25bacf0d4860c7dea4d7947bfd09eea19"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/2cdd579eeaa2e78e51c7509b50cc9fb89a956236",
- "reference": "2cdd579eeaa2e78e51c7509b50cc9fb89a956236",
+ "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/705683a25bacf0d4860c7dea4d7947bfd09eea19",
+ "reference": "705683a25bacf0d4860c7dea4d7947bfd09eea19",
"shasum": ""
},
"require": {
@@ -8503,7 +8867,7 @@
"description": "PHP core functions that throw exceptions instead of returning FALSE on error",
"support": {
"issues": "https://github.com/thecodingmachine/safe/issues",
- "source": "https://github.com/thecodingmachine/safe/tree/v3.3.0"
+ "source": "https://github.com/thecodingmachine/safe/tree/v3.4.0"
},
"funding": [
{
@@ -8514,32 +8878,36 @@
"url": "https://github.com/shish",
"type": "github"
},
+ {
+ "url": "https://github.com/silasjoisten",
+ "type": "github"
+ },
{
"url": "https://github.com/staabm",
"type": "github"
}
],
- "time": "2025-05-14T06:15:44+00:00"
+ "time": "2026-02-04T18:08:13+00:00"
},
{
"name": "theseer/tokenizer",
- "version": "1.2.3",
+ "version": "2.0.1",
"source": {
"type": "git",
"url": "https://github.com/theseer/tokenizer.git",
- "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2"
+ "reference": "7989e43bf381af0eac72e4f0ca5bcbfa81658be4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2",
- "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/7989e43bf381af0eac72e4f0ca5bcbfa81658be4",
+ "reference": "7989e43bf381af0eac72e4f0ca5bcbfa81658be4",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-tokenizer": "*",
"ext-xmlwriter": "*",
- "php": "^7.2 || ^8.0"
+ "php": "^8.1"
},
"type": "library",
"autoload": {
@@ -8561,7 +8929,7 @@
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
"support": {
"issues": "https://github.com/theseer/tokenizer/issues",
- "source": "https://github.com/theseer/tokenizer/tree/1.2.3"
+ "source": "https://github.com/theseer/tokenizer/tree/2.0.1"
},
"funding": [
{
@@ -8569,26 +8937,35 @@
"type": "github"
}
],
- "time": "2024-03-03T12:36:25+00:00"
+ "time": "2025-12-08T11:19:18+00:00"
},
{
"name": "tomasvotruba/type-coverage",
- "version": "2.0.2",
+ "version": "2.2.2",
"source": {
"type": "git",
"url": "https://github.com/TomasVotruba/type-coverage.git",
- "reference": "d033429580f2c18bda538fa44f2939236a990e0c"
+ "reference": "25f298265c823e8fb0505169135855e1e6a91021"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/TomasVotruba/type-coverage/zipball/d033429580f2c18bda538fa44f2939236a990e0c",
- "reference": "d033429580f2c18bda538fa44f2939236a990e0c",
+ "url": "https://api.github.com/repos/TomasVotruba/type-coverage/zipball/25f298265c823e8fb0505169135855e1e6a91021",
+ "reference": "25f298265c823e8fb0505169135855e1e6a91021",
"shasum": ""
},
"require": {
- "nette/utils": "^3.2 || ^4.0",
- "php": "^7.4 || ^8.0",
- "phpstan/phpstan": "^2.0"
+ "php": "^8.4",
+ "phpstan/phpstan": "^2.2"
+ },
+ "require-dev": {
+ "phpstan/extension-installer": "^1.4",
+ "phpunit/phpunit": "^12.5",
+ "rector/jack": "^1.0",
+ "rector/rector": "^2.4",
+ "shipmonk/composer-dependency-analyser": "^1.8",
+ "symplify/easy-coding-standard": "^13.1",
+ "tomasvotruba/unused-public": "^2.2",
+ "tracy/tracy": "^2.12"
},
"type": "phpstan-extension",
"extra": {
@@ -8614,7 +8991,7 @@
],
"support": {
"issues": "https://github.com/TomasVotruba/type-coverage/issues",
- "source": "https://github.com/TomasVotruba/type-coverage/tree/2.0.2"
+ "source": "https://github.com/TomasVotruba/type-coverage/tree/2.2.2"
},
"funding": [
{
@@ -8626,37 +9003,41 @@
"type": "github"
}
],
- "time": "2025-01-07T00:10:26+00:00"
+ "time": "2026-06-07T12:35:00+00:00"
},
{
"name": "webmozart/assert",
- "version": "1.11.0",
+ "version": "2.4.0",
"source": {
"type": "git",
"url": "https://github.com/webmozarts/assert.git",
- "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991"
+ "reference": "9007ea6f45ecf352a9422b36644e4bfc039b9155"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991",
- "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991",
+ "url": "https://api.github.com/repos/webmozarts/assert/zipball/9007ea6f45ecf352a9422b36644e4bfc039b9155",
+ "reference": "9007ea6f45ecf352a9422b36644e4bfc039b9155",
"shasum": ""
},
"require": {
"ext-ctype": "*",
- "php": "^7.2 || ^8.0"
- },
- "conflict": {
- "phpstan/phpstan": "<0.12.20",
- "vimeo/psalm": "<4.6.1 || 4.6.2"
+ "ext-date": "*",
+ "ext-filter": "*",
+ "php": "^8.2"
},
- "require-dev": {
- "phpunit/phpunit": "^8.5.13"
+ "suggest": {
+ "ext-intl": "",
+ "ext-simplexml": "",
+ "ext-spl": ""
},
"type": "library",
"extra": {
+ "psalm": {
+ "pluginClass": "Webmozart\\Assert\\PsalmPlugin"
+ },
"branch-alias": {
- "dev-master": "1.10-dev"
+ "dev-master": "2.0-dev",
+ "dev-feature/2-0": "2.0-dev"
}
},
"autoload": {
@@ -8672,6 +9053,10 @@
{
"name": "Bernhard Schussek",
"email": "bschussek@gmail.com"
+ },
+ {
+ "name": "Woody Gilk",
+ "email": "woody.gilk@gmail.com"
}
],
"description": "Assertions to validate method input/output with nice error messages.",
@@ -8682,9 +9067,9 @@
],
"support": {
"issues": "https://github.com/webmozarts/assert/issues",
- "source": "https://github.com/webmozarts/assert/tree/1.11.0"
+ "source": "https://github.com/webmozarts/assert/tree/2.4.0"
},
- "time": "2022-06-03T18:03:27+00:00"
+ "time": "2026-05-20T13:07:01+00:00"
},
{
"name": "webmozart/glob",
@@ -8737,34 +9122,34 @@
},
{
"name": "wyrihaximus/async-test-utilities",
- "version": "10.0.0",
+ "version": "13.1.0",
"source": {
"type": "git",
"url": "https://github.com/WyriHaximus/php-async-test-utilities.git",
- "reference": "d28a2ebf3d9c8081a82efbc47e6083b8a56e8cd4"
+ "reference": "65cbbd82500dd4da040fdc06f1513364f91e136f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/WyriHaximus/php-async-test-utilities/zipball/d28a2ebf3d9c8081a82efbc47e6083b8a56e8cd4",
- "reference": "d28a2ebf3d9c8081a82efbc47e6083b8a56e8cd4",
+ "url": "https://api.github.com/repos/WyriHaximus/php-async-test-utilities/zipball/65cbbd82500dd4da040fdc06f1513364f91e136f",
+ "reference": "65cbbd82500dd4da040fdc06f1513364f91e136f",
"shasum": ""
},
"require": {
"php": "^8.4",
- "phpunit/phpunit": "^12.3.6",
+ "phpunit/phpunit": "^13.1.14",
"react/async": "^4.3.0",
- "react/event-loop": "^1.5.0",
+ "react/event-loop": "^1.6.0",
"react/promise": "^3.3.0",
"wyrihaximus/phpstan-react": "^2.0.0",
- "wyrihaximus/react-phpunit-run-tests-in-fiber": "^3.0.0",
- "wyrihaximus/test-utilities": "^8.1.0"
+ "wyrihaximus/react-phpunit-run-tests-in-fiber": "^4.0.0",
+ "wyrihaximus/test-utilities": "^13.1.0"
},
"conflict": {
"composer/compoer": "<2.6.0"
},
"require-dev": {
"react/promise-timer": "^1.11.0",
- "wyrihaximus/makefiles": "^0.6.0"
+ "wyrihaximus/makefiles": "^0.10.6"
},
"type": "library",
"extra": {
@@ -8792,7 +9177,7 @@
"description": "Test utilities for api-clients packages",
"support": {
"issues": "https://github.com/WyriHaximus/php-async-test-utilities/issues",
- "source": "https://github.com/WyriHaximus/php-async-test-utilities/tree/10.0.0"
+ "source": "https://github.com/WyriHaximus/php-async-test-utilities/tree/13.1.0"
},
"funding": [
{
@@ -8800,28 +9185,28 @@
"type": "github"
}
],
- "time": "2025-08-21T05:58:04+00:00"
+ "time": "2026-06-09T08:34:11+00:00"
},
{
"name": "wyrihaximus/coding-standard",
- "version": "2.22.0",
+ "version": "4.0.0",
"source": {
"type": "git",
"url": "https://github.com/WyriHaximus/php-coding-standard.git",
- "reference": "f05f141d7d5ce6921f96dda604847e933afe95a0"
+ "reference": "29855675f089665ad4923afb61305cbf42589255"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/WyriHaximus/php-coding-standard/zipball/f05f141d7d5ce6921f96dda604847e933afe95a0",
- "reference": "f05f141d7d5ce6921f96dda604847e933afe95a0",
+ "url": "https://api.github.com/repos/WyriHaximus/php-coding-standard/zipball/29855675f089665ad4923afb61305cbf42589255",
+ "reference": "29855675f089665ad4923afb61305cbf42589255",
"shasum": ""
},
"require": {
- "dealerdirect/phpcodesniffer-composer-installer": "^1.1.2",
- "doctrine/coding-standard": "^13.0.1",
+ "dealerdirect/phpcodesniffer-composer-installer": "^1.2.0",
+ "doctrine/coding-standard": "^14.0.0",
"php": "^8.4",
- "slevomat/coding-standard": "^8.22.0",
- "squizlabs/php_codesniffer": "^3.13.4"
+ "slevomat/coding-standard": "^8.26.0",
+ "squizlabs/php_codesniffer": "^4.0.1"
},
"type": "phpcodesniffer-standard",
"notification-url": "https://packagist.org/downloads/",
@@ -8831,7 +9216,69 @@
"description": "WyriHaximus Coding Standard",
"support": {
"issues": "https://github.com/WyriHaximus/php-coding-standard/issues",
- "source": "https://github.com/WyriHaximus/php-coding-standard/tree/2.22.0"
+ "source": "https://github.com/WyriHaximus/php-coding-standard/tree/4.0.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/WyriHaximus",
+ "type": "github"
+ }
+ ],
+ "time": "2026-01-14T17:34:23+00:00"
+ },
+ {
+ "name": "wyrihaximus/makefiles",
+ "version": "0.11.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/WyriHaximus/Makefiles.git",
+ "reference": "776126bd353f26c556a7fb3b20643eaa9d7f72aa"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/WyriHaximus/Makefiles/zipball/776126bd353f26c556a7fb3b20643eaa9d7f72aa",
+ "reference": "776126bd353f26c556a7fb3b20643eaa9d7f72aa",
+ "shasum": ""
+ },
+ "require": {
+ "composer-plugin-api": "^2",
+ "ext-json": "^8.4",
+ "php": "^8.4"
+ },
+ "conflict": {
+ "infection/infection": "<0.32.0"
+ },
+ "require-dev": {
+ "wyrihaximus/test-utilities": "^13.1.0"
+ },
+ "type": "composer-plugin",
+ "extra": {
+ "class": "WyriHaximus\\Makefiles\\Composer\\Installer",
+ "wyrihaximus": {
+ "supported-features": {
+ "composer-plugin": true
+ }
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "WyriHaximus\\Makefiles\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Cees-Jan Kiewiet",
+ "email": "ceesjank@gmail.com"
+ }
+ ],
+ "description": "🧱 Makefile building blocks",
+ "support": {
+ "issues": "https://github.com/WyriHaximus/Makefiles/issues",
+ "source": "https://github.com/WyriHaximus/Makefiles/tree/0.11.0"
},
"funding": [
{
@@ -8839,7 +9286,7 @@
"type": "github"
}
],
- "time": "2025-09-08T13:17:09+00:00"
+ "time": "2026-06-13T00:33:51+00:00"
},
{
"name": "wyrihaximus/phpstan-react",
@@ -8897,32 +9344,33 @@
},
{
"name": "wyrihaximus/phpstan-rules-wrapper",
- "version": "10.19.0",
+ "version": "13.1.0",
"source": {
"type": "git",
"url": "https://github.com/WyriHaximus/php-phpstan-rules-wrapper.git",
- "reference": "bab4604c4388df7668ce57bf50b316ceed98f01a"
+ "reference": "38449f0fc35fce570d26f1841606bbef51710365"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/WyriHaximus/php-phpstan-rules-wrapper/zipball/bab4604c4388df7668ce57bf50b316ceed98f01a",
- "reference": "bab4604c4388df7668ce57bf50b316ceed98f01a",
+ "url": "https://api.github.com/repos/WyriHaximus/php-phpstan-rules-wrapper/zipball/38449f0fc35fce570d26f1841606bbef51710365",
+ "reference": "38449f0fc35fce570d26f1841606bbef51710365",
"shasum": ""
},
"require": {
- "ergebnis/phpstan-rules": "^2.10.5",
- "php": "^8.3",
+ "ergebnis/phpstan-rules": "^2.13.1",
+ "php": "^8.4",
"phpstan/extension-installer": "^1.4.3",
- "phpstan/phpstan": "^2.1.22",
- "phpstan/phpstan-deprecation-rules": "^2.0.3",
+ "phpstan/phpstan": "^2.2.2",
+ "phpstan/phpstan-deprecation-rules": "^2.0.4",
"phpstan/phpstan-mockery": "^2.0.0",
- "phpstan/phpstan-phpunit": "^2.0.7",
- "phpstan/phpstan-strict-rules": "^2.0.6",
- "shipmonk/dead-code-detector": "^0.13.2",
- "shipmonk/phpstan-rules": "^4.1.5",
+ "phpstan/phpstan-phpunit": "^2.0.16",
+ "phpstan/phpstan-strict-rules": "^2.0.11",
+ "shipmonk/dead-code-detector": "^1.2.0",
+ "shipmonk/phpstan-rules": "^4.4.0",
"staabm/phpstan-psr3": "^1.0.3",
- "tomasvotruba/type-coverage": "^2.0.2",
- "yamadashy/phpstan-friendly-formatter": "^1.2.0"
+ "symplify/phpstan-extensions": "^12.0.2",
+ "tomasvotruba/type-coverage": "^2.2.2",
+ "yamadashy/phpstan-friendly-formatter": "^1.4.0"
},
"type": "library",
"extra": {
@@ -8945,7 +9393,7 @@
"description": "🌯 PHPStan rules wrapper",
"support": {
"issues": "https://github.com/WyriHaximus/php-phpstan-rules-wrapper/issues",
- "source": "https://github.com/WyriHaximus/php-phpstan-rules-wrapper/tree/10.19.0"
+ "source": "https://github.com/WyriHaximus/php-phpstan-rules-wrapper/tree/13.1.0"
},
"funding": [
{
@@ -8953,36 +9401,35 @@
"type": "github"
}
],
- "time": "2025-08-14T19:54:06+00:00"
+ "time": "2026-06-08T13:27:51+00:00"
},
{
"name": "wyrihaximus/react-phpunit-run-tests-in-fiber",
- "version": "3.0.0",
+ "version": "4.0.0",
"source": {
"type": "git",
"url": "https://github.com/WyriHaximus/reactphp-phpunit-run-tests-in-fiber.git",
- "reference": "08f1e06b9616b493df11a232c01e932787eb3a93"
+ "reference": "9ff2c42452909ff0a19f74882c07a1833bd58941"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/WyriHaximus/reactphp-phpunit-run-tests-in-fiber/zipball/08f1e06b9616b493df11a232c01e932787eb3a93",
- "reference": "08f1e06b9616b493df11a232c01e932787eb3a93",
+ "url": "https://api.github.com/repos/WyriHaximus/reactphp-phpunit-run-tests-in-fiber/zipball/9ff2c42452909ff0a19f74882c07a1833bd58941",
+ "reference": "9ff2c42452909ff0a19f74882c07a1833bd58941",
"shasum": ""
},
"require": {
- "php": "^8.3",
- "phpunit/phpunit": "^12.1.0",
- "react/async": "^4.2.0",
+ "php": "^8.4",
+ "react/async": "^4.3.0",
"react/event-loop": "^1.5.0",
- "react/promise": "^3.1"
+ "react/promise": "^3.3"
},
"conflict": {
- "phpunit/phpunit": "<10"
+ "phpunit/phpunit": "<13"
},
"require-dev": {
- "react/promise-timer": "^1.10.0",
- "wyrihaximus/makefiles": "^0.3.0",
- "wyrihaximus/test-utilities": "^7.0.0"
+ "react/promise-timer": "^1.11.0",
+ "wyrihaximus/makefiles": "^0.10.6",
+ "wyrihaximus/test-utilities": "^13.0.0"
},
"type": "library",
"autoload": {
@@ -9003,7 +9450,7 @@
"description": "Trait to run all tests in a fiber",
"support": {
"issues": "https://github.com/WyriHaximus/reactphp-phpunit-run-tests-in-fiber/issues",
- "source": "https://github.com/WyriHaximus/reactphp-phpunit-run-tests-in-fiber/tree/3.0.0"
+ "source": "https://github.com/WyriHaximus/reactphp-phpunit-run-tests-in-fiber/tree/4.0.0"
},
"funding": [
{
@@ -9011,49 +9458,50 @@
"type": "github"
}
],
- "time": "2025-04-26T22:45:27+00:00"
+ "time": "2026-06-08T21:25:02+00:00"
},
{
"name": "wyrihaximus/test-utilities",
- "version": "8.2.0",
+ "version": "13.1.0",
"source": {
"type": "git",
"url": "https://github.com/WyriHaximus/php-test-utilities.git",
- "reference": "2b2a15394fb4abf878a5f82a6b7fdc29bc002e61"
+ "reference": "e4980b68709db0c7a03d8fbd4905eec62dd9b102"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/WyriHaximus/php-test-utilities/zipball/2b2a15394fb4abf878a5f82a6b7fdc29bc002e61",
- "reference": "2b2a15394fb4abf878a5f82a6b7fdc29bc002e61",
+ "url": "https://api.github.com/repos/WyriHaximus/php-test-utilities/zipball/e4980b68709db0c7a03d8fbd4905eec62dd9b102",
+ "reference": "e4980b68709db0c7a03d8fbd4905eec62dd9b102",
"shasum": ""
},
"require": {
"composer-plugin-api": "^2",
- "ergebnis/composer-normalize": "^2.48.2",
- "ergebnis/phpunit-slow-test-detector": "^2.20.0",
+ "ergebnis/composer-normalize": "^2.52.0",
+ "ergebnis/phpunit-slow-test-detector": "^2.24.0",
"ext-hash": "^8.4",
"ext-json": "^8.4",
- "icanhazstring/composer-unused": "^0.9.4",
- "infection/infection": "^0.31.2",
- "maglnet/composer-require-checker": "^4.16.1",
+ "icanhazstring/composer-unused": "^0.9.6",
+ "infection/infection": "^0.33.2",
+ "maglnet/composer-require-checker": "^4.20.0",
"mockery/mockery": "^1.6.12",
"php": "^8.4",
- "php-parallel-lint/php-console-highlighter": "^1.0",
+ "php-parallel-lint/php-console-highlighter": "^1.0.0",
"php-parallel-lint/php-parallel-lint": "^1.4.0",
- "phpstan/phpstan": "^2.1.25",
- "phpunit/phpunit": "^12.3.10",
- "rector/rector": "^2.1.7",
- "roave/backward-compatibility-check": "^8.14.0",
- "squizlabs/php_codesniffer": "^3.13.4",
- "wyrihaximus/coding-standard": "^2.22.0",
- "wyrihaximus/phpstan-rules-wrapper": "^10.19.0"
+ "phpstan/phpstan": "^2.2.2",
+ "phpunit/phpunit": "^13.1.13",
+ "rector/rector": "^2.4.5",
+ "roave/backward-compatibility-check": "^8.19.0",
+ "squizlabs/php_codesniffer": "^4.0.1",
+ "wyrihaximus/coding-standard": "^4.0.0",
+ "wyrihaximus/phpstan-rules-wrapper": "^13.1.0"
},
"conflict": {
+ "composer-unused/symbol-parser": "<0.3.3",
"composer/pcre": "<3.3.2",
"wyrihaximus/makefiles": "<0.5.0"
},
"require-dev": {
- "wyrihaximus/makefiles": "^0.7.5"
+ "wyrihaximus/makefiles": "^0.10.6"
},
"suggest": {
"wyrihaximus/async-test-utilities": "The recommended addition to this package when building ReactPHP packages and projects.",
@@ -9086,7 +9534,7 @@
"description": "🛠️ Test utilities for api-clients packages",
"support": {
"issues": "https://github.com/WyriHaximus/php-test-utilities/issues",
- "source": "https://github.com/WyriHaximus/php-test-utilities/tree/8.2.0"
+ "source": "https://github.com/WyriHaximus/php-test-utilities/tree/13.1.0"
},
"funding": [
{
@@ -9094,31 +9542,31 @@
"type": "github"
}
],
- "time": "2025-09-12T16:27:50+00:00"
+ "time": "2026-06-08T22:56:10+00:00"
},
{
"name": "yamadashy/phpstan-friendly-formatter",
- "version": "v1.2.0",
+ "version": "v1.4.0",
"source": {
"type": "git",
"url": "https://github.com/yamadashy/phpstan-friendly-formatter.git",
- "reference": "3385bd3455c7ea806efe06f30d9478d485d1ac9b"
+ "reference": "cd4882c7293591c13230b5be35e742b33d2ab2ff"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/yamadashy/phpstan-friendly-formatter/zipball/3385bd3455c7ea806efe06f30d9478d485d1ac9b",
- "reference": "3385bd3455c7ea806efe06f30d9478d485d1ac9b",
+ "url": "https://api.github.com/repos/yamadashy/phpstan-friendly-formatter/zipball/cd4882c7293591c13230b5be35e742b33d2ab2ff",
+ "reference": "cd4882c7293591c13230b5be35e742b33d2ab2ff",
"shasum": ""
},
"require": {
- "php": "^7.4 || ^8.0",
+ "php": "^8.1",
"php-parallel-lint/php-console-highlighter": "^0.3 || ^0.4 || ^0.5 || ^1.0",
- "phpstan/phpstan": "^0.12 || ^1.0 || ^2.0"
+ "phpstan/phpstan": "^1.0 || ^2.0"
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "^3.4.0",
- "phpstan/phpstan-phpunit": "^2.0",
- "phpunit/phpunit": "^8.5.26 || ^10.0.0"
+ "friendsofphp/php-cs-fixer": "^3.93.0",
+ "phpstan/phpstan-phpunit": "^2.0.12",
+ "phpunit/phpunit": "^10.0 || ^11.0"
},
"type": "phpstan-extension",
"extra": {
@@ -9152,9 +9600,9 @@
],
"support": {
"issues": "https://github.com/yamadashy/phpstan-friendly-formatter/issues",
- "source": "https://github.com/yamadashy/phpstan-friendly-formatter/tree/v1.2.0"
+ "source": "https://github.com/yamadashy/phpstan-friendly-formatter/tree/v1.4.0"
},
- "time": "2024-11-13T14:43:14+00:00"
+ "time": "2026-01-26T15:12:47+00:00"
}
],
"aliases": [],
@@ -9170,5 +9618,5 @@
"platform-overrides": {
"php": "8.4.13"
},
- "plugin-api-version": "2.6.0"
+ "plugin-api-version": "2.9.0"
}
diff --git a/etc/qa/composer-unused.php b/etc/qa/composer-unused.php
new file mode 100644
index 0000000..20587fa
--- /dev/null
+++ b/etc/qa/composer-unused.php
@@ -0,0 +1 @@
+ $config;
\ No newline at end of file
diff --git a/etc/qa/phpcs.xml b/etc/qa/phpcs.xml
index b8e3305..9ecccf9 100644
--- a/etc/qa/phpcs.xml
+++ b/etc/qa/phpcs.xml
@@ -3,7 +3,7 @@
-
+
../../stubs
diff --git a/etc/qa/phpstan.neon b/etc/qa/phpstan.neon
index 133ecd5..a7e774f 100644
--- a/etc/qa/phpstan.neon
+++ b/etc/qa/phpstan.neon
@@ -1,4 +1,7 @@
parameters:
+ paths:
+ - ../../etc
+ - ../../src
level: max
ergebnis:
noExtends:
diff --git a/etc/qa/phpunit.xml b/etc/qa/phpunit.xml
deleted file mode 100644
index 5207296..0000000
--- a/etc/qa/phpunit.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
- ../../tests/
-
-
-
-
- ../../src/
-
-
-
-
-
-
diff --git a/etc/qa/rector.php b/etc/qa/rector.php
new file mode 100644
index 0000000..16b1c00
--- /dev/null
+++ b/etc/qa/rector.php
@@ -0,0 +1 @@
+