This commit is contained in:
2024-11-27 21:34:07 +02:00
parent 638bcba894
commit b6d1215999
190 changed files with 31518 additions and 0 deletions

373
vendor/clue/framework-x/CHANGELOG.md vendored Normal file
View File

@@ -0,0 +1,373 @@
# Changelog
## 0.16.0 (2024-03-05)
We are thrilled to announce the official release of `v0.16.0` to the public! 🎉🚀
Additionally, we are making all previous tagged versions available to simplify the upgrade process.
In addition to the release of `v0.16.0`, this update includes all prior tagged releases.
This release includes exciting new features such as improved performance, additional options
for access logging, updates to our documentation and nginx + Apache configurations,
as well as many more internal improvements to our test suite and integration tests.
* Feature: Improve performance by skipping `AccessLogHandler` if it writes to `/dev/null`.
(#248 by @clue)
* Feature: Add optional `$path` argument for `AccessLogHandler`.
(#247 by @clue)
* Minor documentation improvements and update nginx + Apache configuration.
(#245 and #251 by @clue)
* Improve test suite with improved directory structure for integration tests.
(#250 by @clue)
## 0.15.0 (2023-12-07)
* Feature: Full PHP 8.3 compatibility.
(#244 by @clue)
* Feature: Add `App::__invoke()` method to enable custom integrations.
(#236 by @clue)
* Feature: Improve performance by only using `FiberHandler` for `ReactiveHandler`.
(#237 by @clue)
* Minor documentation improvements.
(#242 by @yadaiio)
## 0.14.0 (2023-07-31)
* Feature: Improve Promise v3 support and use Promise v3 template types.
(#233 and #235 by @clue)
* Feature: Improve handling `OPTIONS *` requests.
(#226 by @clue)
* Refactor logging into new `LogStreamHandler` and reactive server logic into new `ReactiveHandler`.
(#222 and #224 by @clue)
* Improve test suite and ensure 100% code coverage.
(#217, #221, #225 and #228 by @clue)
## 0.13.0 (2023-02-22)
* Feature: Forward compatibility with upcoming Promise v3.
(#188 by @clue)
* Feature: Full PHP 8.2 compatibility.
(#194 and #207 by @clue)
* Feature: Load environment variables from `$_ENV`, `$_SERVER` and `getenv()`.
(#205 by @clue)
* Feature: Update to support `Content-Length` response header on `HEAD` requests.
(#186 by @clue)
* Feature / Fix: Consistent handling for HTTP responses with multiple header values (PHP SAPI).
(#214 by @pfk84)
* Fix: Respect explicit response status code when Location response header is given (PHP SAPI).
(#191 by @jkrzefski)
* Minor documentation improvements.
(#189 by @clue)
* Add PHPStan to test environment on level `max` and improve type definitions.
(#200, #201 and #204 by @clue)
* Improve test suite and report failed assertions.
(#199 by @clue and #208 by @SimonFrings)
## 0.12.0 (2022-08-03)
* Feature: Support loading environment variables from DI container configuration.
(#184 by @clue)
* Feature: Support typed container variables for container factory functions.
(#178, #179 and #180 by @clue)
* Feature: Support nullable and `null` arguments and default values for DI container configuration.
(#181 and #183 by @clue)
* Feature: Support untyped and `mixed` arguments for container factory.
(#182 by @clue)
## 0.11.0 (2022-07-26)
* Feature: Make `AccessLogHandler` and `ErrorHandler` part of public API.
(#173 and #174 by @clue)
```php
<?php
require __DIR__ . '/../vendor/autoload.php';
$app = new FrameworkX\App(
new FrameworkX\AccessLogHandler(),
new FrameworkX\ErrorHandler()
);
// Register routes here, see routing…
$app->run();
```
* Feature: Support loading `AccessLogHandler` and `ErrorHandler` from `Container`.
(#175 by @clue)
* Feature: Read `$remote_addr` attribute for `AccessLogHandler` (trusted proxies).
(#177 by @clue)
* Internal refactoring to move all handlers to `Io` namespace.
(#176 by @clue)
* Update test suite to remove deprecated `utf8_decode()` (PHP 8.2 preparation).
(#171 by SimonFrings)
## 0.10.0 (2022-07-14)
* Feature: Built-in support for fibers on PHP 8.1+ with stable reactphp/async.
(#168 by @clue)
```php
$app->get('/book/{isbn}', function (Psr\Http\Message\ServerRequestInterface $request) use ($db) {
$isbn = $request->getAttribute('isbn');
$result = await($db->query(
'SELECT title FROM book WHERE isbn = ?',
[$isbn]
));
assert($result instanceof React\MySQL\QueryResult);
$data = $result->resultRows[0]['title'];
return React\Http\Message\Response::plaintext(
$data
);
});
```
* Feature: Support PSR-11 container interface by using DI container as adapter.
(#163 by @clue)
* Minor documentation improvements.
(#158 by @clue and #160 by @SimonFrings)
## 0.9.0 (2022-05-13)
* Feature: Add signal handling support for `SIGINT` and `SIGTERM`.
(#150 by @clue)
* Feature: Improve error output for exception messages with special characters.
(#131 by @clue)
* Add new documentation chapters for Docker containers and HTTP redirecting.
(#138 by SimonFrings and #136, #151 and #156 by @clue)
* Minor documentation improvements.
(#143 by @zf2timo, #153 by @mattschlosser and #129 and #154 by @clue)
* Improve test suite and add tests for `Dockerfile` instructions.
(#148 and #149 by @clue)
## 0.8.0 (2022-03-07)
* Feature: Automatically start new fiber for each request on PHP 8.1+.
(#117 by @clue)
* Feature: Add fiber compatibility mode for PHP < 8.1.
(#128 by @clue)
* Improve documentation and update installation instructions for react/async.
(#116 and #126 by @clue and #124, #125 and #127 by @SimonFrings)
* Improve fiber tests to avoid now unneeded `await()` calls.
(#118 by @clue)
## 0.7.0 (2022-02-05)
* Feature: Update to use HTTP status code constants and JSON/HTML response helpers.
(#114 by @clue)
```php
$app->get('/users/{name}', function (Psr\Http\Message\ServerRequestInterface $request) {
return React\Http\Message\Response::plaintext(
"Hello " . $request->getAttribute('name') . "!\n"
);
});
```
* Feature / Fix: Update to improve protocol handling for HTTP responses with no body.
(#113 by @clue)
* Minor documentation improvements.
(#112 by @SimonFrings and #115 by @netcarver)
## 0.6.0 (2021-12-20)
* Feature: Support automatic dependency injection by using class names (DI container).
(#89, #92 and #94 by @clue)
```php
<?php
require __DIR__ . '/../vendor/autoload.php';
$app = new FrameworkX\App(Acme\Todo\JsonMiddleware::class);
$app->get('/', Acme\Todo\HelloController::class);
$app->get('/users/{name}', Acme\Todo\UserController::class);
$app->run();
```
* Feature: Add support for explicit DI container configuration.
(#95, #96 and #97 by @clue)
```php
<?php
require __DIR__ . '/../vendor/autoload.php';
$container = new FrameworkX\Container([
Acme\Todo\HelloController::class => fn() => new Acme\Todo\HelloController();
Acme\Todo\UserController::class => function (React\Http\Browser $browser) {
// example UserController class requires two arguments:
// - first argument will be autowired based on class reference
// - second argument expects some manual value
return new Acme\Todo\UserController($browser, 42);
}
]);
// …
```
* Feature: Refactor to use `$_SERVER` instead of `getenv()`.
(#91 by @bpolaszek)
* Minor documentation improvements.
(#100 by @clue)
* Update test suite to use stable PHP 8.1 Docker image.
(#90 by @clue)
## 0.5.0 (2021-11-30)
* Feature / BC break: Simplify `App` by always using default loop, drop optional loop instance.
(#88 by @clue)
```php
// old
$loop = React\EventLoop\Loop::get();
$app = new FrameworkX\App($loop);
// new (already supported before)
$app = new FrameworkX\App();
```
* Add documentation for manual restart of systemd service and chapter for Caddy deployment.
(#87 by @SimonFrings and #82 by @francislavoie)
* Improve documentation, remove leftover `$loop` references and fix typos.
(#72 by @shuvroroy, #80 by @Ivanshamir, #81 by @clue and #83 by @rattuscz)
## 0.4.0 (2021-11-23)
We are excited to announce the official release of Framework X to the public! 🎉🚀
This release includes exciting new features such as full compatibility with PHP 8.1,
improvements to response handling, and enhanced documentation covering nginx,
Apache, and async database usage.
* Feature: Announce Framework X public beta.
(#64 by @clue)
* Feature: Full PHP 8.1 compatibility.
(#58 by @clue)
* Feature: Improve `AccessLogHandler` and fix response size for streaming response body.
(#47, #48, #49 and #50 by @clue)
* Feature / Fix: Skip sending body and `Content-Length` for responses with no body.
(#51 by @clue)
* Feature / Fix: Consistently reject proxy requests and handle `OPTIONS *` requests.
(#46 by @clue)
* Add new documentation chapters for nginx, Apache and async database.
(#57, #59 and #60 by @clue)
* Improve documentation, examples and describe HTTP caching and output buffering.
(#52, #53, #55, #56, #61, #62 and #63 by @clue)
## 0.3.0 (2021-09-23)
* Feature: Add support for global middleware.
(#23 by @clue)
* Feature: Improve error output and refactor internal error handler.
(#37, #39 and #41 by @clue)
* Feature: Support changing listening address via new `X_LISTEN` environment variable.
(#38 by @clue)
* Feature: Update to new ReactPHP HTTP and Socket API.
(#26 and #29 by @HLeithner and #34 by @clue)
* Feature: Refactor to use new `AccessLogHandler`, `RouteHandler`, `RedirectHandler` and `SapiHandler`.
(#42, #43, #44 and #45 by @clue)
* Fix: Fix path filter regex.
(#27 by @HLeithner)
* Add documentation for async middleware and systemd service unit configuration.
(#24 by @Degra1991 and #32, #35, #36 and #40 by @clue)
* Improve test suite and run tests on Windows with PHPUnit.
(#31 by @SimonFrings and #28 and #33 by @clue)
## 0.2.0 (2021-06-18)
* Feature: Simplify `App` usage by making `LoopInterface` argument optional.
(#22 by @clue)
```php
// old (still supported)
$loop = React\EventLoop\Factory::create();
$app = new FrameworkX\App($loop);
// new (using default loop)
$app = new FrameworkX\App();
```
* Feature: Add middleware support.
(#18 by @clue)
* Feature: Refactor and simplify route dispatcher.
(#21 by @clue)
* Feature: Add Generator-based coroutine implementation.
(#17 by @clue)
* Minor documentation improvements.
(#15, #16 and #19 by @clue)
## 0.1.0 (2021-04-30)
We're excited to announce the release of the first version of Framework X in
private beta! This version marks the starting point of our project and is the
first of many milestones for making async PHP easier than ever before.
* Release Framework X, major documentation overhaul and improve examples.
(#14, #13 and #2 by @clue)
* Feature: Support running behind nginx and Apache (PHP-FPM and mod_php).
(#3, #11 and #12 by @clue)
* Feature / Fix: Consistently parse request URI and improve URL handling.
(#4, #5, #6 and #7 by @clue)
* Feature: Rewrite `FilesystemHandler`, improve file access and directory listing.
(#8 and #9 by @clue)
* Feature: Add `any()` router method to match any request method.
(#10 by @clue)