Add laminas/laminas-httphandlerrunner to composer dependencies
authorTim Düsterhus <duesterhus@woltlab.com>
Thu, 5 Aug 2021 08:34:55 +0000 (10:34 +0200)
committerTim Düsterhus <duesterhus@woltlab.com>
Thu, 5 Aug 2021 09:54:54 +0000 (11:54 +0200)
27 files changed:
wcfsetup/install/files/lib/system/api/composer.json
wcfsetup/install/files/lib/system/api/composer.lock
wcfsetup/install/files/lib/system/api/composer/autoload_classmap.php
wcfsetup/install/files/lib/system/api/composer/autoload_files.php
wcfsetup/install/files/lib/system/api/composer/autoload_psr4.php
wcfsetup/install/files/lib/system/api/composer/autoload_static.php
wcfsetup/install/files/lib/system/api/composer/installed.json
wcfsetup/install/files/lib/system/api/composer/installed.php
wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/CHANGELOG.md [new file with mode: 0644]
wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/COPYRIGHT.md [new file with mode: 0644]
wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/LICENSE.md [new file with mode: 0644]
wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/README.md [new file with mode: 0644]
wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/composer.json [new file with mode: 0644]
wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/src/ConfigProvider.php [new file with mode: 0644]
wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/src/Emitter/EmitterInterface.php [new file with mode: 0644]
wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/src/Emitter/EmitterStack.php [new file with mode: 0644]
wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/src/Emitter/SapiEmitter.php [new file with mode: 0644]
wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/src/Emitter/SapiEmitterTrait.php [new file with mode: 0644]
wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/src/Emitter/SapiStreamEmitter.php [new file with mode: 0644]
wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/src/Exception/EmitterException.php [new file with mode: 0644]
wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/src/Exception/ExceptionInterface.php [new file with mode: 0644]
wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/src/Exception/InvalidEmitterException.php [new file with mode: 0644]
wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/src/RequestHandlerRunner.php [new file with mode: 0644]
wcfsetup/install/files/lib/system/api/psr/http-server-handler/LICENSE [new file with mode: 0644]
wcfsetup/install/files/lib/system/api/psr/http-server-handler/README.md [new file with mode: 0644]
wcfsetup/install/files/lib/system/api/psr/http-server-handler/composer.json [new file with mode: 0644]
wcfsetup/install/files/lib/system/api/psr/http-server-handler/src/RequestHandlerInterface.php [new file with mode: 0644]

index 812400065a10ab0a27032de2fc92a18577a27c44..fc774967d07ccd80f5aed604c285a437d1bc685d 100644 (file)
@@ -18,6 +18,7 @@
         "scssphp/scssphp": "^1.4",
         "guzzlehttp/guzzle": "^7.3.0",
         "paragonie/constant_time_encoding": "^2.3",
-        "laminas/laminas-diactoros": "^2.4"
+        "laminas/laminas-diactoros": "^2.4",
+        "laminas/laminas-httphandlerrunner": "^1.2"
     }
 }
index 02440899d6e0b1bc1bfd64151f7749d632fab6bb..d24293223c042e6e513afc5f69e08721be4b2ebb 100644 (file)
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "b828e29250a7fa9ea0b3fca22bca6864",
+    "content-hash": "b3aeea343e2f7ee79bb2d9a6b8a86799",
     "packages": [
         {
             "name": "chrisjean/php-ico",
             ],
             "time": "2020-09-03T14:29:41+00:00"
         },
+        {
+            "name": "laminas/laminas-httphandlerrunner",
+            "version": "1.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/laminas/laminas-httphandlerrunner.git",
+                "reference": "e1a5dad040e0043135e8095ee27d1fbf6fb640e1"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/laminas/laminas-httphandlerrunner/zipball/e1a5dad040e0043135e8095ee27d1fbf6fb640e1",
+                "reference": "e1a5dad040e0043135e8095ee27d1fbf6fb640e1",
+                "shasum": ""
+            },
+            "require": {
+                "laminas/laminas-zendframework-bridge": "^1.0",
+                "php": "^7.1",
+                "psr/http-message": "^1.0",
+                "psr/http-message-implementation": "^1.0",
+                "psr/http-server-handler": "^1.0"
+            },
+            "replace": {
+                "zendframework/zend-httphandlerrunner": "^1.1.0"
+            },
+            "require-dev": {
+                "laminas/laminas-coding-standard": "~1.0.0",
+                "laminas/laminas-diactoros": "^1.7 || ^2.1.1",
+                "phpunit/phpunit": "^7.0.2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.2.x-dev",
+                    "dev-develop": "1.3.x-dev"
+                },
+                "laminas": {
+                    "config-provider": "Laminas\\HttpHandlerRunner\\ConfigProvider"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Laminas\\HttpHandlerRunner\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "Execute PSR-15 RequestHandlerInterface instances and emit responses they generate.",
+            "homepage": "https://laminas.dev",
+            "keywords": [
+                "components",
+                "laminas",
+                "mezzio",
+                "psr-15",
+                "psr-7"
+            ],
+            "support": {
+                "chat": "https://laminas.dev/chat",
+                "docs": "https://docs.laminas.dev/laminas-httphandlerrunner/",
+                "forum": "https://discourse.laminas.dev",
+                "issues": "https://github.com/laminas/laminas-httphandlerrunner/issues",
+                "rss": "https://github.com/laminas/laminas-httphandlerrunner/releases.atom",
+                "source": "https://github.com/laminas/laminas-httphandlerrunner"
+            },
+            "funding": [
+                {
+                    "url": "https://funding.communitybridge.org/projects/laminas-project",
+                    "type": "community_bridge"
+                }
+            ],
+            "time": "2020-06-03T15:52:17+00:00"
+        },
         {
             "name": "laminas/laminas-zendframework-bridge",
             "version": "1.1.1",
             },
             "time": "2016-08-06T14:39:51+00:00"
         },
