Plugin Directory

Changeset 3427970


Ignore:
Timestamp:
12/26/2025 08:23:32 PM (8 weeks ago)
Author:
tygalive
Message:

Release 1.1.9

Location:
force-reinstall/trunk
Files:
75 added
92 edited

Legend:

Unmodified
Added
Removed
  • force-reinstall/trunk/composer.json

    r2924444 r3427970  
    11{
    22    "name": "rich4rdmuvirimi/force-reinstall",
     3    "version" : "1.1.9",
    34    "description": "Easily force a Plugin or Theme reinstall from WordPress.org",
    45    "type": "wordpress-plugin",
     
    3233            "@phpcs",
    3334            "@test"
     35        ],
     36        "bump-version": [
     37            "@php bump-version.php"
    3438        ],
    3539        "phpcs": [
     
    6670            "@composer dump-autoload",
    6771            "@php -r \"@unlink('./mozart.phar');\""
     72        ],
     73        "docker:up" : [
     74            "sudo docker-compose -f docker-compose.yml up -d"
     75        ],
     76        "docker:down" : [
     77            "sudo docker-compose -f docker-compose.yml down"
    6878        ]
    6979    },
     
    7989    "require": {
    8090        "php": ">=7.3",
    81         "symfony/polyfill-php74": "^1.27",
    82         "symfony/polyfill-php80": "^1.27",
    83         "symfony/polyfill-php81": "^1.27",
    84         "symfony/polyfill-php82": "^1.27",
    85         "br33f/php-ga4-mp": "^0.1.3",
    86         "yidas/client-ip": "^1.0",
    87         "ext-json": "*"
     91        "ext-json": "*",
     92        "br33f/php-ga4-mp": "^0.1.4",
     93        "symfony/polyfill-php74": "^1.33",
     94        "symfony/polyfill-php80": "^1.33",
     95        "symfony/polyfill-php81": "^1.33",
     96        "symfony/polyfill-php82": "^1.33",
     97        "symfony/polyfill-php83": "^1.33",
     98        "symfony/polyfill-php84": "^1.33",
     99        "symfony/polyfill-php85": "^1.33",
     100        "yidas/client-ip": "^1.0"
    88101    },
    89102    "require-dev": {
  • force-reinstall/trunk/force-reinstall.php

    r2924444 r3427970  
    1212 * Plugin URI:        https://github.com/richard-muvirimi/wp-plugin-force-reinstall
    1313 * Description:       Easily force a Plugin or Theme reinstall from WordPress.org
    14  * Version:           1.1.8
     14 * Version:           1.1.9
    1515 * Author:            Richard Muvirimi
    1616 * Author URI:        http://richard.co.zw
     
    4343   * Plugin version number
    4444   */
    45 const FORCE_REINSTALL_VERSION = '1.1.8';
     45const FORCE_REINSTALL_VERSION = '1.1.9';
    4646
    4747  /**
  • force-reinstall/trunk/readme.md

    r2924444 r3427970  
    55- **_Tags:_** plugin, theme, install, update, corrupted, fix, reinstall, redo
    66- **_Requires at least:_** 4.0
    7 - **_Tested up to:_** 6.2
    8 - **_Stable tag:_** 1.1.8
     7- **_Tested up to:_** 6.9
     8- **_Stable tag:_** 1.1.9
    99- **_License:_** GPLv2 or later
    1010- **_License URI:_** [GPL - 2.0](http://www.gnu.org/licenses/gpl-2.0.html)
     
    5555## Changelog
    5656
    57 **_1.1.8_**
     57**_1.1.8 - 1.1.9 _**
    5858
    5959- Minor Optimizations
  • force-reinstall/trunk/readme.txt

    r2924444 r3427970  
    44Tags: plugin, theme, install, update, corrupted, fix, reinstall, redo
    55Requires at least: 4.0
    6 Tested up to: 6.2
    7 Stable tag: 1.1.8
     6Tested up to: 6.9
     7Stable tag: 1.1.9
    88License: GPLv2 or later
    99License URI: [GPL - 2.0](http://www.gnu.org/licenses/gpl-2.0.html)
     
    6565== Changelog ==
    6666
    67 = 1.1.8 =
     67= 1.1.8 - 1.1.9 =
    6868* Minor optimizations
    6969
  • force-reinstall/trunk/src/Views/js/admin-rating.js

    r2871586 r3427970  
    22    "use strict";
    33
    4     $(document).ready(function () {
     4    $(document).on("DOMContentLoaded",function () {
    55
    66        const pluginName = window["force_reinstall"].name;
  • force-reinstall/trunk/tests/src/ControllerLoaderTest.php

    r2924444 r3427970  
    4242
    4343        // constants loaded
    44         self::assertTrue(FORCE_REINSTALL_VERSION !== null);
    45         self::assertTrue(FORCE_REINSTALL_NAME !== null);
    46         self::assertTrue(FORCE_REINSTALL_FILE !== null);
    47         self::assertTrue(FORCE_REINSTALL_SLUG !== null);
     44        self::assertTrue(FORCE_REINSTALL_VERSION !== null, "FORCE_REINSTALL_VERSION is null");
     45        self::assertTrue(FORCE_REINSTALL_NAME !== null, "FORCE_REINSTALL_NAME is null");
     46        self::assertTrue(FORCE_REINSTALL_FILE !== null, "FORCE_REINSTALL_FILE is null");
     47        self::assertTrue(FORCE_REINSTALL_SLUG !== null, "FORCE_REINSTALL_SLUG is null");
    4848
    4949        // assert added.
    50         self::assertNotFalse(has_action('init', '__return_true'));
    51         self::assertNotFalse(has_filter('the_title', '__return_true'));
     50        self::assertNotFalse(has_action('init', '__return_true'), "init action not added");
     51        self::assertNotFalse(has_filter('the_title', '__return_true'), "the_title filter not added");
    5252
    5353        // assert priority.
    54         self::assertSame(25, has_action('init', '__return_true'));
    55         self::assertSame(25, has_filter('the_title', '__return_true'));
     54        self::assertSame(25, has_action('init', '__return_true'), "init action priority not 25");
     55        self::assertSame(25, has_filter('the_title', '__return_true'), "the_title filter priority not 25");
    5656    }
    5757
  • force-reinstall/trunk/tests/src/bootstrap.php

    r2924444 r3427970  
    33 * Phpunit bootstrap file for running tests
    44 *
     5 * phpcs:disable WordPress.VIP.RestrictedFunctions.file_get_contents_file_get_contents
     6 * phpcs:disable WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents
     7 * phpcs:disable WordPress.WP.AlternativeFunctions.file_system_read_file_get_contents
    58 */
    69
     
    6770if (!function_exists('plugin_basename')) {
    6871
    69     function plugin_basename(string $file)
     72    function plugin_basename(string $file):string
    7073    {
    7174        return basename($file, ".php") . "/" . basename($file);
  • force-reinstall/trunk/vendor/autoload.php

    r2924444 r3427970  
    1515        }
    1616    }
    17     trigger_error(
    18         $err,
    19         E_USER_ERROR
    20     );
     17    throw new RuntimeException($err);
    2118}
    2219
    2320require_once __DIR__ . '/composer/autoload_real.php';
    2421
    25 return ComposerAutoloaderInit3520ddb1e8287a80a1ad1e8646ed1726::getLoader();
     22return ComposerAutoloaderInitfce80d8a185ff490615b59cfd27afb17::getLoader();
  • force-reinstall/trunk/vendor/composer/InstalledVersions.php

    r2924444 r3427970  
    2828{
    2929    /**
     30     * @var string|null if set (by reflection by Composer), this should be set to the path where this class is being copied to
     31     * @internal
     32     */
     33    private static $selfDir = null;
     34
     35    /**
    3036     * @var mixed[]|null
    3137     * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null
    3238     */
    3339    private static $installed;
     40
     41    /**
     42     * @var bool
     43     */
     44    private static $installedIsLocalDir;
    3445
    3546    /**
     
    310321        self::$installed = $data;
    311322        self::$installedByVendor = array();
     323
     324        // when using reload, we disable the duplicate protection to ensure that self::$installed data is
     325        // always returned, but we cannot know whether it comes from the installed.php in __DIR__ or not,
     326        // so we have to assume it does not, and that may result in duplicate data being returned when listing
     327        // all installed packages for example
     328        self::$installedIsLocalDir = false;
     329    }
     330
     331    /**
     332     * @return string
     333     */
     334    private static function getSelfDir()
     335    {
     336        if (self::$selfDir === null) {
     337            self::$selfDir = strtr(__DIR__, '\\', '/');
     338        }
     339
     340        return self::$selfDir;
    312341    }
    313342
     
    323352
    324353        $installed = array();
     354        $copiedLocalDir = false;
    325355
    326356        if (self::$canGetVendors) {
     357            $selfDir = self::getSelfDir();
    327358            foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
     359                $vendorDir = strtr($vendorDir, '\\', '/');
    328360                if (isset(self::$installedByVendor[$vendorDir])) {
    329361                    $installed[] = self::$installedByVendor[$vendorDir];
     
    331363                    /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
    332364                    $required = require $vendorDir.'/composer/installed.php';
    333                     $installed[] = self::$installedByVendor[$vendorDir] = $required;
    334                     if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
    335                         self::$installed = $installed[count($installed) - 1];
     365                    self::$installedByVendor[$vendorDir] = $required;
     366                    $installed[] = $required;
     367                    if (self::$installed === null && $vendorDir.'/composer' === $selfDir) {
     368                        self::$installed = $required;
     369                        self::$installedIsLocalDir = true;
    336370                    }
     371                }
     372                if (self::$installedIsLocalDir && $vendorDir.'/composer' === $selfDir) {
     373                    $copiedLocalDir = true;
    337374                }
    338375            }
     
    351388        }
    352389
    353         if (self::$installed !== array()) {
     390        if (self::$installed !== array() && !$copiedLocalDir) {
    354391            $installed[] = self::$installed;
    355392        }
  • force-reinstall/trunk/vendor/composer/autoload_classmap.php

    r2872625 r3427970  
    1010    'ForceReinstall_AllowDynamicProperties' => $vendorDir . '/force-reinstall/classes/symfony/polyfill-php82/Resources/stubs/AllowDynamicProperties.php',
    1111    'ForceReinstall_Attribute' => $vendorDir . '/force-reinstall/classes/symfony/polyfill-php80/Resources/stubs/Attribute.php',
     12    'ForceReinstall_CURLStringFile' => $vendorDir . '/force-reinstall/classes/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php',
    1213    'ForceReinstall_ClientIP' => $vendorDir . '/force-reinstall/classes/yidas/client-ip/src/ClientIP.php',
     14    'ForceReinstall_DateError' => $vendorDir . '/force-reinstall/classes/symfony/polyfill-php83/Resources/stubs/DateError.php',
     15    'ForceReinstall_DateException' => $vendorDir . '/force-reinstall/classes/symfony/polyfill-php83/Resources/stubs/DateException.php',
     16    'ForceReinstall_DateInvalidOperationException' => $vendorDir . '/force-reinstall/classes/symfony/polyfill-php83/Resources/stubs/DateInvalidOperationException.php',
     17    'ForceReinstall_DateInvalidTimeZoneException' => $vendorDir . '/force-reinstall/classes/symfony/polyfill-php83/Resources/stubs/DateInvalidTimeZoneException.php',
     18    'ForceReinstall_DateMalformedIntervalStringException' => $vendorDir . '/force-reinstall/classes/symfony/polyfill-php83/Resources/stubs/DateMalformedIntervalStringException.php',
     19    'ForceReinstall_DateMalformedPeriodStringException' => $vendorDir . '/force-reinstall/classes/symfony/polyfill-php83/Resources/stubs/DateMalformedPeriodStringException.php',
     20    'ForceReinstall_DateMalformedStringException' => $vendorDir . '/force-reinstall/classes/symfony/polyfill-php83/Resources/stubs/DateMalformedStringException.php',
     21    'ForceReinstall_DateObjectError' => $vendorDir . '/force-reinstall/classes/symfony/polyfill-php83/Resources/stubs/DateObjectError.php',
     22    'ForceReinstall_DateRangeError' => $vendorDir . '/force-reinstall/classes/symfony/polyfill-php83/Resources/stubs/DateRangeError.php',
     23    'ForceReinstall_Deprecated' => $vendorDir . '/force-reinstall/classes/symfony/polyfill-php84/Resources/stubs/Deprecated.php',
     24    'ForceReinstall_NoDiscard' => $vendorDir . '/force-reinstall/classes/symfony/polyfill-php85/Resources/stubs/NoDiscard.php',
     25    'ForceReinstall_Override' => $vendorDir . '/force-reinstall/classes/symfony/polyfill-php83/Resources/stubs/Override.php',
    1326    'ForceReinstall_PhpToken' => $vendorDir . '/force-reinstall/classes/symfony/polyfill-php80/Resources/stubs/PhpToken.php',
     27    'ForceReinstall_ReflectionConstant' => $vendorDir . '/force-reinstall/classes/symfony/polyfill-php84/Resources/stubs/ReflectionConstant.php',
    1428    'ForceReinstall_ReturnTypeWillChange' => $vendorDir . '/force-reinstall/classes/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php',
     29    'ForceReinstall_SQLite3Exception' => $vendorDir . '/force-reinstall/classes/symfony/polyfill-php83/Resources/stubs/SQLite3Exception.php',
    1530    'ForceReinstall_SensitiveParameter' => $vendorDir . '/force-reinstall/classes/symfony/polyfill-php82/Resources/stubs/SensitiveParameter.php',
    1631    'ForceReinstall_SensitiveParameterValue' => $vendorDir . '/force-reinstall/classes/symfony/polyfill-php82/Resources/stubs/SensitiveParameterValue.php',
  • force-reinstall/trunk/vendor/composer/autoload_real.php

    r2924444 r3427970  
    33// autoload_real.php @generated by Composer
    44
    5 class ComposerAutoloaderInit3520ddb1e8287a80a1ad1e8646ed1726
     5class ComposerAutoloaderInitfce80d8a185ff490615b59cfd27afb17
    66{
    77    private static $loader;
     
    2525        require __DIR__ . '/platform_check.php';
    2626
    27         spl_autoload_register(array('ComposerAutoloaderInit3520ddb1e8287a80a1ad1e8646ed1726', 'loadClassLoader'), true, true);
     27        spl_autoload_register(array('ComposerAutoloaderInitfce80d8a185ff490615b59cfd27afb17', 'loadClassLoader'), true, true);
    2828        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
    29         spl_autoload_unregister(array('ComposerAutoloaderInit3520ddb1e8287a80a1ad1e8646ed1726', 'loadClassLoader'));
     29        spl_autoload_unregister(array('ComposerAutoloaderInitfce80d8a185ff490615b59cfd27afb17', 'loadClassLoader'));
    3030
    3131        require __DIR__ . '/autoload_static.php';
    32         call_user_func(\Composer\Autoload\ComposerStaticInit3520ddb1e8287a80a1ad1e8646ed1726::getInitializer($loader));
     32        call_user_func(\Composer\Autoload\ComposerStaticInitfce80d8a185ff490615b59cfd27afb17::getInitializer($loader));
    3333
    3434        $loader->register(true);
  • force-reinstall/trunk/vendor/composer/autoload_static.php

    r2924444 r3427970  
    55namespace Composer\Autoload;
    66
    7 class ComposerStaticInit3520ddb1e8287a80a1ad1e8646ed1726
     7class ComposerStaticInitfce80d8a185ff490615b59cfd27afb17
    88{
    99    public static $prefixLengthsPsr4 = array (
    10         'R' => 
     10        'R' =>
    1111        array (
    1212            'Rich4rdMuvirimi\\ForceReinstall\\Vendor\\' => 38,
     
    1616
    1717    public static $prefixDirsPsr4 = array (
    18         'Rich4rdMuvirimi\\ForceReinstall\\Vendor\\' => 
     18        'Rich4rdMuvirimi\\ForceReinstall\\Vendor\\' =>
    1919        array (
    2020            0 => __DIR__ . '/..' . '/force-reinstall/psr-4',
    2121        ),
    22         'Rich4rdMuvirimi\\ForceReinstall\\' => 
     22        'Rich4rdMuvirimi\\ForceReinstall\\' =>
    2323        array (
    2424            0 => __DIR__ . '/../..' . '/src',
     
    3030        'ForceReinstall_AllowDynamicProperties' => __DIR__ . '/..' . '/force-reinstall/classes/symfony/polyfill-php82/Resources/stubs/AllowDynamicProperties.php',
    3131        'ForceReinstall_Attribute' => __DIR__ . '/..' . '/force-reinstall/classes/symfony/polyfill-php80/Resources/stubs/Attribute.php',
     32        'ForceReinstall_CURLStringFile' => __DIR__ . '/..' . '/force-reinstall/classes/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php',
    3233        'ForceReinstall_ClientIP' => __DIR__ . '/..' . '/force-reinstall/classes/yidas/client-ip/src/ClientIP.php',
     34        'ForceReinstall_DateError' => __DIR__ . '/..' . '/force-reinstall/classes/symfony/polyfill-php83/Resources/stubs/DateError.php',
     35        'ForceReinstall_DateException' => __DIR__ . '/..' . '/force-reinstall/classes/symfony/polyfill-php83/Resources/stubs/DateException.php',
     36        'ForceReinstall_DateInvalidOperationException' => __DIR__ . '/..' . '/force-reinstall/classes/symfony/polyfill-php83/Resources/stubs/DateInvalidOperationException.php',
     37        'ForceReinstall_DateInvalidTimeZoneException' => __DIR__ . '/..' . '/force-reinstall/classes/symfony/polyfill-php83/Resources/stubs/DateInvalidTimeZoneException.php',
     38        'ForceReinstall_DateMalformedIntervalStringException' => __DIR__ . '/..' . '/force-reinstall/classes/symfony/polyfill-php83/Resources/stubs/DateMalformedIntervalStringException.php',
     39        'ForceReinstall_DateMalformedPeriodStringException' => __DIR__ . '/..' . '/force-reinstall/classes/symfony/polyfill-php83/Resources/stubs/DateMalformedPeriodStringException.php',
     40        'ForceReinstall_DateMalformedStringException' => __DIR__ . '/..' . '/force-reinstall/classes/symfony/polyfill-php83/Resources/stubs/DateMalformedStringException.php',
     41        'ForceReinstall_DateObjectError' => __DIR__ . '/..' . '/force-reinstall/classes/symfony/polyfill-php83/Resources/stubs/DateObjectError.php',
     42        'ForceReinstall_DateRangeError' => __DIR__ . '/..' . '/force-reinstall/classes/symfony/polyfill-php83/Resources/stubs/DateRangeError.php',
     43        'ForceReinstall_Deprecated' => __DIR__ . '/..' . '/force-reinstall/classes/symfony/polyfill-php84/Resources/stubs/Deprecated.php',
     44        'ForceReinstall_NoDiscard' => __DIR__ . '/..' . '/force-reinstall/classes/symfony/polyfill-php85/Resources/stubs/NoDiscard.php',
     45        'ForceReinstall_Override' => __DIR__ . '/..' . '/force-reinstall/classes/symfony/polyfill-php83/Resources/stubs/Override.php',
    3346        'ForceReinstall_PhpToken' => __DIR__ . '/..' . '/force-reinstall/classes/symfony/polyfill-php80/Resources/stubs/PhpToken.php',
     47        'ForceReinstall_ReflectionConstant' => __DIR__ . '/..' . '/force-reinstall/classes/symfony/polyfill-php84/Resources/stubs/ReflectionConstant.php',
    3448        'ForceReinstall_ReturnTypeWillChange' => __DIR__ . '/..' . '/force-reinstall/classes/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php',
     49        'ForceReinstall_SQLite3Exception' => __DIR__ . '/..' . '/force-reinstall/classes/symfony/polyfill-php83/Resources/stubs/SQLite3Exception.php',
    3550        'ForceReinstall_SensitiveParameter' => __DIR__ . '/..' . '/force-reinstall/classes/symfony/polyfill-php82/Resources/stubs/SensitiveParameter.php',
    3651        'ForceReinstall_SensitiveParameterValue' => __DIR__ . '/..' . '/force-reinstall/classes/symfony/polyfill-php82/Resources/stubs/SensitiveParameterValue.php',
     
    4964    {
    5065        return \Closure::bind(function () use ($loader) {
    51             $loader->prefixLengthsPsr4 = ComposerStaticInit3520ddb1e8287a80a1ad1e8646ed1726::$prefixLengthsPsr4;
    52             $loader->prefixDirsPsr4 = ComposerStaticInit3520ddb1e8287a80a1ad1e8646ed1726::$prefixDirsPsr4;
    53             $loader->classMap = ComposerStaticInit3520ddb1e8287a80a1ad1e8646ed1726::$classMap;
     66            $loader->prefixLengthsPsr4 = ComposerStaticInitfce80d8a185ff490615b59cfd27afb17::$prefixLengthsPsr4;
     67            $loader->prefixDirsPsr4 = ComposerStaticInitfce80d8a185ff490615b59cfd27afb17::$prefixDirsPsr4;
     68            $loader->classMap = ComposerStaticInitfce80d8a185ff490615b59cfd27afb17::$classMap;
    5469
    5570        }, null, ClassLoader::class);
  • force-reinstall/trunk/vendor/composer/installed.json

    r2924444 r3427970  
    33        {
    44            "name": "br33f/php-ga4-mp",
    5             "version": "v0.1.3",
    6             "version_normalized": "0.1.3.0",
     5            "version": "v0.1.6",
     6            "version_normalized": "0.1.6.0",
    77            "source": {
    88                "type": "git",
    99                "url": "https://github.com/br33f/php-GA4-Measurement-Protocol.git",
    10                 "reference": "7fd3d60213e5955886e05a628c972b3291c0be31"
    11             },
    12             "dist": {
    13                 "type": "zip",
    14                 "url": "https://api.github.com/repos/br33f/php-GA4-Measurement-Protocol/zipball/7fd3d60213e5955886e05a628c972b3291c0be31",
    15                 "reference": "7fd3d60213e5955886e05a628c972b3291c0be31",
     10                "reference": "9df29eeeb1bbd45703d5c0f0445747e7c3105000"
     11            },
     12            "dist": {
     13                "type": "zip",
     14                "url": "https://api.github.com/repos/br33f/php-GA4-Measurement-Protocol/zipball/9df29eeeb1bbd45703d5c0f0445747e7c3105000",
     15                "reference": "9df29eeeb1bbd45703d5c0f0445747e7c3105000",
    1616                "shasum": ""
    1717            },
     
    1919                "ext-json": "*",
    2020                "guzzlehttp/guzzle": "^6.5.5 || ^7.0.0",
    21                 "php": ">=7.1"
     21                "php": ">=7.3"
    2222            },
    2323            "require-dev": {
     
    2626                "phpunit/phpunit": "^9.5"
    2727            },
    28             "time": "2023-03-20T20:12:12+00:00",
     28            "time": "2025-12-07T17:36:43+00:00",
    2929            "type": "library",
    3030            "installation-source": "dist",
     
    4747            "support": {
    4848                "issues": "https://github.com/br33f/php-GA4-Measurement-Protocol/issues",
    49                 "source": "https://github.com/br33f/php-GA4-Measurement-Protocol/tree/v0.1.3"
     49                "source": "https://github.com/br33f/php-GA4-Measurement-Protocol/tree/v0.1.6"
    5050            },
    5151            "install-path": "../br33f/php-ga4-mp"
     
    5353        {
    5454            "name": "guzzlehttp/guzzle",
    55             "version": "7.7.0",
    56             "version_normalized": "7.7.0.0",
     55            "version": "7.10.0",
     56            "version_normalized": "7.10.0.0",
    5757            "source": {
    5858                "type": "git",
    5959                "url": "https://github.com/guzzle/guzzle.git",
    60                 "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5"
    61             },
    62             "dist": {
    63                 "type": "zip",
    64                 "url": "https://api.github.com/repos/guzzle/guzzle/zipball/fb7566caccf22d74d1ab270de3551f72a58399f5",
    65                 "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5",
     60                "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4"
     61            },
     62            "dist": {
     63                "type": "zip",
     64                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b51ac707cfa420b7bfd4e4d5e510ba8008e822b4",
     65                "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4",
    6666                "shasum": ""
    6767            },
    6868            "require": {
    6969                "ext-json": "*",
    70                 "guzzlehttp/promises": "^1.5.3 || ^2.0",
    71                 "guzzlehttp/psr7": "^1.9.1 || ^2.4.5",
     70                "guzzlehttp/promises": "^2.3",
     71                "guzzlehttp/psr7": "^2.8",
    7272                "php": "^7.2.5 || ^8.0",
    7373                "psr/http-client": "^1.0",
     
    7878            },
    7979            "require-dev": {
    80                 "bamarni/composer-bin-plugin": "^1.8.1",
     80                "bamarni/composer-bin-plugin": "^1.8.2",
    8181                "ext-curl": "*",
    82                 "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999",
     82                "guzzle/client-integration-tests": "3.0.2",
    8383                "php-http/message-factory": "^1.1",
    84                 "phpunit/phpunit": "^8.5.29 || ^9.5.23",
     84                "phpunit/phpunit": "^8.5.39 || ^9.6.20",
    8585                "psr/log": "^1.1 || ^2.0 || ^3.0"
    8686            },
     
    9090                "psr/log": "Required for using the Log middleware"
    9191            },
    92             "time": "2023-05-21T14:04:53+00:00",
     92            "time": "2025-08-23T22:36:01+00:00",
    9393            "type": "library",
    9494            "extra": {
     
    162162            "support": {
    163163                "issues": "https://github.com/guzzle/guzzle/issues",
    164                 "source": "https://github.com/guzzle/guzzle/tree/7.7.0"
     164                "source": "https://github.com/guzzle/guzzle/tree/7.10.0"
    165165            },
    166166            "funding": [
     
    182182        {
    183183            "name": "guzzlehttp/promises",
    184             "version": "2.0.0",
    185             "version_normalized": "2.0.0.0",
     184            "version": "2.3.0",
     185            "version_normalized": "2.3.0.0",
    186186            "source": {
    187187                "type": "git",
    188188                "url": "https://github.com/guzzle/promises.git",
    189                 "reference": "3a494dc7dc1d7d12e511890177ae2d0e6c107da6"
    190             },
    191             "dist": {
    192                 "type": "zip",
    193                 "url": "https://api.github.com/repos/guzzle/promises/zipball/3a494dc7dc1d7d12e511890177ae2d0e6c107da6",
    194                 "reference": "3a494dc7dc1d7d12e511890177ae2d0e6c107da6",
     189                "reference": "481557b130ef3790cf82b713667b43030dc9c957"
     190            },
     191            "dist": {
     192                "type": "zip",
     193                "url": "https://api.github.com/repos/guzzle/promises/zipball/481557b130ef3790cf82b713667b43030dc9c957",
     194                "reference": "481557b130ef3790cf82b713667b43030dc9c957",
    195195                "shasum": ""
    196196            },
     
    199199            },
    200200            "require-dev": {
    201                 "bamarni/composer-bin-plugin": "^1.8.1",
    202                 "phpunit/phpunit": "^8.5.29 || ^9.5.23"
    203             },
    204             "time": "2023-05-21T13:50:22+00:00",
     201                "bamarni/composer-bin-plugin": "^1.8.2",
     202                "phpunit/phpunit": "^8.5.44 || ^9.6.25"
     203            },
     204            "time": "2025-08-22T14:34:08+00:00",
    205205            "type": "library",
    206206            "extra": {
     
    248248            "support": {
    249249                "issues": "https://github.com/guzzle/promises/issues",
    250                 "source": "https://github.com/guzzle/promises/tree/2.0.0"
     250                "source": "https://github.com/guzzle/promises/tree/2.3.0"
    251251            },
    252252            "funding": [
     
    268268        {
    269269            "name": "guzzlehttp/psr7",
    270             "version": "2.5.0",
    271             "version_normalized": "2.5.0.0",
     270            "version": "2.8.0",
     271            "version_normalized": "2.8.0.0",
    272272            "source": {
    273273                "type": "git",
    274274                "url": "https://github.com/guzzle/psr7.git",
    275                 "reference": "b635f279edd83fc275f822a1188157ffea568ff6"
    276             },
    277             "dist": {
    278                 "type": "zip",
    279                 "url": "https://api.github.com/repos/guzzle/psr7/zipball/b635f279edd83fc275f822a1188157ffea568ff6",
    280                 "reference": "b635f279edd83fc275f822a1188157ffea568ff6",
     275                "reference": "21dc724a0583619cd1652f673303492272778051"
     276            },
     277            "dist": {
     278                "type": "zip",
     279                "url": "https://api.github.com/repos/guzzle/psr7/zipball/21dc724a0583619cd1652f673303492272778051",
     280                "reference": "21dc724a0583619cd1652f673303492272778051",
    281281                "shasum": ""
    282282            },
     
    292292            },
    293293            "require-dev": {
    294                 "bamarni/composer-bin-plugin": "^1.8.1",
    295                 "http-interop/http-factory-tests": "^0.9",
    296                 "phpunit/phpunit": "^8.5.29 || ^9.5.23"
     294                "bamarni/composer-bin-plugin": "^1.8.2",
     295                "http-interop/http-factory-tests": "0.9.0",
     296                "phpunit/phpunit": "^8.5.44 || ^9.6.25"
    297297            },
    298298            "suggest": {
    299299                "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
    300300            },
    301             "time": "2023-04-17T16:11:26+00:00",
     301            "time": "2025-08-23T21:21:41+00:00",
    302302            "type": "library",
    303303            "extra": {
     
    367367            "support": {
    368368                "issues": "https://github.com/guzzle/psr7/issues",
    369                 "source": "https://github.com/guzzle/psr7/tree/2.5.0"
     369                "source": "https://github.com/guzzle/psr7/tree/2.8.0"
    370370            },
    371371            "funding": [
     
    387387        {
    388388            "name": "psr/http-client",
    389             "version": "1.0.2",
    390             "version_normalized": "1.0.2.0",
     389            "version": "1.0.3",
     390            "version_normalized": "1.0.3.0",
    391391            "source": {
    392392                "type": "git",
    393393                "url": "https://github.com/php-fig/http-client.git",
    394                 "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31"
    395             },
    396             "dist": {
    397                 "type": "zip",
    398                 "url": "https://api.github.com/repos/php-fig/http-client/zipball/0955afe48220520692d2d09f7ab7e0f93ffd6a31",
    399                 "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31",
     394                "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90"
     395            },
     396            "dist": {
     397                "type": "zip",
     398                "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90",
     399                "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90",
    400400                "shasum": ""
    401401            },
     
    404404                "psr/http-message": "^1.0 || ^2.0"
    405405            },
    406             "time": "2023-04-10T20:12:12+00:00",
     406            "time": "2023-09-23T14:17:50+00:00",
    407407            "type": "library",
    408408            "extra": {
     
    436436            ],
    437437            "support": {
    438                 "source": "https://github.com/php-fig/http-client/tree/1.0.2"
     438                "source": "https://github.com/php-fig/http-client"
    439439            },
    440440            "install-path": "../psr/http-client"
     
    442442        {
    443443            "name": "psr/http-factory",
    444             "version": "1.0.2",
    445             "version_normalized": "1.0.2.0",
     444            "version": "1.1.0",
     445            "version_normalized": "1.1.0.0",
    446446            "source": {
    447447                "type": "git",
    448448                "url": "https://github.com/php-fig/http-factory.git",
    449                 "reference": "e616d01114759c4c489f93b099585439f795fe35"
    450             },
    451             "dist": {
    452                 "type": "zip",
    453                 "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35",
    454                 "reference": "e616d01114759c4c489f93b099585439f795fe35",
    455                 "shasum": ""
    456             },
    457             "require": {
    458                 "php": ">=7.0.0",
     449                "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a"
     450            },
     451            "dist": {
     452                "type": "zip",
     453                "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
     454                "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
     455                "shasum": ""
     456            },
     457            "require": {
     458                "php": ">=7.1",
    459459                "psr/http-message": "^1.0 || ^2.0"
    460460            },
    461             "time": "2023-04-10T20:10:41+00:00",
     461            "time": "2024-04-15T12:06:14+00:00",
    462462            "type": "library",
    463463            "extra": {
     
    482482                }
    483483            ],
    484             "description": "Common interfaces for PSR-7 HTTP message factories",
     484            "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories",
    485485            "keywords": [
    486486                "factory",
     
    494494            ],
    495495            "support": {
    496                 "source": "https://github.com/php-fig/http-factory/tree/1.0.2"
     496                "source": "https://github.com/php-fig/http-factory"
    497497            },
    498498            "install-path": "../psr/http-factory"
     
    603603        {
    604604            "name": "symfony/deprecation-contracts",
    605             "version": "v2.5.2",
    606             "version_normalized": "2.5.2.0",
     605            "version": "v2.5.4",
     606            "version_normalized": "2.5.4.0",
    607607            "source": {
    608608                "type": "git",
    609609                "url": "https://github.com/symfony/deprecation-contracts.git",
    610                 "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66"
    611             },
    612             "dist": {
    613                 "type": "zip",
    614                 "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
    615                 "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
     610                "reference": "605389f2a7e5625f273b53960dc46aeaf9c62918"
     611            },
     612            "dist": {
     613                "type": "zip",
     614                "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/605389f2a7e5625f273b53960dc46aeaf9c62918",
     615                "reference": "605389f2a7e5625f273b53960dc46aeaf9c62918",
    616616                "shasum": ""
    617617            },
     
    619619                "php": ">=7.1"
    620620            },
    621             "time": "2022-01-02T09:53:40+00:00",
     621            "time": "2024-09-25T14:11:13+00:00",
    622622            "type": "library",
    623623            "extra": {
     624                "thanks": {
     625                    "url": "https://github.com/symfony/contracts",
     626                    "name": "symfony/contracts"
     627                },
    624628                "branch-alias": {
    625629                    "dev-main": "2.5-dev"
    626                 },
    627                 "thanks": {
    628                     "name": "symfony/contracts",
    629                     "url": "https://github.com/symfony/contracts"
    630630                }
    631631            },
     
    653653            "homepage": "https://symfony.com",
    654654            "support": {
    655                 "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2"
     655                "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.4"
    656656            },
    657657            "funding": [
     
    673673        {
    674674            "name": "symfony/polyfill-php74",
    675             "version": "v1.27.0",
    676             "version_normalized": "1.27.0.0",
     675            "version": "v1.33.0",
     676            "version_normalized": "1.33.0.0",
    677677            "source": {
    678678                "type": "git",
    679679                "url": "https://github.com/symfony/polyfill-php74.git",
    680                 "reference": "aa7f1231a1aa56d695e626043252b7be6a90c4ce"
    681             },
    682             "dist": {
    683                 "type": "zip",
    684                 "url": "https://api.github.com/repos/symfony/polyfill-php74/zipball/aa7f1231a1aa56d695e626043252b7be6a90c4ce",
    685                 "reference": "aa7f1231a1aa56d695e626043252b7be6a90c4ce",
    686                 "shasum": ""
    687             },
    688             "require": {
    689                 "php": ">=7.1"
    690             },
    691             "time": "2022-11-03T14:55:06+00:00",
     680                "reference": "9589537d05325fb5d88a20d8926823e5b827a43e"
     681            },
     682            "dist": {
     683                "type": "zip",
     684                "url": "https://api.github.com/repos/symfony/polyfill-php74/zipball/9589537d05325fb5d88a20d8926823e5b827a43e",
     685                "reference": "9589537d05325fb5d88a20d8926823e5b827a43e",
     686                "shasum": ""
     687            },
     688            "require": {
     689                "php": ">=7.2"
     690            },
     691            "time": "2024-09-09T11:45:10+00:00",
    692692            "type": "library",
    693693            "extra": {
    694                 "branch-alias": {
    695                     "dev-main": "1.27-dev"
    696                 },
    697694                "thanks": {
    698                     "name": "symfony/polyfill",
    699                     "url": "https://github.com/symfony/polyfill"
     695                    "url": "https://github.com/symfony/polyfill",
     696                    "name": "symfony/polyfill"
    700697                }
    701698            },
     
    736733            ],
    737734            "support": {
    738                 "source": "https://github.com/symfony/polyfill-php74/tree/v1.27.0"
     735                "source": "https://github.com/symfony/polyfill-php74/tree/v1.33.0"
    739736            },
    740737            "funding": [
     
    748745                },
    749746                {
     747                    "url": "https://github.com/nicolas-grekas",
     748                    "type": "github"
     749                },
     750                {
    750751                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
    751752                    "type": "tidelift"
     
    756757        {
    757758            "name": "symfony/polyfill-php80",
    758             "version": "v1.27.0",
    759             "version_normalized": "1.27.0.0",
     759            "version": "v1.33.0",
     760            "version_normalized": "1.33.0.0",
    760761            "source": {
    761762                "type": "git",
    762763                "url": "https://github.com/symfony/polyfill-php80.git",
    763                 "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936"
    764             },
    765             "dist": {
    766                 "type": "zip",
    767                 "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
    768                 "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
    769                 "shasum": ""
    770             },
    771             "require": {
    772                 "php": ">=7.1"
    773             },
    774             "time": "2022-11-03T14:55:06+00:00",
     764                "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608"
     765            },
     766            "dist": {
     767                "type": "zip",
     768                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608",
     769                "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608",
     770                "shasum": ""
     771            },
     772            "require": {
     773                "php": ">=7.2"
     774            },
     775            "time": "2025-01-02T08:10:11+00:00",
    775776            "type": "library",
    776777            "extra": {
    777                 "branch-alias": {
    778                     "dev-main": "1.27-dev"
    779                 },
    780778                "thanks": {
    781                     "name": "symfony/polyfill",
    782                     "url": "https://github.com/symfony/polyfill"
     779                    "url": "https://github.com/symfony/polyfill",
     780                    "name": "symfony/polyfill"
    783781                }
    784782            },
     
    822820            ],
    823821            "support": {
    824                 "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0"
     822                "source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0"
    825823            },
    826824            "funding": [
     
    834832                },
    835833                {
     834                    "url": "https://github.com/nicolas-grekas",
     835                    "type": "github"
     836                },
     837                {
    836838                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
    837839                    "type": "tidelift"
     
    842844        {
    843845            "name": "symfony/polyfill-php81",
    844             "version": "v1.27.0",
    845             "version_normalized": "1.27.0.0",
     846            "version": "v1.33.0",
     847            "version_normalized": "1.33.0.0",
    846848            "source": {
    847849                "type": "git",
    848850                "url": "https://github.com/symfony/polyfill-php81.git",
    849                 "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a"
    850             },
    851             "dist": {
    852                 "type": "zip",
    853                 "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a",
    854                 "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a",
    855                 "shasum": ""
    856             },
    857             "require": {
    858                 "php": ">=7.1"
    859             },
    860             "time": "2022-11-03T14:55:06+00:00",
     851                "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c"
     852            },
     853            "dist": {
     854                "type": "zip",
     855                "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c",
     856                "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c",
     857                "shasum": ""
     858            },
     859            "require": {
     860                "php": ">=7.2"
     861            },
     862            "time": "2024-09-09T11:45:10+00:00",
    861863            "type": "library",
    862864            "extra": {
    863                 "branch-alias": {
    864                     "dev-main": "1.27-dev"
    865                 },
    866865                "thanks": {
    867                     "name": "symfony/polyfill",
    868                     "url": "https://github.com/symfony/polyfill"
     866                    "url": "https://github.com/symfony/polyfill",
     867                    "name": "symfony/polyfill"
    869868                }
    870869            },
     
    904903            ],
    905904            "support": {
    906                 "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0"
     905                "source": "https://github.com/symfony/polyfill-php81/tree/v1.33.0"
    907906            },
    908907            "funding": [
     
    916915                },
    917916                {
     917                    "url": "https://github.com/nicolas-grekas",
     918                    "type": "github"
     919                },
     920                {
    918921                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
    919922                    "type": "tidelift"
     
    924927        {
    925928            "name": "symfony/polyfill-php82",
    926             "version": "v1.27.0",
    927             "version_normalized": "1.27.0.0",
     929            "version": "v1.33.0",
     930            "version_normalized": "1.33.0.0",
    928931            "source": {
    929932                "type": "git",
    930933                "url": "https://github.com/symfony/polyfill-php82.git",
    931                 "reference": "80ddf7bfa17ef7b06db4e6d007a95bf584e07b44"
    932             },
    933             "dist": {
    934                 "type": "zip",
    935                 "url": "https://api.github.com/repos/symfony/polyfill-php82/zipball/80ddf7bfa17ef7b06db4e6d007a95bf584e07b44",
    936                 "reference": "80ddf7bfa17ef7b06db4e6d007a95bf584e07b44",
    937                 "shasum": ""
    938             },
    939             "require": {
    940                 "php": ">=7.1"
    941             },
    942             "time": "2022-11-10T10:10:54+00:00",
     934                "reference": "5d2ed36f7734637dacc025f179698031951b1692"
     935            },
     936            "dist": {
     937                "type": "zip",
     938                "url": "https://api.github.com/repos/symfony/polyfill-php82/zipball/5d2ed36f7734637dacc025f179698031951b1692",
     939                "reference": "5d2ed36f7734637dacc025f179698031951b1692",
     940                "shasum": ""
     941            },
     942            "require": {
     943                "php": ">=7.2"
     944            },
     945            "time": "2024-09-09T11:45:10+00:00",
    943946            "type": "library",
    944947            "extra": {
    945                 "branch-alias": {
    946                     "dev-main": "1.27-dev"
    947                 },
    948948                "thanks": {
    949                     "name": "symfony/polyfill",
    950                     "url": "https://github.com/symfony/polyfill"
     949                    "url": "https://github.com/symfony/polyfill",
     950                    "name": "symfony/polyfill"
    951951                }
    952952            },
     
    986986            ],
    987987            "support": {
    988                 "source": "https://github.com/symfony/polyfill-php82/tree/v1.27.0"
     988                "source": "https://github.com/symfony/polyfill-php82/tree/v1.33.0"
    989989            },
    990990            "funding": [
     
    998998                },
    999999                {
     1000                    "url": "https://github.com/nicolas-grekas",
     1001                    "type": "github"
     1002                },
     1003                {
    10001004                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
    10011005                    "type": "tidelift"
     
    10031007            ],
    10041008            "install-path": "../symfony/polyfill-php82"
     1009        },
     1010        {
     1011            "name": "symfony/polyfill-php83",
     1012            "version": "v1.33.0",
     1013            "version_normalized": "1.33.0.0",
     1014            "source": {
     1015                "type": "git",
     1016                "url": "https://github.com/symfony/polyfill-php83.git",
     1017                "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5"
     1018            },
     1019            "dist": {
     1020                "type": "zip",
     1021                "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/17f6f9a6b1735c0f163024d959f700cfbc5155e5",
     1022                "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5",
     1023                "shasum": ""
     1024            },
     1025            "require": {
     1026                "php": ">=7.2"
     1027            },
     1028            "time": "2025-07-08T02:45:35+00:00",
     1029            "type": "library",
     1030            "extra": {
     1031                "thanks": {
     1032                    "url": "https://github.com/symfony/polyfill",
     1033                    "name": "symfony/polyfill"
     1034                }
     1035            },
     1036            "installation-source": "dist",
     1037            "autoload": {
     1038                "files": [
     1039                    "bootstrap.php"
     1040                ],
     1041                "psr-4": {
     1042                    "Symfony\\Polyfill\\Php83\\": ""
     1043                },
     1044                "classmap": [
     1045                    "Resources/stubs"
     1046                ]
     1047            },
     1048            "notification-url": "https://packagist.org/downloads/",
     1049            "license": [
     1050                "MIT"
     1051            ],
     1052            "authors": [
     1053                {
     1054                    "name": "Nicolas Grekas",
     1055                    "email": "[email protected]"
     1056                },
     1057                {
     1058                    "name": "Symfony Community",
     1059                    "homepage": "https://symfony.com/contributors"
     1060                }
     1061            ],
     1062            "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions",
     1063            "homepage": "https://symfony.com",
     1064            "keywords": [
     1065                "compatibility",
     1066                "polyfill",
     1067                "portable",
     1068                "shim"
     1069            ],
     1070            "support": {
     1071                "source": "https://github.com/symfony/polyfill-php83/tree/v1.33.0"
     1072            },
     1073            "funding": [
     1074                {
     1075                    "url": "https://symfony.com/sponsor",
     1076                    "type": "custom"
     1077                },
     1078                {
     1079                    "url": "https://github.com/fabpot",
     1080                    "type": "github"
     1081                },
     1082                {
     1083                    "url": "https://github.com/nicolas-grekas",
     1084                    "type": "github"
     1085                },
     1086                {
     1087                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
     1088                    "type": "tidelift"
     1089                }
     1090            ],
     1091            "install-path": "../symfony/polyfill-php83"
     1092        },
     1093        {
     1094            "name": "symfony/polyfill-php84",
     1095            "version": "v1.33.0",
     1096            "version_normalized": "1.33.0.0",
     1097            "source": {
     1098                "type": "git",
     1099                "url": "https://github.com/symfony/polyfill-php84.git",
     1100                "reference": "d8ced4d875142b6a7426000426b8abc631d6b191"
     1101            },
     1102            "dist": {
     1103                "type": "zip",
     1104                "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/d8ced4d875142b6a7426000426b8abc631d6b191",
     1105                "reference": "d8ced4d875142b6a7426000426b8abc631d6b191",
     1106                "shasum": ""
     1107            },
     1108            "require": {
     1109                "php": ">=7.2"
     1110            },
     1111            "time": "2025-06-24T13:30:11+00:00",
     1112            "type": "library",
     1113            "extra": {
     1114                "thanks": {
     1115                    "url": "https://github.com/symfony/polyfill",
     1116                    "name": "symfony/polyfill"
     1117                }
     1118            },
     1119            "installation-source": "dist",
     1120            "autoload": {
     1121                "files": [
     1122                    "bootstrap.php"
     1123                ],
     1124                "psr-4": {
     1125                    "Symfony\\Polyfill\\Php84\\": ""
     1126                },
     1127                "classmap": [
     1128                    "Resources/stubs"
     1129                ]
     1130            },
     1131            "notification-url": "https://packagist.org/downloads/",
     1132            "license": [
     1133                "MIT"
     1134            ],
     1135            "authors": [
     1136                {
     1137                    "name": "Nicolas Grekas",
     1138                    "email": "[email protected]"
     1139                },
     1140                {
     1141                    "name": "Symfony Community",
     1142                    "homepage": "https://symfony.com/contributors"
     1143                }
     1144            ],
     1145            "description": "Symfony polyfill backporting some PHP 8.4+ features to lower PHP versions",
     1146            "homepage": "https://symfony.com",
     1147            "keywords": [
     1148                "compatibility",
     1149                "polyfill",
     1150                "portable",
     1151                "shim"
     1152            ],
     1153            "support": {
     1154                "source": "https://github.com/symfony/polyfill-php84/tree/v1.33.0"
     1155            },
     1156            "funding": [
     1157                {
     1158                    "url": "https://symfony.com/sponsor",
     1159                    "type": "custom"
     1160                },
     1161                {
     1162                    "url": "https://github.com/fabpot",
     1163                    "type": "github"
     1164                },
     1165                {
     1166                    "url": "https://github.com/nicolas-grekas",
     1167                    "type": "github"
     1168                },
     1169                {
     1170                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
     1171                    "type": "tidelift"
     1172                }
     1173            ],
     1174            "install-path": "../symfony/polyfill-php84"
     1175        },
     1176        {
     1177            "name": "symfony/polyfill-php85",
     1178            "version": "v1.33.0",
     1179            "version_normalized": "1.33.0.0",
     1180            "source": {
     1181                "type": "git",
     1182                "url": "https://github.com/symfony/polyfill-php85.git",
     1183                "reference": "d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91"
     1184            },
     1185            "dist": {
     1186                "type": "zip",
     1187                "url": "https://api.github.com/repos/symfony/polyfill-php85/zipball/d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91",
     1188                "reference": "d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91",
     1189                "shasum": ""
     1190            },
     1191            "require": {
     1192                "php": ">=7.2"
     1193            },
     1194            "time": "2025-06-23T16:12:55+00:00",
     1195            "type": "library",
     1196            "extra": {
     1197                "thanks": {
     1198                    "url": "https://github.com/symfony/polyfill",
     1199                    "name": "symfony/polyfill"
     1200                }
     1201            },
     1202            "installation-source": "dist",
     1203            "autoload": {
     1204                "files": [
     1205                    "bootstrap.php"
     1206                ],
     1207                "psr-4": {
     1208                    "Symfony\\Polyfill\\Php85\\": ""
     1209                },
     1210                "classmap": [
     1211                    "Resources/stubs"
     1212                ]
     1213            },
     1214            "notification-url": "https://packagist.org/downloads/",
     1215            "license": [
     1216                "MIT"
     1217            ],
     1218            "authors": [
     1219                {
     1220                    "name": "Nicolas Grekas",
     1221                    "email": "[email protected]"
     1222                },
     1223                {
     1224                    "name": "Symfony Community",
     1225                    "homepage": "https://symfony.com/contributors"
     1226                }
     1227            ],
     1228            "description": "Symfony polyfill backporting some PHP 8.5+ features to lower PHP versions",
     1229            "homepage": "https://symfony.com",
     1230            "keywords": [
     1231                "compatibility",
     1232                "polyfill",
     1233                "portable",
     1234                "shim"
     1235            ],
     1236            "support": {
     1237                "source": "https://github.com/symfony/polyfill-php85/tree/v1.33.0"
     1238            },
     1239            "funding": [
     1240                {
     1241                    "url": "https://symfony.com/sponsor",
     1242                    "type": "custom"
     1243                },
     1244                {
     1245                    "url": "https://github.com/fabpot",
     1246                    "type": "github"
     1247                },
     1248                {
     1249                    "url": "https://github.com/nicolas-grekas",
     1250                    "type": "github"
     1251                },
     1252                {
     1253                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
     1254                    "type": "tidelift"
     1255                }
     1256            ],
     1257            "install-path": "../symfony/polyfill-php85"
    10051258        },
    10061259        {
  • force-reinstall/trunk/vendor/composer/installed.php

    r2924444 r3427970  
    22    'root' => array(
    33        'name' => 'rich4rdmuvirimi/force-reinstall',
    4         'pretty_version' => '1.0.0+no-version-set',
    5         'version' => '1.0.0.0',
    6         'reference' => NULL,
     4        'pretty_version' => '1.1.9',
     5        'version' => '1.1.9.0',
     6        'reference' => null,
    77        'type' => 'wordpress-plugin',
    88        'install_path' => __DIR__ . '/../../',
     
    1212    'versions' => array(
    1313        'br33f/php-ga4-mp' => array(
    14             'pretty_version' => 'v0.1.3',
    15             'version' => '0.1.3.0',
    16             'reference' => '7fd3d60213e5955886e05a628c972b3291c0be31',
     14            'pretty_version' => 'v0.1.6',
     15            'version' => '0.1.6.0',
     16            'reference' => '9df29eeeb1bbd45703d5c0f0445747e7c3105000',
    1717            'type' => 'library',
    1818            'install_path' => __DIR__ . '/../br33f/php-ga4-mp',
     
    2121        ),
    2222        'guzzlehttp/guzzle' => array(
    23             'pretty_version' => '7.7.0',
    24             'version' => '7.7.0.0',
    25             'reference' => 'fb7566caccf22d74d1ab270de3551f72a58399f5',
     23            'pretty_version' => '7.10.0',
     24            'version' => '7.10.0.0',
     25            'reference' => 'b51ac707cfa420b7bfd4e4d5e510ba8008e822b4',
    2626            'type' => 'library',
    2727            'install_path' => __DIR__ . '/../guzzlehttp/guzzle',
     
    3030        ),
    3131        'guzzlehttp/promises' => array(
    32             'pretty_version' => '2.0.0',
    33             'version' => '2.0.0.0',
    34             'reference' => '3a494dc7dc1d7d12e511890177ae2d0e6c107da6',
     32            'pretty_version' => '2.3.0',
     33            'version' => '2.3.0.0',
     34            'reference' => '481557b130ef3790cf82b713667b43030dc9c957',
    3535            'type' => 'library',
    3636            'install_path' => __DIR__ . '/../guzzlehttp/promises',
     
    3939        ),
    4040        'guzzlehttp/psr7' => array(
    41             'pretty_version' => '2.5.0',
    42             'version' => '2.5.0.0',
    43             'reference' => 'b635f279edd83fc275f822a1188157ffea568ff6',
     41            'pretty_version' => '2.8.0',
     42            'version' => '2.8.0.0',
     43            'reference' => '21dc724a0583619cd1652f673303492272778051',
    4444            'type' => 'library',
    4545            'install_path' => __DIR__ . '/../guzzlehttp/psr7',
     
    4848        ),
    4949        'psr/http-client' => array(
    50             'pretty_version' => '1.0.2',
    51             'version' => '1.0.2.0',
    52             'reference' => '0955afe48220520692d2d09f7ab7e0f93ffd6a31',
     50            'pretty_version' => '1.0.3',
     51            'version' => '1.0.3.0',
     52            'reference' => 'bb5906edc1c324c9a05aa0873d40117941e5fa90',
    5353            'type' => 'library',
    5454            'install_path' => __DIR__ . '/../psr/http-client',
     
    6363        ),
    6464        'psr/http-factory' => array(
    65             'pretty_version' => '1.0.2',
    66             'version' => '1.0.2.0',
    67             'reference' => 'e616d01114759c4c489f93b099585439f795fe35',
     65            'pretty_version' => '1.1.0',
     66            'version' => '1.1.0.0',
     67            'reference' => '2b4765fddfe3b508ac62f829e852b1501d3f6e8a',
    6868            'type' => 'library',
    6969            'install_path' => __DIR__ . '/../psr/http-factory',
     
    102102        ),
    103103        'rich4rdmuvirimi/force-reinstall' => array(
    104             'pretty_version' => '1.0.0+no-version-set',
    105             'version' => '1.0.0.0',
    106             'reference' => NULL,
     104            'pretty_version' => '1.1.9',
     105            'version' => '1.1.9.0',
     106            'reference' => null,
    107107            'type' => 'wordpress-plugin',
    108108            'install_path' => __DIR__ . '/../../',
     
    111111        ),
    112112        'symfony/deprecation-contracts' => array(
    113             'pretty_version' => 'v2.5.2',
    114             'version' => '2.5.2.0',
    115             'reference' => 'e8b495ea28c1d97b5e0c121748d6f9b53d075c66',
     113            'pretty_version' => 'v2.5.4',
     114            'version' => '2.5.4.0',
     115            'reference' => '605389f2a7e5625f273b53960dc46aeaf9c62918',
    116116            'type' => 'library',
    117117            'install_path' => __DIR__ . '/../symfony/deprecation-contracts',
     
    120120        ),
    121121        'symfony/polyfill-php74' => array(
    122             'pretty_version' => 'v1.27.0',
    123             'version' => '1.27.0.0',
    124             'reference' => 'aa7f1231a1aa56d695e626043252b7be6a90c4ce',
     122            'pretty_version' => 'v1.33.0',
     123            'version' => '1.33.0.0',
     124            'reference' => '9589537d05325fb5d88a20d8926823e5b827a43e',
    125125            'type' => 'library',
    126126            'install_path' => __DIR__ . '/../symfony/polyfill-php74',
     
    129129        ),
    130130        'symfony/polyfill-php80' => array(
    131             'pretty_version' => 'v1.27.0',
    132             'version' => '1.27.0.0',
    133             'reference' => '7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936',
     131            'pretty_version' => 'v1.33.0',
     132            'version' => '1.33.0.0',
     133            'reference' => '0cc9dd0f17f61d8131e7df6b84bd344899fe2608',
    134134            'type' => 'library',
    135135            'install_path' => __DIR__ . '/../symfony/polyfill-php80',
     
    138138        ),
    139139        'symfony/polyfill-php81' => array(
    140             'pretty_version' => 'v1.27.0',
    141             'version' => '1.27.0.0',
    142             'reference' => '707403074c8ea6e2edaf8794b0157a0bfa52157a',
     140            'pretty_version' => 'v1.33.0',
     141            'version' => '1.33.0.0',
     142            'reference' => '4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c',
    143143            'type' => 'library',
    144144            'install_path' => __DIR__ . '/../symfony/polyfill-php81',
     
    147147        ),
    148148        'symfony/polyfill-php82' => array(
    149             'pretty_version' => 'v1.27.0',
    150             'version' => '1.27.0.0',
    151             'reference' => '80ddf7bfa17ef7b06db4e6d007a95bf584e07b44',
     149            'pretty_version' => 'v1.33.0',
     150            'version' => '1.33.0.0',
     151            'reference' => '5d2ed36f7734637dacc025f179698031951b1692',
    152152            'type' => 'library',
    153153            'install_path' => __DIR__ . '/../symfony/polyfill-php82',
     154            'aliases' => array(),
     155            'dev_requirement' => false,
     156        ),
     157        'symfony/polyfill-php83' => array(
     158            'pretty_version' => 'v1.33.0',
     159            'version' => '1.33.0.0',
     160            'reference' => '17f6f9a6b1735c0f163024d959f700cfbc5155e5',
     161            'type' => 'library',
     162            'install_path' => __DIR__ . '/../symfony/polyfill-php83',
     163            'aliases' => array(),
     164            'dev_requirement' => false,
     165        ),
     166        'symfony/polyfill-php84' => array(
     167            'pretty_version' => 'v1.33.0',
     168            'version' => '1.33.0.0',
     169            'reference' => 'd8ced4d875142b6a7426000426b8abc631d6b191',
     170            'type' => 'library',
     171            'install_path' => __DIR__ . '/../symfony/polyfill-php84',
     172            'aliases' => array(),
     173            'dev_requirement' => false,
     174        ),
     175        'symfony/polyfill-php85' => array(
     176            'pretty_version' => 'v1.33.0',
     177            'version' => '1.33.0.0',
     178            'reference' => 'd4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91',
     179            'type' => 'library',
     180            'install_path' => __DIR__ . '/../symfony/polyfill-php85',
    154181            'aliases' => array(),
    155182            'dev_requirement' => false,
  • force-reinstall/trunk/vendor/composer/platform_check.php

    r2871586 r3427970  
    2020        }
    2121    }
    22     trigger_error(
    23         'Composer detected issues in your platform: ' . implode(' ', $issues),
    24         E_USER_ERROR
     22    throw new \RuntimeException(
     23        'Composer detected issues in your platform: ' . implode(' ', $issues)
    2524    );
    2625}
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/Br33f/Ga4/MeasurementProtocol/Dto/Common/UserProperties.php

    r2924444 r3427970  
    2222     * @param UserProperty[] $userPropertiesList
    2323     */
    24     public function __construct(array $userPropertiesList = null)
     24    public function __construct(?array $userPropertiesList = null)
    2525    {
    2626        $this->userPropertiesList = $userPropertiesList ?? [];
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/Br33f/Ga4/MeasurementProtocol/Dto/Request/BaseRequest.php

    r2924444 r3427970  
    99
    1010use Rich4rdMuvirimi\ForceReinstall\Vendor\Br33f\Ga4\MeasurementProtocol\Dto\Common\EventCollection;
     11use Rich4rdMuvirimi\ForceReinstall\Vendor\Br33f\Ga4\MeasurementProtocol\Dto\Common\UserData;
     12use Rich4rdMuvirimi\ForceReinstall\Vendor\Br33f\Ga4\MeasurementProtocol\Dto\Common\UserDataItem;
    1113use Rich4rdMuvirimi\ForceReinstall\Vendor\Br33f\Ga4\MeasurementProtocol\Dto\Common\UserProperties;
    1214use Rich4rdMuvirimi\ForceReinstall\Vendor\Br33f\Ga4\MeasurementProtocol\Dto\Common\UserProperty;
     15use Rich4rdMuvirimi\ForceReinstall\Vendor\Br33f\Ga4\MeasurementProtocol\Dto\Common\ConsentProperty;
    1316use Rich4rdMuvirimi\ForceReinstall\Vendor\Br33f\Ga4\MeasurementProtocol\Dto\Event\AbstractEvent;
    1417use Rich4rdMuvirimi\ForceReinstall\Vendor\Br33f\Ga4\MeasurementProtocol\Enum\ErrorCode;
     
    5255
    5356    /**
     57     * The user data for the measurement.
     58     * Not required
     59     * @var UserData
     60     */
     61    protected $userData = null;
     62
     63    /**
    5464     * If set true - indicates that events should not be use for personalized ads.
    55      * Default false
    56      * @var bool
    57      */
    58     protected $nonPersonalizedAds = false;
    59 
     65     * Not required
     66     * @var ?bool
     67     */
     68    protected $nonPersonalizedAds = null;
     69
     70    /**
     71     * Sets the consent settings for the request.
     72     * Replaces non_personalized_ads
     73     * Not required
     74     * @var ConsentProperty
     75     */
     76    protected $consent = null;
    6077
    6178    /**
     
    122139
    123140    /**
     141     * @return ConsentProperty|null
     142     */
     143    public function getConsent() : ?ConsentProperty
     144    {
     145        return $this->consent;
     146    }
     147
     148    /**
     149     * @param ConsentProperty|null $consent
     150     * @return BaseRequest
     151     */
     152    public function setConsent(?ConsentProperty $consent) : self
     153    {
     154        $this->consent = $consent;
     155        return $this;
     156    }
     157
     158
     159    /**
     160     * @param UserData $userProperty
     161     * @return BaseRequest
     162     */
     163    public function addUserDataItem(UserDataItem $userDataItem)
     164    {
     165        if ($this->getUserData() === null) {
     166            $this->setUserData(new UserData());
     167        }
     168
     169        $this->getUserData()->addUserDataItem($userDataItem);
     170        return $this;
     171    }
     172
     173    /**
     174     * @return UserProperties|null
     175     */
     176    public function getUserData(): ?UserData
     177    {
     178        return $this->userData;
     179    }
     180
     181    /**
     182     * @param UserData|null $userData
     183     * @return BaseRequest
     184     */
     185    public function setUserData(?UserData $userData)
     186    {
     187        $this->userData = $userData;
     188        return $this;
     189    }
     190
     191    /**
    124192     * @param AbstractEvent $event
    125193     * @return BaseRequest
     
    157225            'client_id' => $this->getClientId(),
    158226            'app_instance_id' => $this->getAppInstanceId(),
    159             'non_personalized_ads' => $this->isNonPersonalizedAds(),
    160227            'events' => $this->getEvents()->export(),
    161228        ]);
    162229
     230        if ($this->getNonPersonalizedAds() !== null) {
     231            $exportBaseRequest['non_personalized_ads'] = $this->isNonPersonalizedAds();
     232        }
     233
    163234        if ($this->getUserId() !== null) {
    164235            $exportBaseRequest['user_id'] = $this->getUserId();
     
    173244        }
    174245
     246        if ($this->getUserData() !== null) {
     247            $exportBaseRequest['user_data'] = $this->getUserData()->export();
     248        }
     249
     250        if ($this->getConsent() !== null) {
     251            $exportBaseRequest['consent'] = $this->getConsent()->export();
     252        }
     253
    175254        return $exportBaseRequest;
    176255    }
     
    216295     */
    217296    public function isNonPersonalizedAds(): bool
     297    {
     298        $nonPersonalizedAds = $this->getNonPersonalizedAds();
     299        if (!isset($nonPersonalizedAds)) {
     300            return false;
     301        }
     302
     303        return $this->nonPersonalizedAds;
     304    }
     305
     306    /**
     307     * @return ?bool
     308     */
     309    public function getNonPersonalizedAds() : ?bool
    218310    {
    219311        return $this->nonPersonalizedAds;
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/Br33f/Ga4/MeasurementProtocol/Dto/Response/AbstractResponse.php

    r2872625 r3427970  
    2020     * @throws HydrationException
    2121     */
    22     public function __construct(ResponseInterface $blueprint = null)
     22    public function __construct(?ResponseInterface $blueprint = null)
    2323    {
    2424        if ($blueprint !== null) {
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/Br33f/Ga4/MeasurementProtocol/Exception/ValidationException.php

    r2924444 r3427970  
    1818    protected $fieldName = null;
    1919
    20     public function __construct($message = "", $code = 0, $fieldName = null, Throwable $previous = null)
     20    public function __construct($message = "", $code = 0, $fieldName = null, ?Throwable $previous = null)
    2121    {
    2222        parent::__construct($message, $code, $previous);
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/Br33f/Ga4/MeasurementProtocol/HttpClient.php

    r2872625 r3427970  
    5656    /**
    5757     * @param Client $client
     58     * @return self
    5859     */
    59     public function setClient(Client $client)
     60    public function setClient(Client $client): self
    6061    {
    6162        $this->client = $client;
     63        return $this;
    6264    }
    6365
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/Br33f/Ga4/MeasurementProtocol/Service.php

    r2924444 r3427970  
    99
    1010use Rich4rdMuvirimi\ForceReinstall\Vendor\Br33f\Ga4\MeasurementProtocol\Dto\Request\AbstractRequest;
     11use Rich4rdMuvirimi\ForceReinstall\Vendor\Br33f\Ga4\MeasurementProtocol\Dto\Response\AbstractResponse;
    1112use Rich4rdMuvirimi\ForceReinstall\Vendor\Br33f\Ga4\MeasurementProtocol\Dto\Response\BaseResponse;
    1213use Rich4rdMuvirimi\ForceReinstall\Vendor\Br33f\Ga4\MeasurementProtocol\Dto\Response\DebugResponse;
     14use Rich4rdMuvirimi\ForceReinstall\Vendor\Br33f\Ga4\MeasurementProtocol\Dto\Response\StreamResponse;
    1315use Rich4rdMuvirimi\ForceReinstall\Vendor\Br33f\Ga4\MeasurementProtocol\Exception\MisconfigurationException;
    1416
     
    6668     */
    6769    protected $firebaseId = null;
    68    
     70
    6971    /**
    7072     * The custom ip address of the visitor
     
    99101     * @throws Exception\ValidationException
    100102     * @throws Exception\HydrationException
     103     * @api
    101104     */
    102105    public function send(AbstractRequest $request, ?bool $debug = false)
     106    {
     107        return $this->doSend($request, $debug);
     108    }
     109
     110    /**
     111     * @param AbstractRequest $request
     112     * @return DebugResponse
     113     * @throws Exception\ValidationException
     114     * @throws Exception\HydrationException
     115     * @api
     116     */
     117    public function sendDebug(AbstractRequest $request)
     118    {
     119        return $this->doSend($request, true);
     120    }
     121
     122    /**
     123     * @param AbstractRequest $request
     124     * @return DebugResponse
     125     * @throws Exception\ValidationException
     126     * @throws Exception\HydrationException
     127     * @api
     128     */
     129    public function sendStream(AbstractRequest $request)
     130    {
     131        return $this->doSend($request, false, true);
     132    }
     133
     134    /**
     135     * @param AbstractRequest $request
     136     * @param bool|null $debug
     137     * @param bool|null $stream
     138     * @return AbstractResponse
     139     * @throws Exception\ValidationException
     140     * @throws Exception\HydrationException
     141     */
     142    protected function doSend(AbstractRequest $request, ?bool $debug = false, ?bool $stream = false)
    103143    {
    104144        $request->validate($this->measurementId ? 'web' : 'firebase');
    105145        $response = $this->getHttpClient()->post($this->getEndpoint($debug), $request->export(), $this->getOptions());
    106146
    107         return !$debug
    108             ? new BaseResponse($response)
    109             : new DebugResponse($response);
    110     }
    111    
    112     /**
    113      * @param AbstractRequest $request
    114      * @return BaseResponse
    115      * @throws Exception\ValidationException
    116      * @throws Exception\HydrationException
    117      */
    118     public function sendDebug(AbstractRequest $request)
    119     {
    120         return $this->send($request, true);
    121     }
     147        if ($debug) {
     148            return new DebugResponse($response);
     149        } else if ($stream) {
     150            return new StreamResponse($response);
     151        } else {
     152            return new BaseResponse($response);
     153        }
     154    }
     155
    122156    /**
    123157     * Returns Http Client if set or creates a new instance and returns it
     
    134168    /**
    135169     * @param HttpClient $httpClient
    136      */
    137     public function setHttpClient(HttpClient $httpClient)
     170     * @return self
     171     */
     172    public function setHttpClient(HttpClient $httpClient): self
    138173    {
    139174        $this->httpClient = $httpClient;
     175        return $this;
    140176    }
    141177
     
    162198    /**
    163199     * @param bool $useSsl
    164      */
    165     public function setUseSsl(bool $useSsl)
     200     * @return self
     201     */
     202    public function setUseSsl(bool $useSsl): self
    166203    {
    167204        $this->useSsl = $useSsl;
     205        return $this;
    168206    }
    169207
     
    178216    /**
    179217     * @param bool $useWww
    180      */
    181     public function setUseWww(bool $useWww)
     218     * @return self
     219     */
     220    public function setUseWww(bool $useWww): self
    182221    {
    183222        $this->useWww = $useWww;
     223        return $this;
    184224    }
    185225
     
    194234    /**
    195235     * @param string $collectDebugEndpoint
    196      */
    197     public function setCollectDebugEndpoint(string $collectDebugEndpoint)
     236     * @return self
     237     */
     238    public function setCollectDebugEndpoint(string $collectDebugEndpoint): self
    198239    {
    199240        $this->collectDebugEndpoint = $collectDebugEndpoint;
     241        return $this;
    200242    }
    201243
     
    210252    /**
    211253     * @param string $collectEndpoint
    212      */
    213     public function setCollectEndpoint(string $collectEndpoint)
     254     * @return self
     255     */
     256    public function setCollectEndpoint(string $collectEndpoint): self
    214257    {
    215258        $this->collectEndpoint = $collectEndpoint;
     259        return $this;
    216260    }
    217261
     
    228272            'firebase_app_id' => $this->getFirebaseId(),
    229273        ];
    230        
     274
    231275        if ($parameters['firebase_app_id'] && $parameters['measurement_id']) {
    232276            throw new MisconfigurationException("Cannot specify both 'measurement_id' and 'firebase_app_id'.");
     
    291335    /**
    292336     * @param string $apiSecret
    293      */
    294     public function setApiSecret(string $apiSecret)
     337     * @return self
     338     */
     339    public function setApiSecret(string $apiSecret): self
    295340    {
    296341        $this->apiSecret = $apiSecret;
     342        return $this;
    297343    }
    298344
     
    307353    /**
    308354     * @param string $ipOverride
    309      */
    310     public function setIpOverride(string $ipOverride)
     355     * @return self
     356     */
     357    public function setIpOverride(string $ipOverride): self
    311358    {
    312359        $this->ipOverride = $ipOverride;
     360        return $this;
    313361    }
    314362
     
    323371    /**
    324372     * @param array|null $options
    325      */
    326     public function setOptions(?array $options)
     373     * @return self
     374     */
     375    public function setOptions(?array $options): self
    327376    {
    328377        $this->options = $options;
    329     }
    330    
     378        return $this;
     379    }
     380
    331381}
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/BodySummarizer.php

    r2872625 r3427970  
    1212    private $truncateAt;
    1313
    14     public function __construct(int $truncateAt = null)
     14    public function __construct(?int $truncateAt = null)
    1515    {
    1616        $this->truncateAt = $truncateAt;
     
    2323    {
    2424        return $this->truncateAt === null
    25             ? \Rich4rdMuvirimi\ForceReinstall\Vendor\GuzzleHttp\Psr7\Message::bodySummary($message)
    26             : \Rich4rdMuvirimi\ForceReinstall\Vendor\GuzzleHttp\Psr7\Message::bodySummary($message, $this->truncateAt);
     25            ? Psr7\Message::bodySummary($message)
     26            : Psr7\Message::bodySummary($message, $this->truncateAt);
    2727    }
    2828}
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Client.php

    r2924444 r3427970  
    5353     * @param array $config Client configuration settings.
    5454     *
    55      * @see \Rich4rdMuvirimi\ForceReinstall\Vendor\GuzzleHttp\RequestOptions for a list of available request options.
     55     * @see RequestOptions for a list of available request options.
    5656     */
    5757    public function __construct(array $config = [])
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Cookie/CookieJar.php

    r2924444 r3427970  
    9797    }
    9898
    99     /**
    100      * {@inheritDoc}
    101      */
    10299    public function toArray(): array
    103100    {
     
    107104    }
    108105
    109     /**
    110      * {@inheritDoc}
    111      */
    112106    public function clear(?string $domain = null, ?string $path = null, ?string $name = null): void
    113107    {
     
    127121                $this->cookies,
    128122                static function (SetCookie $cookie) use ($path, $domain): bool {
    129                     return !($cookie->matchesPath($path) &&
    130                         $cookie->matchesDomain($domain));
     123                    return !($cookie->matchesPath($path)
     124                        && $cookie->matchesDomain($domain));
    131125                }
    132126            );
     
    135129                $this->cookies,
    136130                static function (SetCookie $cookie) use ($path, $domain, $name) {
    137                     return !($cookie->getName() == $name &&
    138                         $cookie->matchesPath($path) &&
    139                         $cookie->matchesDomain($domain));
     131                    return !($cookie->getName() == $name
     132                        && $cookie->matchesPath($path)
     133                        && $cookie->matchesDomain($domain));
    140134                }
    141135            );
     
    143137    }
    144138
    145     /**
    146      * {@inheritDoc}
    147      */
    148139    public function clearSessionCookies(): void
    149140    {
     
    156147    }
    157148
    158     /**
    159      * {@inheritDoc}
    160      */
    161149    public function setCookie(SetCookie $cookie): bool
    162150    {
     
    183171            // Two cookies are identical, when their path, and domain are
    184172            // identical.
    185             if ($c->getPath() != $cookie->getPath() ||
    186                 $c->getDomain() != $cookie->getDomain() ||
    187                 $c->getName() != $cookie->getName()
     173            if ($c->getPath() != $cookie->getPath()
     174                || $c->getDomain() != $cookie->getDomain()
     175                || $c->getName() != $cookie->getName()
    188176            ) {
    189177                continue;
     
    256244     * Computes cookie path following RFC 6265 section 5.1.4
    257245     *
    258      * @see https://tools.ietf.org/html/rfc6265#section-5.1.4
     246     * @see https://datatracker.ietf.org/doc/html/rfc6265#section-5.1.4
    259247     */
    260248    private function getCookiePathFromRequest(RequestInterface $request): string
     
    287275
    288276        foreach ($this->cookies as $cookie) {
    289             if ($cookie->matchesPath($path) &&
    290                 $cookie->matchesDomain($host) &&
    291                 !$cookie->isExpired() &&
    292                 (!$cookie->getSecure() || $scheme === 'https')
     277            if ($cookie->matchesPath($path)
     278                && $cookie->matchesDomain($host)
     279                && !$cookie->isExpired()
     280                && (!$cookie->getSecure() || $scheme === 'https')
    293281            ) {
    294282                $values[] = $cookie->getName().'='
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Cookie/CookieJarInterface.php

    r2924444 r3427970  
    1515 *
    1616 * @see https://docs.python.org/2/library/cookielib.html Inspiration
     17 *
    1718 * @extends \IteratorAggregate<SetCookie>
    1819 */
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Cookie/SetCookie.php

    r2924444 r3427970  
    6363                                $data[$search] = (int) $value;
    6464                            }
     65                        } elseif ($search === 'Secure' || $search === 'Discard' || $search === 'HttpOnly') {
     66                            if ($value) {
     67                                $data[$search] = true;
     68                            }
    6569                        } else {
    6670                            $data[$search] = $value;
     
    421425
    422426        // Remove the leading '.' as per spec in RFC 6265.
    423         // https://tools.ietf.org/html/rfc6265#section-5.2.3
     427        // https://datatracker.ietf.org/doc/html/rfc6265#section-5.2.3
    424428        $cookieDomain = \ltrim(\strtolower($cookieDomain), '.');
    425429
     
    432436
    433437        // Matching the subdomain according to RFC 6265.
    434         // https://tools.ietf.org/html/rfc6265#section-5.1.3
     438        // https://datatracker.ietf.org/doc/html/rfc6265#section-5.1.3
    435439        if (\filter_var($domain, \FILTER_VALIDATE_IP)) {
    436440            return false;
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Exception/BadResponseException.php

    r2872625 r3427970  
    1515        RequestInterface $request,
    1616        ResponseInterface $response,
    17         \Throwable $previous = null,
     17        ?\Throwable $previous = null,
    1818        array $handlerContext = []
    1919    ) {
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Exception/ConnectException.php

    r2872625 r3427970  
    2626        string $message,
    2727        RequestInterface $request,
    28         \Throwable $previous = null,
     28        ?\Throwable $previous = null,
    2929        array $handlerContext = []
    3030    ) {
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Exception/RequestException.php

    r2872625 r3427970  
    88use Rich4rdMuvirimi\ForceReinstall\Vendor\Psr\Http\Message\RequestInterface;
    99use Rich4rdMuvirimi\ForceReinstall\Vendor\Psr\Http\Message\ResponseInterface;
    10 use Rich4rdMuvirimi\ForceReinstall\Vendor\Psr\Http\Message\UriInterface;
    1110
    1211/**
     
    3332        string $message,
    3433        RequestInterface $request,
    35         ResponseInterface $response = null,
    36         \Throwable $previous = null,
     34        ?ResponseInterface $response = null,
     35        ?\Throwable $previous = null,
    3736        array $handlerContext = []
    3837    ) {
     
    6463    public static function create(
    6564        RequestInterface $request,
    66         ResponseInterface $response = null,
    67         \Throwable $previous = null,
     65        ?ResponseInterface $response = null,
     66        ?\Throwable $previous = null,
    6867        array $handlerContext = [],
    69         BodySummarizerInterface $bodySummarizer = null
     68        ?BodySummarizerInterface $bodySummarizer = null
    7069    ): self {
    7170        if (!$response) {
     
    9190        }
    9291
    93         $uri = $request->getUri();
    94         $uri = static::obfuscateUri($uri);
     92        $uri = \Rich4rdMuvirimi\ForceReinstall\Vendor\GuzzleHttp\Psr7\Utils::redactUserInfo($request->getUri());
    9593
    9694        // Client Error: `GET /` resulted in a `404 Not Found` response:
     
    112110
    113111        return new $className($message, $request, $response, $previous, $handlerContext);
    114     }
    115 
    116     /**
    117      * Obfuscates URI if there is a username and a password present
    118      */
    119     private static function obfuscateUri(UriInterface $uri): UriInterface
    120     {
    121         $userInfo = $uri->getUserInfo();
    122 
    123         if (false !== ($pos = \strpos($userInfo, ':'))) {
    124             return $uri->withUserInfo(\substr($userInfo, 0, $pos), '***');
    125         }
    126 
    127         return $uri;
    128112    }
    129113
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Handler/CurlFactory.php

    r2924444 r3427970  
    1212use Rich4rdMuvirimi\ForceReinstall\Vendor\GuzzleHttp\Utils;
    1313use Rich4rdMuvirimi\ForceReinstall\Vendor\Psr\Http\Message\RequestInterface;
     14use Rich4rdMuvirimi\ForceReinstall\Vendor\Psr\Http\Message\UriInterface;
    1415
    1516/**
     
    4748    public function create(RequestInterface $request, array $options): EasyHandle
    4849    {
     50        $protocolVersion = $request->getProtocolVersion();
     51
     52        if ('2' === $protocolVersion || '2.0' === $protocolVersion) {
     53            if (!self::supportsHttp2()) {
     54                throw new ConnectException('HTTP/2 is supported by the cURL handler, however libcurl is built without HTTP/2 support.', $request);
     55            }
     56        } elseif ('1.0' !== $protocolVersion && '1.1' !== $protocolVersion) {
     57            throw new ConnectException(sprintf('HTTP/%s is not supported by the cURL handler.', $protocolVersion), $request);
     58        }
     59
    4960        if (isset($options['curl']['body_as_string'])) {
    5061            $options['_body_as_string'] = $options['curl']['body_as_string'];
     
    7384    }
    7485
     86    private static function supportsHttp2(): bool
     87    {
     88        static $supportsHttp2 = null;
     89
     90        if (null === $supportsHttp2) {
     91            $supportsHttp2 = self::supportsTls12()
     92                && defined('CURL_VERSION_HTTP2')
     93                && (\CURL_VERSION_HTTP2 & \curl_version()['features']);
     94        }
     95
     96        return $supportsHttp2;
     97    }
     98
     99    private static function supportsTls12(): bool
     100    {
     101        static $supportsTls12 = null;
     102
     103        if (null === $supportsTls12) {
     104            $supportsTls12 = \CURL_SSLVERSION_TLSv1_2 & \curl_version()['features'];
     105        }
     106
     107        return $supportsTls12;
     108    }
     109
     110    private static function supportsTls13(): bool
     111    {
     112        static $supportsTls13 = null;
     113
     114        if (null === $supportsTls13) {
     115            $supportsTls13 = defined('CURL_SSLVERSION_TLSv1_3')
     116                && (\CURL_SSLVERSION_TLSv1_3 & \curl_version()['features']);
     117        }
     118
     119        return $supportsTls13;
     120    }
     121
    75122    public function release(EasyHandle $easy): void
    76123    {
     
    79126
    80127        if (\count($this->handles) >= $this->maxHandles) {
    81             \curl_close($resource);
     128            if (PHP_VERSION_ID < 80000) {
     129                \curl_close($resource);
     130            }
    82131        } else {
    83132            // Remove all callback functions as they can hold onto references
     
    148197            'appconnect_time' => \curl_getinfo($easy->handle, \CURLINFO_APPCONNECT_TIME),
    149198        ] + \curl_getinfo($easy->handle);
    150         $ctx[self::CURL_VERSION_STR] = \curl_version()['version'];
     199        $ctx[self::CURL_VERSION_STR] = self::getCurlVersion();
    151200        $factory->release($easy);
    152201
     
    157206
    158207        return self::createRejection($easy, $ctx);
     208    }
     209
     210    private static function getCurlVersion(): string
     211    {
     212        static $curlVersion = null;
     213
     214        if (null === $curlVersion) {
     215            $curlVersion = \curl_version()['version'];
     216        }
     217
     218        return $curlVersion;
    159219    }
    160220
     
    195255        }
    196256
     257        $uri = $easy->request->getUri();
     258
     259        $sanitizedError = self::sanitizeCurlError($ctx['error'] ?? '', $uri);
     260
    197261        $message = \sprintf(
    198262            'cURL error %s: %s (%s)',
    199263            $ctx['errno'],
    200             $ctx['error'],
     264            $sanitizedError,
    201265            'see https://curl.haxx.se/libcurl/c/libcurl-errors.html'
    202266        );
    203         $uriString = (string) $easy->request->getUri();
    204         if ($uriString !== '' && false === \strpos($ctx['error'], $uriString)) {
    205             $message .= \sprintf(' for %s', $uriString);
     267
     268        if ('' !== $sanitizedError) {
     269            $redactedUriString = \Rich4rdMuvirimi\ForceReinstall\Vendor\GuzzleHttp\Psr7\Utils::redactUserInfo($uri)->__toString();
     270            if ($redactedUriString !== '' && false === \strpos($sanitizedError, $redactedUriString)) {
     271                $message .= \sprintf(' for %s', $redactedUriString);
     272            }
    206273        }
    207274
     
    212279
    213280        return P\Create::rejectionFor($error);
     281    }
     282
     283    private static function sanitizeCurlError(string $error, UriInterface $uri): string
     284    {
     285        if ('' === $error) {
     286            return $error;
     287        }
     288
     289        $baseUri = $uri->withQuery('')->withFragment('');
     290        $baseUriString = $baseUri->__toString();
     291
     292        if ('' === $baseUriString) {
     293            return $error;
     294        }
     295
     296        $redactedUriString = \Rich4rdMuvirimi\ForceReinstall\Vendor\GuzzleHttp\Psr7\Utils::redactUserInfo($baseUri)->__toString();
     297
     298        return str_replace($baseUriString, $redactedUriString, $error);
    214299    }
    215300
     
    233318
    234319        $version = $easy->request->getProtocolVersion();
    235         if ($version == 1.1) {
     320
     321        if ('2' === $version || '2.0' === $version) {
     322            $conf[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_2_0;
     323        } elseif ('1.1' === $version) {
    236324            $conf[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_1_1;
    237         } elseif ($version == 2.0) {
    238             $conf[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_2_0;
    239325        } else {
    240326            $conf[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_1_0;
     
    257343        $method = $easy->request->getMethod();
    258344        if ($method === 'PUT' || $method === 'POST') {
    259             // See https://tools.ietf.org/html/rfc7230#section-3.3.2
     345            // See https://datatracker.ietf.org/doc/html/rfc7230#section-3.3.2
    260346            if (!$easy->request->hasHeader('Content-Length')) {
    261347                $conf[\CURLOPT_HTTPHEADER][] = 'Content-Length: 0';
     
    368454                    // If not, it's probably a file, or a link to a file, so use CURLOPT_CAINFO.
    369455                    if (
    370                         \is_dir($options['verify']) ||
    371                         (
    372                             \is_link($options['verify']) === true &&
    373                             ($verifyLink = \readlink($options['verify'])) !== false &&
    374                             \is_dir($verifyLink)
     456                        \is_dir($options['verify'])
     457                        || (
     458                            \is_link($options['verify']) === true
     459                            && ($verifyLink = \readlink($options['verify'])) !== false
     460                            && \is_dir($verifyLink)
    375461                        )
    376462                    ) {
     
    391477                // sets a matching 'Accept-Encoding' header.
    392478                $conf[\CURLOPT_ENCODING] = '';
    393                 // But as the user did not specify any acceptable encodings we need
    394                 // to overwrite this implicit header with an empty one.
     479                // But as the user did not specify any encoding preference,
     480                // let's leave it up to server by preventing curl from sending
     481                // the header, which will be interpreted as 'Accept-Encoding: *'.
     482                // https://www.rfc-editor.org/rfc/rfc9110#field.accept-encoding
    395483                $conf[\CURLOPT_HTTPHEADER][] = 'Accept-Encoding:';
    396484            }
     
    456544
    457545        if (isset($options['crypto_method'])) {
    458             if (\STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT === $options['crypto_method']) {
    459                 if (!defined('CURL_SSLVERSION_TLSv1_0')) {
    460                     throw new \InvalidArgumentException('Invalid crypto_method request option: TLS 1.0 not supported by your version of cURL');
    461                 }
     546            $protocolVersion = $easy->request->getProtocolVersion();
     547
     548            // If HTTP/2, upgrade TLS 1.0 and 1.1 to 1.2
     549            if ('2' === $protocolVersion || '2.0' === $protocolVersion) {
     550                if (
     551                    \STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT === $options['crypto_method']
     552                    || \STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT === $options['crypto_method']
     553                    || \STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT === $options['crypto_method']
     554                ) {
     555                    $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_2;
     556                } elseif (defined('STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT') && \STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT === $options['crypto_method']) {
     557                    if (!self::supportsTls13()) {
     558                        throw new \InvalidArgumentException('Invalid crypto_method request option: TLS 1.3 not supported by your version of cURL');
     559                    }
     560                    $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_3;
     561                } else {
     562                    throw new \InvalidArgumentException('Invalid crypto_method request option: unknown version provided');
     563                }
     564            } elseif (\STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT === $options['crypto_method']) {
    462565                $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_0;
    463566            } elseif (\STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT === $options['crypto_method']) {
    464                 if (!defined('CURL_SSLVERSION_TLSv1_1')) {
    465                     throw new \InvalidArgumentException('Invalid crypto_method request option: TLS 1.1 not supported by your version of cURL');
    466                 }
    467567                $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_1;
    468568            } elseif (\STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT === $options['crypto_method']) {
    469                 if (!defined('CURL_SSLVERSION_TLSv1_2')) {
     569                if (!self::supportsTls12()) {
    470570                    throw new \InvalidArgumentException('Invalid crypto_method request option: TLS 1.2 not supported by your version of cURL');
    471571                }
    472572                $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_2;
    473573            } elseif (defined('STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT') && \STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT === $options['crypto_method']) {
    474                 if (!defined('CURL_SSLVERSION_TLSv1_3')) {
     574                if (!self::supportsTls13()) {
    475575                    throw new \InvalidArgumentException('Invalid crypto_method request option: TLS 1.3 not supported by your version of cURL');
    476576                }
     
    628728        };
    629729    }
     730
     731    public function __destruct()
     732    {
     733        foreach ($this->handles as $id => $handle) {
     734            if (PHP_VERSION_ID < 80000) {
     735                \curl_close($handle);
     736            }
     737
     738            unset($this->handles[$id]);
     739        }
     740    }
    630741}
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Handler/CurlMultiHandler.php

    r2924444 r3427970  
    33namespace Rich4rdMuvirimi\ForceReinstall\Vendor\GuzzleHttp\Handler;
    44
     5use Closure;
    56use Rich4rdMuvirimi\ForceReinstall\Vendor\GuzzleHttp\Promise as P;
    67use Rich4rdMuvirimi\ForceReinstall\Vendor\GuzzleHttp\Promise\Promise;
     
    1617 * **curl** key of the provided request options.
    1718 *
    18  * @property resource|\CurlMultiHandle $_mh Internal use only. Lazy loaded multi-handle.
    19  *
    2019 * @final
    2120 */
    22 #[\AllowDynamicProperties]
    2321class CurlMultiHandler
    2422{
     
    5654     */
    5755    private $options = [];
     56
     57    /** @var resource|\CurlMultiHandle */
     58    private $_mh;
    5859
    5960    /**
     
    8081
    8182        $this->options = $options['options'] ?? [];
     83
     84        // unsetting the property forces the first access to go through
     85        // __get().
     86        unset($this->_mh);
    8287    }
    8388
     
    156161        }
    157162
     163        // Run curl_multi_exec in the queue to enable other async tasks to run
     164        P\Utils::queue()->add(Closure::fromCallable([$this, 'tickInQueue']));
     165
    158166        // Step through the task queue which may add additional requests.
    159167        P\Utils::queue()->run();
     
    166174
    167175        while (\curl_multi_exec($this->_mh, $this->active) === \CURLM_CALL_MULTI_PERFORM) {
     176            // Prevent busy looping for slow HTTP requests.
     177            \curl_multi_select($this->_mh, $this->selectTimeout);
    168178        }
    169179
    170180        $this->processMessages();
     181    }
     182
     183    /**
     184     * Runs \curl_multi_exec() inside the event loop, to prevent busy looping
     185     */
     186    private function tickInQueue(): void
     187    {
     188        if (\curl_multi_exec($this->_mh, $this->active) === \CURLM_CALL_MULTI_PERFORM) {
     189            \curl_multi_select($this->_mh, 0);
     190            P\Utils::queue()->add(Closure::fromCallable([$this, 'tickInQueue']));
     191        }
    171192    }
    172193
     
    220241        unset($this->delays[$id], $this->handles[$id]);
    221242        \curl_multi_remove_handle($this->_mh, $handle);
    222         \curl_close($handle);
     243
     244        if (PHP_VERSION_ID < 80000) {
     245            \curl_close($handle);
     246        }
    223247
    224248        return true;
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Handler/MockHandler.php

    r2924444 r3427970  
    5353     * @param callable|null $onRejected  Callback to invoke when the return value is rejected.
    5454     */
    55     public static function createWithMiddleware(array $queue = null, callable $onFulfilled = null, callable $onRejected = null): HandlerStack
     55    public static function createWithMiddleware(?array $queue = null, ?callable $onFulfilled = null, ?callable $onRejected = null): HandlerStack
    5656    {
    5757        return HandlerStack::create(new self($queue, $onFulfilled, $onRejected));
     
    6060    /**
    6161     * The passed in value must be an array of
    62      * {@see \Rich4rdMuvirimi\ForceReinstall\Vendor\Psr\Http\Message\ResponseInterface} objects, Exceptions,
     62     * {@see ResponseInterface} objects, Exceptions,
    6363     * callables, or Promises.
    6464     *
     
    6767     * @param callable|null          $onRejected  Callback to invoke when the return value is rejected.
    6868     */
    69     public function __construct(array $queue = null, callable $onFulfilled = null, callable $onRejected = null)
     69    public function __construct(?array $queue = null, ?callable $onFulfilled = null, ?callable $onRejected = null)
    7070    {
    7171        $this->onFulfilled = $onFulfilled;
     
    201201        RequestInterface $request,
    202202        array $options,
    203         ResponseInterface $response = null,
     203        ?ResponseInterface $response = null,
    204204        $reason = null
    205205    ): void {
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Handler/Proxy.php

    r2872625 r3427970  
    1818     * requests to another handler.
    1919     *
    20      * @param callable(\Rich4rdMuvirimi\ForceReinstall\Vendor\Psr\Http\Message\RequestInterface, array): \Rich4rdMuvirimi\ForceReinstall\Vendor\GuzzleHttp\Promise\PromiseInterface $default Handler used for normal responses
    21      * @param callable(\Rich4rdMuvirimi\ForceReinstall\Vendor\Psr\Http\Message\RequestInterface, array): \Rich4rdMuvirimi\ForceReinstall\Vendor\GuzzleHttp\Promise\PromiseInterface $sync    Handler used for synchronous responses.
     20     * @param callable(RequestInterface, array): PromiseInterface $default Handler used for normal responses
     21     * @param callable(RequestInterface, array): PromiseInterface $sync    Handler used for synchronous responses.
    2222     *
    23      * @return callable(\Rich4rdMuvirimi\ForceReinstall\Vendor\Psr\Http\Message\RequestInterface, array): \Rich4rdMuvirimi\ForceReinstall\Vendor\GuzzleHttp\Promise\PromiseInterface Returns the composed handler.
     23     * @return callable(RequestInterface, array): PromiseInterface Returns the composed handler.
    2424     */
    2525    public static function wrapSync(callable $default, callable $sync): callable
     
    3838     * through the StreamHandler.
    3939     *
    40      * @param callable(\Rich4rdMuvirimi\ForceReinstall\Vendor\Psr\Http\Message\RequestInterface, array): \Rich4rdMuvirimi\ForceReinstall\Vendor\GuzzleHttp\Promise\PromiseInterface $default   Handler used for non-streaming responses
    41      * @param callable(\Rich4rdMuvirimi\ForceReinstall\Vendor\Psr\Http\Message\RequestInterface, array): \Rich4rdMuvirimi\ForceReinstall\Vendor\GuzzleHttp\Promise\PromiseInterface $streaming Handler used for streaming responses
     40     * @param callable(RequestInterface, array): PromiseInterface $default   Handler used for non-streaming responses
     41     * @param callable(RequestInterface, array): PromiseInterface $streaming Handler used for streaming responses
    4242     *
    43      * @return callable(\Rich4rdMuvirimi\ForceReinstall\Vendor\Psr\Http\Message\RequestInterface, array): \Rich4rdMuvirimi\ForceReinstall\Vendor\GuzzleHttp\Promise\PromiseInterface Returns the composed handler.
     43     * @return callable(RequestInterface, array): PromiseInterface Returns the composed handler.
    4444     */
    4545    public static function wrapStreaming(callable $default, callable $streaming): callable
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Handler/StreamHandler.php

    r2924444 r3427970  
    4141        }
    4242
     43        $protocolVersion = $request->getProtocolVersion();
     44
     45        if ('1.0' !== $protocolVersion && '1.1' !== $protocolVersion) {
     46            throw new ConnectException(sprintf('HTTP/%s is not supported by the stream handler.', $protocolVersion), $request);
     47        }
     48
    4349        $startTime = isset($options['on_stats']) ? Utils::currentTime() : null;
    4450
     
    4854
    4955            // Append a content-length header if body size is zero to match
    50             // cURL's behavior.
    51             if (0 === $request->getBody()->getSize()) {
     56            // the behavior of `CurlHandler`
     57            if (
     58                (
     59                    0 === \strcasecmp('PUT', $request->getMethod())
     60                    || 0 === \strcasecmp('POST', $request->getMethod())
     61                )
     62                && 0 === $request->getBody()->getSize()
     63            ) {
    5264                $request = $request->withHeader('Content-Length', '0');
    5365            }
     
    8496        RequestInterface $request,
    8597        ?float $startTime,
    86         ResponseInterface $response = null,
    87         \Throwable $error = null
     98        ?ResponseInterface $response = null,
     99        ?\Throwable $error = null
    88100    ): void {
    89101        if (isset($options['on_stats'])) {
     
    274286        // HTTP/1.1 streams using the PHP stream wrapper require a
    275287        // Connection: close header
    276         if ($request->getProtocolVersion() == '1.1'
     288        if ($request->getProtocolVersion() === '1.1'
    277289            && !$request->hasHeader('Connection')
    278290        ) {
     
    322334
    323335        return $this->createResource(
    324             function () use ($uri, &$http_response_header, $contextResource, $context, $options, $request) {
     336            function () use ($uri, $contextResource, $context, $options, $request) {
    325337                $resource = @\fopen((string) $uri, 'r', false, $contextResource);
     338
     339                // See https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_the_http_response_header_predefined_variable
     340                if (function_exists('http_get_last_response_headers')) {
     341                    /** @var array|null */
     342                    $http_response_header = \http_get_last_response_headers();
     343                }
     344
    326345                $this->lastHeaders = $http_response_header ?? [];
    327346
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/HandlerStack.php

    r2924444 r3427970  
    5959     * @param (callable(RequestInterface, array): PromiseInterface)|null $handler Underlying HTTP handler.
    6060     */
    61     public function __construct(callable $handler = null)
     61    public function __construct(?callable $handler = null)
    6262    {
    6363        $this->handler = $handler;
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Middleware.php

    r2924444 r3427970  
    5656     * @return callable(callable): callable Returns a function that accepts the next handler.
    5757     */
    58     public static function httpErrors(BodySummarizerInterface $bodySummarizer = null): callable
     58    public static function httpErrors(?BodySummarizerInterface $bodySummarizer = null): callable
    5959    {
    6060        return static function (callable $handler) use ($bodySummarizer): callable {
     
    133133     * @return callable Returns a function that accepts the next handler.
    134134     */
    135     public static function tap(callable $before = null, callable $after = null): callable
     135    public static function tap(?callable $before = null, ?callable $after = null): callable
    136136    {
    137137        return static function (callable $handler) use ($before, $after): callable {
     
    177177     * @return callable Returns a function that accepts the next handler.
    178178     */
    179     public static function retry(callable $decider, callable $delay = null): callable
     179    public static function retry(callable $decider, ?callable $delay = null): callable
    180180    {
    181181        return static function (callable $handler) use ($decider, $delay): RetryMiddleware {
     
    187187     * Middleware that logs requests, responses, and errors using a message
    188188     * formatter.
    189      *
    190      * @phpstan-param \Psr\Log\LogLevel::* $logLevel  Level at which to log requests.
    191189     *
    192190     * @param LoggerInterface                            $logger    Logs messages.
    193191     * @param MessageFormatterInterface|MessageFormatter $formatter Formatter used to create message strings.
    194192     * @param string                                     $logLevel  Level at which to log requests.
     193     *
     194     * @phpstan-param \Psr\Log\LogLevel::* $logLevel Level at which to log requests.
    195195     *
    196196     * @return callable Returns a function that accepts the next handler.
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Pool.php

    r2872625 r3427970  
    8787     * @param array|\Iterator $requests Requests to send concurrently.
    8888     * @param array           $options  Passes through the options available in
    89      *                                  {@see \Rich4rdMuvirimi\ForceReinstall\Vendor\GuzzleHttp\Pool::__construct}
     89     *                                  {@see Pool::__construct}
    9090     *
    9191     * @return array Returns an array containing the response or an exception
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/PrepareBodyMiddleware.php

    r2924444 r3427970  
    7777        $expect = $options['expect'] ?? null;
    7878
    79         // Return if disabled or if you're not using HTTP/1.1 or HTTP/2.0
    80         if ($expect === false || $request->getProtocolVersion() < 1.1) {
     79        // Return if disabled or using HTTP/1.0
     80        if ($expect === false || $request->getProtocolVersion() === '1.0') {
    8181            return;
    8282        }
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Promise/Coroutine.php

    r2924444 r3427970  
    8585
    8686    public function then(
    87         callable $onFulfilled = null,
    88         callable $onRejected = null
     87        ?callable $onFulfilled = null,
     88        ?callable $onRejected = null
    8989    ): PromiseInterface {
    9090        return $this->result->then($onFulfilled, $onRejected);
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Promise/Each.php

    r2924444 r3427970  
    2020     * side effects and choose to resolve or reject the aggregate if needed.
    2121     *
    22      * @param mixed    $iterable    Iterator or array to iterate over.
    23      * @param callable $onFulfilled
    24      * @param callable $onRejected
     22     * @param mixed $iterable Iterator or array to iterate over.
    2523     */
    2624    public static function of(
    2725        $iterable,
    28         callable $onFulfilled = null,
    29         callable $onRejected = null
     26        ?callable $onFulfilled = null,
     27        ?callable $onRejected = null
    3028    ): PromiseInterface {
    3129        return (new EachPromise($iterable, [
     
    4543     * @param mixed        $iterable
    4644     * @param int|callable $concurrency
    47      * @param callable     $onFulfilled
    48      * @param callable     $onRejected
    4945     */
    5046    public static function ofLimit(
    5147        $iterable,
    5248        $concurrency,
    53         callable $onFulfilled = null,
    54         callable $onRejected = null
     49        ?callable $onFulfilled = null,
     50        ?callable $onRejected = null
    5551    ): PromiseInterface {
    5652        return (new EachPromise($iterable, [
     
    6864     * @param mixed        $iterable
    6965     * @param int|callable $concurrency
    70      * @param callable     $onFulfilled
    7166     */
    7267    public static function ofLimitAll(
    7368        $iterable,
    7469        $concurrency,
    75         callable $onFulfilled = null
     70        ?callable $onFulfilled = null
    7671    ): PromiseInterface {
    7772        return self::ofLimit(
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Promise/EachPromise.php

    r2924444 r3427970  
    136136        // Add only up to N pending promises.
    137137        $concurrency = is_callable($this->concurrency)
    138             ? call_user_func($this->concurrency, count($this->pending))
     138            ? ($this->concurrency)(count($this->pending))
    139139            : $this->concurrency;
    140140        $concurrency = max($concurrency - count($this->pending), 0);
     
    171171            function ($value) use ($idx, $key): void {
    172172                if ($this->onFulfilled) {
    173                     call_user_func(
    174                         $this->onFulfilled,
     173                    ($this->onFulfilled)(
    175174                        $value,
    176175                        $key,
     
    182181            function ($reason) use ($idx, $key): void {
    183182                if ($this->onRejected) {
    184                     call_user_func(
    185                         $this->onRejected,
     183                    ($this->onRejected)(
    186184                        $reason,
    187185                        $key,
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Promise/FulfilledPromise.php

    r2924444 r3427970  
    3232
    3333    public function then(
    34         callable $onFulfilled = null,
    35         callable $onRejected = null
     34        ?callable $onFulfilled = null,
     35        ?callable $onRejected = null
    3636    ): PromiseInterface {
    3737        // Return itself if there is no onFulfilled function.
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Promise/Promise.php

    r2924444 r3427970  
    2626     */
    2727    public function __construct(
    28         callable $waitFn = null,
    29         callable $cancelFn = null
     28        ?callable $waitFn = null,
     29        ?callable $cancelFn = null
    3030    ) {
    3131        $this->waitFn = $waitFn;
     
    3434
    3535    public function then(
    36         callable $onFulfilled = null,
    37         callable $onRejected = null
     36        ?callable $onFulfilled = null,
     37        ?callable $onRejected = null
    3838    ): PromiseInterface {
    3939        if ($this->state === self::PENDING) {
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Promise/PromiseInterface.php

    r2924444 r3427970  
    2828     */
    2929    public function then(
    30         callable $onFulfilled = null,
    31         callable $onRejected = null
     30        ?callable $onFulfilled = null,
     31        ?callable $onRejected = null
    3232    ): PromiseInterface;
    3333
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Promise/RejectedPromise.php

    r2924444 r3427970  
    3232
    3333    public function then(
    34         callable $onFulfilled = null,
    35         callable $onRejected = null
     34        ?callable $onFulfilled = null,
     35        ?callable $onRejected = null
    3636    ): PromiseInterface {
    3737        // If there's no onRejected callback then just return self.
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Promise/RejectionException.php

    r2924444 r3427970  
    1919     * @param string|null $description Optional description.
    2020     */
    21     public function __construct($reason, $description = null)
     21    public function __construct($reason, ?string $description = null)
    2222    {
    2323        $this->reason = $reason;
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Promise/Utils.php

    r2924444 r3427970  
    2222     * @param TaskQueueInterface|null $assign Optionally specify a new queue instance.
    2323     */
    24     public static function queue(TaskQueueInterface $assign = null): TaskQueueInterface
     24    public static function queue(?TaskQueueInterface $assign = null): TaskQueueInterface
    2525    {
    2626        static $queue;
     
    145145            },
    146146            function ($reason, $idx, Promise $aggregate): void {
    147                 $aggregate->reject($reason);
     147                if (Is::pending($aggregate)) {
     148                    $aggregate->reject($reason);
     149                }
    148150            }
    149151        )->then(function () use (&$results) {
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Psr7/AppendStream.php

    r2872625 r3427970  
    4141        try {
    4242            $this->rewind();
     43
    4344            return $this->getContents();
    4445        } catch (\Throwable $e) {
     
    4748            }
    4849            trigger_error(sprintf('%s::__toString exception: %s', self::class, (string) $e), E_USER_ERROR);
     50
    4951            return '';
    5052        }
     
    139141    public function eof(): bool
    140142    {
    141         return !$this->streams ||
    142             ($this->current >= count($this->streams) - 1 &&
    143              $this->streams[$this->current]->eof());
     143        return !$this->streams
     144            || ($this->current >= count($this->streams) - 1
     145             && $this->streams[$this->current]->eof());
    144146    }
    145147
     
    168170            } catch (\Exception $e) {
    169171                throw new \RuntimeException('Unable to seek stream '
    170                     . $i . ' of the AppendStream', 0, $e);
     172                    .$i.' of the AppendStream', 0, $e);
    171173            }
    172174        }
     
    198200                    break;
    199201                }
    200                 $this->current++;
     202                ++$this->current;
    201203            }
    202204
     
    238240
    239241    /**
    240      * {@inheritdoc}
    241      *
    242242     * @return mixed
    243243     */
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Psr7/BufferStream.php

    r2872625 r3427970  
    135135
    136136    /**
    137      * {@inheritdoc}
    138      *
    139137     * @return mixed
    140138     */
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Psr7/CachingStream.php

    r2872625 r3427970  
    3434    public function __construct(
    3535        StreamInterface $stream,
    36         StreamInterface $target = null
     36        ?StreamInterface $target = null
    3737    ) {
    3838        $this->remoteStream = $stream;
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Psr7/FnStream.php

    r2872625 r3427970  
    1919        '__toString', 'close', 'detach', 'rewind',
    2020        'getSize', 'tell', 'eof', 'isSeekable', 'seek', 'isWritable', 'write',
    21         'isReadable', 'read', 'getContents', 'getMetadata'
     21        'isReadable', 'read', 'getContents', 'getMetadata',
    2222    ];
    2323
     
    3434        // Create the functions on the class
    3535        foreach ($methods as $name => $fn) {
    36             $this->{'_fn_' . $name} = $fn;
     36            $this->{'_fn_'.$name} = $fn;
    3737        }
    3838    }
     
    4646    {
    4747        throw new \BadMethodCallException(str_replace('_fn_', '', $name)
    48             . '() is not implemented in the FnStream');
     48            .'() is not implemented in the FnStream');
    4949    }
    5050
     
    5555    {
    5656        if (isset($this->_fn_close)) {
    57             call_user_func($this->_fn_close);
     57            ($this->_fn_close)();
    5858        }
    5959    }
     
    9494    {
    9595        try {
    96             return call_user_func($this->_fn___toString);
     96            /** @var string */
     97            return ($this->_fn___toString)();
    9798        } catch (\Throwable $e) {
    9899            if (\PHP_VERSION_ID >= 70400) {
     
    100101            }
    101102            trigger_error(sprintf('%s::__toString exception: %s', self::class, (string) $e), E_USER_ERROR);
     103
    102104            return '';
    103105        }
     
    106108    public function close(): void
    107109    {
    108         call_user_func($this->_fn_close);
     110        ($this->_fn_close)();
    109111    }
    110112
    111113    public function detach()
    112114    {
    113         return call_user_func($this->_fn_detach);
     115        return ($this->_fn_detach)();
    114116    }
    115117
    116118    public function getSize(): ?int
    117119    {
    118         return call_user_func($this->_fn_getSize);
     120        return ($this->_fn_getSize)();
    119121    }
    120122
    121123    public function tell(): int
    122124    {
    123         return call_user_func($this->_fn_tell);
     125        return ($this->_fn_tell)();
    124126    }
    125127
    126128    public function eof(): bool
    127129    {
    128         return call_user_func($this->_fn_eof);
     130        return ($this->_fn_eof)();
    129131    }
    130132
    131133    public function isSeekable(): bool
    132134    {
    133         return call_user_func($this->_fn_isSeekable);
     135        return ($this->_fn_isSeekable)();
    134136    }
    135137
    136138    public function rewind(): void
    137139    {
    138         call_user_func($this->_fn_rewind);
     140        ($this->_fn_rewind)();
    139141    }
    140142
    141143    public function seek($offset, $whence = SEEK_SET): void
    142144    {
    143         call_user_func($this->_fn_seek, $offset, $whence);
     145        ($this->_fn_seek)($offset, $whence);
    144146    }
    145147
    146148    public function isWritable(): bool
    147149    {
    148         return call_user_func($this->_fn_isWritable);
     150        return ($this->_fn_isWritable)();
    149151    }
    150152
    151153    public function write($string): int
    152154    {
    153         return call_user_func($this->_fn_write, $string);
     155        return ($this->_fn_write)($string);
    154156    }
    155157
    156158    public function isReadable(): bool
    157159    {
    158         return call_user_func($this->_fn_isReadable);
     160        return ($this->_fn_isReadable)();
    159161    }
    160162
    161163    public function read($length): string
    162164    {
    163         return call_user_func($this->_fn_read, $length);
     165        return ($this->_fn_read)($length);
    164166    }
    165167
    166168    public function getContents(): string
    167169    {
    168         return call_user_func($this->_fn_getContents);
     170        return ($this->_fn_getContents)();
    169171    }
    170172
    171173    /**
    172      * {@inheritdoc}
    173      *
    174174     * @return mixed
    175175     */
    176176    public function getMetadata($key = null)
    177177    {
    178         return call_user_func($this->_fn_getMetadata, $key);
     178        return ($this->_fn_getMetadata)($key);
    179179    }
    180180}
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Psr7/Header.php

    r2872625 r3427970  
    2323            foreach (self::splitList($value) as $val) {
    2424                $part = [];
    25                 foreach (preg_split('/;(?=([^"]*"[^"]*")*[^"]*$)/', $val) as $kvp) {
     25                foreach (preg_split('/;(?=([^"]*"[^"]*")*[^"]*$)/', $val) ?: [] as $kvp) {
    2626                    if (preg_match_all('/<[^>]+>|[^=]+/', $kvp, $matches)) {
    2727                        $m = $matches[0];
     
    9090            $isQuoted = false;
    9191            $isEscaped = false;
    92             for ($i = 0, $max = \strlen($value); $i < $max; $i++) {
     92            for ($i = 0, $max = \strlen($value); $i < $max; ++$i) {
    9393                if ($isEscaped) {
    9494                    $v .= $value[$i];
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Psr7/HttpFactory.php

    r2872625 r3427970  
    2424 * and inject the instance of this class multiple times.
    2525 */
    26 final class HttpFactory implements
    27     RequestFactoryInterface,
    28     ResponseFactoryInterface,
    29     ServerRequestFactoryInterface,
    30     StreamFactoryInterface,
    31     UploadedFileFactoryInterface,
    32     UriFactoryInterface
     26final class HttpFactory implements RequestFactoryInterface, ResponseFactoryInterface, ServerRequestFactoryInterface, StreamFactoryInterface, UploadedFileFactoryInterface, UriFactoryInterface
    3327{
    3428    public function createUploadedFile(
    3529        StreamInterface $stream,
    36         int $size = null,
     30        ?int $size = null,
    3731        int $error = \UPLOAD_ERR_OK,
    38         string $clientFilename = null,
    39         string $clientMediaType = null
     32        ?string $clientFilename = null,
     33        ?string $clientMediaType = null
    4034    ): UploadedFileInterface {
    4135        if ($size === null) {
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Psr7/InflateStream.php

    r2872625 r3427970  
    1414 * to a Guzzle stream resource to be used as a Guzzle stream.
    1515 *
    16  * @link http://tools.ietf.org/html/rfc1950
    17  * @link http://tools.ietf.org/html/rfc1952
    18  * @link http://php.net/manual/en/filters.compression.php
     16 * @see https://datatracker.ietf.org/doc/html/rfc1950
     17 * @see https://datatracker.ietf.org/doc/html/rfc1952
     18 * @see https://www.php.net/manual/en/filters.compression.php
    1919 */
    2020final class InflateStream implements StreamInterface
     
    2929        $resource = StreamWrapper::getResource($stream);
    3030        // Specify window=15+32, so zlib will use header detection to both gzip (with header) and zlib data
    31         // See http://www.zlib.net/manual.html#Advanced definition of inflateInit2
     31        // See https://www.zlib.net/manual.html#Advanced definition of inflateInit2
    3232        // "Add 32 to windowBits to enable zlib and gzip decoding with automatic header detection"
    3333        // Default window size is 15.
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Psr7/Message.php

    r2924444 r3427970  
    1919    {
    2020        if ($message instanceof RequestInterface) {
    21             $msg = trim($message->getMethod() . ' '
    22                     . $message->getRequestTarget())
    23                 . ' HTTP/' . $message->getProtocolVersion();
     21            $msg = trim($message->getMethod().' '
     22                    .$message->getRequestTarget())
     23                .' HTTP/'.$message->getProtocolVersion();
    2424            if (!$message->hasHeader('host')) {
    25                 $msg .= "\r\nHost: " . $message->getUri()->getHost();
     25                $msg .= "\r\nHost: ".$message->getUri()->getHost();
    2626            }
    2727        } elseif ($message instanceof ResponseInterface) {
    28             $msg = 'HTTP/' . $message->getProtocolVersion() . ' '
    29                 . $message->getStatusCode() . ' '
    30                 . $message->getReasonPhrase();
     28            $msg = 'HTTP/'.$message->getProtocolVersion().' '
     29                .$message->getStatusCode().' '
     30                .$message->getReasonPhrase();
    3131        } else {
    3232            throw new \InvalidArgumentException('Unknown message type');
     
    3434
    3535        foreach ($message->getHeaders() as $name => $values) {
    36             if (strtolower($name) === 'set-cookie') {
     36            if (is_string($name) && strtolower($name) === 'set-cookie') {
    3737                foreach ($values as $value) {
    38                     $msg .= "\r\n{$name}: " . $value;
     38                    $msg .= "\r\n{$name}: ".$value;
    3939                }
    4040            } else {
    41                 $msg .= "\r\n{$name}: " . implode(', ', $values);
     41                $msg .= "\r\n{$name}: ".implode(', ', $values);
    4242            }
    4343        }
    4444
    45         return "{$msg}\r\n\r\n" . $message->getBody();
     45        return "{$msg}\r\n\r\n".$message->getBody();
    4646    }
    4747
     
    147147        // If these aren't the same, then one line didn't match and there's an invalid header.
    148148        if ($count !== substr_count($rawHeaders, "\n")) {
    149             // Folding is deprecated, see https://tools.ietf.org/html/rfc7230#section-3.2.4
     149            // Folding is deprecated, see https://datatracker.ietf.org/doc/html/rfc7230#section-3.2.4
    150150            if (preg_match(Rfc7230::HEADER_FOLD_REGEX, $rawHeaders)) {
    151151                throw new \InvalidArgumentException('Invalid header syntax: Obsolete line folding');
     
    191191        $scheme = substr($host, -4) === ':443' ? 'https' : 'http';
    192192
    193         return $scheme . '://' . $host . '/' . ltrim($path, '/');
     193        return $scheme.'://'.$host.'/'.ltrim($path, '/');
    194194    }
    195195
     
    228228    {
    229229        $data = self::parseMessage($message);
    230         // According to https://tools.ietf.org/html/rfc7230#section-3.1.2 the space
    231         // between status-code and reason-phrase is required. But browsers accept
    232         // responses without space and reason as well.
     230        // According to https://datatracker.ietf.org/doc/html/rfc7230#section-3.1.2
     231        // the space between status-code and reason-phrase is required. But
     232        // browsers accept responses without space and reason as well.
    233233        if (!preg_match('/^HTTP\/.* [0-9]{3}( .*|$)/', $data['start-line'])) {
    234             throw new \InvalidArgumentException('Invalid response string: ' . $data['start-line']);
     234            throw new \InvalidArgumentException('Invalid response string: '.$data['start-line']);
    235235        }
    236236        $parts = explode(' ', $data['start-line'], 3);
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Psr7/MessageTrait.php

    r2924444 r3427970  
    1313trait MessageTrait
    1414{
    15     /** @var array<string, string[]> Map of all registered headers, as original name => array of values */
     15    /** @var string[][] Map of all registered headers, as original name => array of values */
    1616    private $headers = [];
    1717
    18     /** @var array<string, string> Map of lowercase header name => original name at registration */
    19     private $headerNames  = [];
     18    /** @var string[] Map of lowercase header name => original name at registration */
     19    private $headerNames = [];
    2020
    2121    /** @var string */
     
    3838        $new = clone $this;
    3939        $new->protocol = $version;
     40
    4041        return $new;
    4142    }
     
    136137        $new = clone $this;
    137138        $new->stream = $body;
    138         return $new;
    139     }
    140 
    141     /**
    142      * @param array<string|int, string|string[]> $headers
     139
     140        return $new;
     141    }
     142
     143    /**
     144     * @param (string|string[])[] $headers
    143145     */
    144146    private function setHeaders(array $headers): void
     
    173175        }
    174176
    175         if (count($value) === 0) {
    176             throw new \InvalidArgumentException('Header value can not be an empty array.');
    177         }
    178 
    179177        return $this->trimAndValidateHeaderValues($value);
    180178    }
     
    192190     * @return string[] Trimmed header values
    193191     *
    194      * @see https://tools.ietf.org/html/rfc7230#section-3.2.4
     192     * @see https://datatracker.ietf.org/doc/html/rfc7230#section-3.2.4
    195193     */
    196194    private function trimAndValidateHeaderValues(array $values): array
     
    212210
    213211    /**
    214      * @see https://tools.ietf.org/html/rfc7230#section-3.2
     212     * @see https://datatracker.ietf.org/doc/html/rfc7230#section-3.2
    215213     *
    216214     * @param mixed $header
     
    225223        }
    226224
    227         if (! preg_match('/^[a-zA-Z0-9\'`#$%&*+.^_|~!-]+$/D', $header)) {
     225        if (!preg_match('/^[a-zA-Z0-9\'`#$%&*+.^_|~!-]+$/D', $header)) {
    228226            throw new \InvalidArgumentException(
    229227                sprintf('"%s" is not valid header name.', $header)
     
    233231
    234232    /**
    235      * @see https://tools.ietf.org/html/rfc7230#section-3.2
     233     * @see https://datatracker.ietf.org/doc/html/rfc7230#section-3.2
    236234     *
    237235     * field-value    = *( field-content / obs-fold )
     
    255253        // likely very rare. Line folding is a fairly obscure feature of HTTP/1.1 and thus not accepting
    256254        // folding is not likely to break any legitimate use case.
    257         if (! preg_match('/^[\x20\x09\x21-\x7E\x80-\xFF]*$/D', $value)) {
     255        if (!preg_match('/^[\x20\x09\x21-\x7E\x80-\xFF]*$/D', $value)) {
    258256            throw new \InvalidArgumentException(
    259257                sprintf('"%s" is not valid header value.', $value)
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Psr7/MimeType.php

    r2872625 r3427970  
    1919        '123' => 'application/vnd.lotus-1-2-3',
    2020        'aab' => 'application/x-authorware-bin',
    21         'aac' => 'audio/x-acc',
     21        'aac' => 'audio/aac',
    2222        'aam' => 'application/x-authorware-map',
    2323        'aas' => 'application/x-authorware-seg',
     
    3030        'acutc' => 'application/vnd.acucorp',
    3131        'adp' => 'audio/adpcm',
     32        'adts' => 'audio/aac',
    3233        'aep' => 'application/vnd.audiograph',
    3334        'afm' => 'application/x-font-type1',
     
    4243        'ait' => 'application/vnd.dvb.ait',
    4344        'ami' => 'application/vnd.amiga.ami',
     45        'aml' => 'application/automationml-aml+xml',
     46        'amlx' => 'application/automationml-amlx+zip',
    4447        'amr' => 'audio/amr',
    4548        'apk' => 'application/vnd.android.package-archive',
    4649        'apng' => 'image/apng',
    4750        'appcache' => 'text/cache-manifest',
     51        'appinstaller' => 'application/appinstaller',
    4852        'application' => 'application/x-ms-application',
     53        'appx' => 'application/appx',
     54        'appxbundle' => 'application/appxbundle',
    4955        'apr' => 'application/vnd.lotus-approach',
    5056        'arc' => 'application/x-freearc',
     
    9197        'bpmn' => 'application/octet-stream',
    9298        'bsp' => 'model/vnd.valve.source.compiled-map',
     99        'btf' => 'image/prs.btif',
    93100        'btif' => 'image/prs.btif',
    94101        'buffer' => 'application/octet-stream',
     
    142149        'cla' => 'application/vnd.claymore',
    143150        'class' => 'application/octet-stream',
     151        'cld' => 'model/vnd.cld',
    144152        'clkk' => 'application/vnd.crick.clicker.keyboard',
    145153        'clkp' => 'application/vnd.crick.clicker.palette',
     
    176184        'cu' => 'application/cu-seeme',
    177185        'curl' => 'text/vnd.curl',
     186        'cwl' => 'application/cwl',
    178187        'cww' => 'application/prs.cww',
    179188        'cxt' => 'application/x-director',
     
    198207        'dfac' => 'application/vnd.dreamfactory',
    199208        'dgc' => 'application/x-dgc-compressed',
     209        'dib' => 'image/bmp',
    200210        'dic' => 'text/x-c',
    201211        'dir' => 'application/x-director',
     
    220230        'dp' => 'application/vnd.osgi.dp',
    221231        'dpg' => 'application/vnd.dpgraph',
     232        'dpx' => 'image/dpx',
    222233        'dra' => 'audio/vnd.dra',
    223234        'drle' => 'image/dicom-rle',
     
    256267        'eps' => 'application/postscript',
    257268        'epub' => 'application/epub+zip',
    258         'es' => 'application/ecmascript',
    259269        'es3' => 'application/vnd.eszigno3+xml',
    260270        'esa' => 'application/vnd.osgi.subsystem',
     
    449459        'jsonml' => 'application/jsonml+json',
    450460        'jsx' => 'text/jsx',
     461        'jt' => 'model/jt',
    451462        'jxr' => 'image/jxr',
    452463        'jxra' => 'image/jxra',
     
    553564        'mj2' => 'video/mj2',
    554565        'mjp2' => 'video/mj2',
    555         'mjs' => 'application/javascript',
     566        'mjs' => 'text/javascript',
    556567        'mk3d' => 'video/x-matroska',
    557568        'mka' => 'audio/x-matroska',
     
    603614        'msh' => 'model/mesh',
    604615        'msi' => 'application/x-msdownload',
     616        'msix' => 'application/msix',
     617        'msixbundle' => 'application/msixbundle',
    605618        'msl' => 'application/vnd.mobius.msl',
    606619        'msm' => 'application/octet-stream',
     
    776789        'pwn' => 'application/vnd.3m.post-it-notes',
    777790        'pya' => 'audio/vnd.ms-playready.media.pya',
     791        'pyo' => 'model/vnd.pytha.pyox',
     792        'pyox' => 'model/vnd.pytha.pyox',
    778793        'pyv' => 'video/vnd.ms-playready.media.pyv',
    779794        'qam' => 'application/vnd.epson.quickanime',
     
    924939        'stc' => 'application/vnd.sun.xml.calc.template',
    925940        'std' => 'application/vnd.sun.xml.draw.template',
     941        'step' => 'application/STEP',
    926942        'stf' => 'application/vnd.wt.stf',
    927943        'sti' => 'application/vnd.sun.xml.impress.template',
    928944        'stk' => 'application/hyperstudio',
    929945        'stl' => 'model/stl',
     946        'stp' => 'application/STEP',
    930947        'stpx' => 'model/step+xml',
    931948        'stpxz' => 'model/step-xml+zip',
     
    10141031        'umj' => 'application/vnd.umajin',
    10151032        'unityweb' => 'application/vnd.unity',
     1033        'uo' => 'application/vnd.uoml+xml',
    10161034        'uoml' => 'application/vnd.uoml+xml',
    10171035        'uri' => 'text/uri-list',
    10181036        'uris' => 'text/uri-list',
    10191037        'urls' => 'text/uri-list',
     1038        'usda' => 'model/vnd.usda',
    10201039        'usdz' => 'model/vnd.usdz+zip',
    10211040        'ustar' => 'application/x-ustar',
     
    10971116        'webp' => 'image/webp',
    10981117        'wg' => 'application/vnd.pmi.widget',
     1118        'wgsl' => 'text/wgsl',
    10991119        'wgt' => 'application/widget',
    11001120        'wif' => 'application/watcherinfo+xml',
     
    11511171        'xenc' => 'application/xenc+xml',
    11521172        'xer' => 'application/patch-ops-error+xml',
    1153         'xfdf' => 'application/vnd.adobe.xfdf',
     1173        'xfdf' => 'application/xfdf',
    11541174        'xfdl' => 'application/vnd.xfdl',
    11551175        'xht' => 'application/xhtml+xml',
     1176        'xhtm' => 'application/vnd.pwg-xhtml-print+xml',
    11561177        'xhtml' => 'application/xhtml+xml',
    11571178        'xhvml' => 'application/xv+xml',
     
    11841205        'xpx' => 'application/vnd.intercon.formnet',
    11851206        'xsd' => 'application/xml',
     1207        'xsf' => 'application/prs.xsf+xml',
    11861208        'xsl' => 'application/xml',
    11871209        'xslt' => 'application/xslt+xml',
     
    12191241     * Determines the mimetype of a file by looking at its extension.
    12201242     *
    1221      * @link https://raw.githubusercontent.com/jshttp/mime-db/master/db.json
     1243     * @see https://raw.githubusercontent.com/jshttp/mime-db/master/db.json
    12221244     */
    12231245    public static function fromFilename(string $filename): ?string
     
    12291251     * Maps a file extensions to a mimetype.
    12301252     *
    1231      * @link https://raw.githubusercontent.com/jshttp/mime-db/master/db.json
     1253     * @see https://raw.githubusercontent.com/jshttp/mime-db/master/db.json
    12321254     */
    12331255    public static function fromExtension(string $extension): ?string
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Psr7/MultipartStream.php

    r2872625 r3427970  
    3333     * @throws \InvalidArgumentException
    3434     */
    35     public function __construct(array $elements = [], string $boundary = null)
     35    public function __construct(array $elements = [], ?string $boundary = null)
    3636    {
    3737        $this->boundary = $boundary ?: bin2hex(random_bytes(20));
     
    5252     * Get the headers needed before transferring the content of a POST file
    5353     *
    54      * @param array<string, string> $headers
     54     * @param string[] $headers
    5555     */
    5656    private function getHeaders(array $headers): string
     
    6161        }
    6262
    63         return "--{$this->boundary}\r\n" . trim($str) . "\r\n\r\n";
     63        return "--{$this->boundary}\r\n".trim($str)."\r\n\r\n";
    6464    }
    6565
     
    7373        foreach ($elements as $element) {
    7474            if (!is_array($element)) {
    75                 throw new \UnexpectedValueException("An array is expected");
     75                throw new \UnexpectedValueException('An array is expected');
    7676            }
    7777            $this->addElement($stream, $element);
     
    113113    }
    114114
     115    /**
     116     * @param string[] $headers
     117     *
     118     * @return array{0: StreamInterface, 1: string[]}
     119     */
    115120    private function createElement(string $name, StreamInterface $stream, ?string $filename, array $headers): array
    116121    {
    117122        // Set a default content-disposition header if one was no provided
    118         $disposition = $this->getHeader($headers, 'content-disposition');
     123        $disposition = self::getHeader($headers, 'content-disposition');
    119124        if (!$disposition) {
    120125            $headers['Content-Disposition'] = ($filename === '0' || $filename)
     
    128133
    129134        // Set a default content-length header if one was no provided
    130         $length = $this->getHeader($headers, 'content-length');
     135        $length = self::getHeader($headers, 'content-length');
    131136        if (!$length) {
    132137            if ($length = $stream->getSize()) {
     
    136141
    137142        // Set a default Content-Type if one was not supplied
    138         $type = $this->getHeader($headers, 'content-type');
     143        $type = self::getHeader($headers, 'content-type');
    139144        if (!$type && ($filename === '0' || $filename)) {
    140             if ($type = MimeType::fromFilename($filename)) {
    141                 $headers['Content-Type'] = $type;
    142             }
     145            $headers['Content-Type'] = MimeType::fromFilename($filename) ?? 'application/octet-stream';
    143146        }
    144147
     
    146149    }
    147150
    148     private function getHeader(array $headers, string $key)
     151    /**
     152     * @param string[] $headers
     153     */
     154    private static function getHeader(array $headers, string $key): ?string
    149155    {
    150156        $lowercaseHeader = strtolower($key);
    151157        foreach ($headers as $k => $v) {
    152             if (strtolower($k) === $lowercaseHeader) {
     158            if (strtolower((string) $k) === $lowercaseHeader) {
    153159                return $v;
    154160            }
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Psr7/PumpStream.php

    r2872625 r3427970  
    1919final class PumpStream implements StreamInterface
    2020{
    21     /** @var callable|null */
     21    /** @var callable(int): (string|false|null)|null */
    2222    private $source;
    2323
     
    3535
    3636    /**
    37      * @param callable(int): (string|null|false)  $source  Source of the stream data. The callable MAY
     37     * @param callable(int): (string|false|null)  $source  Source of the stream data. The callable MAY
    3838     *                                                     accept an integer argument used to control the
    3939     *                                                     amount of data to return. The callable MUST
     
    6161            }
    6262            trigger_error(sprintf('%s::__toString exception: %s', self::class, (string) $e), E_USER_ERROR);
     63
    6364            return '';
    6465        }
     
    150151
    151152    /**
    152      * {@inheritdoc}
    153      *
    154153     * @return mixed
    155154     */
     
    165164    private function pump(int $length): void
    166165    {
    167         if ($this->source) {
     166        if ($this->source !== null) {
    168167            do {
    169                 $data = call_user_func($this->source, $length);
     168                $data = ($this->source)($length);
    170169                if ($data === false || $data === null) {
    171170                    $this->source = null;
     171
    172172                    return;
    173173                }
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Psr7/Query.php

    r2872625 r3427970  
    6464     * encountered (like `http_build_query()` would).
    6565     *
    66      * @param array     $params   Query string parameters.
    67      * @param int|false $encoding Set to false to not encode, PHP_QUERY_RFC3986
    68      *                            to encode using RFC3986, or PHP_QUERY_RFC1738
    69      *                            to encode using RFC1738.
     66     * @param array     $params           Query string parameters.
     67     * @param int|false $encoding         Set to false to not encode,
     68     *                                    PHP_QUERY_RFC3986 to encode using
     69     *                                    RFC3986, or PHP_QUERY_RFC1738 to
     70     *                                    encode using RFC1738.
     71     * @param bool      $treatBoolsAsInts Set to true to encode as 0/1, and
     72     *                                    false as false/true.
    7073     */
    71     public static function build(array $params, $encoding = PHP_QUERY_RFC3986): string
     74    public static function build(array $params, $encoding = PHP_QUERY_RFC3986, bool $treatBoolsAsInts = true): string
    7275    {
    7376        if (!$params) {
     
    8790        }
    8891
     92        $castBool = $treatBoolsAsInts ? static function ($v) { return (int) $v; } : static function ($v) { return $v ? 'true' : 'false'; };
     93
    8994        $qs = '';
    9095        foreach ($params as $k => $v) {
     
    9297            if (!is_array($v)) {
    9398                $qs .= $k;
    94                 $v = is_bool($v) ? (int) $v : $v;
     99                $v = is_bool($v) ? $castBool($v) : $v;
    95100                if ($v !== null) {
    96                     $qs .= '=' . $encoder((string) $v);
     101                    $qs .= '='.$encoder((string) $v);
    97102                }
    98103                $qs .= '&';
     
    100105                foreach ($v as $vv) {
    101106                    $qs .= $k;
    102                     $vv = is_bool($vv) ? (int) $vv : $vv;
     107                    $vv = is_bool($vv) ? $castBool($vv) : $vv;
    103108                    if ($vv !== null) {
    104                         $qs .= '=' . $encoder((string) $vv);
     109                        $qs .= '='.$encoder((string) $vv);
    105110                    }
    106111                    $qs .= '&';
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Psr7/Request.php

    r2872625 r3427970  
    2929     * @param string                               $method  HTTP method
    3030     * @param string|UriInterface                  $uri     URI
    31      * @param array<string, string|string[]>       $headers Request headers
     31     * @param (string|string[])[]                  $headers Request headers
    3232     * @param string|resource|StreamInterface|null $body    Request body
    3333     * @param string                               $version Protocol version
     
    7070        }
    7171        if ($this->uri->getQuery() != '') {
    72             $target .= '?' . $this->uri->getQuery();
     72            $target .= '?'.$this->uri->getQuery();
    7373        }
    7474
     
    8686        $new = clone $this;
    8787        $new->requestTarget = $requestTarget;
     88
    8889        return $new;
    8990    }
     
    99100        $new = clone $this;
    100101        $new->method = strtoupper($method);
     102
    101103        return $new;
    102104    }
     
    132134
    133135        if (($port = $this->uri->getPort()) !== null) {
    134             $host .= ':' . $port;
     136            $host .= ':'.$port;
    135137        }
    136138
     
    142144        }
    143145        // Ensure Host is the first header.
    144         // See: http://tools.ietf.org/html/rfc7230#section-5.4
     146        // See: https://datatracker.ietf.org/doc/html/rfc7230#section-5.4
    145147        $this->headers = [$header => [$host]] + $this->headers;
    146148    }
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Psr7/Response.php

    r2872625 r3427970  
    8787    /**
    8888     * @param int                                  $status  Status code
    89      * @param array<string, string|string[]>       $headers Response headers
     89     * @param (string|string[])[]                  $headers Response headers
    9090     * @param string|resource|StreamInterface|null $body    Response body
    9191     * @param string                               $version Protocol version
     
    9797        $body = null,
    9898        string $version = '1.1',
    99         string $reason = null
     99        ?string $reason = null
    100100    ) {
    101101        $this->assertStatusCodeRange($status);
     
    139139        }
    140140        $new->reasonPhrase = (string) $reasonPhrase;
     141
    141142        return $new;
    142143    }
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Psr7/Rfc7230.php

    r2872625 r3427970  
    1515     * Note: header delimiter (\r\n) is modified to \r?\n to accept line feed only delimiters for BC reasons.
    1616     *
    17      * @link    https://github.com/amphp/http/blob/v1.0.1/src/Rfc7230.php#L12-L15
     17     * @see https://github.com/amphp/http/blob/v1.0.1/src/Rfc7230.php#L12-L15
    1818     *
    1919     * @license https://github.com/amphp/http/blob/v1.0.1/LICENSE
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Psr7/ServerRequest.php

    r2924444 r3427970  
    6060     * @param string                               $method       HTTP method
    6161     * @param string|UriInterface                  $uri          URI
    62      * @param array<string, string|string[]>       $headers      Request headers
     62     * @param (string|string[])[]                  $headers      Request headers
    6363     * @param string|resource|StreamInterface|null $body         Request body
    6464     * @param string                               $version      Protocol version
     
    145145            $spec = [
    146146                'tmp_name' => $files['tmp_name'][$key],
    147                 'size'     => $files['size'][$key] ?? null,
    148                 'error'    => $files['error'][$key] ?? null,
    149                 'name'     => $files['name'][$key] ?? null,
    150                 'type'     => $files['type'][$key] ?? null,
     147                'size' => $files['size'][$key] ?? null,
     148                'error' => $files['error'][$key] ?? null,
     149                'name' => $files['name'][$key] ?? null,
     150                'type' => $files['type'][$key] ?? null,
    151151            ];
    152152            $normalizedFiles[$key] = self::createUploadedFileFromSpec($spec);
     
    183183    private static function extractHostAndPortFromAuthority(string $authority): array
    184184    {
    185         $uri = 'http://' . $authority;
     185        $uri = 'http://'.$authority;
    186186        $parts = parse_url($uri);
    187187        if (false === $parts) {
     
    287287
    288288    /**
    289      * {@inheritdoc}
    290      *
    291289     * @return array|object|null
    292290     */
     
    310308
    311309    /**
    312      * {@inheritdoc}
    313      *
    314310     * @return mixed
    315311     */
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Psr7/Stream.php

    r2872625 r3427970  
    1313{
    1414    /**
    15      * @see http://php.net/manual/function.fopen.php
    16      * @see http://php.net/manual/en/function.gzopen.php
     15     * @see https://www.php.net/manual/en/function.fopen.php
     16     * @see https://www.php.net/manual/en/function.gzopen.php
    1717     */
    1818    private const READABLE_MODES = '/r|a\+|ab\+|w\+|wb\+|x\+|xb\+|c\+|cb\+/';
     
    6262        $meta = stream_get_meta_data($this->stream);
    6363        $this->seekable = $meta['seekable'];
    64         $this->readable = (bool)preg_match(self::READABLE_MODES, $meta['mode']);
    65         $this->writable = (bool)preg_match(self::WRITABLE_MODES, $meta['mode']);
     64        $this->readable = (bool) preg_match(self::READABLE_MODES, $meta['mode']);
     65        $this->writable = (bool) preg_match(self::WRITABLE_MODES, $meta['mode']);
    6666        $this->uri = $this->getMetadata('uri');
    6767    }
     
    8181                $this->seek(0);
    8282            }
     83
    8384            return $this->getContents();
    8485        } catch (\Throwable $e) {
     
    8788            }
    8889            trigger_error(sprintf('%s::__toString exception: %s', self::class, (string) $e), E_USER_ERROR);
     90
    8991            return '';
    9092        }
     
    146148        if (is_array($stats) && isset($stats['size'])) {
    147149            $this->size = $stats['size'];
     150
    148151            return $this->size;
    149152        }
     
    208211        if (fseek($this->stream, $offset, $whence) === -1) {
    209212            throw new \RuntimeException('Unable to seek to stream position '
    210                 . $offset . ' with whence ' . var_export($whence, true));
     213                .$offset.' with whence '.var_export($whence, true));
    211214        }
    212215    }
     
    262265
    263266    /**
    264      * {@inheritdoc}
    265      *
    266267     * @return mixed
    267268     */
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Psr7/StreamDecoratorTrait.php

    r2872625 r3427970  
    3232        if ($name === 'stream') {
    3333            $this->stream = $this->createStream();
     34
    3435            return $this->stream;
    3536        }
     
    4445                $this->seek(0);
    4546            }
     47
    4648            return $this->getContents();
    4749        } catch (\Throwable $e) {
     
    5052            }
    5153            trigger_error(sprintf('%s::__toString exception: %s', self::class, (string) $e), E_USER_ERROR);
     54
    5255            return '';
    5356        }
     
    6871        /** @var callable $callable */
    6972        $callable = [$this->stream, $method];
    70         $result = call_user_func_array($callable, $args);
     73        $result = ($callable)(...$args);
    7174
    7275        // Always return the wrapped object if the result is a return $this
     
    8083
    8184    /**
    82      * {@inheritdoc}
    83      *
    8485     * @return mixed
    8586     */
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Psr7/StreamWrapper.php

    r2872625 r3427970  
    4242        } else {
    4343            throw new \InvalidArgumentException('The stream must be readable, '
    44                 . 'writable, or both.');
     44                .'writable, or both.');
    4545        }
    4646
     
    5656    {
    5757        return stream_context_create([
    58             'guzzle' => ['stream' => $stream]
     58            'guzzle' => ['stream' => $stream],
    5959        ]);
    6060    }
     
    7070    }
    7171
    72     public function stream_open(string $path, string $mode, int $options, string &$opened_path = null): bool
     72    public function stream_open(string $path, string $mode, int $options, ?string &$opened_path = null): bool
    7373    {
    7474        $options = stream_context_get_options($this->context);
     
    116116    public function stream_cast(int $cast_as)
    117117    {
    118         $stream = clone($this->stream);
     118        $stream = clone $this->stream;
    119119        $resource = $stream->detach();
    120120
     
    123123
    124124    /**
    125      * @return array<int|string, int>
    126      */
    127     public function stream_stat(): array
    128     {
     125     * @return array{
     126     *   dev: int,
     127     *   ino: int,
     128     *   mode: int,
     129     *   nlink: int,
     130     *   uid: int,
     131     *   gid: int,
     132     *   rdev: int,
     133     *   size: int,
     134     *   atime: int,
     135     *   mtime: int,
     136     *   ctime: int,
     137     *   blksize: int,
     138     *   blocks: int
     139     * }|false
     140     */
     141    public function stream_stat()
     142    {
     143        if ($this->stream->getSize() === null) {
     144            return false;
     145        }
     146
    129147        static $modeMap = [
    130             'r'  => 33060,
     148            'r' => 33060,
    131149            'rb' => 33060,
    132150            'r+' => 33206,
    133             'w'  => 33188,
    134             'wb' => 33188
     151            'w' => 33188,
     152            'wb' => 33188,
    135153        ];
    136154
    137155        return [
    138             'dev'     => 0,
    139             'ino'     => 0,
    140             'mode'    => $modeMap[$this->mode],
    141             'nlink'   => 0,
    142             'uid'     => 0,
    143             'gid'     => 0,
    144             'rdev'    => 0,
    145             'size'    => $this->stream->getSize() ?: 0,
    146             'atime'   => 0,
    147             'mtime'   => 0,
    148             'ctime'   => 0,
     156            'dev' => 0,
     157            'ino' => 0,
     158            'mode' => $modeMap[$this->mode],
     159            'nlink' => 0,
     160            'uid' => 0,
     161            'gid' => 0,
     162            'rdev' => 0,
     163            'size' => $this->stream->getSize() ?: 0,
     164            'atime' => 0,
     165            'mtime' => 0,
     166            'ctime' => 0,
    149167            'blksize' => 0,
    150             'blocks'  => 0
     168            'blocks' => 0,
    151169        ];
    152170    }
    153171
    154172    /**
    155      * @return array<int|string, int>
     173     * @return array{
     174     *   dev: int,
     175     *   ino: int,
     176     *   mode: int,
     177     *   nlink: int,
     178     *   uid: int,
     179     *   gid: int,
     180     *   rdev: int,
     181     *   size: int,
     182     *   atime: int,
     183     *   mtime: int,
     184     *   ctime: int,
     185     *   blksize: int,
     186     *   blocks: int
     187     * }
    156188     */
    157189    public function url_stat(string $path, int $flags): array
    158190    {
    159191        return [
    160             'dev'     => 0,
    161             'ino'     => 0,
    162             'mode'    => 0,
    163             'nlink'   => 0,
    164             'uid'     => 0,
    165             'gid'     => 0,
    166             'rdev'    => 0,
    167             'size'    => 0,
    168             'atime'   => 0,
    169             'mtime'   => 0,
    170             'ctime'   => 0,
     192            'dev' => 0,
     193            'ino' => 0,
     194            'mode' => 0,
     195            'nlink' => 0,
     196            'uid' => 0,
     197            'gid' => 0,
     198            'rdev' => 0,
     199            'size' => 0,
     200            'atime' => 0,
     201            'mtime' => 0,
     202            'ctime' => 0,
    171203            'blksize' => 0,
    172             'blocks'  => 0
     204            'blocks' => 0,
    173205        ];
    174206    }
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Psr7/UploadedFile.php

    r2872625 r3427970  
    1212class UploadedFile implements UploadedFileInterface
    1313{
    14     private const ERRORS = [
    15         UPLOAD_ERR_OK,
    16         UPLOAD_ERR_INI_SIZE,
    17         UPLOAD_ERR_FORM_SIZE,
    18         UPLOAD_ERR_PARTIAL,
    19         UPLOAD_ERR_NO_FILE,
    20         UPLOAD_ERR_NO_TMP_DIR,
    21         UPLOAD_ERR_CANT_WRITE,
    22         UPLOAD_ERR_EXTENSION,
     14    private const ERROR_MAP = [
     15        UPLOAD_ERR_OK => 'UPLOAD_ERR_OK',
     16        UPLOAD_ERR_INI_SIZE => 'UPLOAD_ERR_INI_SIZE',
     17        UPLOAD_ERR_FORM_SIZE => 'UPLOAD_ERR_FORM_SIZE',
     18        UPLOAD_ERR_PARTIAL => 'UPLOAD_ERR_PARTIAL',
     19        UPLOAD_ERR_NO_FILE => 'UPLOAD_ERR_NO_FILE',
     20        UPLOAD_ERR_NO_TMP_DIR => 'UPLOAD_ERR_NO_TMP_DIR',
     21        UPLOAD_ERR_CANT_WRITE => 'UPLOAD_ERR_CANT_WRITE',
     22        UPLOAD_ERR_EXTENSION => 'UPLOAD_ERR_EXTENSION',
    2323    ];
    2424
     
    6565        ?int $size,
    6666        int $errorStatus,
    67         string $clientFilename = null,
    68         string $clientMediaType = null
     67        ?string $clientFilename = null,
     68        ?string $clientMediaType = null
    6969    ) {
    7070        $this->setError($errorStatus);
     
    105105    private function setError(int $error): void
    106106    {
    107         if (false === in_array($error, UploadedFile::ERRORS, true)) {
     107        if (!isset(UploadedFile::ERROR_MAP[$error])) {
    108108            throw new InvalidArgumentException(
    109109                'Invalid error status for UploadedFile'
     
    114114    }
    115115
    116     private function isStringNotEmpty($param): bool
     116    private static function isStringNotEmpty($param): bool
    117117    {
    118118        return is_string($param) && false === empty($param);
     
    138138    {
    139139        if (false === $this->isOk()) {
    140             throw new RuntimeException('Cannot retrieve stream due to upload error');
     140            throw new RuntimeException(\sprintf('Cannot retrieve stream due to upload error (%s)', self::ERROR_MAP[$this->error]));
    141141        }
    142142
     
    164164        $this->validateActive();
    165165
    166         if (false === $this->isStringNotEmpty($targetPath)) {
     166        if (false === self::isStringNotEmpty($targetPath)) {
    167167            throw new InvalidArgumentException(
    168168                'Invalid path provided for move operation; must be a non-empty string'
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Psr7/Uri.php

    r2872625 r3427970  
    2626
    2727    private const DEFAULT_PORTS = [
    28         'http'  => 80,
     28        'http' => 80,
    2929        'https' => 443,
    3030        'ftp' => 21,
     
    4242     * Unreserved characters for use in a regex.
    4343     *
    44      * @link https://tools.ietf.org/html/rfc3986#section-2.3
     44     * @see https://datatracker.ietf.org/doc/html/rfc3986#section-2.3
    4545     */
    4646    private const CHAR_UNRESERVED = 'a-zA-Z0-9_\-\.~';
     
    4949     * Sub-delims for use in a regex.
    5050     *
    51      * @link https://tools.ietf.org/html/rfc3986#section-2.2
     51     * @see https://datatracker.ietf.org/doc/html/rfc3986#section-2.2
    5252     */
    5353    private const CHAR_SUB_DELIMS = '!\$&\'\(\)\*\+,;=';
     
    8888        }
    8989    }
     90
    9091    /**
    9192     * UTF-8 aware \parse_url() replacement.
     
    107108        // If IPv6
    108109        $prefix = '';
    109         if (preg_match('%^(.*://\[[0-9:a-f]+\])(.*?)$%', $url, $matches)) {
     110        if (preg_match('%^(.*://\[[0-9:a-fA-F]+\])(.*?)$%', $url, $matches)) {
    110111            /** @var array{0:string, 1:string, 2:string} $matches */
    111112            $prefix = $matches[1];
     
    122123        );
    123124
    124         $result = parse_url($prefix . $encodedUrl);
     125        $result = parse_url($prefix.$encodedUrl);
    125126
    126127        if ($result === false) {
     
    162163     * that format).
    163164     *
    164      * @link https://tools.ietf.org/html/rfc3986#section-5.3
     165     * @see https://datatracker.ietf.org/doc/html/rfc3986#section-5.3
    165166     */
    166167    public static function composeComponents(?string $scheme, ?string $authority, string $path, ?string $query, ?string $fragment): string
     
    170171        // weak type checks to also accept null until we can add scalar type hints
    171172        if ($scheme != '') {
    172             $uri .= $scheme . ':';
     173            $uri .= $scheme.':';
    173174        }
    174175
    175176        if ($authority != '' || $scheme === 'file') {
    176             $uri .= '//' . $authority;
     177            $uri .= '//'.$authority;
    177178        }
    178179
    179180        if ($authority != '' && $path != '' && $path[0] != '/') {
    180             $path = '/' . $path;
     181            $path = '/'.$path;
    181182        }
    182183
     
    184185
    185186        if ($query != '') {
    186             $uri .= '?' . $query;
     187            $uri .= '?'.$query;
    187188        }
    188189
    189190        if ($fragment != '') {
    190             $uri .= '#' . $fragment;
     191            $uri .= '#'.$fragment;
    191192        }
    192193
     
    219220     * @see Uri::isAbsolutePathReference
    220221     * @see Uri::isRelativePathReference
    221      * @link https://tools.ietf.org/html/rfc3986#section-4
     222     * @see https://datatracker.ietf.org/doc/html/rfc3986#section-4
    222223     */
    223224    public static function isAbsolute(UriInterface $uri): bool
     
    231232     * A relative reference that begins with two slash characters is termed an network-path reference.
    232233     *
    233      * @link https://tools.ietf.org/html/rfc3986#section-4.2
     234     * @see https://datatracker.ietf.org/doc/html/rfc3986#section-4.2
    234235     */
    235236    public static function isNetworkPathReference(UriInterface $uri): bool
     
    243244     * A relative reference that begins with a single slash character is termed an absolute-path reference.
    244245     *
    245      * @link https://tools.ietf.org/html/rfc3986#section-4.2
     246     * @see https://datatracker.ietf.org/doc/html/rfc3986#section-4.2
    246247     */
    247248    public static function isAbsolutePathReference(UriInterface $uri): bool
     
    258259     * A relative reference that does not begin with a slash character is termed a relative-path reference.
    259260     *
    260      * @link https://tools.ietf.org/html/rfc3986#section-4.2
     261     * @see https://datatracker.ietf.org/doc/html/rfc3986#section-4.2
    261262     */
    262263    public static function isRelativePathReference(UriInterface $uri): bool
     
    277278     * @param UriInterface|null $base An optional base URI to compare against
    278279     *
    279      * @link https://tools.ietf.org/html/rfc3986#section-4.4
    280      */
    281     public static function isSameDocumentReference(UriInterface $uri, UriInterface $base = null): bool
     280     * @see https://datatracker.ietf.org/doc/html/rfc3986#section-4.4
     281     */
     282    public static function isSameDocumentReference(UriInterface $uri, ?UriInterface $base = null): bool
    282283    {
    283284        if ($base !== null) {
     
    336337     * It has the same behavior as withQueryValue() but for an associative array of key => value.
    337338     *
    338      * @param UriInterface               $uri           URI to use as a base.
    339      * @param array<string, string|null> $keyValueArray Associative array of key and values
     339     * @param UriInterface    $uri           URI to use as a base.
     340     * @param (string|null)[] $keyValueArray Associative array of key and values
    340341     */
    341342    public static function withQueryValues(UriInterface $uri, array $keyValueArray): UriInterface
     
    353354     * Creates a URI from a hash of `parse_url` components.
    354355     *
    355      * @link http://php.net/manual/en/function.parse-url.php
     356     * @see https://www.php.net/manual/en/function.parse-url.php
    356357     *
    357358     * @throws MalformedUriException If the components do not form a valid URI.
     
    375376        $authority = $this->host;
    376377        if ($this->userInfo !== '') {
    377             $authority = $this->userInfo . '@' . $authority;
     378            $authority = $this->userInfo.'@'.$authority;
    378379        }
    379380
    380381        if ($this->port !== null) {
    381             $authority .= ':' . $this->port;
     382            $authority .= ':'.$this->port;
    382383        }
    383384
     
    436437        $info = $this->filterUserInfoComponent($user);
    437438        if ($password !== null) {
    438             $info .= ':' . $this->filterUserInfoComponent($password);
     439            $info .= ':'.$this->filterUserInfoComponent($password);
    439440        }
    440441
     
    564565            : '';
    565566        if (isset($parts['pass'])) {
    566             $this->userInfo .= ':' . $this->filterUserInfoComponent($parts['pass']);
     567            $this->userInfo .= ':'.$this->filterUserInfoComponent($parts['pass']);
    567568        }
    568569
     
    596597
    597598        return preg_replace_callback(
    598             '/(?:[^%' . self::CHAR_UNRESERVED . self::CHAR_SUB_DELIMS . ']+|%(?![A-Fa-f0-9]{2}))/',
     599            '/(?:[^%'.self::CHAR_UNRESERVED.self::CHAR_SUB_DELIMS.']+|%(?![A-Fa-f0-9]{2}))/',
    599600            [$this, 'rawurlencodeMatchZero'],
    600601            $component
     
    628629
    629630        $port = (int) $port;
    630         if (0 > $port || 0xffff < $port) {
     631        if (0 > $port || 0xFFFF < $port) {
    631632            throw new \InvalidArgumentException(
    632633                sprintf('Invalid port: %d. Must be between 0 and 65535', $port)
     
    638639
    639640    /**
    640      * @param string[] $keys
     641     * @param (string|int)[] $keys
    641642     *
    642643     * @return string[]
     
    650651        }
    651652
    652         $decodedKeys = array_map('rawurldecode', $keys);
     653        $decodedKeys = array_map(function ($k): string {
     654            return rawurldecode((string) $k);
     655        }, $keys);
    653656
    654657        return array_filter(explode('&', $current), function ($part) use ($decodedKeys) {
     
    665668
    666669        if ($value !== null) {
    667             $queryString .= '=' . strtr($value, self::QUERY_SEPARATORS_REPLACEMENT);
     670            $queryString .= '='.strtr($value, self::QUERY_SEPARATORS_REPLACEMENT);
    668671        }
    669672
     
    692695
    693696        return preg_replace_callback(
    694             '/(?:[^' . self::CHAR_UNRESERVED . self::CHAR_SUB_DELIMS . '%:@\/]++|%(?![A-Fa-f0-9]{2}))/',
     697            '/(?:[^'.self::CHAR_UNRESERVED.self::CHAR_SUB_DELIMS.'%:@\/]++|%(?![A-Fa-f0-9]{2}))/',
    695698            [$this, 'rawurlencodeMatchZero'],
    696699            $path
     
    712715
    713716        return preg_replace_callback(
    714             '/(?:[^' . self::CHAR_UNRESERVED . self::CHAR_SUB_DELIMS . '%:@\/\?]++|%(?![A-Fa-f0-9]{2}))/',
     717            '/(?:[^'.self::CHAR_UNRESERVED.self::CHAR_SUB_DELIMS.'%:@\/\?]++|%(?![A-Fa-f0-9]{2}))/',
    715718            [$this, 'rawurlencodeMatchZero'],
    716719            $str
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Psr7/UriNormalizer.php

    r2872625 r3427970  
    1212 * @author Tobias Schultze
    1313 *
    14  * @link https://tools.ietf.org/html/rfc3986#section-6
     14 * @see https://datatracker.ietf.org/doc/html/rfc3986#section-6
    1515 */
    1616final class UriNormalizer
     
    120120     * @param int          $flags A bitmask of normalizations to apply, see constants
    121121     *
    122      * @link https://tools.ietf.org/html/rfc3986#section-6.2
     122     * @see https://datatracker.ietf.org/doc/html/rfc3986#section-6.2
    123123     */
    124124    public static function normalize(UriInterface $uri, int $flags = self::PRESERVING_NORMALIZATIONS): UriInterface
     
    132132        }
    133133
    134         if ($flags & self::CONVERT_EMPTY_PATH && $uri->getPath() === '' &&
    135             ($uri->getScheme() === 'http' || $uri->getScheme() === 'https')
     134        if ($flags & self::CONVERT_EMPTY_PATH && $uri->getPath() === ''
     135            && ($uri->getScheme() === 'http' || $uri->getScheme() === 'https')
    136136        ) {
    137137            $uri = $uri->withPath('/');
     
    175175     * @param int          $normalizations A bitmask of normalizations to apply, see constants
    176176     *
    177      * @link https://tools.ietf.org/html/rfc3986#section-6.1
     177     * @see https://datatracker.ietf.org/doc/html/rfc3986#section-6.1
    178178     */
    179179    public static function isEquivalent(UriInterface $uri1, UriInterface $uri2, int $normalizations = self::PRESERVING_NORMALIZATIONS): bool
     
    186186        $regex = '/(?:%[A-Fa-f0-9]{2})++/';
    187187
    188         $callback = function (array $match) {
     188        $callback = function (array $match): string {
    189189            return strtoupper($match[0]);
    190190        };
     
    202202        $regex = '/%(?:2D|2E|5F|7E|3[0-9]|[46][1-9A-F]|[57][0-9A])/i';
    203203
    204         $callback = function (array $match) {
     204        $callback = function (array $match): string {
    205205            return rawurldecode($match[0]);
    206206        };
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Psr7/UriResolver.php

    r2872625 r3427970  
    1212 * @author Tobias Schultze
    1313 *
    14  * @link https://tools.ietf.org/html/rfc3986#section-5
     14 * @see https://datatracker.ietf.org/doc/html/rfc3986#section-5
    1515 */
    1616final class UriResolver
     
    1919     * Removes dot segments from a path and returns the new path.
    2020     *
    21      * @link http://tools.ietf.org/html/rfc3986#section-5.2.4
     21     * @see https://datatracker.ietf.org/doc/html/rfc3986#section-5.2.4
    2222     */
    2323    public static function removeDotSegments(string $path): string
     
    4141        if ($path[0] === '/' && (!isset($newPath[0]) || $newPath[0] !== '/')) {
    4242            // Re-add the leading slash if necessary for cases like "/.."
    43             $newPath = '/' . $newPath;
     43            $newPath = '/'.$newPath;
    4444        } elseif ($newPath !== '' && ($segment === '.' || $segment === '..')) {
    4545            // Add the trailing slash if necessary
     
    5454     * Converts the relative URI into a new URI that is resolved against the base URI.
    5555     *
    56      * @link http://tools.ietf.org/html/rfc3986#section-5.2
     56     * @see https://datatracker.ietf.org/doc/html/rfc3986#section-5.2
    5757     */
    5858    public static function resolve(UriInterface $base, UriInterface $rel): UriInterface
     
    8181                } else {
    8282                    if ($targetAuthority != '' && $base->getPath() === '') {
    83                         $targetPath = '/' . $rel->getPath();
     83                        $targetPath = '/'.$rel->getPath();
    8484                    } else {
    8585                        $lastSlashPos = strrpos($base->getPath(), '/');
     
    8787                            $targetPath = $rel->getPath();
    8888                        } else {
    89                             $targetPath = substr($base->getPath(), 0, $lastSlashPos + 1) . $rel->getPath();
     89                            $targetPath = substr($base->getPath(), 0, $lastSlashPos + 1).$rel->getPath();
    9090                        }
    9191                    }
     
    128128    public static function relativize(UriInterface $base, UriInterface $target): UriInterface
    129129    {
    130         if ($target->getScheme() !== '' &&
    131             ($base->getScheme() !== $target->getScheme() || $target->getAuthority() === '' && $base->getAuthority() !== '')
     130        if ($target->getScheme() !== ''
     131            && ($base->getScheme() !== $target->getScheme() || $target->getAuthority() === '' && $base->getAuthority() !== '')
    132132        ) {
    133133            return $target;
     
    186186        }
    187187        $targetSegments[] = $targetLastSegment;
    188         $relativePath = str_repeat('../', count($sourceSegments)) . implode('/', $targetSegments);
     188        $relativePath = str_repeat('../', count($sourceSegments)).implode('/', $targetSegments);
    189189
    190190        // A reference to am empty last segment or an empty first sub-segment must be prefixed with "./".
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Psr7/Utils.php

    r2872625 r3427970  
    1515     * Remove the items given by the keys, case insensitively from the data.
    1616     *
    17      * @param string[] $keys
     17     * @param (string|int)[] $keys
    1818     */
    1919    public static function caselessRemove(array $keys, array $data): array
     
    2222
    2323        foreach ($keys as &$key) {
    24             $key = strtolower($key);
     24            $key = strtolower((string) $key);
    2525        }
    2626
    2727        foreach ($data as $k => $v) {
    28             if (!is_string($k) || !in_array(strtolower($k), $keys)) {
     28            if (!in_array(strtolower((string) $k), $keys)) {
    2929                $result[$k] = $v;
    3030            }
     
    9191                $buffer .= $buf;
    9292            }
     93
    9394            return $buffer;
    9495        }
     
    175176                    $scheme = $changes['uri']->getScheme();
    176177                    if (isset($standardPorts[$scheme]) && $port != $standardPorts[$scheme]) {
    177                         $changes['set_headers']['Host'] .= ':' . $port;
     178                        $changes['set_headers']['Host'] .= ':'.$port;
    178179                    }
    179180                }
     
    248249
    249250        return $buffer;
     251    }
     252
     253    /**
     254     * Redact the password in the user info part of a URI.
     255     */
     256    public static function redactUserInfo(UriInterface $uri): UriInterface
     257    {
     258        $userInfo = $uri->getUserInfo();
     259
     260        if (false !== ($pos = \strpos($userInfo, ':'))) {
     261            return $uri->withUserInfo(\substr($userInfo, 0, $pos), '***');
     262        }
     263
     264        return $uri;
    250265    }
    251266
     
    292307                fseek($stream, 0);
    293308            }
     309
    294310            return new Stream($stream, $options);
    295311        }
     
    309325                    $resource = $stream;
    310326                }
     327
    311328                return new Stream($resource, $options);
    312329            case 'object':
     
    321338                        $result = $resource->current();
    322339                        $resource->next();
     340
    323341                        return $result;
    324342                    }, $options);
     
    335353        }
    336354
    337         throw new \InvalidArgumentException('Invalid resource type: ' . gettype($resource));
     355        throw new \InvalidArgumentException('Invalid resource type: '.gettype($resource));
    338356    }
    339357
     
    380398
    381399        if ($ex) {
    382             /** @var $ex \RuntimeException */
     400            /** @var \RuntimeException $ex */
    383401            throw $ex;
    384402        }
     
    427445
    428446        if ($ex) {
    429             /** @var $ex \RuntimeException */
     447            /** @var \RuntimeException $ex */
    430448            throw $ex;
    431449        }
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/RedirectMiddleware.php

    r2924444 r3427970  
    167167        // would do.
    168168        $statusCode = $response->getStatusCode();
    169         if ($statusCode == 303 ||
    170             ($statusCode <= 302 && !$options['allow_redirects']['strict'])
     169        if ($statusCode == 303
     170            || ($statusCode <= 302 && !$options['allow_redirects']['strict'])
    171171        ) {
    172172            $safeMethods = ['GET', 'HEAD', 'OPTIONS'];
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/RequestOptions.php

    r2924444 r3427970  
    66 * This class contains a list of built-in Guzzle request options.
    77 *
    8  * More documentation for each option can be found at http://guzzlephp.org/.
    9  *
    10  * @see http://docs.guzzlephp.org/en/v6/request-options.html
     8 * @see https://docs.guzzlephp.org/en/latest/request-options.html
    119 */
    1210final class RequestOptions
     
    6462     * jar to use or what cookies to send. This option only works if your
    6563     * handler has the `cookie` middleware. Valid values are `false` and
    66      * an instance of {@see \Rich4rdMuvirimi\ForceReinstall\Vendor\GuzzleHttp\Cookie\CookieJarInterface}.
     64     * an instance of {@see Cookie\CookieJarInterface}.
    6765     */
    6866    public const COOKIES = 'cookies';
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/RetryMiddleware.php

    r2924444 r3427970  
    4141     *                                                                         milliseconds to delay.
    4242     */
    43     public function __construct(callable $decider, callable $nextHandler, callable $delay = null)
     43    public function __construct(callable $decider, callable $nextHandler, ?callable $delay = null)
    4444    {
    4545        $this->decider = $decider;
     
    111111    }
    112112
    113     private function doRetry(RequestInterface $request, array $options, ResponseInterface $response = null): PromiseInterface
     113    private function doRetry(RequestInterface $request, array $options, ?ResponseInterface $response = null): PromiseInterface
    114114    {
    115115        $options['delay'] = ($this->delay)(++$options['retries'], $response, $request);
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/Utils.php

    r2924444 r3427970  
    7272        }
    7373
    74         return \Rich4rdMuvirimi\ForceReinstall\Vendor\GuzzleHttp\Psr7\Utils::tryFopen('php://output', 'w');
     74        return Psr7\Utils::tryFopen('php://output', 'w');
    7575    }
    7676
     
    8080     * The returned handler is not wrapped by any default middlewares.
    8181     *
    82      * @return callable(\Rich4rdMuvirimi\ForceReinstall\Vendor\Psr\Http\Message\RequestInterface, array): \Rich4rdMuvirimi\ForceReinstall\Vendor\GuzzleHttp\Promise\PromiseInterface Returns the best handler for the given system.
     82     * @return callable(\Rich4rdMuvirimi\ForceReinstall\Vendor\Psr\Http\Message\RequestInterface, array): Promise\PromiseInterface Returns the best handler for the given system.
    8383     *
    8484     * @throws \RuntimeException if no viable Handler is available.
     
    8888        $handler = null;
    8989
    90         if (\defined('CURLOPT_CUSTOMREQUEST')) {
     90        if (\defined('CURLOPT_CUSTOMREQUEST') && \function_exists('curl_version') && version_compare(curl_version()['version'], '7.21.2') >= 0) {
    9191            if (\function_exists('curl_multi_exec') && \function_exists('curl_exec')) {
    9292                $handler = Proxy::wrapSync(new CurlMultiHandler(), new CurlHandler());
     
    177177CA bundle by default. In order to verify peer certificates, you will need to
    178178supply the path on disk to a certificate bundle to the 'verify' request
    179 option: http://docs.guzzlephp.org/en/latest/clients.html#verify. If you do not
    180 need a specific certificate bundle, then Mozilla provides a commonly used CA
    181 bundle which can be downloaded here (provided by the maintainer of cURL):
    182 https://curl.haxx.se/ca/cacert.pem. Once
    183 you have a CA bundle available on disk, you can set the 'openssl.cafile' PHP
    184 ini setting to point to the path to the file, allowing you to omit the 'verify'
    185 request option. See https://curl.haxx.se/docs/sslcerts.html for more
    186 information.
     179option: https://docs.guzzlephp.org/en/latest/request-options.html#verify. If
     180you do not need a specific certificate bundle, then Mozilla provides a commonly
     181used CA bundle which can be downloaded here (provided by the maintainer of
     182cURL): https://curl.haxx.se/ca/cacert.pem. Once you have a CA bundle available
     183on disk, you can set the 'openssl.cafile' PHP ini setting to point to the path
     184to the file, allowing you to omit the 'verify' request option. See
     185https://curl.haxx.se/docs/sslcerts.html for more information.
    187186EOT
    188187        );
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/GuzzleHttp/functions.php

    r2924444 r3427970  
    5151 * The returned handler is not wrapped by any default middlewares.
    5252 *
    53  * @return callable(\Rich4rdMuvirimi\ForceReinstall\Vendor\Psr\Http\Message\RequestInterface, array): \Rich4rdMuvirimi\ForceReinstall\Vendor\GuzzleHttp\Promise\PromiseInterface Returns the best handler for the given system.
     53 * @return callable(\Rich4rdMuvirimi\ForceReinstall\Vendor\Psr\Http\Message\RequestInterface, array): Promise\PromiseInterface Returns the best handler for the given system.
    5454 *
    5555 * @throws \RuntimeException if no viable Handler is available.
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/Psr/Http/Message/UploadedFileFactoryInterface.php

    r2872625 r3427970  
    1616     * @param StreamInterface $stream Underlying stream representing the
    1717     *     uploaded file content.
    18      * @param int $size in bytes
     18     * @param int|null $size in bytes
    1919     * @param int $error PHP file upload error
    20      * @param string $clientFilename Filename as provided by the client, if any.
    21      * @param string $clientMediaType Media type as provided by the client, if any.
     20     * @param string|null $clientFilename Filename as provided by the client, if any.
     21     * @param string|null $clientMediaType Media type as provided by the client, if any.
    2222     *
    2323     * @return UploadedFileInterface
     
    2727    public function createUploadedFile(
    2828        StreamInterface $stream,
    29         int $size = null,
     29        ?int $size = null,
    3030        int $error = \UPLOAD_ERR_OK,
    31         string $clientFilename = null,
    32         string $clientMediaType = null
     31        ?string $clientFilename = null,
     32        ?string $clientMediaType = null
    3333    ): UploadedFileInterface;
    3434}
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/Symfony/Polyfill/Php74/LICENSE

    r2872625 r3427970  
    1 Copyright (c) 2019 Fabien Potencier
     1Copyright (c) 2019-present Fabien Potencier
    22
    33Permission is hereby granted, free of charge, to any person obtaining a copy
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/Symfony/Polyfill/Php74/bootstrap.php

    r2872625 r3427970  
    1919    function get_mangled_object_vars($object) { return p\Php74::get_mangled_object_vars($object); }
    2020}
    21 if (!function_exists('mb_str_split') && function_exists('mb_substr')) {
    22     function mb_str_split($string, $length = 1, $encoding = null) { return p\Php74::mb_str_split($string, $length, $encoding); }
    23 }
    2421if (!function_exists('password_algos')) {
    2522    function password_algos() { return p\Php74::password_algos(); }
    2623}
     24if (extension_loaded('mbstring')) {
     25    if (!function_exists('mb_str_split')) {
     26        function mb_str_split($string, $length = 1, $encoding = null) { return p\Php74::mb_str_split($string, $length, $encoding); }
     27    }
     28}
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/Symfony/Polyfill/Php74/composer.json

    r2872625 r3427970  
    2121    ],
    2222    "require": {
    23         "php": ">=7.1"
     23        "php": ">=7.2"
    2424    },
    2525    "autoload": {
     
    2929    "minimum-stability": "dev",
    3030    "extra": {
    31         "branch-alias": {
    32             "dev-main": "1.27-dev"
    33         },
    3431        "thanks": {
    3532            "name": "symfony/polyfill",
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/Symfony/Polyfill/Php80/LICENSE

    r2872625 r3427970  
    1 Copyright (c) 2020 Fabien Potencier
     1Copyright (c) 2020-present Fabien Potencier
    22
    33Permission is hereby granted, free of charge, to any person obtaining a copy
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/Symfony/Polyfill/Php80/PhpToken.php

    r2872625 r3427970  
    3030
    3131    /**
    32      * @var int
     32     * @var -1|positive-int
    3333     */
    3434    public $line;
     
    3939    public $pos;
    4040
     41    /**
     42     * @param -1|positive-int $line
     43     */
    4144    public function __construct(int $id, string $text, int $line = -1, int $position = -1)
    4245    {
     
    8184
    8285    /**
    83      * @return static[]
     86     * @return list<static>
    8487     */
    8588    public static function tokenize(string $code, int $flags = 0): array
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/Symfony/Polyfill/Php80/composer.json

    r2872625 r3427970  
    2121    ],
    2222    "require": {
    23         "php": ">=7.1"
     23        "php": ">=7.2"
    2424    },
    2525    "autoload": {
     
    3030    "minimum-stability": "dev",
    3131    "extra": {
    32         "branch-alias": {
    33             "dev-main": "1.27-dev"
    34         },
    3532        "thanks": {
    3633            "name": "symfony/polyfill",
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/Symfony/Polyfill/Php81/LICENSE

    r2872625 r3427970  
    1 Copyright (c) 2021 Fabien Potencier
     1Copyright (c) 2021-present Fabien Potencier
    22
    33Permission is hereby granted, free of charge, to any person obtaining a copy
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/Symfony/Polyfill/Php81/README.md

    r2872625 r3427970  
    88- [`MYSQLI_REFRESH_REPLICA`](https://php.net/mysqli.constants#constantmysqli-refresh-replica) constant
    99- [`ReturnTypeWillChange`](https://wiki.php.net/rfc/internal_method_return_types)
     10- [`CURLStringFile`](https://php.net/CURLStringFile) (but only if PHP >= 7.4 is used)
    1011
    1112More information can be found in the
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/Symfony/Polyfill/Php81/composer.json

    r2872625 r3427970  
    1717    ],
    1818    "require": {
    19         "php": ">=7.1"
     19        "php": ">=7.2"
    2020    },
    2121    "autoload": {
     
    2626    "minimum-stability": "dev",
    2727    "extra": {
    28         "branch-alias": {
    29             "dev-main": "1.27-dev"
    30         },
    3128        "thanks": {
    3229            "name": "symfony/polyfill",
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/Symfony/Polyfill/Php82/LICENSE

    r2872625 r3427970  
    1 Copyright (c) 2022 Fabien Potencier
     1Copyright (c) 2022-present Fabien Potencier
    22
    33Permission is hereby granted, free of charge, to any person obtaining a copy
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/Symfony/Polyfill/Php82/README.md

    r2872625 r3427970  
    1010- [`Random\Engine\CryptoSafeEngine`](https://wiki.php.net/rfc/rng_extension)
    1111- [`Random\Engine\Secure`](https://wiki.php.net/rfc/rng_extension) (check [arokettu/random-polyfill](https://packagist.org/packages/arokettu/random-polyfill) for more engines)
     12- [`odbc_connection_string_is_quoted()`](https://php.net/odbc_connection_string_is_quoted)
     13- [`odbc_connection_string_should_quote()`](https://php.net/odbc_connection_string_should_quote)
     14- [`odbc_connection_string_quote()`](https://php.net/odbc_connection_string_quote)
     15- [`ini_parse_quantity()`](https://php.net/ini_parse_quantity)
    1216
    1317More information can be found in the
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/Symfony/Polyfill/Php82/bootstrap.php

    r2872625 r3427970  
    1010 */
    1111
     12use Rich4rdMuvirimi\ForceReinstall\Vendor\Symfony\Polyfill\Php82 as p;
     13
    1214if (\PHP_VERSION_ID >= 80200) {
    1315    return;
    1416}
     17
     18if (extension_loaded('odbc')) {
     19    if (!function_exists('odbc_connection_string_is_quoted')) {
     20        function odbc_connection_string_is_quoted(string $str): bool { return p\Php82::odbc_connection_string_is_quoted($str); }
     21    }
     22
     23    if (!function_exists('odbc_connection_string_should_quote')) {
     24        function odbc_connection_string_should_quote(string $str): bool { return p\Php82::odbc_connection_string_should_quote($str); }
     25    }
     26
     27    if (!function_exists('odbc_connection_string_quote')) {
     28        function odbc_connection_string_quote(string $str): string { return p\Php82::odbc_connection_string_quote($str); }
     29    }
     30}
     31
     32if (!function_exists('ini_parse_quantity')) {
     33    function ini_parse_quantity(string $shorthand): int { return p\Php82::ini_parse_quantity($shorthand); }
     34}
  • force-reinstall/trunk/vendor/force-reinstall/psr-4/Symfony/Polyfill/Php82/composer.json

    r2872625 r3427970  
    1717    ],
    1818    "require": {
    19         "php": ">=7.1"
     19        "php": ">=7.2"
    2020    },
    2121    "autoload": {
     
    2626    "minimum-stability": "dev",
    2727    "extra": {
    28         "branch-alias": {
    29             "dev-main": "1.27-dev"
    30         },
    3128        "thanks": {
    3229            "name": "symfony/polyfill",
  • force-reinstall/trunk/vendor/symfony/deprecation-contracts/LICENSE

    r2871586 r3427970  
    1 Copyright (c) 2020-2022 Fabien Potencier
     1Copyright (c) 2020-present Fabien Potencier
    22
    33Permission is hereby granted, free of charge, to any person obtaining a copy
Note: See TracChangeset for help on using the changeset viewer.