From 59afaecea1457397a5fa4b18e9d2c4b7911152f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Wed, 21 Oct 2026 14:01:13 +0200 Subject: [PATCH] chore: add container, encore, redirects and upgrade tooling Adds b13/container and ssch/typo3-encore as the base for the theme, typo3/cms-redirects for the existing sys_redirect records and typo3/cms-lowlevel. Rector and Fractor are configured for the TYPO3 10 to 13 migration of the packages. Co-Authored-By: Claude Opus 5.5 --- composer.json | 13 +- composer.lock | 2068 ++++++++++++++++++++++++++++++++++++++++++++++++- fractor.php | 17 + rector.php | 38 + 4 files changed, 2132 insertions(+), 4 deletions(-) create mode 100644 fractor.php create mode 100644 rector.php diff --git a/composer.json b/composer.json index da47a14..a12471c 100644 --- a/composer.json +++ b/composer.json @@ -6,7 +6,8 @@ "config": { "allow-plugins": { "typo3/class-alias-loader": true, - "typo3/cms-composer-installers": true + "typo3/cms-composer-installers": true, + "a9f/fractor-extension-installer": true }, "platform": { "php": "8.2.0" @@ -14,6 +15,8 @@ "sort-packages": true }, "require": { + "b13/container": "^4.1", + "ssch/typo3-encore": "^7.0", "typo3/cms-backend": "^13.4", "typo3/cms-belog": "^13.4", "typo3/cms-beuser": "^13.4", @@ -30,8 +33,10 @@ "typo3/cms-impexp": "^13.4", "typo3/cms-info": "^13.4", "typo3/cms-install": "^13.4", + "typo3/cms-lowlevel": "^13.4", "typo3/cms-reactions": "^13.4", "typo3/cms-recycler": "^13.4", + "typo3/cms-redirects": "^13.4", "typo3/cms-rte-ckeditor": "^13.4", "typo3/cms-seo": "^13.4", "typo3/cms-setup": "^13.4", @@ -45,5 +50,9 @@ "type": "path", "url": "./packages/*" } - ] + ], + "require-dev": { + "a9f/typo3-fractor": "^1.1", + "ssch/typo3-rector": "^3.16" + } } diff --git a/composer.lock b/composer.lock index 346c44a..5d369cb 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,75 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "a751fdadce06bf32e23bd53515ca93ba", + "content-hash": "d4af0a677424f63a718c41200397902d", "packages": [ + { + "name": "b13/container", + "version": "4.1.1", + "source": { + "type": "git", + "url": "https://github.com/b13/container.git", + "reference": "cfbc22c0b70bba34c656e1adf9c60d838f936b0e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/b13/container/zipball/cfbc22c0b70bba34c656e1adf9c60d838f936b0e", + "reference": "cfbc22c0b70bba34c656e1adf9c60d838f936b0e", + "shasum": "" + }, + "require": { + "typo3/cms-backend": "^13.4 || ^14.3", + "typo3/cms-core": "^13.4 || ^14.3" + }, + "replace": { + "typo3-ter/container": "self.version" + }, + "require-dev": { + "b13/container-example": "dev-master", + "codeception/codeception": "^5.1", + "codeception/module-asserts": "^3.0", + "codeception/module-db": "^3.1", + "codeception/module-webdriver": "^4.0", + "friendsofphp/php-cs-fixer": "^3.51", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^11.3", + "typo3/cms-fluid-styled-content": "^13.4 || ^14.3", + "typo3/cms-info": "^13.4 || ^14.3", + "typo3/cms-install": "^13.4 || ^14.3", + "typo3/cms-workspaces": "^13.4 || ^14.3", + "typo3/coding-standards": "^0.5.5", + "typo3/testing-framework": "^9.1" + }, + "type": "typo3-cms-extension", + "extra": { + "typo3/cms": { + "Package": { + "providesPackages": [] + }, + "app-dir": ".Build", + "version": "4.1.1", + "web-dir": ".Build/Web", + "extension-key": "container", + "cms-package-dir": "{$vendor-dir}/typo3/cms" + } + }, + "autoload": { + "psr-4": { + "B13\\Container\\": "Classes/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "Container Content Elements - Create Custom Container Content Elements for TYPO3", + "homepage": "https://b13.com", + "support": { + "issues": "https://github.com/b13/container/issues", + "source": "https://github.com/b13/container/tree/4.1.1" + }, + "time": "2026-10-09T13:30:57+00:00" + }, { "name": "bacon/bacon-qr-code", "version": "v3.1.1", @@ -2041,6 +2108,62 @@ }, "time": "2023-04-11T06:14:47+00:00" }, + { + "name": "psr/link", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/link.git", + "reference": "84b159194ecfd7eaa472280213976e96415433f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/link/zipball/84b159194ecfd7eaa472280213976e96415433f7", + "reference": "84b159194ecfd7eaa472280213976e96415433f7", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "suggest": { + "fig/link-util": "Provides some useful PSR-13 utilities" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Link\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for HTTP links", + "homepage": "https://github.com/php-fig/link", + "keywords": [ + "http", + "http-link", + "link", + "psr", + "psr-13", + "rest" + ], + "support": { + "source": "https://github.com/php-fig/link/tree/2.0.1" + }, + "time": "2021-03-11T23:00:27+00:00" + }, { "name": "psr/log", "version": "3.0.2", @@ -2091,6 +2214,172 @@ }, "time": "2024-09-11T13:17:53+00:00" }, + { + "name": "ssch/typo3-encore", + "version": "v7.0.1", + "source": { + "type": "git", + "url": "https://github.com/sabbelasichon/typo3_encore.git", + "reference": "cc87477d7e64d69ac297d633b23bd4ed0badf223" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sabbelasichon/typo3_encore/zipball/cc87477d7e64d69ac297d633b23bd4ed0badf223", + "reference": "cc87477d7e64d69ac297d633b23bd4ed0badf223", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "php": ">=8.2", + "symfony/asset": "^6.0 || ^7.0", + "symfony/web-link": "^6.0 || ^7.0", + "typo3/cms-core": "^13.4 || ^14.3", + "webmozart/assert": "^1.10 || ^2.0" + }, + "replace": { + "typo3-ter/typo3-encore": "self.version" + }, + "require-dev": { + "jangregor/phpstan-prophecy": "^2.3.0", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpspec/prophecy-phpunit": "^2.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^2.2", + "phpstan/phpstan-phpunit": "^2.0.16", + "phpstan/phpstan-strict-rules": "^2.0.10", + "phpstan/phpstan-webmozart-assert": "^2.0.0", + "rector/rector": "^2.4.1", + "saschaegerer/phpstan-typo3": "^2.1.1 || ^3.0.1", + "symplify/easy-coding-standard": "^13.0.4", + "typo3/cms-install": "^13.4 || ^14.2", + "typo3/cms-rte-ckeditor": "^13.4 || ^14.2", + "typo3/minimal": "^13.4 || ^14.3", + "typo3/testing-framework": "^9.5" + }, + "type": "typo3-cms-extension", + "extra": { + "typo3/cms": { + "Package": { + "providesPackages": [] + }, + "version": "7.0.0", + "web-dir": ".Build/Web", + "extension-key": "typo3_encore" + }, + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "Ssch\\Typo3Encore\\": "Classes" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Sebastian Schreiber", + "email": "breakpoint@schreibersebastian.de", + "role": "Developer" + } + ], + "description": "Use Webpack Encore in TYPO3 Context", + "keywords": [ + "encore", + "webpack" + ], + "support": { + "issues": "https://github.com/sabbelasichon/typo3_encore/issues", + "source": "https://github.com/sabbelasichon/typo3_encore/tree/v7.0.1" + }, + "funding": [ + { + "url": "https://paypal.me/schreiberten", + "type": "custom" + }, + { + "url": "https://github.com/sabbelasichon", + "type": "github" + } + ], + "time": "2026-07-08T09:14:15+00:00" + }, + { + "name": "symfony/asset", + "version": "v7.4.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/asset.git", + "reference": "d2e2f014ccd6ec9fae8dbe6336a4164346a2a856" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/asset/zipball/d2e2f014ccd6ec9fae8dbe6336a4164346a2a856", + "reference": "d2e2f014ccd6ec9fae8dbe6336a4164346a2a856", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "conflict": { + "symfony/http-foundation": "<6.4" + }, + "require-dev": { + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Asset\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/asset/tree/v7.4.8" + }, + "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-03-24T13:12:05+00:00" + }, { "name": "symfony/cache", "version": "v7.4.21", @@ -5275,6 +5564,93 @@ ], "time": "2026-08-23T10:03:40+00:00" }, + { + "name": "symfony/web-link", + "version": "v7.4.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/web-link.git", + "reference": "0711009963009e7d6d59149327f3ad633ee3fe25" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/web-link/zipball/0711009963009e7d6d59149327f3ad633ee3fe25", + "reference": "0711009963009e7d6d59149327f3ad633ee3fe25", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/link": "^1.1|^2.0" + }, + "conflict": { + "symfony/http-kernel": "<6.4" + }, + "provide": { + "psr/link-implementation": "1.0|2.0" + }, + "require-dev": { + "symfony/http-kernel": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\WebLink\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "dunglas@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Manages links between resources", + "homepage": "https://symfony.com", + "keywords": [ + "dns-prefetch", + "http", + "http2", + "link", + "performance", + "prefetch", + "preload", + "prerender", + "psr13", + "push" + ], + "support": { + "source": "https://github.com/symfony/web-link/tree/v7.4.8" + }, + "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-03-24T13:12:05+00:00" + }, { "name": "symfony/yaml", "version": "v7.4.21", @@ -6628,6 +7004,64 @@ }, "time": "2026-10-09T09:26:19+00:00" }, + { + "name": "typo3/cms-lowlevel", + "version": "v13.4.36", + "source": { + "type": "git", + "url": "https://github.com/TYPO3-CMS/lowlevel.git", + "reference": "7599b8f635fcbd4211ad8a9702ec40ed35d525ba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/TYPO3-CMS/lowlevel/zipball/7599b8f635fcbd4211ad8a9702ec40ed35d525ba", + "reference": "7599b8f635fcbd4211ad8a9702ec40ed35d525ba", + "shasum": "" + }, + "require": { + "typo3/cms-core": "13.4.36" + }, + "conflict": { + "typo3/cms": "*" + }, + "type": "typo3-cms-framework", + "extra": { + "typo3/cms": { + "Package": { + "partOfFactoryDefault": true + }, + "extension-key": "lowlevel" + }, + "branch-alias": { + "dev-main": "13.4.x-dev" + } + }, + "autoload": { + "psr-4": { + "TYPO3\\CMS\\Lowlevel\\": "Classes/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "TYPO3 Core Team", + "email": "typo3cms@typo3.org", + "role": "Developer" + } + ], + "description": "TYPO3 CMS Lowlevel - Technical analysis of the system. This includes raw database search, checking relations, counting pages and records etc.", + "homepage": "https://typo3.org", + "support": { + "chat": "https://typo3.org/help", + "docs": "https://docs.typo3.org", + "issues": "https://forge.typo3.org", + "source": "https://github.com/typo3/typo3" + }, + "time": "2026-10-09T09:26:19+00:00" + }, { "name": "typo3/cms-reactions", "version": "v13.4.36", @@ -6747,6 +7181,74 @@ }, "time": "2026-10-09T09:26:19+00:00" }, + { + "name": "typo3/cms-redirects", + "version": "v13.4.36", + "source": { + "type": "git", + "url": "https://github.com/TYPO3-CMS/redirects.git", + "reference": "b0ee81de661e584db1b18734610855dc518f8018" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/TYPO3-CMS/redirects/zipball/b0ee81de661e584db1b18734610855dc518f8018", + "reference": "b0ee81de661e584db1b18734610855dc518f8018", + "shasum": "" + }, + "require": { + "doctrine/dbal": "~4.4.4", + "psr/http-message": "^1.1 || ^2.0", + "psr/log": "^3.0.1", + "symfony/console": "^7.4", + "typo3/cms-backend": "13.4.36", + "typo3/cms-core": "13.4.36", + "typo3fluid/fluid": "^4.6.1" + }, + "conflict": { + "typo3/cms": "*" + }, + "suggest": { + "typo3/cms-reports": "Get reports of redirects", + "typo3/cms-scheduler": "Execute commands to update redirect status" + }, + "type": "typo3-cms-framework", + "extra": { + "typo3/cms": { + "Package": { + "partOfFactoryDefault": true + }, + "extension-key": "redirects" + }, + "branch-alias": { + "dev-main": "13.4.x-dev" + } + }, + "autoload": { + "psr-4": { + "TYPO3\\CMS\\Redirects\\": "Classes/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "TYPO3 Core Team", + "email": "typo3cms@typo3.org", + "role": "Developer" + } + ], + "description": "TYPO3 CMS Redirects - Create manual redirects, list existing redirects and automatically createredirects on slug changes.", + "homepage": "https://typo3.org", + "support": { + "chat": "https://typo3.org/help", + "docs": "https://docs.typo3.org/c/typo3/cms-redirects/main/en-us/", + "issues": "https://forge.typo3.org", + "source": "https://github.com/typo3/typo3" + }, + "time": "2026-10-09T09:26:19+00:00" + }, { "name": "typo3/cms-rte-ckeditor", "version": "v13.4.36", @@ -7342,7 +7844,1569 @@ "time": "2026-10-05T23:14:19+00:00" } ], - "packages-dev": [], + "packages-dev": [ + { + "name": "a9f/fractor", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/andreaswolf/fractor-fractor.git", + "reference": "06d30195f9350eb7689e09c152d889828f3a8cef" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/andreaswolf/fractor-fractor/zipball/06d30195f9350eb7689e09c152d889828f3a8cef", + "reference": "06d30195f9350eb7689e09c152d889828f3a8cef", + "shasum": "" + }, + "require": { + "league/flysystem": "^2.0 || ^3.0", + "league/flysystem-memory": "^2.0 || ^3.0", + "nette/utils": "^4.0", + "ondram/ci-detector": "^4.2", + "php": "^8.2", + "sebastian/diff": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0", + "symfony/config": "^5.4 || ^6.4 || ^7.0 || ^8.0", + "symfony/console": "^5.4 || ^6.4 || ^7.0 || ^8.0", + "symfony/dependency-injection": "^6.4 || ^7.0 || ^8.0", + "symfony/filesystem": "^5.4 || ^6.4 || ^7.0 || ^8.0", + "symfony/finder": "^5.4 || ^6.4 || ^7.0 || ^8.0", + "symplify/rule-doc-generator-contracts": "^11.2", + "webmozart/assert": "^1.11 || ^2.0" + }, + "bin": [ + "bin/fractor" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "a9f\\Fractor\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andreas Wolf", + "email": "dev@a-w.io", + "role": "Lead Developer" + } + ], + "description": "File Read-Analyse-Change Tool", + "keywords": [ + "automation", + "dev", + "fractor", + "migration", + "refactoring", + "upgrade" + ], + "support": { + "source": "https://github.com/andreaswolf/fractor-fractor/tree/v1.1.0" + }, + "time": "2026-09-25T12:42:45+00:00" + }, + { + "name": "a9f/fractor-extension-installer", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/andreaswolf/fractor-extension-installer.git", + "reference": "6a058ee03894c50f1859cbdecdc157775600858e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/andreaswolf/fractor-extension-installer/zipball/6a058ee03894c50f1859cbdecdc157775600858e", + "reference": "6a058ee03894c50f1859cbdecdc157775600858e", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^2.0", + "php": "^8.2" + }, + "require-dev": { + "composer/composer": "^2.7" + }, + "type": "composer-plugin", + "extra": { + "class": "a9f\\FractorExtensionInstaller\\InstallerPlugin", + "branch-alias": { + "dev-main": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "a9f\\FractorExtensionInstaller\\": "src/", + "a9f\\FractorExtensionInstaller\\Generated\\": "generated/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andreas Wolf", + "email": "dev@a-w.io", + "role": "Lead Developer" + } + ], + "description": "Installer for Fractor extensions.", + "support": { + "source": "https://github.com/andreaswolf/fractor-extension-installer/tree/v1.1.0" + }, + "time": "2026-07-08T11:52:14+00:00" + }, + { + "name": "a9f/fractor-fluid", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/andreaswolf/fractor-fluid.git", + "reference": "366df1b1d9594a7ba06bb51cd0a4bb542779b6a0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/andreaswolf/fractor-fluid/zipball/366df1b1d9594a7ba06bb51cd0a4bb542779b6a0", + "reference": "366df1b1d9594a7ba06bb51cd0a4bb542779b6a0", + "shasum": "" + }, + "require": { + "a9f/fractor": "^1.1", + "a9f/fractor-extension-installer": "^1.1", + "nette/utils": "^4.0", + "php": "^8.2", + "symplify/rule-doc-generator-contracts": "^11.2", + "webmozart/assert": "^1.11 || ^2.0" + }, + "type": "fractor-extension", + "extra": { + "branch-alias": { + "dev-main": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "a9f\\FractorFluid\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andreas Wolf", + "email": "dev@a-w.io", + "role": "Lead Developer" + } + ], + "description": "Fluid extension for the File Read-Analyse-Change Tool. Allows modifying Fluid files", + "keywords": [ + "automation", + "dev", + "fractor", + "migration", + "refactoring", + "upgrade" + ], + "support": { + "issues": "https://github.com/andreaswolf/fractor-fluid/issues", + "source": "https://github.com/andreaswolf/fractor-fluid/tree/v1.1.0" + }, + "time": "2026-09-25T12:42:45+00:00" + }, + { + "name": "a9f/fractor-htaccess", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/andreaswolf/fractor-htaccess.git", + "reference": "73204d0d1c241e11259742a06ca3e85a35699bb2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/andreaswolf/fractor-htaccess/zipball/73204d0d1c241e11259742a06ca3e85a35699bb2", + "reference": "73204d0d1c241e11259742a06ca3e85a35699bb2", + "shasum": "" + }, + "require": { + "a9f/fractor": "^1.1", + "a9f/fractor-extension-installer": "^1.1", + "nette/utils": "^4.0", + "php": "^8.2", + "symplify/rule-doc-generator-contracts": "^11.2", + "tivie/htaccess-parser": "^0.4.0", + "webmozart/assert": "^1.11 || ^2.0" + }, + "type": "fractor-extension", + "extra": { + "branch-alias": { + "dev-main": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "a9f\\FractorHtaccess\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Simon Schaufelberger", + "email": "simonschaufi@gmail.com", + "role": "Lead Developer" + } + ], + "description": "htaccess extension for the File Read-Analyse-Change Tool. Allows modifying htaccess files", + "keywords": [ + "automation", + "dev", + "fractor", + "migration", + "refactoring", + "upgrade" + ], + "support": { + "source": "https://github.com/andreaswolf/fractor-htaccess/tree/v1.1.0" + }, + "time": "2026-09-25T12:42:45+00:00" + }, + { + "name": "a9f/fractor-typoscript", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/andreaswolf/fractor-typoscript.git", + "reference": "9cd1c20bd6fb22f97f0644eeaadc5a44cd45a5c9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/andreaswolf/fractor-typoscript/zipball/9cd1c20bd6fb22f97f0644eeaadc5a44cd45a5c9", + "reference": "9cd1c20bd6fb22f97f0644eeaadc5a44cd45a5c9", + "shasum": "" + }, + "require": { + "a9f/fractor": "^1.1", + "a9f/fractor-extension-installer": "^1.1", + "helmich/typo3-typoscript-parser": "^2.8.0", + "php": "^8.2", + "symplify/rule-doc-generator-contracts": "^11.2", + "webmozart/assert": "^1.11 || ^2.0" + }, + "type": "fractor-extension", + "extra": { + "branch-alias": { + "dev-main": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "a9f\\FractorTypoScript\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andreas Wolf", + "email": "dev@a-w.io", + "role": "Lead Developer" + } + ], + "description": "TypoScript extension for the File Read-Analyse-Change Tool. Allows modifying TYPO3 TypoScript configuration files", + "keywords": [ + "automation", + "dev", + "fractor", + "migration", + "refactoring", + "upgrade" + ], + "support": { + "source": "https://github.com/andreaswolf/fractor-typoscript/tree/v1.1.0" + }, + "time": "2026-09-25T12:42:45+00:00" + }, + { + "name": "a9f/fractor-xliff", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/andreaswolf/fractor-xliff.git", + "reference": "26ca6f4587a71eaf9e08ad630fa2ada77cd2daa5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/andreaswolf/fractor-xliff/zipball/26ca6f4587a71eaf9e08ad630fa2ada77cd2daa5", + "reference": "26ca6f4587a71eaf9e08ad630fa2ada77cd2daa5", + "shasum": "" + }, + "require": { + "a9f/fractor": "^1.1", + "a9f/fractor-extension-installer": "^1.1", + "ext-dom": "*", + "ext-xml": "*", + "php": "^8.2", + "simonschaufi/pretty-xml": "^3.0.0", + "symplify/rule-doc-generator-contracts": "^11.2", + "webmozart/assert": "^1.11 || ^2.0" + }, + "type": "fractor-extension", + "extra": { + "branch-alias": { + "dev-main": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "a9f\\FractorXliff\\": [ + "src/", + "rules/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "XLIFF extension for the File Read-Analyse-Change Tool. Allows modifying XLIFF translation files", + "keywords": [ + "automation", + "dev", + "fractor", + "migration", + "refactoring", + "translation", + "upgrade", + "xliff" + ], + "support": { + "source": "https://github.com/andreaswolf/fractor-xliff/tree/v1.1.0" + }, + "time": "2026-09-25T12:42:45+00:00" + }, + { + "name": "a9f/fractor-xml", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/andreaswolf/fractor-xml.git", + "reference": "ca4eda2ad1d3eee28e8c7614550ba983a4887eb9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/andreaswolf/fractor-xml/zipball/ca4eda2ad1d3eee28e8c7614550ba983a4887eb9", + "reference": "ca4eda2ad1d3eee28e8c7614550ba983a4887eb9", + "shasum": "" + }, + "require": { + "a9f/fractor": "^1.1", + "a9f/fractor-extension-installer": "^1.1", + "ext-dom": "*", + "ext-xml": "*", + "php": "^8.2", + "simonschaufi/pretty-xml": "^3.0.0", + "symplify/rule-doc-generator-contracts": "^11.2", + "webmozart/assert": "^1.11 || ^2.0" + }, + "type": "fractor-extension", + "extra": { + "branch-alias": { + "dev-main": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "a9f\\FractorXml\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andreas Wolf", + "email": "dev@a-w.io", + "role": "Lead Developer" + } + ], + "description": "XML extension for the File Read-Analyse-Change Tool. Allows modifying XML files", + "keywords": [ + "automation", + "dev", + "fractor", + "migration", + "refactoring", + "upgrade" + ], + "support": { + "source": "https://github.com/andreaswolf/fractor-xml/tree/v1.1.0" + }, + "time": "2026-09-25T12:42:45+00:00" + }, + { + "name": "a9f/fractor-yaml", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/andreaswolf/fractor-yaml.git", + "reference": "9f1f457abe6e7a6461e40cd45af79d0760b3d776" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/andreaswolf/fractor-yaml/zipball/9f1f457abe6e7a6461e40cd45af79d0760b3d776", + "reference": "9f1f457abe6e7a6461e40cd45af79d0760b3d776", + "shasum": "" + }, + "require": { + "a9f/fractor": "^1.1", + "a9f/fractor-extension-installer": "^1.1", + "php": "^8.2", + "symfony/yaml": "^5.4 || ^6.4 || ^7.0 || ^8.0", + "symplify/rule-doc-generator-contracts": "^11.2", + "webmozart/assert": "^1.11 || ^2.0" + }, + "type": "fractor-extension", + "extra": { + "branch-alias": { + "dev-main": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "a9f\\FractorYaml\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andreas Wolf", + "email": "dev@a-w.io", + "role": "Lead Developer" + } + ], + "description": "YAML extension for the File Read-Analyse-Change Tool. Allows modifying YAML files", + "keywords": [ + "automation", + "dev", + "fractor", + "migration", + "refactoring", + "upgrade" + ], + "support": { + "source": "https://github.com/andreaswolf/fractor-yaml/tree/v1.1.0" + }, + "time": "2026-09-25T12:42:45+00:00" + }, + { + "name": "a9f/typo3-fractor", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/andreaswolf/fractor-typo3-fractor.git", + "reference": "e5a5a5306df24e1f418ff9c2c2f3a12195f2f0fb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/andreaswolf/fractor-typo3-fractor/zipball/e5a5a5306df24e1f418ff9c2c2f3a12195f2f0fb", + "reference": "e5a5a5306df24e1f418ff9c2c2f3a12195f2f0fb", + "shasum": "" + }, + "require": { + "a9f/fractor": "^1.1", + "a9f/fractor-extension-installer": "^1.1", + "a9f/fractor-fluid": "^1.1", + "a9f/fractor-htaccess": "^1.1", + "a9f/fractor-typoscript": "^1.1", + "a9f/fractor-xliff": "^1.1", + "a9f/fractor-xml": "^1.1", + "a9f/fractor-yaml": "^1.1", + "ext-dom": "*", + "php": "^8.2", + "symplify/rule-doc-generator-contracts": "^11.2" + }, + "bin": [ + "bin/typo3-fractor-init" + ], + "type": "fractor-extension", + "extra": { + "branch-alias": { + "dev-main": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "a9f\\Typo3Fractor\\": [ + "src/", + "rules/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andreas Wolf", + "email": "dev@a-w.io", + "role": "Lead Developer" + } + ], + "description": "TYPO3 extension for the File Read-Analyse-Change Tool. Allows modifying all sorts of files TYPO3 understands", + "keywords": [ + "automation", + "dev", + "fractor", + "migration", + "refactoring", + "typo3", + "upgrade" + ], + "support": { + "source": "https://github.com/andreaswolf/fractor-typo3-fractor/tree/v1.1.0" + }, + "time": "2026-09-25T12:42:45+00:00" + }, + { + "name": "helmich/typo3-typoscript-parser", + "version": "v2.8.1", + "source": { + "type": "git", + "url": "https://github.com/martin-helmich/typo3-typoscript-parser.git", + "reference": "dd9f7a3acbd240670e168619d308df603d4b56d6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/martin-helmich/typo3-typoscript-parser/zipball/dd9f7a3acbd240670e168619d308df603d4b56d6", + "reference": "dd9f7a3acbd240670e168619d308df603d4b56d6", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/config": "^5.4 || ^6.4 || ^7.0", + "symfony/console": "^5.4 || ^6.4 || ^7.0", + "symfony/dependency-injection": "^5.4 || ^6.4 || ^7.0", + "symfony/yaml": "^5.4 || ^6.4 || ^7.0" + }, + "require-dev": { + "php-vfs/php-vfs": "^1.4.2", + "phpspec/prophecy-phpunit": "^2.1.0", + "phpstan/phpstan": "^2.0", + "phpunit/phpunit": "^10.5 || ^11.5", + "symfony/phpunit-bridge": "^5.4 || ^6.4 || ^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Helmich\\TypoScriptParser\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Martin Helmich", + "email": "m.helmich@mittwald.de", + "role": "lead" + } + ], + "description": "Parser for the TYPO3 configuration language TypoScript.", + "homepage": "https://github.com/martin-helmich", + "support": { + "issues": "https://github.com/martin-helmich/typo3-typoscript-parser/issues", + "source": "https://github.com/martin-helmich/typo3-typoscript-parser/tree/v2.8.1" + }, + "funding": [ + { + "url": "https://donate.helmich.me", + "type": "custom" + }, + { + "url": "https://github.com/martin-helmich", + "type": "github" + } + ], + "time": "2025-08-31T09:10:27+00:00" + }, + { + "name": "league/flysystem", + "version": "3.36.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "f7fb152932f30072d573510cbd4dd657d6475b25" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/f7fb152932f30072d573510cbd4dd657d6475b25", + "reference": "f7fb152932f30072d573510cbd4dd657d6475b25", + "shasum": "" + }, + "require": { + "league/flysystem-local": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "conflict": { + "async-aws/core": "<1.19.0", + "async-aws/s3": "<1.14.0", + "aws/aws-sdk-php": "3.209.31 || 3.210.0", + "guzzlehttp/guzzle": "<7.0", + "guzzlehttp/ringphp": "<1.1.1", + "phpseclib/phpseclib": "3.0.15", + "symfony/http-client": "<5.2" + }, + "require-dev": { + "async-aws/s3": "^1.5 || ^2.0", + "async-aws/simple-s3": "^1.1 || ^2.0", + "aws/aws-sdk-php": "^3.295.10", + "composer/semver": "^3.0", + "ext-fileinfo": "*", + "ext-ftp": "*", + "ext-mongodb": "^1.3|^2", + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^3.5", + "google/cloud-storage": "^1.23", + "guzzlehttp/psr7": "^2.6", + "microsoft/azure-storage-blob": "^1.1", + "mongodb/mongodb": "^1.2|^2", + "phpseclib/phpseclib": "^3.0.36", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.5.11|^10.0", + "sabre/dav": "^4.6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "File storage abstraction for PHP", + "keywords": [ + "WebDAV", + "aws", + "cloud", + "file", + "files", + "filesystem", + "filesystems", + "ftp", + "s3", + "sftp", + "storage" + ], + "support": { + "issues": "https://github.com/thephpleague/flysystem/issues", + "source": "https://github.com/thephpleague/flysystem/tree/3.36.0" + }, + "time": "2026-09-02T08:00:27+00:00" + }, + { + "name": "league/flysystem-local", + "version": "3.35.3", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-local.git", + "reference": "a099b24dce160f3b2239043d13d47c4a1a214ea4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/a099b24dce160f3b2239043d13d47c4a1a214ea4", + "reference": "a099b24dce160f3b2239043d13d47c4a1a214ea4", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "league/flysystem": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\Local\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Local filesystem adapter for Flysystem.", + "keywords": [ + "Flysystem", + "file", + "files", + "filesystem", + "local" + ], + "support": { + "source": "https://github.com/thephpleague/flysystem-local/tree/3.35.3" + }, + "time": "2026-08-12T13:29:21+00:00" + }, + { + "name": "league/flysystem-memory", + "version": "3.31.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-memory.git", + "reference": "b2d1700ed1215684e7276e55bcacf350e0e06ff9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-memory/zipball/b2d1700ed1215684e7276e55bcacf350e0e06ff9", + "reference": "b2d1700ed1215684e7276e55bcacf350e0e06ff9", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "league/flysystem": "^3.0.0", + "php": "^8.0.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\InMemory\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "In-memory filesystem adapter for Flysystem.", + "keywords": [ + "Flysystem", + "file", + "files", + "filesystem", + "memory" + ], + "support": { + "source": "https://github.com/thephpleague/flysystem-memory/tree/3.31.0" + }, + "time": "2026-01-23T15:30:45+00:00" + }, + { + "name": "league/mime-type-detection", + "version": "1.17.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "f5f47eff7c48ed1003069a2ca67f316fb4021c76" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/f5f47eff7c48ed1003069a2ca67f316fb4021c76", + "reference": "f5f47eff7c48ed1003069a2ca67f316fb4021c76", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "phpstan/phpstan": "^0.12.68", + "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0 || ^11.0 || ^12.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\MimeTypeDetection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Mime-type detection for Flysystem", + "support": { + "issues": "https://github.com/thephpleague/mime-type-detection/issues", + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.17.0" + }, + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2026-07-09T11:49:27+00:00" + }, + { + "name": "nette/utils", + "version": "v4.1.6", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "6bf24518accf32cf845bca305e0b92078700fd01" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/6bf24518accf32cf845bca305e0b92078700fd01", + "reference": "6bf24518accf32cf845bca305e0b92078700fd01", + "shasum": "" + }, + "require": { + "php": "8.2 - 8.6" + }, + "conflict": { + "nette/finder": "<3", + "nette/schema": "<1.2.2" + }, + "require-dev": { + "jetbrains/phpstorm-attributes": "^1.2", + "nette/phpstan-rules": "^1.0", + "nette/tester": "^2.5", + "phpstan/extension-installer": "^1.4@stable", + "phpstan/phpstan": "^2.1@stable", + "tracy/tracy": "^2.9" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::chr(), ord() 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.1-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.1.6" + }, + "time": "2026-10-20T17:07:56+00:00" + }, + { + "name": "ondram/ci-detector", + "version": "4.2.0", + "source": { + "type": "git", + "url": "https://github.com/OndraM/ci-detector.git", + "reference": "8b0223b5ed235fd377c75fdd1bfcad05c0f168b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/OndraM/ci-detector/zipball/8b0223b5ed235fd377c75fdd1bfcad05c0f168b8", + "reference": "8b0223b5ed235fd377c75fdd1bfcad05c0f168b8", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "ergebnis/composer-normalize": "^2.13.2", + "lmc/coding-standard": "^3.0.0", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.1.0", + "phpstan/phpstan": "^1.2.0", + "phpstan/phpstan-phpunit": "^1.0.0", + "phpunit/phpunit": "^9.6.13" + }, + "type": "library", + "autoload": { + "psr-4": { + "OndraM\\CiDetector\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ondřej Machulda", + "email": "ondrej.machulda@gmail.com" + } + ], + "description": "Detect continuous integration environment and provide unified access to properties of current build", + "keywords": [ + "CircleCI", + "Codeship", + "Wercker", + "adapter", + "appveyor", + "aws", + "aws codebuild", + "azure", + "azure devops", + "azure pipelines", + "bamboo", + "bitbucket", + "buddy", + "ci-info", + "codebuild", + "continuous integration", + "continuousphp", + "devops", + "drone", + "github", + "gitlab", + "interface", + "jenkins", + "pipelines", + "sourcehut", + "teamcity", + "travis" + ], + "support": { + "issues": "https://github.com/OndraM/ci-detector/issues", + "source": "https://github.com/OndraM/ci-detector/tree/4.2.0" + }, + "time": "2024-03-12T13:22:30+00:00" + }, + { + "name": "phpstan/phpstan", + "version": "2.3.1", + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/6155239b488e95d26d1ebd95c6b4bb294d7f09db", + "reference": "6155239b488e95d26d1ebd95c6b4bb294d7f09db", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0" + }, + "conflict": { + "phpstan/phpstan-shim": "*" + }, + "bin": [ + "phpstan", + "phpstan.phar" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ondřej Mirtes" + }, + { + "name": "Markus Staab" + }, + { + "name": "Vincent Langlet" + } + ], + "description": "PHPStan - PHP Static Analysis Tool", + "keywords": [ + "dev", + "static analysis" + ], + "support": { + "docs": "https://phpstan.org/user-guide/getting-started", + "forum": "https://github.com/phpstan/phpstan/discussions", + "issues": "https://github.com/phpstan/phpstan/issues", + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" + }, + "funding": [ + { + "url": "https://github.com/ondrejmirtes", + "type": "github" + }, + { + "url": "https://github.com/phpstan", + "type": "github" + } + ], + "time": "2026-10-08T21:09:11+00:00" + }, + { + "name": "rector/rector", + "version": "2.7.0", + "source": { + "type": "git", + "url": "https://github.com/rectorphp/rector.git", + "reference": "4d6a39b7fff302cac0ce90cd959a53c2f6a32776" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/4d6a39b7fff302cac0ce90cd959a53c2f6a32776", + "reference": "4d6a39b7fff302cac0ce90cd959a53c2f6a32776", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0", + "phpstan/phpstan": "^2.3.0" + }, + "conflict": { + "rector/rector-doctrine": "*", + "rector/rector-downgrade-php": "*", + "rector/rector-phpunit": "*", + "rector/rector-symfony": "*" + }, + "bin": [ + "bin/rector" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Instant Upgrade and Automated Refactoring of any PHP code", + "homepage": "https://getrector.com/", + "keywords": [ + "automation", + "dev", + "migration", + "refactoring" + ], + "support": { + "issues": "https://github.com/rectorphp/rector/issues", + "source": "https://github.com/rectorphp/rector/tree/2.7.0" + }, + "funding": [ + { + "url": "https://github.com/tomasvotruba", + "type": "github" + } + ], + "time": "2026-10-06T08:46:45+00:00" + }, + { + "name": "sebastian/diff", + "version": "6.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/b4ccd857127db5d41a5b676f24b51371d76d8544", + "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/6.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-07-03T04:53:05+00:00" + }, + { + "name": "simonschaufi/pretty-xml", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/simonschaufi/pretty-xml.git", + "reference": "8760267bcf603882c6cb8e384f885d7b664c5a9a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/simonschaufi/pretty-xml/zipball/8760267bcf603882c6cb8e384f885d7b664c5a9a", + "reference": "8760267bcf603882c6cb8e384f885d7b664c5a9a", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0", + "symfony/polyfill-php80": "^1.31" + }, + "require-dev": { + "ergebnis/composer-normalize": "^2.47", + "phpunit/phpunit": "^10.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "PrettyXml\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Shane Auckland", + "email": "shane.auckland@gmail.com", + "homepage": "https://shaneauckland.co.uk" + } + ], + "description": "Library for pretty-printing XML", + "keywords": [ + "pretty", + "xml" + ], + "support": { + "issues": "https://github.com/simonschaufi/pretty-xml/issues", + "source": "https://github.com/simonschaufi/pretty-xml/tree/3.1.1" + }, + "funding": [ + { + "url": "https://www.paypal.me/simonschaufi/10", + "type": "custom" + }, + { + "url": "https://github.com/simonschaufi", + "type": "github" + } + ], + "time": "2026-09-25T10:02:38+00:00" + }, + { + "name": "ssch/typo3-rector", + "version": "v3.16.0", + "source": { + "type": "git", + "url": "https://github.com/sabbelasichon/typo3-rector.git", + "reference": "55a455f4020c017917f75f3a73217987a14d2f98" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sabbelasichon/typo3-rector/zipball/55a455f4020c017917f75f3a73217987a14d2f98", + "reference": "55a455f4020c017917f75f3a73217987a14d2f98", + "shasum": "" + }, + "require": { + "ext-json": "*", + "league/flysystem": "^2.0 || ^3.0", + "league/flysystem-memory": "^2.0 || ^3.0", + "nette/utils": "^3.2.10 || ^4.0.4", + "nikic/php-parser": "^5.7.0", + "php": "^7.4 || ^8.0", + "phpstan/phpstan": "^2.1.34", + "rector/rector": "^2.5.2", + "symfony/console": "^5.4 || ^6.4 || ^7.0", + "symfony/filesystem": "^5.4 || ^6.4 || ^7.0", + "symfony/finder": "^5.4 || ^6.4 || ^7.0", + "symfony/polyfill-php80": "^1.28.0", + "symfony/polyfill-php81": "^1.28.0", + "symfony/string": "^5.4 || ^6.4 || ^7.0", + "webmozart/assert": "^1.11 || ^2.0" + }, + "require-dev": { + "ergebnis/composer-normalize": "^2.42.0", + "php-parallel-lint/php-parallel-lint": "^1.3.2", + "phpstan/extension-installer": "^1.3.1", + "phpstan/phpstan-deprecation-rules": "^2.0.1", + "phpstan/phpstan-phpunit": "^2.0.1", + "phpunit/phpunit": "^9.6.17 || ^10.0", + "symfony/config": "^5.0 || ^6.0 || ^7.0", + "symfony/dependency-injection": "^5.4.36 || ^6.4.2 || ^7.0.2", + "symfony/http-kernel": "^5.4.37 || ^6.4.2 || ^7.0.2", + "symplify/easy-coding-standard": "^12.1.14" + }, + "suggest": { + "ext-pdo": "*", + "ssch/typo3-debug-dump-pass": "^0.0.3" + }, + "bin": [ + "bin/typo3-init" + ], + "type": "rector-extension", + "extra": { + "rector": { + "includes": [ + "config/config.php" + ] + }, + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "Ssch\\TYPO3Rector\\": [ + "src", + "rules" + ], + "Ssch\\TYPO3Rector\\PHPStan\\": "utils/phpstan/src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Sebastian Schreiber", + "email": "breakpoint@schreibersebastian.de", + "role": "Founder and lead developer" + }, + { + "name": "Henrik Elsner" + }, + { + "name": "Simon Schaufelberger", + "role": "Developer" + } + ], + "description": "Instant fixes for your TYPO3 PHP code by using Rector.", + "homepage": "https://www.typo3-rector.com/", + "keywords": [ + "automation", + "dev", + "migration", + "rector", + "refactoring", + "upgrade" + ], + "support": { + "chat": "https://typo3.slack.com/archives/C019R5LAA6A", + "docs": "https://github.com/sabbelasichon/typo3-rector/tree/main/docs", + "issues": "https://github.com/sabbelasichon/typo3-rector/issues", + "source": "https://github.com/sabbelasichon/typo3-rector" + }, + "funding": [ + { + "url": "https://paypal.me/schreiberten", + "type": "custom" + }, + { + "url": "https://github.com/sabbelasichon", + "type": "github" + } + ], + "time": "2026-09-10T09:35:15+00:00" + }, + { + "name": "symfony/polyfill-php81", + "version": "v1.38.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "6bfb9c766cacffbc8e118cb87217d08ed84e5cd7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/6bfb9c766cacffbc8e118cb87217d08ed84e5cd7", + "reference": "6bfb9c766cacffbc8e118cb87217d08ed84e5cd7", + "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\\Php81\\": "" + }, + "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.1+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php81/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-26T12:45:58+00:00" + }, + { + "name": "symplify/rule-doc-generator-contracts", + "version": "11.2.0", + "source": { + "type": "git", + "url": "https://github.com/symplify/rule-doc-generator-contracts.git", + "reference": "479cfcfd46047f80624aba931d9789e50475b5c6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symplify/rule-doc-generator-contracts/zipball/479cfcfd46047f80624aba931d9789e50475b5c6", + "reference": "479cfcfd46047f80624aba931d9789e50475b5c6", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpstan/extension-installer": "^1.2", + "rector/rector": "^0.15.10", + "symplify/easy-ci": "^11.1", + "symplify/easy-coding-standard": "^11.1", + "symplify/easy-testing": "^11.1", + "symplify/phpstan-extensions": "^11.1", + "symplify/phpstan-rules": "11.2.3.72", + "tomasvotruba/unused-public": "^0.0.34" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "11.2-dev" + } + }, + "autoload": { + "psr-4": { + "Symplify\\RuleDocGenerator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Contracts for production code of RuleDocGenerator", + "support": { + "source": "https://github.com/symplify/rule-doc-generator-contracts/tree/11.2.0" + }, + "funding": [ + { + "url": "https://www.paypal.me/rectorphp", + "type": "custom" + }, + { + "url": "https://github.com/tomasvotruba", + "type": "github" + } + ], + "abandoned": true, + "time": "2024-03-18T22:02:54+00:00" + }, + { + "name": "tivie/htaccess-parser", + "version": "0.4.0", + "source": { + "type": "git", + "url": "https://github.com/tivie/php-htaccess-parser.git", + "reference": "0b6252a36b8ac0586306fd2db3dac78985c48589" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tivie/php-htaccess-parser/zipball/0b6252a36b8ac0586306fd2db3dac78985c48589", + "reference": "0b6252a36b8ac0586306fd2db3dac78985c48589", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "require-dev": { + "phpunit/phpunit": "^11.0.6" + }, + "type": "library", + "autoload": { + "psr-4": { + "Tivie\\HtaccessParser\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Estevão Soares dos Santos", + "email": "estevao@soares-dos-santos.com" + } + ], + "description": "A .htaccess parser and validator implemented in PHP", + "homepage": "https://github.com/tivie/php-htaccess-parser", + "keywords": [ + ".htaccess", + "htaccess" + ], + "support": { + "issues": "https://github.com/tivie/php-htaccess-parser/issues", + "source": "https://github.com/tivie/php-htaccess-parser/tree/0.4.0" + }, + "time": "2025-08-13T07:38:02+00:00" + } + ], "aliases": [], "minimum-stability": "stable", "stability-flags": {}, diff --git a/fractor.php b/fractor.php new file mode 100644 index 0000000..3f3caa8 --- /dev/null +++ b/fractor.php @@ -0,0 +1,17 @@ +withPaths([ + __DIR__ . '/packages', + ]) + ->withSkip([ + __DIR__ . '/packages/*/Resources/Private/Assets/*', + ]) + ->withSets([ + Typo3LevelSetList::UP_TO_TYPO3_13, + ]); diff --git a/rector.php b/rector.php new file mode 100644 index 0000000..ebc5f35 --- /dev/null +++ b/rector.php @@ -0,0 +1,38 @@ +withPaths([ + __DIR__ . '/packages', + ]) + ->withSkip([ + __DIR__ . '/packages/*/Resources/Private/Assets/*', + ]) + ->withPhpVersion(PhpVersion::PHP_82) + ->withSets([ + Typo3SetList::GENERAL, + Typo3LevelSetList::UP_TO_TYPO3_13, + ]) + ->withPHPStanConfigs([Typo3Option::PHPSTAN_FOR_RECTOR_PATH]) + ->withImportNames(true, true, false, true) + ->withRules([ + ConvertImplicitVariablesToExplicitGlobalsRector::class, + ]) + ->withConfiguredRule(ExtEmConfRector::class, [ + ExtEmConfRector::PHP_VERSION_CONSTRAINT => '8.2.0-8.5.99', + ExtEmConfRector::TYPO3_VERSION_CONSTRAINT => '13.4.0-13.4.99', + ExtEmConfRector::ADDITIONAL_VALUES_TO_BE_REMOVED => [], + ]) + ->withConfiguredRule(RemoveTypo3VersionChecksRector::class, [ + RemoveTypo3VersionChecksRector::TARGET_VERSION => 13, + ]);