+        {
+            "name": "psr/http-server-handler",
+            "version": "1.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/http-server-handler.git",
+                "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/aff2f80e33b7f026ec96bb42f63242dc50ffcae7",
+                "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.0",
+                "psr/http-message": "^1.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Http\\Server\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "http://www.php-fig.org/"
+                }
+            ],
+            "description": "Common interface for HTTP server-side request handler",
+            "keywords": [
+                "handler",
+                "http",
+                "http-interop",
+                "psr",
+                "psr-15",
+                "psr-7",
+                "request",
+                "response",
+                "server"
+            ],
+            "support": {
+                "issues": "https://github.com/php-fig/http-server-handler/issues",
+                "source": "https://github.com/php-fig/http-server-handler/tree/master"
+            },
+            "time": "2018-10-30T16:46:14+00:00"
+        },
         {
             "name": "ralouphie/getallheaders",
             "version": "3.0.3",
index d78fd466a8eb906d68fb24b31940d9e6808465fe..78fba2bc61a5143d3be25ddfc8287ae579cdee6c 100644 (file)
@@ -366,6 +366,16 @@ return array(
     'Laminas\\Diactoros\\UploadedFileFactory' => $vendorDir . '/laminas/laminas-diactoros/src/UploadedFileFactory.php',
     'Laminas\\Diactoros\\Uri' => $vendorDir . '/laminas/laminas-diactoros/src/Uri.php',
     'Laminas\\Diactoros\\UriFactory' => $vendorDir . '/laminas/laminas-diactoros/src/UriFactory.php',
+    'Laminas\\HttpHandlerRunner\\ConfigProvider' => $vendorDir . '/laminas/laminas-httphandlerrunner/src/ConfigProvider.php',
+    'Laminas\\HttpHandlerRunner\\Emitter\\EmitterInterface' => $vendorDir . '/laminas/laminas-httphandlerrunner/src/Emitter/EmitterInterface.php',
+    'Laminas\\HttpHandlerRunner\\Emitter\\EmitterStack' => $vendorDir . '/laminas/laminas-httphandlerrunner/src/Emitter/EmitterStack.php',
+    'Laminas\\HttpHandlerRunner\\Emitter\\SapiEmitter' => $vendorDir . '/laminas/laminas-httphandlerrunner/src/Emitter/SapiEmitter.php',
+    'Laminas\\HttpHandlerRunner\\Emitter\\SapiEmitterTrait' => $vendorDir . '/laminas/laminas-httphandlerrunner/src/Emitter/SapiEmitterTrait.php',
+    'Laminas\\HttpHandlerRunner\\Emitter\\SapiStreamEmitter' => $vendorDir . '/laminas/laminas-httphandlerrunner/src/Emitter/SapiStreamEmitter.php',
+    'Laminas\\HttpHandlerRunner\\Exception\\EmitterException' => $vendorDir . '/laminas/laminas-httphandlerrunner/src/Exception/EmitterException.php',
+    'Laminas\\HttpHandlerRunner\\Exception\\ExceptionInterface' => $vendorDir . '/laminas/laminas-httphandlerrunner/src/Exception/ExceptionInterface.php',
+    'Laminas\\HttpHandlerRunner\\Exception\\InvalidEmitterException' => $vendorDir . '/laminas/laminas-httphandlerrunner/src/Exception/InvalidEmitterException.php',
+    'Laminas\\HttpHandlerRunner\\RequestHandlerRunner' => $vendorDir . '/laminas/laminas-httphandlerrunner/src/RequestHandlerRunner.php',
     'Laminas\\ZendFrameworkBridge\\Autoloader' => $vendorDir . '/laminas/laminas-zendframework-bridge/src/Autoloader.php',
     'Laminas\\ZendFrameworkBridge\\ConfigPostProcessor' => $vendorDir . '/laminas/laminas-zendframework-bridge/src/ConfigPostProcessor.php',
     'Laminas\\ZendFrameworkBridge\\Module' => $vendorDir . '/laminas/laminas-zendframework-bridge/src/Module.php',
@@ -412,6 +422,7 @@ return array(
     'Psr\\Http\\Message\\UploadedFileInterface' => $vendorDir . '/psr/http-message/src/UploadedFileInterface.php',
     'Psr\\Http\\Message\\UriFactoryInterface' => $vendorDir . '/psr/http-factory/src/UriFactoryInterface.php',
     'Psr\\Http\\Message\\UriInterface' => $vendorDir . '/psr/http-message/src/UriInterface.php',
+    'Psr\\Http\\Server\\RequestHandlerInterface' => $vendorDir . '/psr/http-server-handler/src/RequestHandlerInterface.php',
     'ScssPhp\\ScssPhp\\Base\\Range' => $vendorDir . '/scssphp/scssphp/src/Base/Range.php',
     'ScssPhp\\ScssPhp\\Block' => $vendorDir . '/scssphp/scssphp/src/Block.php',
     'ScssPhp\\ScssPhp\\Cache' => $vendorDir . '/scssphp/scssphp/src/Cache.php',
index b3b9342a530b2a3819804af5784d30d8c7e02e7b..d7935d79194c81ec77394e3bc069ffc21148cdfd 100644 (file)
@@ -6,12 +6,9 @@ $vendorDir = dirname(dirname(__FILE__));
 $baseDir = $vendorDir;
 
 return array(
+    '7e9bd612cc444b3eed788ebbe46263a0' => $vendorDir . '/laminas/laminas-zendframework-bridge/src/autoload.php',
     '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
     'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php',
-    '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
-    '7e9bd612cc444b3eed788ebbe46263a0' => $vendorDir . '/laminas/laminas-zendframework-bridge/src/autoload.php',
-    '2cffec82183ee1cea088009cef9a6fc3' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php',
-    '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
     '07d7f1a47144818725fd8d91a907ac57' => $vendorDir . '/laminas/laminas-diactoros/src/functions/create_uploaded_file.php',
     'da94ac5d3ca7d2dbab84ce561ce72bfd' => $vendorDir . '/laminas/laminas-diactoros/src/functions/marshal_headers_from_sapi.php',
     '3d97c8dcdfba8cb85d3b34f116bb248b' => $vendorDir . '/laminas/laminas-diactoros/src/functions/marshal_method_from_sapi.php',
@@ -28,4 +25,7 @@ return array(
     'cc8e14526dc240491e17a838cb78508c' => $vendorDir . '/laminas/laminas-diactoros/src/functions/normalize_server.legacy.php',
     '786bf90caabc9e09b6ad4cc5ca8f0e30' => $vendorDir . '/laminas/laminas-diactoros/src/functions/normalize_uploaded_files.legacy.php',
     '751a5a3f463e4be759be31748b61737c' => $vendorDir . '/laminas/laminas-diactoros/src/functions/parse_cookie_header.legacy.php',
+    '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
+    '2cffec82183ee1cea088009cef9a6fc3' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php',
+    '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
 );
index 2262fd9d6d75d01e3083a5016aaa3a90b65a5ed8..6af3227e6d0487ea7ad29402c1f5a827274da655 100644 (file)
@@ -10,11 +10,13 @@ return array(
     'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
     'Symfony\\Component\\CssSelector\\' => array($vendorDir . '/symfony/css-selector'),
     'ScssPhp\\ScssPhp\\' => array($vendorDir . '/scssphp/scssphp/src'),
+    'Psr\\Http\\Server\\' => array($vendorDir . '/psr/http-server-handler/src'),
     'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-factory/src', $vendorDir . '/psr/http-message/src'),
     'Psr\\Http\\Client\\' => array($vendorDir . '/psr/http-client/src'),
     'Pelago\\Emogrifier\\' => array($vendorDir . '/pelago/emogrifier/src'),
     'ParagonIE\\ConstantTime\\' => array($vendorDir . '/paragonie/constant_time_encoding/src'),
     'Laminas\\ZendFrameworkBridge\\' => array($vendorDir . '/laminas/laminas-zendframework-bridge/src'),
+    'Laminas\\HttpHandlerRunner\\' => array($vendorDir . '/laminas/laminas-httphandlerrunner/src'),
     'Laminas\\Diactoros\\' => array($vendorDir . '/laminas/laminas-diactoros/src'),
     'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'),
     'GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'),
index 38c0399af38ca927c2ecb6664d3aa78b980869d4..021008b4de013aa107e57f51accae52e9c7d5be7 100644 (file)
@@ -7,12 +7,9 @@ namespace Composer\Autoload;
 class ComposerStaticInita1f5f7c74275d47a45049a2936db1d0d
 {
     public static $files = array (
+        '7e9bd612cc444b3eed788ebbe46263a0' => __DIR__ . '/..' . '/laminas/laminas-zendframework-bridge/src/autoload.php',
         '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
         'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php',
-        '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
-        '7e9bd612cc444b3eed788ebbe46263a0' => __DIR__ . '/..' . '/laminas/laminas-zendframework-bridge/src/autoload.php',
-        '2cffec82183ee1cea088009cef9a6fc3' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php',
-        '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php',
         '07d7f1a47144818725fd8d91a907ac57' => __DIR__ . '/..' . '/laminas/laminas-diactoros/src/functions/create_uploaded_file.php',
         'da94ac5d3ca7d2dbab84ce561ce72bfd' => __DIR__ . '/..' . '/laminas/laminas-diactoros/src/functions/marshal_headers_from_sapi.php',
         '3d97c8dcdfba8cb85d3b34f116bb248b' => __DIR__ . '/..' . '/laminas/laminas-diactoros/src/functions/marshal_method_from_sapi.php',
@@ -29,6 +26,9 @@ class ComposerStaticInita1f5f7c74275d47a45049a2936db1d0d
         'cc8e14526dc240491e17a838cb78508c' => __DIR__ . '/..' . '/laminas/laminas-diactoros/src/functions/normalize_server.legacy.php',
         '786bf90caabc9e09b6ad4cc5ca8f0e30' => __DIR__ . '/..' . '/laminas/laminas-diactoros/src/functions/normalize_uploaded_files.legacy.php',
         '751a5a3f463e4be759be31748b61737c' => __DIR__ . '/..' . '/laminas/laminas-diactoros/src/functions/parse_cookie_header.legacy.php',
+        '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
+        '2cffec82183ee1cea088009cef9a6fc3' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php',
+        '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php',
     );
 
     public static $prefixLengthsPsr4 = array (
@@ -44,6 +44,7 @@ class ComposerStaticInita1f5f7c74275d47a45049a2936db1d0d
         ),
         'P' => 
         array (
+            'Psr\\Http\\Server\\' => 16,
             'Psr\\Http\\Message\\' => 17,
             'Psr\\Http\\Client\\' => 16,
             'Pelago\\Emogrifier\\' => 18,
@@ -52,6 +53,7 @@ class ComposerStaticInita1f5f7c74275d47a45049a2936db1d0d
         'L' => 
         array (
             'Laminas\\ZendFrameworkBridge\\' => 28,
+            'Laminas\\HttpHandlerRunner\\' => 26,
             'Laminas\\Diactoros\\' => 18,
         ),
         'G' => 
@@ -79,6 +81,10 @@ class ComposerStaticInita1f5f7c74275d47a45049a2936db1d0d
         array (
             0 => __DIR__ . '/..' . '/scssphp/scssphp/src',
         ),
+        'Psr\\Http\\Server\\' => 
+        array (
+            0 => __DIR__ . '/..' . '/psr/http-server-handler/src',
+        ),
         'Psr\\Http\\Message\\' => 
         array (
             0 => __DIR__ . '/..' . '/psr/http-factory/src',
@@ -100,6 +106,10 @@ class ComposerStaticInita1f5f7c74275d47a45049a2936db1d0d
         array (
             0 => __DIR__ . '/..' . '/laminas/laminas-zendframework-bridge/src',
         ),
+        'Laminas\\HttpHandlerRunner\\' => 
+        array (
+            0 => __DIR__ . '/..' . '/laminas/laminas-httphandlerrunner/src',
+        ),
         'Laminas\\Diactoros\\' => 
         array (
             0 => __DIR__ . '/..' . '/laminas/laminas-diactoros/src',
@@ -503,6 +513,16 @@ class ComposerStaticInita1f5f7c74275d47a45049a2936db1d0d
         'Laminas\\Diactoros\\UploadedFileFactory' => __DIR__ . '/..' . '/laminas/laminas-diactoros/src/UploadedFileFactory.php',
         'Laminas\\Diactoros\\Uri' => __DIR__ . '/..' . '/laminas/laminas-diactoros/src/Uri.php',
         'Laminas\\Diactoros\\UriFactory' => __DIR__ . '/..' . '/laminas/laminas-diactoros/src/UriFactory.php',
+        'Laminas\\HttpHandlerRunner\\ConfigProvider' => __DIR__ . '/..' . '/laminas/laminas-httphandlerrunner/src/ConfigProvider.php',
+        'Laminas\\HttpHandlerRunner\\Emitter\\EmitterInterface' => __DIR__ . '/..' . '/laminas/laminas-httphandlerrunner/src/Emitter/EmitterInterface.php',
+        'Laminas\\HttpHandlerRunner\\Emitter\\EmitterStack' => __DIR__ . '/..' . '/laminas/laminas-httphandlerrunner/src/Emitter/EmitterStack.php',
+        'Laminas\\HttpHandlerRunner\\Emitter\\SapiEmitter' => __DIR__ . '/..' . '/laminas/laminas-httphandlerrunner/src/Emitter/SapiEmitter.php',
+        'Laminas\\HttpHandlerRunner\\Emitter\\SapiEmitterTrait' => __DIR__ . '/..' . '/laminas/laminas-httphandlerrunner/src/Emitter/SapiEmitterTrait.php',
+        'Laminas\\HttpHandlerRunner\\Emitter\\SapiStreamEmitter' => __DIR__ . '/..' . '/laminas/laminas-httphandlerrunner/src/Emitter/SapiStreamEmitter.php',
+        'Laminas\\HttpHandlerRunner\\Exception\\EmitterException' => __DIR__ . '/..' . '/laminas/laminas-httphandlerrunner/src/Exception/EmitterException.php',
+        'Laminas\\HttpHandlerRunner\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/laminas/laminas-httphandlerrunner/src/Exception/ExceptionInterface.php',
+        'Laminas\\HttpHandlerRunner\\Exception\\InvalidEmitterException' => __DIR__ . '/..' . '/laminas/laminas-httphandlerrunner/src/Exception/InvalidEmitterException.php',
+        'Laminas\\HttpHandlerRunner\\RequestHandlerRunner' => __DIR__ . '/..' . '/laminas/laminas-httphandlerrunner/src/RequestHandlerRunner.php',
         'Laminas\\ZendFrameworkBridge\\Autoloader' => __DIR__ . '/..' . '/laminas/laminas-zendframework-bridge/src/Autoloader.php',
         'Laminas\\ZendFrameworkBridge\\ConfigPostProcessor' => __DIR__ . '/..' . '/laminas/laminas-zendframework-bridge/src/ConfigPostProcessor.php',
         'Laminas\\ZendFrameworkBridge\\Module' => __DIR__ . '/..' . '/laminas/laminas-zendframework-bridge/src/Module.php',
@@ -549,6 +569,7 @@ class ComposerStaticInita1f5f7c74275d47a45049a2936db1d0d
         'Psr\\Http\\Message\\UploadedFileInterface' => __DIR__ . '/..' . '/psr/http-message/src/UploadedFileInterface.php',
         'Psr\\Http\\Message\\UriFactoryInterface' => __DIR__ . '/..' . '/psr/http-factory/src/UriFactoryInterface.php',
         'Psr\\Http\\Message\\UriInterface' => __DIR__ . '/..' . '/psr/http-message/src/UriInterface.php',
+        'Psr\\Http\\Server\\RequestHandlerInterface' => __DIR__ . '/..' . '/psr/http-server-handler/src/RequestHandlerInterface.php',
         'ScssPhp\\ScssPhp\\Base\\Range' => __DIR__ . '/..' . '/scssphp/scssphp/src/Base/Range.php',
         'ScssPhp\\ScssPhp\\Block' => __DIR__ . '/..' . '/scssphp/scssphp/src/Block.php',
         'ScssPhp\\ScssPhp\\Cache' => __DIR__ . '/..' . '/scssphp/scssphp/src/Cache.php',
index a168227410bcc239a05fe84de72c9f7a9240ed63..c57a665e41bc2d1a8288188a9e9cf1151ec18bc9 100644 (file)
             ],
             "install-path": "../laminas/laminas-diactoros"
         },
+        {
+            "name": "laminas/laminas-httphandlerrunner",
+            "version": "1.2.0",
+            "version_normalized": "1.2.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/laminas/laminas-httphandlerrunner.git",
+                "reference": "e1a5dad040e0043135e8095ee27d1fbf6fb640e1"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/laminas/laminas-httphandlerrunner/zipball/e1a5dad040e0043135e8095ee27d1fbf6fb640e1",
+                "reference": "e1a5dad040e0043135e8095ee27d1fbf6fb640e1",
+                "shasum": ""
+            },
+            "require": {
+                "laminas/laminas-zendframework-bridge": "^1.0",
+                "php": "^7.1",
+                "psr/http-message": "^1.0",
+                "psr/http-message-implementation": "^1.0",
+                "psr/http-server-handler": "^1.0"
+            },
+            "replace": {
+                "zendframework/zend-httphandlerrunner": "^1.1.0"
+            },
+            "require-dev": {
+                "laminas/laminas-coding-standard": "~1.0.0",
+                "laminas/laminas-diactoros": "^1.7 || ^2.1.1",
+                "phpunit/phpunit": "^7.0.2"
+            },
+            "time": "2020-06-03T15:52:17+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.2.x-dev",
+                    "dev-develop": "1.3.x-dev"
+                },
+                "laminas": {
+                    "config-provider": "Laminas\\HttpHandlerRunner\\ConfigProvider"
+                }
+            },
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Laminas\\HttpHandlerRunner\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "Execute PSR-15 RequestHandlerInterface instances and emit responses they generate.",
+            "homepage": "https://laminas.dev",
+            "keywords": [
+                "components",
+                "laminas",
+                "mezzio",
+                "psr-15",
+                "psr-7"
+            ],
+            "support": {
+                "chat": "https://laminas.dev/chat",
+                "docs": "https://docs.laminas.dev/laminas-httphandlerrunner/",
+                "forum": "https://discourse.laminas.dev",
+                "issues": "https://github.com/laminas/laminas-httphandlerrunner/issues",
+                "rss": "https://github.com/laminas/laminas-httphandlerrunner/releases.atom",
+                "source": "https://github.com/laminas/laminas-httphandlerrunner"
+            },
+            "funding": [
+                {
+                    "url": "https://funding.communitybridge.org/projects/laminas-project",
+                    "type": "community_bridge"
+                }
+            ],
+            "install-path": "../laminas/laminas-httphandlerrunner"
+        },
         {
             "name": "laminas/laminas-zendframework-bridge",
             "version": "1.1.1",
             ],
             "install-path": "../psr/http-message"
         },
+        {
+            "name": "psr/http-server-handler",
+            "version": "1.0.1",
+            "version_normalized": "1.0.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/http-server-handler.git",
+                "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/aff2f80e33b7f026ec96bb42f63242dc50ffcae7",
+                "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.0",
+                "psr/http-message": "^1.0"
+            },
+            "time": "2018-10-30T16:46:14+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Http\\Server\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "http://www.php-fig.org/"
+                }
+            ],
+            "description": "Common interface for HTTP server-side request handler",
+            "keywords": [
+                "handler",
+                "http",
+                "http-interop",
+                "psr",
+                "psr-15",
+                "psr-7",
+                "request",
+                "response",
+                "server"
+            ],
+            "support": {
+                "issues": "https://github.com/php-fig/http-server-handler/issues",
+                "source": "https://github.com/php-fig/http-server-handler/tree/master"
+            },
+            "install-path": "../psr/http-server-handler"
+        },
         {
             "name": "ralouphie/getallheaders",
             "version": "3.0.3",
index 53a59d97db92066e3f410f1ecf567507460a5230..dd62df17d9ab4af85844de07d790fbe77a9fdc19 100644 (file)
             'reference' => '36ef09b73e884135d2059cc498c938e90821bb57',
             'dev_requirement' => false,
         ),
+        'laminas/laminas-httphandlerrunner' => array(
+            'pretty_version' => '1.2.0',
+            'version' => '1.2.0.0',
+            'type' => 'library',
+            'install_path' => __DIR__ . '/../laminas/laminas-httphandlerrunner',
+            'aliases' => array(),
+            'reference' => 'e1a5dad040e0043135e8095ee27d1fbf6fb640e1',
+            'dev_requirement' => false,
+        ),
         'laminas/laminas-zendframework-bridge' => array(
             'pretty_version' => '1.1.1',
             'version' => '1.1.1.0',
                 0 => '1.0',
             ),
         ),
+        'psr/http-server-handler' => array(
+            'pretty_version' => '1.0.1',
+            'version' => '1.0.1.0',
+            'type' => 'library',
+            'install_path' => __DIR__ . '/../psr/http-server-handler',
+            'aliases' => array(),
+            'reference' => 'aff2f80e33b7f026ec96bb42f63242dc50ffcae7',
+            'dev_requirement' => false,
+        ),
         'ralouphie/getallheaders' => array(
             'pretty_version' => '3.0.3',
             'version' => '3.0.3.0',
                 0 => '^2.2.1',
             ),
         ),
+        'zendframework/zend-httphandlerrunner' => array(
+            'dev_requirement' => false,
+            'replaced' => array(
+                0 => '^1.1.0',
+            ),
+        ),
     ),
 );
diff --git a/wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/CHANGELOG.md b/wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/CHANGELOG.md
new file mode 100644 (file)
index 0000000..38a8dfd
--- /dev/null
@@ -0,0 +1,135 @@
+# Changelog
+
+All notable changes to this project will be documented in this file, in reverse chronological order by release.
+
+## 1.2.0 - 2020-06-03
+
+### Added
+
+- Nothing.
+
+### Changed
+
+- [#4](https://github.com/laminas/laminas-httphandlerrunner/pull/4) adds a call to `flush()` within the `SapiStreamEmitter`, after emitting headers and the status line, but before emitting content. This change allows providing a response to the browser more quickly, allowing it to process the stream as it is pushed.
+
+### Deprecated
+
+- Nothing.
+
+### Removed
+
+- Nothing.
+
+### Fixed
+
+- Nothing.
+
+## 1.1.0 - 2019-02-19
+
+### Added
+
+- [zendframework/zend-httphandlerrunner#10](https://github.com/zendframework/zend-httphandlerrunner/pull/10) adds support for laminas-diactoros v2 releases.
+
+### Changed
+
+- Nothing.
+
+### Deprecated
+
+- Nothing.
+
+### Removed
+
+- Nothing.
+
+### Fixed
+
+- Nothing.
+
+## 1.0.2 - 2019-02-19
+
+### Added
+
+- [zendframework/zend-httphandlerrunner#9](https://github.com/zendframework/zend-httphandlerrunner/pull/9) adds support for PHP 7.3.
+
+### Changed
+
+- Nothing.
+
+### Deprecated
+
+- Nothing.
+
+### Removed
+
+- Nothing.
+
+### Fixed
+
+- Nothing.
+
+## 1.0.1 - 2018-02-21
+
+### Added
+
+- Nothing.
+
+### Changed
+
+- [zendframework/zend-httphandlerrunner#2](https://github.com/zendframework/zend-httphandlerrunner/pull/2) modifies
+  how the request and error response factories are composed with the
+  `RequestHandlerRunner` class. In both cases, they are now encapsulated in a
+  closure which also defines a return type hint, ensuring that if the factories
+  produce an invalid return type, a PHP `TypeError` will be raised.
+
+### Deprecated
+
+- Nothing.
+
+### Removed
+
+- Nothing.
+
+### Fixed
+
+- Nothing.
+
+## 1.0.0 - 2018-02-05
+
+Initial stable release.
+
+The `Laminas\HttpRequestHandler\Emitter` subcomponent was originally released as
+part of two packages:
+
+- `EmitterInterface` and the two SAPI emitter implementations were released
+  previously as part of the [laminas-diactoros](https://docs.laminas.dev/laminas-daictoros)
+  package.
+
+- `EmitterStack` was previously released as part of the
+  [mezzio](https://docs.mezzio.dev/mezzio/) package.
+
+These features are mostly verbatim from that package, with minor API changes.
+
+The `RequestHandlerRunner` was originally developed as part of version 3
+development of mezzio, but extracted here for general use with
+[PSR-15](https://www.php-fig.org/psr/psr-15) applications.
+
+### Added
+
+- Everything.
+
+### Changed
+
+- Nothing.
+
+### Deprecated
+
+- Nothing.
+
+### Removed
+
+- Nothing.
+
+### Fixed
+
+- Nothing.
diff --git a/wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/COPYRIGHT.md b/wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/COPYRIGHT.md
new file mode 100644 (file)
index 0000000..0a8cccc
--- /dev/null
@@ -0,0 +1 @@
+Copyright (c) 2020 Laminas Project a Series of LF Projects, LLC. (https://getlaminas.org/)
diff --git a/wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/LICENSE.md b/wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/LICENSE.md
new file mode 100644 (file)
index 0000000..10b40f1
--- /dev/null
@@ -0,0 +1,26 @@
+Copyright (c) 2020 Laminas Project a Series of LF Projects, LLC.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+- Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+- Neither the name of Laminas Foundation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/README.md b/wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/README.md
new file mode 100644 (file)
index 0000000..3fcda6f
--- /dev/null
@@ -0,0 +1,33 @@
+# laminas-httphandlerrunner
+
+[![Build Status](https://travis-ci.com/laminas/laminas-httphandlerrunner.svg?branch=master)](https://travis-ci.com/laminas/laminas-httphandlerrunner)
+[![Coverage Status](https://coveralls.io/repos/github/laminas/laminas-httphandlerrunner/badge.svg?branch=master)](https://coveralls.io/github/laminas/laminas-httphandlerrunner?branch=master)
+
+This library provides utilities for:
+
+- Emitting [PSR-7](https://www.php-fig.org/psr/psr-7) responses.
+- Running [PSR-15](https://www.php-fig.org/psr/psr-15) server request handlers,
+  which involves marshaling a PSR-7 `ServerRequestInterface`, handling
+  exceptions due to request creation, and emitting the response returned by the
+  composed request handler.
+
+The `RequestHandlerRunner` will be used in the bootstrap of your application to
+fire off the `RequestHandlerInterface` representing your application.
+
+## Installation
+
+Run the following to install this library:
+
+```bash
+$ composer require laminas/laminas-httphandlerrunner
+```
+
+## Documentation
+
+Documentation is [in the doc tree](docs/book/), and can be compiled using [mkdocs](https://www.mkdocs.org):
+
+```bash
+$ mkdocs build
+```
+
+You may also [browse the documentation online](https://docs.laminas.dev/laminas-httphandlerrunner/).
diff --git a/wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/composer.json b/wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/composer.json
new file mode 100644 (file)
index 0000000..7acc0a5
--- /dev/null
@@ -0,0 +1,71 @@
+{
+    "name": "laminas/laminas-httphandlerrunner",
+    "description": "Execute PSR-15 RequestHandlerInterface instances and emit responses they generate.",
+    "license": "BSD-3-Clause",
+    "keywords": [
+        "laminas",
+        "components",
+        "mezzio",
+        "psr-7",
+        "psr-15"
+    ],
+    "homepage": "https://laminas.dev",
+    "support": {
+        "docs": "https://docs.laminas.dev/laminas-httphandlerrunner/",
+        "issues": "https://github.com/laminas/laminas-httphandlerrunner/issues",
+        "source": "https://github.com/laminas/laminas-httphandlerrunner",
+        "rss": "https://github.com/laminas/laminas-httphandlerrunner/releases.atom",
+        "chat": "https://laminas.dev/chat",
+        "forum": "https://discourse.laminas.dev"
+    },
+    "config": {
+        "sort-packages": true
+    },
+    "extra": {
+        "branch-alias": {
+            "dev-master": "1.2.x-dev",
+            "dev-develop": "1.3.x-dev"
+        },
+        "laminas": {
+            "config-provider": "Laminas\\HttpHandlerRunner\\ConfigProvider"
+        }
+    },
+    "require": {
+        "php": "^7.1",
+        "laminas/laminas-zendframework-bridge": "^1.0",
+        "psr/http-message": "^1.0",
+        "psr/http-message-implementation": "^1.0",
+        "psr/http-server-handler": "^1.0"
+    },
+    "require-dev": {
+        "laminas/laminas-coding-standard": "~1.0.0",
+        "laminas/laminas-diactoros": "^1.7 || ^2.1.1",
+        "phpunit/phpunit": "^7.0.2"
+    },
+    "autoload": {
+        "psr-4": {
+            "Laminas\\HttpHandlerRunner\\": "src/"
+        }
+    },
+    "autoload-dev": {
+        "psr-4": {
+            "LaminasTest\\HttpHandlerRunner\\": "test/"
+        },
+        "files": [
+            "test/TestAsset/SapiResponse.php"
+        ]
+    },
+    "scripts": {
+        "check": [
+            "@cs-check",
+            "@test"
+        ],
+        "cs-check": "phpcs",
+        "cs-fix": "phpcbf",
+        "test": "phpunit --colors=always",
+        "test-coverage": "phpunit --colors=always --coverage-clover clover.xml"
+    },
+    "replace": {
+        "zendframework/zend-httphandlerrunner": "^1.1.0"
+    }
+}
diff --git a/wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/src/ConfigProvider.php b/wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/src/ConfigProvider.php
new file mode 100644 (file)
index 0000000..3a21140
--- /dev/null
@@ -0,0 +1,25 @@
+<?php
+
+/**
+ * @see       https://github.com/laminas/laminas-httphandlerrunner for the canonical source repository
+ * @copyright https://github.com/laminas/laminas-httphandlerrunner/blob/master/COPYRIGHT.md
+ * @license   https://github.com/laminas/laminas-httphandlerrunner/blob/master/LICENSE.md New BSD License
+ */
+
+namespace Laminas\HttpHandlerRunner;
+
+class ConfigProvider
+{
+    public function __invoke() : array
+    {
+        return [
+            'dependencies' => $this->getDependencies(),
+        ];
+    }
+
+    public function getDependencies() : array
+    {
+        return [
+        ];
+    }
+}
diff --git a/wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/src/Emitter/EmitterInterface.php b/wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/src/Emitter/EmitterInterface.php
new file mode 100644 (file)
index 0000000..f4a49b8
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * @see       https://github.com/laminas/laminas-httphandlerrunner for the canonical source repository
+ * @copyright https://github.com/laminas/laminas-httphandlerrunner/blob/master/COPYRIGHT.md
+ * @license   https://github.com/laminas/laminas-httphandlerrunner/blob/master/LICENSE.md New BSD License
+ */
+
+declare(strict_types=1);
+
+namespace Laminas\HttpHandlerRunner\Emitter;
+
+use Psr\Http\Message\ResponseInterface;
+
+interface EmitterInterface
+{
+    /**
+     * Emit a response.
+     *
+     * Emits a response, including status line, headers, and the message body,
+     * according to the environment.
+     *
+     * Implementations of this method may be written in such a way as to have
+     * side effects, such as usage of header() or pushing output to the
+     * output buffer.
+     *
+     * Implementations MAY raise exceptions if they are unable to emit the
+     * response; e.g., if headers have already been sent.
+     *
+     * Implementations MUST return a boolean. A boolean `true` indicates that
+     * the emitter was able to emit the response, while `false` indicates
+     * it was not.
+     */
+    public function emit(ResponseInterface $response) : bool;
+}
diff --git a/wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/src/Emitter/EmitterStack.php b/wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/src/Emitter/EmitterStack.php
new file mode 100644 (file)
index 0000000..3c0d85f
--- /dev/null
@@ -0,0 +1,100 @@
+<?php
+
+/**
+ * @see       https://github.com/laminas/laminas-httphandlerrunner for the canonical source repository
+ * @copyright https://github.com/laminas/laminas-httphandlerrunner/blob/master/COPYRIGHT.md
+ * @license   https://github.com/laminas/laminas-httphandlerrunner/blob/master/LICENSE.md New BSD License
+ */
+
+declare(strict_types=1);
+
+namespace Laminas\HttpHandlerRunner\Emitter;
+
+use Laminas\HttpHandlerRunner\Exception;
+use Psr\Http\Message\ResponseInterface;
+use SplStack;
+
+/**
+ * Provides an EmitterInterface implementation that acts as a stack of Emitters.
+ *
+ * The implementations emit() method iterates itself.
+ *
+ * When iterating the stack, the first emitter to return a boolean
+ * true value will short-circuit iteration.
+ */
+class EmitterStack extends SplStack implements EmitterInterface
+{
+    /**
+     * Emit a response
+     *
+     * Loops through the stack, calling emit() on each; any that return a
+     * boolean true value will short-circuit, skipping any remaining emitters
+     * in the stack.
+     *
+     * As such, return a boolean false value from an emitter to indicate it
+     * cannot emit the response, allowing the next emitter to try.
+     */
+    public function emit(ResponseInterface $response) : bool
+    {
+        foreach ($this as $emitter) {
+            if (false !== $emitter->emit($response)) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Set an emitter on the stack by index.
+     *
+     * @param mixed $index
+     * @param EmitterInterface $emitter
+     * @return void
+     * @throws InvalidArgumentException if not an EmitterInterface instance
+     */
+    public function offsetSet($index, $emitter)
+    {
+        $this->validateEmitter($emitter);
+        parent::offsetSet($index, $emitter);
+    }
+
+    /**
+     * Push an emitter to the stack.
+     *
+     * @param EmitterInterface $emitter
+     * @return void
+     * @throws InvalidArgumentException if not an EmitterInterface instance
+     */
+    public function push($emitter)
+    {
+        $this->validateEmitter($emitter);
+        parent::push($emitter);
+    }
+
+    /**
+     * Unshift an emitter to the stack.
+     *
+     * @param EmitterInterface $emitter
+     * @return void
+     * @throws InvalidArgumentException if not an EmitterInterface instance
+     */
+    public function unshift($emitter)
+    {
+        $this->validateEmitter($emitter);
+        parent::unshift($emitter);
+    }
+
+    /**
+     * Validate that an emitter implements EmitterInterface.
+     *
+     * @param mixed $emitter
+     * @throws Exception\InvalidEmitterException for non-emitter instances
+     */
+    private function validateEmitter($emitter) : void
+    {
+        if (! $emitter instanceof EmitterInterface) {
+            throw Exception\InvalidEmitterException::forEmitter($emitter);
+        }
+    }
+}
diff --git a/wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/src/Emitter/SapiEmitter.php b/wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/src/Emitter/SapiEmitter.php
new file mode 100644 (file)
index 0000000..5281473
--- /dev/null
@@ -0,0 +1,43 @@
+<?php
+
+/**
+ * @see       https://github.com/laminas/laminas-httphandlerrunner for the canonical source repository
+ * @copyright https://github.com/laminas/laminas-httphandlerrunner/blob/master/COPYRIGHT.md
+ * @license   https://github.com/laminas/laminas-httphandlerrunner/blob/master/LICENSE.md New BSD License
+ */
+
+declare(strict_types=1);
+
+namespace Laminas\HttpHandlerRunner\Emitter;
+
+use Psr\Http\Message\ResponseInterface;
+
+class SapiEmitter implements EmitterInterface
+{
+    use SapiEmitterTrait;
+
+    /**
+     * Emits a response for a PHP SAPI environment.
+     *
+     * Emits the status line and headers via the header() function, and the
+     * body content via the output buffer.
+     */
+    public function emit(ResponseInterface $response) : bool
+    {
+        $this->assertNoPreviousOutput();
+
+        $this->emitHeaders($response);
+        $this->emitStatusLine($response);
+        $this->emitBody($response);
+
+        return true;
+    }
+
+    /**
+     * Emit the message body.
+     */
+    private function emitBody(ResponseInterface $response) : void
+    {
+        echo $response->getBody();
+    }
+}
diff --git a/wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/src/Emitter/SapiEmitterTrait.php b/wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/src/Emitter/SapiEmitterTrait.php
new file mode 100644 (file)
index 0000000..d09c3a2
--- /dev/null
@@ -0,0 +1,102 @@
+<?php
+
+/**
+ * @see       https://github.com/laminas/laminas-httphandlerrunner for the canonical source repository
+ * @copyright https://github.com/laminas/laminas-httphandlerrunner/blob/master/COPYRIGHT.md
+ * @license   https://github.com/laminas/laminas-httphandlerrunner/blob/master/LICENSE.md New BSD License
+ */
+
+declare(strict_types=1);
+
+namespace Laminas\HttpHandlerRunner\Emitter;
+
+use Laminas\HttpHandlerRunner\Exception\EmitterException;
+use Psr\Http\Message\ResponseInterface;
+
+use function ob_get_length;
+use function ob_get_level;
+use function sprintf;
+use function str_replace;
+use function ucwords;
+
+trait SapiEmitterTrait
+{
+    /**
+     * Checks to see if content has previously been sent.
+     *
+     * If either headers have been sent or the output buffer contains content,
+     * raises an exception.
+     *
+     * @throws EmitterException if headers have already been sent.
+     * @throws EmitterException if output is present in the output buffer.
+     */
+    private function assertNoPreviousOutput()
+    {
+        if (headers_sent()) {
+            throw EmitterException::forHeadersSent();
+        }
+
+        if (ob_get_level() > 0 && ob_get_length() > 0) {
+            throw EmitterException::forOutputSent();
+        }
+    }
+
+    /**
+     * Emit the status line.
+     *
+     * Emits the status line using the protocol version and status code from
+     * the response; if a reason phrase is available, it, too, is emitted.
+     *
+     * It is important to mention that this method should be called after
+     * `emitHeaders()` in order to prevent PHP from changing the status code of
+     * the emitted response.
+     *
+     * @see \Laminas\HttpHandlerRunner\Emitter\SapiEmitterTrait::emitHeaders()
+     */
+    private function emitStatusLine(ResponseInterface $response) : void
+    {
+        $reasonPhrase = $response->getReasonPhrase();
+        $statusCode   = $response->getStatusCode();
+
+        header(sprintf(
+            'HTTP/%s %d%s',
+            $response->getProtocolVersion(),
+            $statusCode,
+            ($reasonPhrase ? ' ' . $reasonPhrase : '')
+        ), true, $statusCode);
+    }
+
+    /**
+     * Emit response headers.
+     *
+     * Loops through each header, emitting each; if the header value
+     * is an array with multiple values, ensures that each is sent
+     * in such a way as to create aggregate headers (instead of replace
+     * the previous).
+     */
+    private function emitHeaders(ResponseInterface $response) : void
+    {
+        $statusCode = $response->getStatusCode();
+
+        foreach ($response->getHeaders() as $header => $values) {
+            $name  = $this->filterHeader($header);
+            $first = $name === 'Set-Cookie' ? false : true;
+            foreach ($values as $value) {
+                header(sprintf(
+                    '%s: %s',
+                    $name,
+                    $value
+                ), $first, $statusCode);
+                $first = false;
+            }
+        }
+    }
+
+    /**
+     * Filter a header name to wordcase
+     */
+    private function filterHeader(string $header) : string
+    {
+        return ucwords($header, '-');
+    }
+}
diff --git a/wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/src/Emitter/SapiStreamEmitter.php b/wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/src/Emitter/SapiStreamEmitter.php
new file mode 100644 (file)
index 0000000..7dfce3d
--- /dev/null
@@ -0,0 +1,135 @@
+<?php
+
+/**
+ * @see       https://github.com/laminas/laminas-httphandlerrunner for the canonical source repository
+ * @copyright https://github.com/laminas/laminas-httphandlerrunner/blob/master/COPYRIGHT.md
+ * @license   https://github.com/laminas/laminas-httphandlerrunner/blob/master/LICENSE.md New BSD License
+ */
+
+declare(strict_types=1);
+
+namespace Laminas\HttpHandlerRunner\Emitter;
+
+use Psr\Http\Message\ResponseInterface;
+
+use function preg_match;
+use function strlen;
+use function substr;
+
+class SapiStreamEmitter implements EmitterInterface
+{
+    use SapiEmitterTrait;
+
+    /**
+     * @var int Maximum output buffering size for each iteration.
+     */
+    private $maxBufferLength;
+
+    public function __construct(int $maxBufferLength = 8192)
+    {
+        $this->maxBufferLength = $maxBufferLength;
+    }
+
+    /**
+     * Emits a response for a PHP SAPI environment.
+     *
+     * Emits the status line and headers via the header() function, and the
+     * body content via the output buffer.
+     */
+    public function emit(ResponseInterface $response) : bool
+    {
+        $this->assertNoPreviousOutput();
+        $this->emitHeaders($response);
+        $this->emitStatusLine($response);
+
+        flush();
+
+        $range = $this->parseContentRange($response->getHeaderLine('Content-Range'));
+
+        if (null === $range || 'bytes' !== $range[0]) {
+            $this->emitBody($response);
+            return true;
+        }
+
+        $this->emitBodyRange($range, $response);
+        return true;
+    }
+
+    /**
+     * Emit the message body.
+     */
+    private function emitBody(ResponseInterface $response) : void
+    {
+        $body = $response->getBody();
+
+        if ($body->isSeekable()) {
+            $body->rewind();
+        }
+
+        if (! $body->isReadable()) {
+            echo $body;
+            return;
+        }
+
+        while (! $body->eof()) {
+            echo $body->read($this->maxBufferLength);
+        }
+    }
+
+    /**
+     * Emit a range of the message body.
+     */
+    private function emitBodyRange(array $range, ResponseInterface $response) : void
+    {
+        list($unit, $first, $last, $length) = $range;
+
+        $body = $response->getBody();
+
+        $length = $last - $first + 1;
+
+        if ($body->isSeekable()) {
+            $body->seek($first);
+
+            $first = 0;
+        }
+
+        if (! $body->isReadable()) {
+            echo substr($body->getContents(), $first, $length);
+            return;
+        }
+
+        $remaining = $length;
+
+        while ($remaining >= $this->maxBufferLength && ! $body->eof()) {
+            $contents   = $body->read($this->maxBufferLength);
+            $remaining -= strlen($contents);
+
+            echo $contents;
+        }
+
+        if ($remaining > 0 && ! $body->eof()) {
+            echo $body->read($remaining);
+        }
+    }
+
+    /**
+     * Parse content-range header
+     * http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.16
+     *
+     * @return null|array [unit, first, last, length]; returns null if no
+     *     content range or an invalid content range is provided
+     */
+    private function parseContentRange(string $header) : ?array
+    {
+        if (! preg_match('/(?P<unit>[\w]+)\s+(?P<first>\d+)-(?P<last>\d+)\/(?P<length>\d+|\*)/', $header, $matches)) {
+            return null;
+        }
+
+        return [
+            $matches['unit'],
+            (int) $matches['first'],
+            (int) $matches['last'],
+            $matches['length'] === '*' ? '*' : (int) $matches['length'],
+        ];
+    }
+}
diff --git a/wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/src/Exception/EmitterException.php b/wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/src/Exception/EmitterException.php
new file mode 100644 (file)
index 0000000..fa66fbf
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+
+/**
+ * @see       https://github.com/laminas/laminas-httphandlerrunner for the canonical source repository
+ * @copyright https://github.com/laminas/laminas-httphandlerrunner/blob/master/COPYRIGHT.md
+ * @license   https://github.com/laminas/laminas-httphandlerrunner/blob/master/LICENSE.md New BSD License
+ */
+
+declare(strict_types=1);
+
+namespace Laminas\HttpHandlerRunner\Exception;
+
+use RuntimeException;
+
+class EmitterException extends RuntimeException implements ExceptionInterface
+{
+    public static function forHeadersSent() : self
+    {
+        return new self('Unable to emit response; headers already sent');
+    }
+
+    public static function forOutputSent() : self
+    {
+        return new self('Output has been emitted previously; cannot emit response');
+    }
+}
diff --git a/wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/src/Exception/ExceptionInterface.php b/wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/src/Exception/ExceptionInterface.php
new file mode 100644 (file)
index 0000000..c30b6c6
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+
+/**
+ * @see       https://github.com/laminas/laminas-httphandlerrunner for the canonical source repository
+ * @copyright https://github.com/laminas/laminas-httphandlerrunner/blob/master/COPYRIGHT.md
+ * @license   https://github.com/laminas/laminas-httphandlerrunner/blob/master/LICENSE.md New BSD License
+ */
+
+declare(strict_types=1);
+
+namespace Laminas\HttpHandlerRunner\Exception;
+
+/**
+ * Marker interface for package exceptions.
+ */
+interface ExceptionInterface
+{
+}
diff --git a/wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/src/Exception/InvalidEmitterException.php b/wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/src/Exception/InvalidEmitterException.php
new file mode 100644 (file)
index 0000000..ee3418e
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * @see       https://github.com/laminas/laminas-httphandlerrunner for the canonical source repository
+ * @copyright https://github.com/laminas/laminas-httphandlerrunner/blob/master/COPYRIGHT.md
+ * @license   https://github.com/laminas/laminas-httphandlerrunner/blob/master/LICENSE.md New BSD License
+ */
+
+declare(strict_types=1);
+
+namespace Laminas\HttpHandlerRunner\Exception;
+
+use InvalidArgumentException;
+use Laminas\HttpHandlerRunner\Emitter;
+
+use function get_class;
+use function gettype;
+use function is_object;
+use function sprintf;
+
+class InvalidEmitterException extends InvalidArgumentException implements ExceptionInterface
+{
+    /**
+     * @var mixed $emitter Invalid emitter type
+     */
+    public static function forEmitter($emitter) : self
+    {
+        return new self(sprintf(
+            '%s can only compose %s implementations; received %s',
+            Emitter\EmitterStack::class,
+            Emitter\EmitterInterface::class,
+            is_object($emitter) ? get_class($emitter) : gettype($emitter)
+        ));
+    }
+}
diff --git a/wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/src/RequestHandlerRunner.php b/wcfsetup/install/files/lib/system/api/laminas/laminas-httphandlerrunner/src/RequestHandlerRunner.php
new file mode 100644 (file)
index 0000000..851c9e1
--- /dev/null
@@ -0,0 +1,106 @@
+<?php
+
+/**
+ * @see       https://github.com/laminas/laminas-httphandlerrunner for the canonical source repository
+ * @copyright https://github.com/laminas/laminas-httphandlerrunner/blob/master/COPYRIGHT.md
+ * @license   https://github.com/laminas/laminas-httphandlerrunner/blob/master/LICENSE.md New BSD License
+ */
+
+declare(strict_types=1);
+
+namespace Laminas\HttpHandlerRunner;
+
+use Psr\Http\Message\ResponseInterface;
+use Psr\Http\Message\ServerRequestInterface;
+use Psr\Http\Server\RequestHandlerInterface;
+use Throwable;
+
+/**
+ * "Run" a request handler.
+ *
+ * The RequestHandlerRunner will marshal a request using the composed factory, and
+ * then pass the request to the composed handler. Finally, it emits the response
+ * returned by the handler using the composed emitter.
+ *
+ * If the factory for generating the request raises an exception or throwable,
+ * then the runner will use the composed error response generator to generate a
+ * response, based on the exception or throwable raised.
+ */
+class RequestHandlerRunner
+{
+    /**
+     * @var Emitter\EmitterInterface
+     */
+    private $emitter;
+
+    /**
+     * A request handler to run as the application.
+     *
+     * @var RequestHandlerInterface
+     */
+    private $handler;
+
+    /**
+     * A factory capable of generating an error response in the scenario that
+     * the $serverRequestFactory raises an exception during generation of the
+     * request instance.
+     *
+     * The factory will receive the Throwable or Exception that caused the error,
+     * and must return a Psr\Http\Message\ResponseInterface instance.
+     *
+     * @var callable
+     */
+    private $serverRequestErrorResponseGenerator;
+
+    /**
+     * A factory capable of generating a Psr\Http\Message\ServerRequestInterface instance.
+     * The factory will not receive any arguments.
+     *
+     * @var callable
+     */
+    private $serverRequestFactory;
+
+    public function __construct(
+        RequestHandlerInterface $handler,
+        Emitter\EmitterInterface $emitter,
+        callable $serverRequestFactory,
+        callable $serverRequestErrorResponseGenerator
+    ) {
+        $this->handler = $handler;
+        $this->emitter = $emitter;
+
+        // Factories are cast as Closures to ensure return type safety.
+        $this->serverRequestFactory = function () use ($serverRequestFactory) : ServerRequestInterface {
+            return $serverRequestFactory();
+        };
+
+        $this->serverRequestErrorResponseGenerator =
+            function (Throwable $exception) use ($serverRequestErrorResponseGenerator) : ResponseInterface {
+                return $serverRequestErrorResponseGenerator($exception);
+            };
+    }
+
+    /**
+     * Run the application
+     */
+    public function run() : void
+    {
+        try {
+            $request = ($this->serverRequestFactory)();
+        } catch (Throwable $e) {
+            // Error in generating the request
+            $this->emitMarshalServerRequestException($e);
+            return;
+        }
+
+        $response = $this->handler->handle($request);
+
+        $this->emitter->emit($response);
+    }
+
+    private function emitMarshalServerRequestException(Throwable $exception) : void
+    {
+        $response = ($this->serverRequestErrorResponseGenerator)($exception);
+        $this->emitter->emit($response);
+    }
+}
diff --git a/wcfsetup/install/files/lib/system/api/psr/http-server-handler/LICENSE b/wcfsetup/install/files/lib/system/api/psr/http-server-handler/LICENSE
new file mode 100644 (file)
index 0000000..b71ec5d
--- /dev/null
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2016 PHP Framework Interoperability Group
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/wcfsetup/install/files/lib/system/api/psr/http-server-handler/README.md b/wcfsetup/install/files/lib/system/api/psr/http-server-handler/README.md
new file mode 100644 (file)
index 0000000..1b7b486
--- /dev/null
@@ -0,0 +1,6 @@
+HTTP Server Handler
+===================
+
+Provides the `RequestHandlerInterface` of [PSR-15][psr-15].
+
+[psr-15]: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-15-request-handlers.md
diff --git a/wcfsetup/install/files/lib/system/api/psr/http-server-handler/composer.json b/wcfsetup/install/files/lib/system/api/psr/http-server-handler/composer.json
new file mode 100644 (file)
index 0000000..9e8b51d
--- /dev/null
@@ -0,0 +1,36 @@
+{
+    "name": "psr/http-server-handler",
+    "description": "Common interface for HTTP server-side request handler",
+    "keywords": [
+        "psr",
+        "psr-7",
+        "psr-15",
+        "http-interop",
+        "http",
+        "server",
+        "handler",
+        "request",
+        "response"
+    ],
+    "license": "MIT",
+    "authors": [
+        {
+            "name": "PHP-FIG",
+            "homepage": "http://www.php-fig.org/"
+        }
+    ],
+    "require": {
+        "php": ">=7.0",
+        "psr/http-message": "^1.0"
+    },
+    "autoload": {
+        "psr-4": {
+            "Psr\\Http\\Server\\": "src/"
+        }
+    },
+    "extra": {
+        "branch-alias": {
+            "dev-master": "1.0.x-dev"
+        }
+    }
+}
diff --git a/wcfsetup/install/files/lib/system/api/psr/http-server-handler/src/RequestHandlerInterface.php b/wcfsetup/install/files/lib/system/api/psr/http-server-handler/src/RequestHandlerInterface.php
new file mode 100644 (file)
index 0000000..83911e2
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+namespace Psr\Http\Server;
+
+use Psr\Http\Message\ResponseInterface;
+use Psr\Http\Message\ServerRequestInterface;
+
+/**
+ * Handles a server request and produces a response.
+ *
+ * An HTTP request handler process an HTTP request in order to produce an
+ * HTTP response.
+ */
+interface RequestHandlerInterface
+{
+    /**
+     * Handles a request and produces a response.
+     *
+     * May call other collaborating code to generate the response.
+     */
+    public function handle(ServerRequestInterface $request): ResponseInterface;
+}