正在显示
48 个修改的文件
包含
1873 行增加
和
392 行删除
| @@ -232,17 +232,19 @@ class Index extends Api | @@ -232,17 +232,19 @@ class Index extends Api | ||
| 232 | return $this->success("", $data); | 232 | return $this->success("", $data); |
| 233 | } | 233 | } |
| 234 | 234 | ||
| 235 | - // 生成二维码 | ||
| 236 | - public function build() | 235 | + /* |
| 236 | + 生成二维码 $href 当前用户的 分享二维码 http格式 | ||
| 237 | + 扫码 后 跳转 首页 | ||
| 238 | + app/api/v1/index?share_id=$user_id | ||
| 239 | + */ | ||
| 240 | + public function build($href) | ||
| 237 | { | 241 | { |
| 238 | - $post = $this->request->param(""); | ||
| 239 | - $text=$post['text']; | ||
| 240 | - $label=$post['label']; | 242 | + |
| 241 | $config = get_addon_config('qrcode'); | 243 | $config = get_addon_config('qrcode'); |
| 242 | $params = $this->request->get(); | 244 | $params = $this->request->get(); |
| 243 | $params = array_intersect_key($params, array_flip(['text', 'size', 'padding', 'errorlevel', 'foreground', 'background', 'logo', 'logosize', 'logopath', 'label', 'labelfontsize', 'labelalignment'])); | 245 | $params = array_intersect_key($params, array_flip(['text', 'size', 'padding', 'errorlevel', 'foreground', 'background', 'logo', 'logosize', 'logopath', 'label', 'labelfontsize', 'labelalignment'])); |
| 244 | - $params['text'] = $text; | ||
| 245 | - $params['label'] = $label; | 246 | + $params['text'] = $href; |
| 247 | + $params['label'] = ""; | ||
| 246 | $qrCode = \addons\qrcode\library\Service::qrcode($params); | 248 | $qrCode = \addons\qrcode\library\Service::qrcode($params); |
| 247 | $mimetype = $config['format'] == 'png' ? 'image/png' : 'image/svg+xml'; | 249 | $mimetype = $config['format'] == 'png' ? 'image/png' : 'image/svg+xml'; |
| 248 | $response = Response::create()->header("Content-Type", $mimetype); | 250 | $response = Response::create()->header("Content-Type", $mimetype); |
| @@ -266,6 +268,10 @@ class Index extends Api | @@ -266,6 +268,10 @@ class Index extends Api | ||
| 266 | return $this->success("", $code_path); | 268 | return $this->success("", $code_path); |
| 267 | 269 | ||
| 268 | } | 270 | } |
| 271 | + //图片合成 分销图片 | ||
| 272 | + public function synthesis(){ | ||
| 273 | + | ||
| 274 | + } | ||
| 269 | 275 | ||
| 270 | /** | 276 | /** |
| 271 | * 名字加* | 277 | * 名字加* |
| @@ -150,6 +150,7 @@ class Wechat extends Api | @@ -150,6 +150,7 @@ class Wechat extends Api | ||
| 150 | =snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且, 即使在未关注的情况下,只要用户授权,也能获取其信息 ) | 150 | =snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且, 即使在未关注的情况下,只要用户授权,也能获取其信息 ) |
| 151 | https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect | 151 | https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect |
| 152 | 2.2 由微信回跳后,获取code 和 state 参数,由前端post code给后台 | 152 | 2.2 由微信回跳后,获取code 和 state 参数,由前端post code给后台 |
| 153 | + 返回 token 前端存储 每次请求 放在header里 | ||
| 153 | */ | 154 | */ |
| 154 | 155 | ||
| 155 | public function get_user_info_by_code (){ | 156 | public function get_user_info_by_code (){ |
| @@ -177,7 +178,6 @@ class Wechat extends Api | @@ -177,7 +178,6 @@ class Wechat extends Api | ||
| 177 | }else{ | 178 | }else{ |
| 178 | Db::name('user')->where($w)->update($save); | 179 | Db::name('user')->where($w)->update($save); |
| 179 | } | 180 | } |
| 180 | - //注册成功 继续注册分销关系 | ||
| 181 | 181 | ||
| 182 | //设置同域下的登录缓存 | 182 | //设置同域下的登录缓存 |
| 183 | $user = Db::name('user')->where($w)->find(); | 183 | $user = Db::name('user')->where($w)->find(); |
| @@ -190,8 +190,9 @@ class Wechat extends Api | @@ -190,8 +190,9 @@ class Wechat extends Api | ||
| 190 | $this->error($e->getMessage()); | 190 | $this->error($e->getMessage()); |
| 191 | } | 191 | } |
| 192 | if($user_id !=0){ | 192 | if($user_id !=0){ |
| 193 | - print_r($this->auth->getToken());return; | ||
| 194 | - $this->success('完成',$user_id); | 193 | + $data['token'] = $this->auth->getToken(); |
| 194 | + $data['user_info'] = $user; | ||
| 195 | + $this->success('完成',$data); | ||
| 195 | }else{ | 196 | }else{ |
| 196 | $this->error('code处理失败'); | 197 | $this->error('code处理失败'); |
| 197 | } | 198 | } |
| @@ -221,7 +222,7 @@ class Wechat extends Api | @@ -221,7 +222,7 @@ class Wechat extends Api | ||
| 221 | */ | 222 | */ |
| 222 | public function prepare_order($order_no = ''){ | 223 | public function prepare_order($order_no = ''){ |
| 223 | $user_id = $this->auth->id; | 224 | $user_id = $this->auth->id; |
| 224 | - $user_id = 2;//模拟用户 | 225 | + |
| 225 | if(empty($user_id)){ | 226 | if(empty($user_id)){ |
| 226 | return $this->error('用户信息错误'); | 227 | return $this->error('用户信息错误'); |
| 227 | } | 228 | } |
application/extra/queue.php
0 → 100644
| 1 | +<?php | ||
| 2 | +// +---------------------------------------------------------------------- | ||
| 3 | +// | ThinkPHP [ WE CAN DO IT JUST THINK IT ] | ||
| 4 | +// +---------------------------------------------------------------------- | ||
| 5 | +// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved. | ||
| 6 | +// +---------------------------------------------------------------------- | ||
| 7 | +// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) | ||
| 8 | +// +---------------------------------------------------------------------- | ||
| 9 | +// | Author: yunwuxin <448901948@qq.com> | ||
| 10 | +// +---------------------------------------------------------------------- | ||
| 11 | + | ||
| 12 | +return [ | ||
| 13 | + 'connector' => 'Sync' | ||
| 14 | +]; |
| @@ -30,7 +30,8 @@ | @@ -30,7 +30,8 @@ | ||
| 30 | "ext-curl": "*", | 30 | "ext-curl": "*", |
| 31 | "ext-pdo": "*", | 31 | "ext-pdo": "*", |
| 32 | "ext-bcmath": "*", | 32 | "ext-bcmath": "*", |
| 33 | - "txthinking/mailer": "^2.0" | 33 | + "txthinking/mailer": "^2.0", |
| 34 | + "kkokk/poster": "^2.0" | ||
| 34 | }, | 35 | }, |
| 35 | "config": { | 36 | "config": { |
| 36 | "preferred-install": "dist", | 37 | "preferred-install": "dist", |
| @@ -9,7 +9,7 @@ | @@ -9,7 +9,7 @@ | ||
| 9 | // | Author: liu21st <liu21st@gmail.com> | 9 | // | Author: liu21st <liu21st@gmail.com> |
| 10 | // +---------------------------------------------------------------------- | 10 | // +---------------------------------------------------------------------- |
| 11 | 11 | ||
| 12 | -define('THINK_VERSION', '5.0.24'); | 12 | +define('THINK_VERSION', '5.0.25'); |
| 13 | define('THINK_START_TIME', microtime(true)); | 13 | define('THINK_START_TIME', microtime(true)); |
| 14 | define('THINK_START_MEM', memory_get_usage()); | 14 | define('THINK_START_MEM', memory_get_usage()); |
| 15 | define('EXT', '.php'); | 15 | define('EXT', '.php'); |
| @@ -3,21 +3,8 @@ | @@ -3,21 +3,8 @@ | ||
| 3 | // autoload.php @generated by Composer | 3 | // autoload.php @generated by Composer |
| 4 | 4 | ||
| 5 | if (PHP_VERSION_ID < 50600) { | 5 | if (PHP_VERSION_ID < 50600) { |
| 6 | - if (!headers_sent()) { | ||
| 7 | - header('HTTP/1.1 500 Internal Server Error'); | ||
| 8 | - } | ||
| 9 | - $err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL; | ||
| 10 | - if (!ini_get('display_errors')) { | ||
| 11 | - if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { | ||
| 12 | - fwrite(STDERR, $err); | ||
| 13 | - } elseif (!headers_sent()) { | ||
| 14 | - echo $err; | ||
| 15 | - } | ||
| 16 | - } | ||
| 17 | - trigger_error( | ||
| 18 | - $err, | ||
| 19 | - E_USER_ERROR | ||
| 20 | - ); | 6 | + echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL; |
| 7 | + exit(1); | ||
| 21 | } | 8 | } |
| 22 | 9 | ||
| 23 | require_once __DIR__ . '/composer/autoload_real.php'; | 10 | require_once __DIR__ . '/composer/autoload_real.php'; |
| @@ -10,7 +10,7 @@ return array( | @@ -10,7 +10,7 @@ return array( | ||
| 10 | 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', | 10 | 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', |
| 11 | 'JsonException' => $vendorDir . '/symfony/polyfill-php73/Resources/stubs/JsonException.php', | 11 | 'JsonException' => $vendorDir . '/symfony/polyfill-php73/Resources/stubs/JsonException.php', |
| 12 | 'PhpToken' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', | 12 | 'PhpToken' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', |
| 13 | - 'Stringable' => $vendorDir . '/myclabs/php-enum/stubs/Stringable.php', | 13 | + 'Stringable' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Stringable.php', |
| 14 | 'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', | 14 | 'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', |
| 15 | 'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', | 15 | 'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', |
| 16 | ); | 16 | ); |
| @@ -9,7 +9,7 @@ return array( | @@ -9,7 +9,7 @@ return array( | ||
| 9 | 'think\\helper\\' => array($vendorDir . '/topthink/think-helper/src'), | 9 | 'think\\helper\\' => array($vendorDir . '/topthink/think-helper/src'), |
| 10 | 'think\\composer\\' => array($vendorDir . '/topthink/think-installer/src'), | 10 | 'think\\composer\\' => array($vendorDir . '/topthink/think-installer/src'), |
| 11 | 'think\\captcha\\' => array($vendorDir . '/topthink/think-captcha/src'), | 11 | 'think\\captcha\\' => array($vendorDir . '/topthink/think-captcha/src'), |
| 12 | - 'think\\' => array($vendorDir . '/karsonzhang/fastadmin-addons/src', $vendorDir . '/topthink/think-queue/src', $baseDir . '/thinkphp/library/think'), | 12 | + 'think\\' => array($baseDir . '/thinkphp/library/think', $vendorDir . '/karsonzhang/fastadmin-addons/src', $vendorDir . '/topthink/think-queue/src'), |
| 13 | 'ZipStream\\' => array($vendorDir . '/maennchen/zipstream-php/src'), | 13 | 'ZipStream\\' => array($vendorDir . '/maennchen/zipstream-php/src'), |
| 14 | 'Tx\\' => array($vendorDir . '/txthinking/mailer/src'), | 14 | 'Tx\\' => array($vendorDir . '/txthinking/mailer/src'), |
| 15 | 'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'), | 15 | 'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'), |
| @@ -26,7 +26,7 @@ return array( | @@ -26,7 +26,7 @@ return array( | ||
| 26 | 'Symfony\\Bridge\\PsrHttpMessage\\' => array($vendorDir . '/symfony/psr-http-message-bridge'), | 26 | 'Symfony\\Bridge\\PsrHttpMessage\\' => array($vendorDir . '/symfony/psr-http-message-bridge'), |
| 27 | 'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'), | 27 | 'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'), |
| 28 | 'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'), | 28 | 'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'), |
| 29 | - 'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-factory/src', $vendorDir . '/psr/http-message/src'), | 29 | + 'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src', $vendorDir . '/psr/http-factory/src'), |
| 30 | 'Psr\\Http\\Client\\' => array($vendorDir . '/psr/http-client/src'), | 30 | 'Psr\\Http\\Client\\' => array($vendorDir . '/psr/http-client/src'), |
| 31 | 'Psr\\EventDispatcher\\' => array($vendorDir . '/psr/event-dispatcher/src'), | 31 | 'Psr\\EventDispatcher\\' => array($vendorDir . '/psr/event-dispatcher/src'), |
| 32 | 'Psr\\Container\\' => array($vendorDir . '/psr/container/src'), | 32 | 'Psr\\Container\\' => array($vendorDir . '/psr/container/src'), |
| @@ -38,6 +38,7 @@ return array( | @@ -38,6 +38,7 @@ return array( | ||
| 38 | 'MyCLabs\\Enum\\' => array($vendorDir . '/myclabs/php-enum/src'), | 38 | 'MyCLabs\\Enum\\' => array($vendorDir . '/myclabs/php-enum/src'), |
| 39 | 'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'), | 39 | 'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'), |
| 40 | 'Matrix\\' => array($vendorDir . '/markbaker/matrix/classes/src'), | 40 | 'Matrix\\' => array($vendorDir . '/markbaker/matrix/classes/src'), |
| 41 | + 'Kkokk\\Poster\\' => array($vendorDir . '/kkokk/poster/src'), | ||
| 41 | 'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'), | 42 | 'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'), |
| 42 | 'GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'), | 43 | 'GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'), |
| 43 | 'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'), | 44 | 'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'), |
| @@ -77,6 +77,10 @@ class ComposerStaticInit73f9e72fede2c36621e52f7b610bbb65 | @@ -77,6 +77,10 @@ class ComposerStaticInit73f9e72fede2c36621e52f7b610bbb65 | ||
| 77 | 'Monolog\\' => 8, | 77 | 'Monolog\\' => 8, |
| 78 | 'Matrix\\' => 7, | 78 | 'Matrix\\' => 7, |
| 79 | ), | 79 | ), |
| 80 | + 'K' => | ||
| 81 | + array ( | ||
| 82 | + 'Kkokk\\Poster\\' => 13, | ||
| 83 | + ), | ||
| 80 | 'G' => | 84 | 'G' => |
| 81 | array ( | 85 | array ( |
| 82 | 'GuzzleHttp\\Psr7\\' => 16, | 86 | 'GuzzleHttp\\Psr7\\' => 16, |
| @@ -109,9 +113,9 @@ class ComposerStaticInit73f9e72fede2c36621e52f7b610bbb65 | @@ -109,9 +113,9 @@ class ComposerStaticInit73f9e72fede2c36621e52f7b610bbb65 | ||
| 109 | ), | 113 | ), |
| 110 | 'think\\' => | 114 | 'think\\' => |
| 111 | array ( | 115 | array ( |
| 112 | - 0 => __DIR__ . '/..' . '/karsonzhang/fastadmin-addons/src', | ||
| 113 | - 1 => __DIR__ . '/..' . '/topthink/think-queue/src', | ||
| 114 | - 2 => __DIR__ . '/../..' . '/thinkphp/library/think', | 116 | + 0 => __DIR__ . '/../..' . '/thinkphp/library/think', |
| 117 | + 1 => __DIR__ . '/..' . '/karsonzhang/fastadmin-addons/src', | ||
| 118 | + 2 => __DIR__ . '/..' . '/topthink/think-queue/src', | ||
| 115 | ), | 119 | ), |
| 116 | 'ZipStream\\' => | 120 | 'ZipStream\\' => |
| 117 | array ( | 121 | array ( |
| @@ -179,8 +183,8 @@ class ComposerStaticInit73f9e72fede2c36621e52f7b610bbb65 | @@ -179,8 +183,8 @@ class ComposerStaticInit73f9e72fede2c36621e52f7b610bbb65 | ||
| 179 | ), | 183 | ), |
| 180 | 'Psr\\Http\\Message\\' => | 184 | 'Psr\\Http\\Message\\' => |
| 181 | array ( | 185 | array ( |
| 182 | - 0 => __DIR__ . '/..' . '/psr/http-factory/src', | ||
| 183 | - 1 => __DIR__ . '/..' . '/psr/http-message/src', | 186 | + 0 => __DIR__ . '/..' . '/psr/http-message/src', |
| 187 | + 1 => __DIR__ . '/..' . '/psr/http-factory/src', | ||
| 184 | ), | 188 | ), |
| 185 | 'Psr\\Http\\Client\\' => | 189 | 'Psr\\Http\\Client\\' => |
| 186 | array ( | 190 | array ( |
| @@ -226,6 +230,10 @@ class ComposerStaticInit73f9e72fede2c36621e52f7b610bbb65 | @@ -226,6 +230,10 @@ class ComposerStaticInit73f9e72fede2c36621e52f7b610bbb65 | ||
| 226 | array ( | 230 | array ( |
| 227 | 0 => __DIR__ . '/..' . '/markbaker/matrix/classes/src', | 231 | 0 => __DIR__ . '/..' . '/markbaker/matrix/classes/src', |
| 228 | ), | 232 | ), |
| 233 | + 'Kkokk\\Poster\\' => | ||
| 234 | + array ( | ||
| 235 | + 0 => __DIR__ . '/..' . '/kkokk/poster/src', | ||
| 236 | + ), | ||
| 229 | 'GuzzleHttp\\Psr7\\' => | 237 | 'GuzzleHttp\\Psr7\\' => |
| 230 | array ( | 238 | array ( |
| 231 | 0 => __DIR__ . '/..' . '/guzzlehttp/psr7/src', | 239 | 0 => __DIR__ . '/..' . '/guzzlehttp/psr7/src', |
| @@ -274,7 +282,7 @@ class ComposerStaticInit73f9e72fede2c36621e52f7b610bbb65 | @@ -274,7 +282,7 @@ class ComposerStaticInit73f9e72fede2c36621e52f7b610bbb65 | ||
| 274 | 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', | 282 | 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', |
| 275 | 'JsonException' => __DIR__ . '/..' . '/symfony/polyfill-php73/Resources/stubs/JsonException.php', | 283 | 'JsonException' => __DIR__ . '/..' . '/symfony/polyfill-php73/Resources/stubs/JsonException.php', |
| 276 | 'PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', | 284 | 'PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', |
| 277 | - 'Stringable' => __DIR__ . '/..' . '/myclabs/php-enum/stubs/Stringable.php', | 285 | + 'Stringable' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Stringable.php', |
| 278 | 'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', | 286 | 'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', |
| 279 | 'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', | 287 | 'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', |
| 280 | ); | 288 | ); |
| @@ -4,11 +4,22 @@ | @@ -4,11 +4,22 @@ | ||
| 4 | "name": "easywechat-composer/easywechat-composer", | 4 | "name": "easywechat-composer/easywechat-composer", |
| 5 | "version": "1.4.1", | 5 | "version": "1.4.1", |
| 6 | "version_normalized": "1.4.1.0", | 6 | "version_normalized": "1.4.1.0", |
| 7 | + "source": { | ||
| 8 | + "type": "git", | ||
| 9 | + "url": "https://github.com/mingyoung/easywechat-composer.git", | ||
| 10 | + "reference": "3fc6a7ab6d3853c0f4e2922539b56cc37ef361cd" | ||
| 11 | + }, | ||
| 7 | "dist": { | 12 | "dist": { |
| 8 | "type": "zip", | 13 | "type": "zip", |
| 9 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/easywechat-composer/easywechat-composer/1.4.1/easywechat-composer-easywechat-composer-1.4.1.zip", | 14 | + "url": "https://api.github.com/repos/mingyoung/easywechat-composer/zipball/3fc6a7ab6d3853c0f4e2922539b56cc37ef361cd", |
| 10 | "reference": "3fc6a7ab6d3853c0f4e2922539b56cc37ef361cd", | 15 | "reference": "3fc6a7ab6d3853c0f4e2922539b56cc37ef361cd", |
| 11 | - "shasum": "" | 16 | + "shasum": "", |
| 17 | + "mirrors": [ | ||
| 18 | + { | ||
| 19 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 20 | + "preferred": true | ||
| 21 | + } | ||
| 22 | + ] | ||
| 12 | }, | 23 | }, |
| 13 | "require": { | 24 | "require": { |
| 14 | "composer-plugin-api": "^1.0 || ^2.0", | 25 | "composer-plugin-api": "^1.0 || ^2.0", |
| @@ -29,6 +40,7 @@ | @@ -29,6 +40,7 @@ | ||
| 29 | "EasyWeChatComposer\\": "src/" | 40 | "EasyWeChatComposer\\": "src/" |
| 30 | } | 41 | } |
| 31 | }, | 42 | }, |
| 43 | + "notification-url": "https://packagist.org/downloads/", | ||
| 32 | "license": [ | 44 | "license": [ |
| 33 | "MIT" | 45 | "MIT" |
| 34 | ], | 46 | ], |
| @@ -39,17 +51,32 @@ | @@ -39,17 +51,32 @@ | ||
| 39 | } | 51 | } |
| 40 | ], | 52 | ], |
| 41 | "description": "The composer plugin for EasyWeChat", | 53 | "description": "The composer plugin for EasyWeChat", |
| 54 | + "support": { | ||
| 55 | + "issues": "https://github.com/mingyoung/easywechat-composer/issues", | ||
| 56 | + "source": "https://github.com/mingyoung/easywechat-composer/tree/1.4.1" | ||
| 57 | + }, | ||
| 42 | "install-path": "../easywechat-composer/easywechat-composer" | 58 | "install-path": "../easywechat-composer/easywechat-composer" |
| 43 | }, | 59 | }, |
| 44 | { | 60 | { |
| 45 | "name": "ezyang/htmlpurifier", | 61 | "name": "ezyang/htmlpurifier", |
| 46 | "version": "v4.16.0", | 62 | "version": "v4.16.0", |
| 47 | "version_normalized": "4.16.0.0", | 63 | "version_normalized": "4.16.0.0", |
| 64 | + "source": { | ||
| 65 | + "type": "git", | ||
| 66 | + "url": "https://github.com/ezyang/htmlpurifier.git", | ||
| 67 | + "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8" | ||
| 68 | + }, | ||
| 48 | "dist": { | 69 | "dist": { |
| 49 | "type": "zip", | 70 | "type": "zip", |
| 50 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/ezyang/htmlpurifier/v4.16.0/ezyang-htmlpurifier-v4.16.0.zip", | 71 | + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/523407fb06eb9e5f3d59889b3978d5bfe94299c8", |
| 51 | "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8", | 72 | "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8", |
| 52 | - "shasum": "" | 73 | + "shasum": "", |
| 74 | + "mirrors": [ | ||
| 75 | + { | ||
| 76 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 77 | + "preferred": true | ||
| 78 | + } | ||
| 79 | + ] | ||
| 53 | }, | 80 | }, |
| 54 | "require": { | 81 | "require": { |
| 55 | "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0" | 82 | "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0" |
| @@ -78,6 +105,7 @@ | @@ -78,6 +105,7 @@ | ||
| 78 | "/library/HTMLPurifier/Language/" | 105 | "/library/HTMLPurifier/Language/" |
| 79 | ] | 106 | ] |
| 80 | }, | 107 | }, |
| 108 | + "notification-url": "https://packagist.org/downloads/", | ||
| 81 | "license": [ | 109 | "license": [ |
| 82 | "LGPL-2.1-or-later" | 110 | "LGPL-2.1-or-later" |
| 83 | ], | 111 | ], |
| @@ -93,22 +121,37 @@ | @@ -93,22 +121,37 @@ | ||
| 93 | "keywords": [ | 121 | "keywords": [ |
| 94 | "html" | 122 | "html" |
| 95 | ], | 123 | ], |
| 124 | + "support": { | ||
| 125 | + "issues": "https://github.com/ezyang/htmlpurifier/issues", | ||
| 126 | + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.16.0" | ||
| 127 | + }, | ||
| 96 | "install-path": "../ezyang/htmlpurifier" | 128 | "install-path": "../ezyang/htmlpurifier" |
| 97 | }, | 129 | }, |
| 98 | { | 130 | { |
| 99 | "name": "guzzlehttp/guzzle", | 131 | "name": "guzzlehttp/guzzle", |
| 100 | - "version": "7.5.0", | ||
| 101 | - "version_normalized": "7.5.0.0", | 132 | + "version": "7.7.0", |
| 133 | + "version_normalized": "7.7.0.0", | ||
| 134 | + "source": { | ||
| 135 | + "type": "git", | ||
| 136 | + "url": "https://github.com/guzzle/guzzle.git", | ||
| 137 | + "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5" | ||
| 138 | + }, | ||
| 102 | "dist": { | 139 | "dist": { |
| 103 | "type": "zip", | 140 | "type": "zip", |
| 104 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/guzzlehttp/guzzle/7.5.0/guzzlehttp-guzzle-7.5.0.zip", | ||
| 105 | - "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba", | ||
| 106 | - "shasum": "" | 141 | + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/fb7566caccf22d74d1ab270de3551f72a58399f5", |
| 142 | + "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5", | ||
| 143 | + "shasum": "", | ||
| 144 | + "mirrors": [ | ||
| 145 | + { | ||
| 146 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 147 | + "preferred": true | ||
| 148 | + } | ||
| 149 | + ] | ||
| 107 | }, | 150 | }, |
| 108 | "require": { | 151 | "require": { |
| 109 | "ext-json": "*", | 152 | "ext-json": "*", |
| 110 | - "guzzlehttp/promises": "^1.5", | ||
| 111 | - "guzzlehttp/psr7": "^1.9 || ^2.4", | 153 | + "guzzlehttp/promises": "^1.5.3 || ^2.0", |
| 154 | + "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", | ||
| 112 | "php": "^7.2.5 || ^8.0", | 155 | "php": "^7.2.5 || ^8.0", |
| 113 | "psr/http-client": "^1.0", | 156 | "psr/http-client": "^1.0", |
| 114 | "symfony/deprecation-contracts": "^2.2 || ^3.0" | 157 | "symfony/deprecation-contracts": "^2.2 || ^3.0" |
| @@ -119,7 +162,8 @@ | @@ -119,7 +162,8 @@ | ||
| 119 | "require-dev": { | 162 | "require-dev": { |
| 120 | "bamarni/composer-bin-plugin": "^1.8.1", | 163 | "bamarni/composer-bin-plugin": "^1.8.1", |
| 121 | "ext-curl": "*", | 164 | "ext-curl": "*", |
| 122 | - "php-http/client-integration-tests": "^3.0", | 165 | + "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", |
| 166 | + "php-http/message-factory": "^1.1", | ||
| 123 | "phpunit/phpunit": "^8.5.29 || ^9.5.23", | 167 | "phpunit/phpunit": "^8.5.29 || ^9.5.23", |
| 124 | "psr/log": "^1.1 || ^2.0 || ^3.0" | 168 | "psr/log": "^1.1 || ^2.0 || ^3.0" |
| 125 | }, | 169 | }, |
| @@ -128,15 +172,12 @@ | @@ -128,15 +172,12 @@ | ||
| 128 | "ext-intl": "Required for Internationalized Domain Name (IDN) support", | 172 | "ext-intl": "Required for Internationalized Domain Name (IDN) support", |
| 129 | "psr/log": "Required for using the Log middleware" | 173 | "psr/log": "Required for using the Log middleware" |
| 130 | }, | 174 | }, |
| 131 | - "time": "2022-08-28T15:39:27+00:00", | 175 | + "time": "2023-05-21T14:04:53+00:00", |
| 132 | "type": "library", | 176 | "type": "library", |
| 133 | "extra": { | 177 | "extra": { |
| 134 | "bamarni-bin": { | 178 | "bamarni-bin": { |
| 135 | "bin-links": true, | 179 | "bin-links": true, |
| 136 | "forward-command": false | 180 | "forward-command": false |
| 137 | - }, | ||
| 138 | - "branch-alias": { | ||
| 139 | - "dev-master": "7.5-dev" | ||
| 140 | } | 181 | } |
| 141 | }, | 182 | }, |
| 142 | "installation-source": "dist", | 183 | "installation-source": "dist", |
| @@ -148,6 +189,7 @@ | @@ -148,6 +189,7 @@ | ||
| 148 | "GuzzleHttp\\": "src/" | 189 | "GuzzleHttp\\": "src/" |
| 149 | } | 190 | } |
| 150 | }, | 191 | }, |
| 192 | + "notification-url": "https://packagist.org/downloads/", | ||
| 151 | "license": [ | 193 | "license": [ |
| 152 | "MIT" | 194 | "MIT" |
| 153 | ], | 195 | ], |
| @@ -200,17 +242,46 @@ | @@ -200,17 +242,46 @@ | ||
| 200 | "rest", | 242 | "rest", |
| 201 | "web service" | 243 | "web service" |
| 202 | ], | 244 | ], |
| 245 | + "support": { | ||
| 246 | + "issues": "https://github.com/guzzle/guzzle/issues", | ||
| 247 | + "source": "https://github.com/guzzle/guzzle/tree/7.7.0" | ||
| 248 | + }, | ||
| 249 | + "funding": [ | ||
| 250 | + { | ||
| 251 | + "url": "https://github.com/GrahamCampbell", | ||
| 252 | + "type": "github" | ||
| 253 | + }, | ||
| 254 | + { | ||
| 255 | + "url": "https://github.com/Nyholm", | ||
| 256 | + "type": "github" | ||
| 257 | + }, | ||
| 258 | + { | ||
| 259 | + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", | ||
| 260 | + "type": "tidelift" | ||
| 261 | + } | ||
| 262 | + ], | ||
| 203 | "install-path": "../guzzlehttp/guzzle" | 263 | "install-path": "../guzzlehttp/guzzle" |
| 204 | }, | 264 | }, |
| 205 | { | 265 | { |
| 206 | "name": "guzzlehttp/promises", | 266 | "name": "guzzlehttp/promises", |
| 207 | - "version": "1.5.2", | ||
| 208 | - "version_normalized": "1.5.2.0", | 267 | + "version": "1.5.3", |
| 268 | + "version_normalized": "1.5.3.0", | ||
| 269 | + "source": { | ||
| 270 | + "type": "git", | ||
| 271 | + "url": "https://github.com/guzzle/promises.git", | ||
| 272 | + "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e" | ||
| 273 | + }, | ||
| 209 | "dist": { | 274 | "dist": { |
| 210 | "type": "zip", | 275 | "type": "zip", |
| 211 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/guzzlehttp/promises/1.5.2/guzzlehttp-promises-1.5.2.zip", | ||
| 212 | - "reference": "b94b2807d85443f9719887892882d0329d1e2598", | ||
| 213 | - "shasum": "" | 276 | + "url": "https://api.github.com/repos/guzzle/promises/zipball/67ab6e18aaa14d753cc148911d273f6e6cb6721e", |
| 277 | + "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e", | ||
| 278 | + "shasum": "", | ||
| 279 | + "mirrors": [ | ||
| 280 | + { | ||
| 281 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 282 | + "preferred": true | ||
| 283 | + } | ||
| 284 | + ] | ||
| 214 | }, | 285 | }, |
| 215 | "require": { | 286 | "require": { |
| 216 | "php": ">=5.5" | 287 | "php": ">=5.5" |
| @@ -218,13 +289,8 @@ | @@ -218,13 +289,8 @@ | ||
| 218 | "require-dev": { | 289 | "require-dev": { |
| 219 | "symfony/phpunit-bridge": "^4.4 || ^5.1" | 290 | "symfony/phpunit-bridge": "^4.4 || ^5.1" |
| 220 | }, | 291 | }, |
| 221 | - "time": "2022-08-28T14:55:35+00:00", | 292 | + "time": "2023-05-21T12:31:43+00:00", |
| 222 | "type": "library", | 293 | "type": "library", |
| 223 | - "extra": { | ||
| 224 | - "branch-alias": { | ||
| 225 | - "dev-master": "1.5-dev" | ||
| 226 | - } | ||
| 227 | - }, | ||
| 228 | "installation-source": "dist", | 294 | "installation-source": "dist", |
| 229 | "autoload": { | 295 | "autoload": { |
| 230 | "files": [ | 296 | "files": [ |
| @@ -234,6 +300,7 @@ | @@ -234,6 +300,7 @@ | ||
| 234 | "GuzzleHttp\\Promise\\": "src/" | 300 | "GuzzleHttp\\Promise\\": "src/" |
| 235 | } | 301 | } |
| 236 | }, | 302 | }, |
| 303 | + "notification-url": "https://packagist.org/downloads/", | ||
| 237 | "license": [ | 304 | "license": [ |
| 238 | "MIT" | 305 | "MIT" |
| 239 | ], | 306 | ], |
| @@ -263,22 +330,51 @@ | @@ -263,22 +330,51 @@ | ||
| 263 | "keywords": [ | 330 | "keywords": [ |
| 264 | "promise" | 331 | "promise" |
| 265 | ], | 332 | ], |
| 333 | + "support": { | ||
| 334 | + "issues": "https://github.com/guzzle/promises/issues", | ||
| 335 | + "source": "https://github.com/guzzle/promises/tree/1.5.3" | ||
| 336 | + }, | ||
| 337 | + "funding": [ | ||
| 338 | + { | ||
| 339 | + "url": "https://github.com/GrahamCampbell", | ||
| 340 | + "type": "github" | ||
| 341 | + }, | ||
| 342 | + { | ||
| 343 | + "url": "https://github.com/Nyholm", | ||
| 344 | + "type": "github" | ||
| 345 | + }, | ||
| 346 | + { | ||
| 347 | + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", | ||
| 348 | + "type": "tidelift" | ||
| 349 | + } | ||
| 350 | + ], | ||
| 266 | "install-path": "../guzzlehttp/promises" | 351 | "install-path": "../guzzlehttp/promises" |
| 267 | }, | 352 | }, |
| 268 | { | 353 | { |
| 269 | "name": "guzzlehttp/psr7", | 354 | "name": "guzzlehttp/psr7", |
| 270 | - "version": "2.4.3", | ||
| 271 | - "version_normalized": "2.4.3.0", | 355 | + "version": "2.5.0", |
| 356 | + "version_normalized": "2.5.0.0", | ||
| 357 | + "source": { | ||
| 358 | + "type": "git", | ||
| 359 | + "url": "https://github.com/guzzle/psr7.git", | ||
| 360 | + "reference": "b635f279edd83fc275f822a1188157ffea568ff6" | ||
| 361 | + }, | ||
| 272 | "dist": { | 362 | "dist": { |
| 273 | "type": "zip", | 363 | "type": "zip", |
| 274 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/guzzlehttp/psr7/2.4.3/guzzlehttp-psr7-2.4.3.zip", | ||
| 275 | - "reference": "67c26b443f348a51926030c83481b85718457d3d", | ||
| 276 | - "shasum": "" | 364 | + "url": "https://api.github.com/repos/guzzle/psr7/zipball/b635f279edd83fc275f822a1188157ffea568ff6", |
| 365 | + "reference": "b635f279edd83fc275f822a1188157ffea568ff6", | ||
| 366 | + "shasum": "", | ||
| 367 | + "mirrors": [ | ||
| 368 | + { | ||
| 369 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 370 | + "preferred": true | ||
| 371 | + } | ||
| 372 | + ] | ||
| 277 | }, | 373 | }, |
| 278 | "require": { | 374 | "require": { |
| 279 | "php": "^7.2.5 || ^8.0", | 375 | "php": "^7.2.5 || ^8.0", |
| 280 | "psr/http-factory": "^1.0", | 376 | "psr/http-factory": "^1.0", |
| 281 | - "psr/http-message": "^1.0", | 377 | + "psr/http-message": "^1.1 || ^2.0", |
| 282 | "ralouphie/getallheaders": "^3.0" | 378 | "ralouphie/getallheaders": "^3.0" |
| 283 | }, | 379 | }, |
| 284 | "provide": { | 380 | "provide": { |
| @@ -293,15 +389,12 @@ | @@ -293,15 +389,12 @@ | ||
| 293 | "suggest": { | 389 | "suggest": { |
| 294 | "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" | 390 | "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" |
| 295 | }, | 391 | }, |
| 296 | - "time": "2022-10-26T14:07:24+00:00", | 392 | + "time": "2023-04-17T16:11:26+00:00", |
| 297 | "type": "library", | 393 | "type": "library", |
| 298 | "extra": { | 394 | "extra": { |
| 299 | "bamarni-bin": { | 395 | "bamarni-bin": { |
| 300 | "bin-links": true, | 396 | "bin-links": true, |
| 301 | "forward-command": false | 397 | "forward-command": false |
| 302 | - }, | ||
| 303 | - "branch-alias": { | ||
| 304 | - "dev-master": "2.4-dev" | ||
| 305 | } | 398 | } |
| 306 | }, | 399 | }, |
| 307 | "installation-source": "dist", | 400 | "installation-source": "dist", |
| @@ -310,6 +403,7 @@ | @@ -310,6 +403,7 @@ | ||
| 310 | "GuzzleHttp\\Psr7\\": "src/" | 403 | "GuzzleHttp\\Psr7\\": "src/" |
| 311 | } | 404 | } |
| 312 | }, | 405 | }, |
| 406 | + "notification-url": "https://packagist.org/downloads/", | ||
| 313 | "license": [ | 407 | "license": [ |
| 314 | "MIT" | 408 | "MIT" |
| 315 | ], | 409 | ], |
| @@ -361,17 +455,46 @@ | @@ -361,17 +455,46 @@ | ||
| 361 | "uri", | 455 | "uri", |
| 362 | "url" | 456 | "url" |
| 363 | ], | 457 | ], |
| 458 | + "support": { | ||
| 459 | + "issues": "https://github.com/guzzle/psr7/issues", | ||
| 460 | + "source": "https://github.com/guzzle/psr7/tree/2.5.0" | ||
| 461 | + }, | ||
| 462 | + "funding": [ | ||
| 463 | + { | ||
| 464 | + "url": "https://github.com/GrahamCampbell", | ||
| 465 | + "type": "github" | ||
| 466 | + }, | ||
| 467 | + { | ||
| 468 | + "url": "https://github.com/Nyholm", | ||
| 469 | + "type": "github" | ||
| 470 | + }, | ||
| 471 | + { | ||
| 472 | + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", | ||
| 473 | + "type": "tidelift" | ||
| 474 | + } | ||
| 475 | + ], | ||
| 364 | "install-path": "../guzzlehttp/psr7" | 476 | "install-path": "../guzzlehttp/psr7" |
| 365 | }, | 477 | }, |
| 366 | { | 478 | { |
| 367 | "name": "karsonzhang/fastadmin-addons", | 479 | "name": "karsonzhang/fastadmin-addons", |
| 368 | "version": "1.3.3", | 480 | "version": "1.3.3", |
| 369 | "version_normalized": "1.3.3.0", | 481 | "version_normalized": "1.3.3.0", |
| 482 | + "source": { | ||
| 483 | + "type": "git", | ||
| 484 | + "url": "https://github.com/karsonzhang/fastadmin-addons.git", | ||
| 485 | + "reference": "f5bb4dabda55271b08371a8ae9355a205be48c56" | ||
| 486 | + }, | ||
| 370 | "dist": { | 487 | "dist": { |
| 371 | "type": "zip", | 488 | "type": "zip", |
| 372 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/karsonzhang/fastadmin-addons/1.3.3/karsonzhang-fastadmin-addons-1.3.3.zip", | 489 | + "url": "https://api.github.com/repos/karsonzhang/fastadmin-addons/zipball/f5bb4dabda55271b08371a8ae9355a205be48c56", |
| 373 | "reference": "f5bb4dabda55271b08371a8ae9355a205be48c56", | 490 | "reference": "f5bb4dabda55271b08371a8ae9355a205be48c56", |
| 374 | - "shasum": "" | 491 | + "shasum": "", |
| 492 | + "mirrors": [ | ||
| 493 | + { | ||
| 494 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 495 | + "preferred": true | ||
| 496 | + } | ||
| 497 | + ] | ||
| 375 | }, | 498 | }, |
| 376 | "require": { | 499 | "require": { |
| 377 | "nelexa/zip": "^3.3", | 500 | "nelexa/zip": "^3.3", |
| @@ -394,6 +517,7 @@ | @@ -394,6 +517,7 @@ | ||
| 394 | "think\\": "src/" | 517 | "think\\": "src/" |
| 395 | } | 518 | } |
| 396 | }, | 519 | }, |
| 520 | + "notification-url": "https://packagist.org/downloads/", | ||
| 397 | "license": [ | 521 | "license": [ |
| 398 | "Apache-2.0" | 522 | "Apache-2.0" |
| 399 | ], | 523 | ], |
| @@ -409,17 +533,85 @@ | @@ -409,17 +533,85 @@ | ||
| 409 | ], | 533 | ], |
| 410 | "description": "addons package for fastadmin", | 534 | "description": "addons package for fastadmin", |
| 411 | "homepage": "https://github.com/karsonzhang/fastadmin-addons", | 535 | "homepage": "https://github.com/karsonzhang/fastadmin-addons", |
| 536 | + "support": { | ||
| 537 | + "issues": "https://github.com/karsonzhang/fastadmin-addons/issues", | ||
| 538 | + "source": "https://github.com/karsonzhang/fastadmin-addons/tree/v1.3.3" | ||
| 539 | + }, | ||
| 412 | "install-path": "../karsonzhang/fastadmin-addons" | 540 | "install-path": "../karsonzhang/fastadmin-addons" |
| 413 | }, | 541 | }, |
| 414 | { | 542 | { |
| 543 | + "name": "kkokk/poster", | ||
| 544 | + "version": "v2.0.6", | ||
| 545 | + "version_normalized": "2.0.6.0", | ||
| 546 | + "source": { | ||
| 547 | + "type": "git", | ||
| 548 | + "url": "https://github.com/kkokk/poster.git", | ||
| 549 | + "reference": "a657ab240330b2d667416431fd7454dff73bebdf" | ||
| 550 | + }, | ||
| 551 | + "dist": { | ||
| 552 | + "type": "zip", | ||
| 553 | + "url": "https://api.github.com/repos/kkokk/poster/zipball/a657ab240330b2d667416431fd7454dff73bebdf", | ||
| 554 | + "reference": "a657ab240330b2d667416431fd7454dff73bebdf", | ||
| 555 | + "shasum": "", | ||
| 556 | + "mirrors": [ | ||
| 557 | + { | ||
| 558 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 559 | + "preferred": true | ||
| 560 | + } | ||
| 561 | + ] | ||
| 562 | + }, | ||
| 563 | + "require": { | ||
| 564 | + "ext-gd": "*", | ||
| 565 | + "ext-iconv": "*", | ||
| 566 | + "ext-json": "*", | ||
| 567 | + "ext-mbstring": "*", | ||
| 568 | + "php": ">=5.6.0" | ||
| 569 | + }, | ||
| 570 | + "time": "2023-05-19T10:39:17+00:00", | ||
| 571 | + "type": "project", | ||
| 572 | + "installation-source": "dist", | ||
| 573 | + "autoload": { | ||
| 574 | + "psr-4": { | ||
| 575 | + "Kkokk\\Poster\\": "src/" | ||
| 576 | + } | ||
| 577 | + }, | ||
| 578 | + "notification-url": "https://packagist.org/downloads/", | ||
| 579 | + "license": [ | ||
| 580 | + "MIT" | ||
| 581 | + ], | ||
| 582 | + "authors": [ | ||
| 583 | + { | ||
| 584 | + "name": "lang", | ||
| 585 | + "email": "732853989@qq.com" | ||
| 586 | + } | ||
| 587 | + ], | ||
| 588 | + "description": "PHP生成海报", | ||
| 589 | + "support": { | ||
| 590 | + "issues": "https://github.com/kkokk/poster/issues", | ||
| 591 | + "source": "https://github.com/kkokk/poster/tree/v2.0.6" | ||
| 592 | + }, | ||
| 593 | + "install-path": "../kkokk/poster" | ||
| 594 | + }, | ||
| 595 | + { | ||
| 415 | "name": "maennchen/zipstream-php", | 596 | "name": "maennchen/zipstream-php", |
| 416 | "version": "2.2.6", | 597 | "version": "2.2.6", |
| 417 | "version_normalized": "2.2.6.0", | 598 | "version_normalized": "2.2.6.0", |
| 599 | + "source": { | ||
| 600 | + "type": "git", | ||
| 601 | + "url": "https://github.com/maennchen/ZipStream-PHP.git", | ||
| 602 | + "reference": "30ad6f93cf3efe4192bc7a4c9cad11ff8f4f237f" | ||
| 603 | + }, | ||
| 418 | "dist": { | 604 | "dist": { |
| 419 | "type": "zip", | 605 | "type": "zip", |
| 420 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/maennchen/zipstream-php/2.2.6/maennchen-zipstream-php-2.2.6.zip", | 606 | + "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/30ad6f93cf3efe4192bc7a4c9cad11ff8f4f237f", |
| 421 | "reference": "30ad6f93cf3efe4192bc7a4c9cad11ff8f4f237f", | 607 | "reference": "30ad6f93cf3efe4192bc7a4c9cad11ff8f4f237f", |
| 422 | - "shasum": "" | 608 | + "shasum": "", |
| 609 | + "mirrors": [ | ||
| 610 | + { | ||
| 611 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 612 | + "preferred": true | ||
| 613 | + } | ||
| 614 | + ] | ||
| 423 | }, | 615 | }, |
| 424 | "require": { | 616 | "require": { |
| 425 | "myclabs/php-enum": "^1.5", | 617 | "myclabs/php-enum": "^1.5", |
| @@ -444,6 +636,7 @@ | @@ -444,6 +636,7 @@ | ||
| 444 | "ZipStream\\": "src/" | 636 | "ZipStream\\": "src/" |
| 445 | } | 637 | } |
| 446 | }, | 638 | }, |
| 639 | + "notification-url": "https://packagist.org/downloads/", | ||
| 447 | "license": [ | 640 | "license": [ |
| 448 | "MIT" | 641 | "MIT" |
| 449 | ], | 642 | ], |
| @@ -470,17 +663,42 @@ | @@ -470,17 +663,42 @@ | ||
| 470 | "stream", | 663 | "stream", |
| 471 | "zip" | 664 | "zip" |
| 472 | ], | 665 | ], |
| 666 | + "support": { | ||
| 667 | + "issues": "https://github.com/maennchen/ZipStream-PHP/issues", | ||
| 668 | + "source": "https://github.com/maennchen/ZipStream-PHP/tree/2.2.6" | ||
| 669 | + }, | ||
| 670 | + "funding": [ | ||
| 671 | + { | ||
| 672 | + "url": "https://github.com/maennchen", | ||
| 673 | + "type": "github" | ||
| 674 | + }, | ||
| 675 | + { | ||
| 676 | + "url": "https://opencollective.com/zipstream", | ||
| 677 | + "type": "open_collective" | ||
| 678 | + } | ||
| 679 | + ], | ||
| 473 | "install-path": "../maennchen/zipstream-php" | 680 | "install-path": "../maennchen/zipstream-php" |
| 474 | }, | 681 | }, |
| 475 | { | 682 | { |
| 476 | "name": "markbaker/complex", | 683 | "name": "markbaker/complex", |
| 477 | "version": "3.0.2", | 684 | "version": "3.0.2", |
| 478 | "version_normalized": "3.0.2.0", | 685 | "version_normalized": "3.0.2.0", |
| 686 | + "source": { | ||
| 687 | + "type": "git", | ||
| 688 | + "url": "https://github.com/MarkBaker/PHPComplex.git", | ||
| 689 | + "reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9" | ||
| 690 | + }, | ||
| 479 | "dist": { | 691 | "dist": { |
| 480 | "type": "zip", | 692 | "type": "zip", |
| 481 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/markbaker/complex/3.0.2/markbaker-complex-3.0.2.zip", | 693 | + "url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/95c56caa1cf5c766ad6d65b6344b807c1e8405b9", |
| 482 | "reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9", | 694 | "reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9", |
| 483 | - "shasum": "" | 695 | + "shasum": "", |
| 696 | + "mirrors": [ | ||
| 697 | + { | ||
| 698 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 699 | + "preferred": true | ||
| 700 | + } | ||
| 701 | + ] | ||
| 484 | }, | 702 | }, |
| 485 | "require": { | 703 | "require": { |
| 486 | "php": "^7.2 || ^8.0" | 704 | "php": "^7.2 || ^8.0" |
| @@ -499,6 +717,7 @@ | @@ -499,6 +717,7 @@ | ||
| 499 | "Complex\\": "classes/src/" | 717 | "Complex\\": "classes/src/" |
| 500 | } | 718 | } |
| 501 | }, | 719 | }, |
| 720 | + "notification-url": "https://packagist.org/downloads/", | ||
| 502 | "license": [ | 721 | "license": [ |
| 503 | "MIT" | 722 | "MIT" |
| 504 | ], | 723 | ], |
| @@ -514,17 +733,32 @@ | @@ -514,17 +733,32 @@ | ||
| 514 | "complex", | 733 | "complex", |
| 515 | "mathematics" | 734 | "mathematics" |
| 516 | ], | 735 | ], |
| 736 | + "support": { | ||
| 737 | + "issues": "https://github.com/MarkBaker/PHPComplex/issues", | ||
| 738 | + "source": "https://github.com/MarkBaker/PHPComplex/tree/3.0.2" | ||
| 739 | + }, | ||
| 517 | "install-path": "../markbaker/complex" | 740 | "install-path": "../markbaker/complex" |
| 518 | }, | 741 | }, |
| 519 | { | 742 | { |
| 520 | "name": "markbaker/matrix", | 743 | "name": "markbaker/matrix", |
| 521 | "version": "3.0.1", | 744 | "version": "3.0.1", |
| 522 | "version_normalized": "3.0.1.0", | 745 | "version_normalized": "3.0.1.0", |
| 746 | + "source": { | ||
| 747 | + "type": "git", | ||
| 748 | + "url": "https://github.com/MarkBaker/PHPMatrix.git", | ||
| 749 | + "reference": "728434227fe21be27ff6d86621a1b13107a2562c" | ||
| 750 | + }, | ||
| 523 | "dist": { | 751 | "dist": { |
| 524 | "type": "zip", | 752 | "type": "zip", |
| 525 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/markbaker/matrix/3.0.1/markbaker-matrix-3.0.1.zip", | 753 | + "url": "https://api.github.com/repos/MarkBaker/PHPMatrix/zipball/728434227fe21be27ff6d86621a1b13107a2562c", |
| 526 | "reference": "728434227fe21be27ff6d86621a1b13107a2562c", | 754 | "reference": "728434227fe21be27ff6d86621a1b13107a2562c", |
| 527 | - "shasum": "" | 755 | + "shasum": "", |
| 756 | + "mirrors": [ | ||
| 757 | + { | ||
| 758 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 759 | + "preferred": true | ||
| 760 | + } | ||
| 761 | + ] | ||
| 528 | }, | 762 | }, |
| 529 | "require": { | 763 | "require": { |
| 530 | "php": "^7.1 || ^8.0" | 764 | "php": "^7.1 || ^8.0" |
| @@ -547,6 +781,7 @@ | @@ -547,6 +781,7 @@ | ||
| 547 | "Matrix\\": "classes/src/" | 781 | "Matrix\\": "classes/src/" |
| 548 | } | 782 | } |
| 549 | }, | 783 | }, |
| 784 | + "notification-url": "https://packagist.org/downloads/", | ||
| 550 | "license": [ | 785 | "license": [ |
| 551 | "MIT" | 786 | "MIT" |
| 552 | ], | 787 | ], |
| @@ -563,17 +798,32 @@ | @@ -563,17 +798,32 @@ | ||
| 563 | "matrix", | 798 | "matrix", |
| 564 | "vector" | 799 | "vector" |
| 565 | ], | 800 | ], |
| 801 | + "support": { | ||
| 802 | + "issues": "https://github.com/MarkBaker/PHPMatrix/issues", | ||
| 803 | + "source": "https://github.com/MarkBaker/PHPMatrix/tree/3.0.1" | ||
| 804 | + }, | ||
| 566 | "install-path": "../markbaker/matrix" | 805 | "install-path": "../markbaker/matrix" |
| 567 | }, | 806 | }, |
| 568 | { | 807 | { |
| 569 | "name": "monolog/monolog", | 808 | "name": "monolog/monolog", |
| 570 | - "version": "2.8.0", | ||
| 571 | - "version_normalized": "2.8.0.0", | 809 | + "version": "2.9.0", |
| 810 | + "version_normalized": "2.9.0.0", | ||
| 811 | + "source": { | ||
| 812 | + "type": "git", | ||
| 813 | + "url": "https://github.com/Seldaek/monolog.git", | ||
| 814 | + "reference": "e1c0ae1528ce313a450e5e1ad782765c4a8dd3cb" | ||
| 815 | + }, | ||
| 572 | "dist": { | 816 | "dist": { |
| 573 | "type": "zip", | 817 | "type": "zip", |
| 574 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/monolog/monolog/2.8.0/monolog-monolog-2.8.0.zip", | ||
| 575 | - "reference": "720488632c590286b88b80e62aa3d3d551ad4a50", | ||
| 576 | - "shasum": "" | 818 | + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/e1c0ae1528ce313a450e5e1ad782765c4a8dd3cb", |
| 819 | + "reference": "e1c0ae1528ce313a450e5e1ad782765c4a8dd3cb", | ||
| 820 | + "shasum": "", | ||
| 821 | + "mirrors": [ | ||
| 822 | + { | ||
| 823 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 824 | + "preferred": true | ||
| 825 | + } | ||
| 826 | + ] | ||
| 577 | }, | 827 | }, |
| 578 | "require": { | 828 | "require": { |
| 579 | "php": ">=7.2", | 829 | "php": ">=7.2", |
| @@ -587,7 +837,7 @@ | @@ -587,7 +837,7 @@ | ||
| 587 | "doctrine/couchdb": "~1.0@dev", | 837 | "doctrine/couchdb": "~1.0@dev", |
| 588 | "elasticsearch/elasticsearch": "^7 || ^8", | 838 | "elasticsearch/elasticsearch": "^7 || ^8", |
| 589 | "ext-json": "*", | 839 | "ext-json": "*", |
| 590 | - "graylog2/gelf-php": "^1.4.2", | 840 | + "graylog2/gelf-php": "^1.4.2 || ^2@dev", |
| 591 | "guzzlehttp/guzzle": "^7.4", | 841 | "guzzlehttp/guzzle": "^7.4", |
| 592 | "guzzlehttp/psr7": "^2.2", | 842 | "guzzlehttp/psr7": "^2.2", |
| 593 | "mongodb/mongodb": "^1.8", | 843 | "mongodb/mongodb": "^1.8", |
| @@ -618,7 +868,7 @@ | @@ -618,7 +868,7 @@ | ||
| 618 | "rollbar/rollbar": "Allow sending log messages to Rollbar", | 868 | "rollbar/rollbar": "Allow sending log messages to Rollbar", |
| 619 | "ruflin/elastica": "Allow sending log messages to an Elastic Search server" | 869 | "ruflin/elastica": "Allow sending log messages to an Elastic Search server" |
| 620 | }, | 870 | }, |
| 621 | - "time": "2022-07-24T11:55:47+00:00", | 871 | + "time": "2023-02-05T13:07:32+00:00", |
| 622 | "type": "library", | 872 | "type": "library", |
| 623 | "extra": { | 873 | "extra": { |
| 624 | "branch-alias": { | 874 | "branch-alias": { |
| @@ -631,6 +881,7 @@ | @@ -631,6 +881,7 @@ | ||
| 631 | "Monolog\\": "src/Monolog" | 881 | "Monolog\\": "src/Monolog" |
| 632 | } | 882 | } |
| 633 | }, | 883 | }, |
| 884 | + "notification-url": "https://packagist.org/downloads/", | ||
| 634 | "license": [ | 885 | "license": [ |
| 635 | "MIT" | 886 | "MIT" |
| 636 | ], | 887 | ], |
| @@ -648,17 +899,42 @@ | @@ -648,17 +899,42 @@ | ||
| 648 | "logging", | 899 | "logging", |
| 649 | "psr-3" | 900 | "psr-3" |
| 650 | ], | 901 | ], |
| 902 | + "support": { | ||
| 903 | + "issues": "https://github.com/Seldaek/monolog/issues", | ||
| 904 | + "source": "https://github.com/Seldaek/monolog/tree/2.9.0" | ||
| 905 | + }, | ||
| 906 | + "funding": [ | ||
| 907 | + { | ||
| 908 | + "url": "https://github.com/Seldaek", | ||
| 909 | + "type": "github" | ||
| 910 | + }, | ||
| 911 | + { | ||
| 912 | + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", | ||
| 913 | + "type": "tidelift" | ||
| 914 | + } | ||
| 915 | + ], | ||
| 651 | "install-path": "../monolog/monolog" | 916 | "install-path": "../monolog/monolog" |
| 652 | }, | 917 | }, |
| 653 | { | 918 | { |
| 654 | "name": "myclabs/php-enum", | 919 | "name": "myclabs/php-enum", |
| 655 | - "version": "1.8.4", | ||
| 656 | - "version_normalized": "1.8.4.0", | 920 | + "version": "1.8.3", |
| 921 | + "version_normalized": "1.8.3.0", | ||
| 922 | + "source": { | ||
| 923 | + "type": "git", | ||
| 924 | + "url": "https://github.com/myclabs/php-enum.git", | ||
| 925 | + "reference": "b942d263c641ddb5190929ff840c68f78713e937" | ||
| 926 | + }, | ||
| 657 | "dist": { | 927 | "dist": { |
| 658 | "type": "zip", | 928 | "type": "zip", |
| 659 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/myclabs/php-enum/1.8.4/myclabs-php-enum-1.8.4.zip", | ||
| 660 | - "reference": "a867478eae49c9f59ece437ae7f9506bfaa27483", | ||
| 661 | - "shasum": "" | 929 | + "url": "https://api.github.com/repos/myclabs/php-enum/zipball/b942d263c641ddb5190929ff840c68f78713e937", |
| 930 | + "reference": "b942d263c641ddb5190929ff840c68f78713e937", | ||
| 931 | + "shasum": "", | ||
| 932 | + "mirrors": [ | ||
| 933 | + { | ||
| 934 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 935 | + "preferred": true | ||
| 936 | + } | ||
| 937 | + ] | ||
| 662 | }, | 938 | }, |
| 663 | "require": { | 939 | "require": { |
| 664 | "ext-json": "*", | 940 | "ext-json": "*", |
| @@ -669,17 +945,15 @@ | @@ -669,17 +945,15 @@ | ||
| 669 | "squizlabs/php_codesniffer": "1.*", | 945 | "squizlabs/php_codesniffer": "1.*", |
| 670 | "vimeo/psalm": "^4.6.2" | 946 | "vimeo/psalm": "^4.6.2" |
| 671 | }, | 947 | }, |
| 672 | - "time": "2022-08-04T09:53:51+00:00", | 948 | + "time": "2021-07-05T08:18:36+00:00", |
| 673 | "type": "library", | 949 | "type": "library", |
| 674 | "installation-source": "dist", | 950 | "installation-source": "dist", |
| 675 | "autoload": { | 951 | "autoload": { |
| 676 | "psr-4": { | 952 | "psr-4": { |
| 677 | "MyCLabs\\Enum\\": "src/" | 953 | "MyCLabs\\Enum\\": "src/" |
| 954 | + } | ||
| 678 | }, | 955 | }, |
| 679 | - "classmap": [ | ||
| 680 | - "stubs/Stringable.php" | ||
| 681 | - ] | ||
| 682 | - }, | 956 | + "notification-url": "https://packagist.org/downloads/", |
| 683 | "license": [ | 957 | "license": [ |
| 684 | "MIT" | 958 | "MIT" |
| 685 | ], | 959 | ], |
| @@ -694,17 +968,42 @@ | @@ -694,17 +968,42 @@ | ||
| 694 | "keywords": [ | 968 | "keywords": [ |
| 695 | "enum" | 969 | "enum" |
| 696 | ], | 970 | ], |
| 971 | + "support": { | ||
| 972 | + "issues": "https://github.com/myclabs/php-enum/issues", | ||
| 973 | + "source": "https://github.com/myclabs/php-enum/tree/1.8.3" | ||
| 974 | + }, | ||
| 975 | + "funding": [ | ||
| 976 | + { | ||
| 977 | + "url": "https://github.com/mnapoli", | ||
| 978 | + "type": "github" | ||
| 979 | + }, | ||
| 980 | + { | ||
| 981 | + "url": "https://tidelift.com/funding/github/packagist/myclabs/php-enum", | ||
| 982 | + "type": "tidelift" | ||
| 983 | + } | ||
| 984 | + ], | ||
| 697 | "install-path": "../myclabs/php-enum" | 985 | "install-path": "../myclabs/php-enum" |
| 698 | }, | 986 | }, |
| 699 | { | 987 | { |
| 700 | "name": "nelexa/zip", | 988 | "name": "nelexa/zip", |
| 701 | "version": "3.3.3", | 989 | "version": "3.3.3", |
| 702 | "version_normalized": "3.3.3.0", | 990 | "version_normalized": "3.3.3.0", |
| 991 | + "source": { | ||
| 992 | + "type": "git", | ||
| 993 | + "url": "https://github.com/Ne-Lexa/php-zip.git", | ||
| 994 | + "reference": "501b52f6fc393a599b44ff348a42740e1eaac7c6" | ||
| 995 | + }, | ||
| 703 | "dist": { | 996 | "dist": { |
| 704 | "type": "zip", | 997 | "type": "zip", |
| 705 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/nelexa/zip/3.3.3/nelexa-zip-3.3.3.zip", | 998 | + "url": "https://api.github.com/repos/Ne-Lexa/php-zip/zipball/501b52f6fc393a599b44ff348a42740e1eaac7c6", |
| 706 | "reference": "501b52f6fc393a599b44ff348a42740e1eaac7c6", | 999 | "reference": "501b52f6fc393a599b44ff348a42740e1eaac7c6", |
| 707 | - "shasum": "" | 1000 | + "shasum": "", |
| 1001 | + "mirrors": [ | ||
| 1002 | + { | ||
| 1003 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 1004 | + "preferred": true | ||
| 1005 | + } | ||
| 1006 | + ] | ||
| 708 | }, | 1007 | }, |
| 709 | "require": { | 1008 | "require": { |
| 710 | "ext-zlib": "*", | 1009 | "ext-zlib": "*", |
| @@ -736,6 +1035,7 @@ | @@ -736,6 +1035,7 @@ | ||
| 736 | "PhpZip\\": "src/" | 1035 | "PhpZip\\": "src/" |
| 737 | } | 1036 | } |
| 738 | }, | 1037 | }, |
| 1038 | + "notification-url": "https://packagist.org/downloads/", | ||
| 739 | "license": [ | 1039 | "license": [ |
| 740 | "MIT" | 1040 | "MIT" |
| 741 | ], | 1041 | ], |
| @@ -757,17 +1057,32 @@ | @@ -757,17 +1057,32 @@ | ||
| 757 | "zipalign", | 1057 | "zipalign", |
| 758 | "ziparchive" | 1058 | "ziparchive" |
| 759 | ], | 1059 | ], |
| 1060 | + "support": { | ||
| 1061 | + "issues": "https://github.com/Ne-Lexa/php-zip/issues", | ||
| 1062 | + "source": "https://github.com/Ne-Lexa/php-zip/tree/3.3.3" | ||
| 1063 | + }, | ||
| 760 | "install-path": "../nelexa/zip" | 1064 | "install-path": "../nelexa/zip" |
| 761 | }, | 1065 | }, |
| 762 | { | 1066 | { |
| 763 | "name": "overtrue/pinyin", | 1067 | "name": "overtrue/pinyin", |
| 764 | "version": "3.0.6", | 1068 | "version": "3.0.6", |
| 765 | "version_normalized": "3.0.6.0", | 1069 | "version_normalized": "3.0.6.0", |
| 1070 | + "source": { | ||
| 1071 | + "type": "git", | ||
| 1072 | + "url": "https://github.com/overtrue/pinyin.git", | ||
| 1073 | + "reference": "3b781d267197b74752daa32814d3a2cf5d140779" | ||
| 1074 | + }, | ||
| 766 | "dist": { | 1075 | "dist": { |
| 767 | "type": "zip", | 1076 | "type": "zip", |
| 768 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/overtrue/pinyin/3.0.6/overtrue-pinyin-3.0.6.zip", | 1077 | + "url": "https://api.github.com/repos/overtrue/pinyin/zipball/3b781d267197b74752daa32814d3a2cf5d140779", |
| 769 | "reference": "3b781d267197b74752daa32814d3a2cf5d140779", | 1078 | "reference": "3b781d267197b74752daa32814d3a2cf5d140779", |
| 770 | - "shasum": "" | 1079 | + "shasum": "", |
| 1080 | + "mirrors": [ | ||
| 1081 | + { | ||
| 1082 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 1083 | + "preferred": true | ||
| 1084 | + } | ||
| 1085 | + ] | ||
| 771 | }, | 1086 | }, |
| 772 | "require": { | 1087 | "require": { |
| 773 | "php": ">=5.3" | 1088 | "php": ">=5.3" |
| @@ -783,6 +1098,7 @@ | @@ -783,6 +1098,7 @@ | ||
| 783 | "Overtrue\\Pinyin\\": "src/" | 1098 | "Overtrue\\Pinyin\\": "src/" |
| 784 | } | 1099 | } |
| 785 | }, | 1100 | }, |
| 1101 | + "notification-url": "https://packagist.org/downloads/", | ||
| 786 | "license": [ | 1102 | "license": [ |
| 787 | "MIT" | 1103 | "MIT" |
| 788 | ], | 1104 | ], |
| @@ -799,17 +1115,32 @@ | @@ -799,17 +1115,32 @@ | ||
| 799 | "Pinyin", | 1115 | "Pinyin", |
| 800 | "cn2pinyin" | 1116 | "cn2pinyin" |
| 801 | ], | 1117 | ], |
| 1118 | + "support": { | ||
| 1119 | + "issues": "https://github.com/overtrue/pinyin/issues", | ||
| 1120 | + "source": "https://github.com/overtrue/pinyin/tree/master" | ||
| 1121 | + }, | ||
| 802 | "install-path": "../overtrue/pinyin" | 1122 | "install-path": "../overtrue/pinyin" |
| 803 | }, | 1123 | }, |
| 804 | { | 1124 | { |
| 805 | "name": "overtrue/socialite", | 1125 | "name": "overtrue/socialite", |
| 806 | "version": "2.0.24", | 1126 | "version": "2.0.24", |
| 807 | "version_normalized": "2.0.24.0", | 1127 | "version_normalized": "2.0.24.0", |
| 1128 | + "source": { | ||
| 1129 | + "type": "git", | ||
| 1130 | + "url": "https://github.com/overtrue/socialite.git", | ||
| 1131 | + "reference": "ee7e7b000ec7d64f2b8aba1f6a2eec5cdf3f8bec" | ||
| 1132 | + }, | ||
| 808 | "dist": { | 1133 | "dist": { |
| 809 | "type": "zip", | 1134 | "type": "zip", |
| 810 | - "url": "https://mirrors.tencent.com/repository/composer/overtrue/socialite/2.0.24/overtrue-socialite-2.0.24.zip", | 1135 | + "url": "https://api.github.com/repos/overtrue/socialite/zipball/ee7e7b000ec7d64f2b8aba1f6a2eec5cdf3f8bec", |
| 811 | "reference": "ee7e7b000ec7d64f2b8aba1f6a2eec5cdf3f8bec", | 1136 | "reference": "ee7e7b000ec7d64f2b8aba1f6a2eec5cdf3f8bec", |
| 812 | - "shasum": "" | 1137 | + "shasum": "", |
| 1138 | + "mirrors": [ | ||
| 1139 | + { | ||
| 1140 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 1141 | + "preferred": true | ||
| 1142 | + } | ||
| 1143 | + ] | ||
| 813 | }, | 1144 | }, |
| 814 | "require": { | 1145 | "require": { |
| 815 | "ext-json": "*", | 1146 | "ext-json": "*", |
| @@ -829,6 +1160,7 @@ | @@ -829,6 +1160,7 @@ | ||
| 829 | "Overtrue\\Socialite\\": "src/" | 1160 | "Overtrue\\Socialite\\": "src/" |
| 830 | } | 1161 | } |
| 831 | }, | 1162 | }, |
| 1163 | + "notification-url": "https://packagist.org/downloads/", | ||
| 832 | "license": [ | 1164 | "license": [ |
| 833 | "MIT" | 1165 | "MIT" |
| 834 | ], | 1166 | ], |
| @@ -847,17 +1179,38 @@ | @@ -847,17 +1179,38 @@ | ||
| 847 | "wechat", | 1179 | "wechat", |
| 848 | "weibo" | 1180 | "weibo" |
| 849 | ], | 1181 | ], |
| 1182 | + "support": { | ||
| 1183 | + "issues": "https://github.com/overtrue/socialite/issues", | ||
| 1184 | + "source": "https://github.com/overtrue/socialite/tree/2.0.24" | ||
| 1185 | + }, | ||
| 1186 | + "funding": [ | ||
| 1187 | + { | ||
| 1188 | + "url": "https://www.patreon.com/overtrue", | ||
| 1189 | + "type": "patreon" | ||
| 1190 | + } | ||
| 1191 | + ], | ||
| 850 | "install-path": "../overtrue/socialite" | 1192 | "install-path": "../overtrue/socialite" |
| 851 | }, | 1193 | }, |
| 852 | { | 1194 | { |
| 853 | "name": "overtrue/wechat", | 1195 | "name": "overtrue/wechat", |
| 854 | - "version": "4.7.0", | ||
| 855 | - "version_normalized": "4.7.0.0", | 1196 | + "version": "4.6.0", |
| 1197 | + "version_normalized": "4.6.0.0", | ||
| 1198 | + "source": { | ||
| 1199 | + "type": "git", | ||
| 1200 | + "url": "https://github.com/w7corp/easywechat.git", | ||
| 1201 | + "reference": "52af4cbe777cd4aea307beafa0a4518c347467b1" | ||
| 1202 | + }, | ||
| 856 | "dist": { | 1203 | "dist": { |
| 857 | "type": "zip", | 1204 | "type": "zip", |
| 858 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/overtrue/wechat/4.7.0/overtrue-wechat-4.7.0.zip", | ||
| 859 | - "reference": "4accb0627803ffb6e45d2988898a0293d2a48e68", | ||
| 860 | - "shasum": "" | 1205 | + "url": "https://api.github.com/repos/w7corp/easywechat/zipball/52af4cbe777cd4aea307beafa0a4518c347467b1", |
| 1206 | + "reference": "52af4cbe777cd4aea307beafa0a4518c347467b1", | ||
| 1207 | + "shasum": "", | ||
| 1208 | + "mirrors": [ | ||
| 1209 | + { | ||
| 1210 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 1211 | + "preferred": true | ||
| 1212 | + } | ||
| 1213 | + ] | ||
| 861 | }, | 1214 | }, |
| 862 | "require": { | 1215 | "require": { |
| 863 | "easywechat-composer/easywechat-composer": "^1.1", | 1216 | "easywechat-composer/easywechat-composer": "^1.1", |
| @@ -882,7 +1235,7 @@ | @@ -882,7 +1235,7 @@ | ||
| 882 | "phpstan/phpstan": "^0.12.0", | 1235 | "phpstan/phpstan": "^0.12.0", |
| 883 | "phpunit/phpunit": "^7.5" | 1236 | "phpunit/phpunit": "^7.5" |
| 884 | }, | 1237 | }, |
| 885 | - "time": "2022-10-21T07:00:02+00:00", | 1238 | + "time": "2022-08-24T07:30:42+00:00", |
| 886 | "type": "library", | 1239 | "type": "library", |
| 887 | "installation-source": "dist", | 1240 | "installation-source": "dist", |
| 888 | "autoload": { | 1241 | "autoload": { |
| @@ -894,6 +1247,7 @@ | @@ -894,6 +1247,7 @@ | ||
| 894 | "EasyWeChat\\": "src/" | 1247 | "EasyWeChat\\": "src/" |
| 895 | } | 1248 | } |
| 896 | }, | 1249 | }, |
| 1250 | + "notification-url": "https://packagist.org/downloads/", | ||
| 897 | "license": [ | 1251 | "license": [ |
| 898 | "MIT" | 1252 | "MIT" |
| 899 | ], | 1253 | ], |
| @@ -911,17 +1265,39 @@ | @@ -911,17 +1265,39 @@ | ||
| 911 | "weixin", | 1265 | "weixin", |
| 912 | "weixin-sdk" | 1266 | "weixin-sdk" |
| 913 | ], | 1267 | ], |
| 1268 | + "support": { | ||
| 1269 | + "issues": "https://github.com/w7corp/easywechat/issues", | ||
| 1270 | + "source": "https://github.com/w7corp/easywechat/tree/4.6.0" | ||
| 1271 | + }, | ||
| 1272 | + "funding": [ | ||
| 1273 | + { | ||
| 1274 | + "url": "https://github.com/overtrue", | ||
| 1275 | + "type": "github" | ||
| 1276 | + } | ||
| 1277 | + ], | ||
| 1278 | + "abandoned": "w7corp/easywechat", | ||
| 914 | "install-path": "../overtrue/wechat" | 1279 | "install-path": "../overtrue/wechat" |
| 915 | }, | 1280 | }, |
| 916 | { | 1281 | { |
| 917 | "name": "paragonie/random_compat", | 1282 | "name": "paragonie/random_compat", |
| 918 | "version": "v9.99.100", | 1283 | "version": "v9.99.100", |
| 919 | "version_normalized": "9.99.100.0", | 1284 | "version_normalized": "9.99.100.0", |
| 1285 | + "source": { | ||
| 1286 | + "type": "git", | ||
| 1287 | + "url": "https://github.com/paragonie/random_compat.git", | ||
| 1288 | + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" | ||
| 1289 | + }, | ||
| 920 | "dist": { | 1290 | "dist": { |
| 921 | "type": "zip", | 1291 | "type": "zip", |
| 922 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/paragonie/random_compat/v9.99.100/paragonie-random_compat-v9.99.100.zip", | 1292 | + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", |
| 923 | "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", | 1293 | "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", |
| 924 | - "shasum": "" | 1294 | + "shasum": "", |
| 1295 | + "mirrors": [ | ||
| 1296 | + { | ||
| 1297 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 1298 | + "preferred": true | ||
| 1299 | + } | ||
| 1300 | + ] | ||
| 925 | }, | 1301 | }, |
| 926 | "require": { | 1302 | "require": { |
| 927 | "php": ">= 7" | 1303 | "php": ">= 7" |
| @@ -936,6 +1312,7 @@ | @@ -936,6 +1312,7 @@ | ||
| 936 | "time": "2020-10-15T08:29:30+00:00", | 1312 | "time": "2020-10-15T08:29:30+00:00", |
| 937 | "type": "library", | 1313 | "type": "library", |
| 938 | "installation-source": "dist", | 1314 | "installation-source": "dist", |
| 1315 | + "notification-url": "https://packagist.org/downloads/", | ||
| 939 | "license": [ | 1316 | "license": [ |
| 940 | "MIT" | 1317 | "MIT" |
| 941 | ], | 1318 | ], |
| @@ -953,17 +1330,33 @@ | @@ -953,17 +1330,33 @@ | ||
| 953 | "pseudorandom", | 1330 | "pseudorandom", |
| 954 | "random" | 1331 | "random" |
| 955 | ], | 1332 | ], |
| 1333 | + "support": { | ||
| 1334 | + "email": "info@paragonie.com", | ||
| 1335 | + "issues": "https://github.com/paragonie/random_compat/issues", | ||
| 1336 | + "source": "https://github.com/paragonie/random_compat" | ||
| 1337 | + }, | ||
| 956 | "install-path": "../paragonie/random_compat" | 1338 | "install-path": "../paragonie/random_compat" |
| 957 | }, | 1339 | }, |
| 958 | { | 1340 | { |
| 959 | "name": "phpoffice/phpspreadsheet", | 1341 | "name": "phpoffice/phpspreadsheet", |
| 960 | "version": "1.19.0", | 1342 | "version": "1.19.0", |
| 961 | "version_normalized": "1.19.0.0", | 1343 | "version_normalized": "1.19.0.0", |
| 1344 | + "source": { | ||
| 1345 | + "type": "git", | ||
| 1346 | + "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", | ||
| 1347 | + "reference": "a9ab55bfae02eecffb3df669a2e19ba0e2f04bbf" | ||
| 1348 | + }, | ||
| 962 | "dist": { | 1349 | "dist": { |
| 963 | "type": "zip", | 1350 | "type": "zip", |
| 964 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/phpoffice/phpspreadsheet/1.19.0/phpoffice-phpspreadsheet-1.19.0.zip", | 1351 | + "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/a9ab55bfae02eecffb3df669a2e19ba0e2f04bbf", |
| 965 | "reference": "a9ab55bfae02eecffb3df669a2e19ba0e2f04bbf", | 1352 | "reference": "a9ab55bfae02eecffb3df669a2e19ba0e2f04bbf", |
| 966 | - "shasum": "" | 1353 | + "shasum": "", |
| 1354 | + "mirrors": [ | ||
| 1355 | + { | ||
| 1356 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 1357 | + "preferred": true | ||
| 1358 | + } | ||
| 1359 | + ] | ||
| 967 | }, | 1360 | }, |
| 968 | "require": { | 1361 | "require": { |
| 969 | "ext-ctype": "*", | 1362 | "ext-ctype": "*", |
| @@ -1015,6 +1408,7 @@ | @@ -1015,6 +1408,7 @@ | ||
| 1015 | "PhpOffice\\PhpSpreadsheet\\": "src/PhpSpreadsheet" | 1408 | "PhpOffice\\PhpSpreadsheet\\": "src/PhpSpreadsheet" |
| 1016 | } | 1409 | } |
| 1017 | }, | 1410 | }, |
| 1411 | + "notification-url": "https://packagist.org/downloads/", | ||
| 1018 | "license": [ | 1412 | "license": [ |
| 1019 | "MIT" | 1413 | "MIT" |
| 1020 | ], | 1414 | ], |
| @@ -1050,17 +1444,32 @@ | @@ -1050,17 +1444,32 @@ | ||
| 1050 | "xls", | 1444 | "xls", |
| 1051 | "xlsx" | 1445 | "xlsx" |
| 1052 | ], | 1446 | ], |
| 1447 | + "support": { | ||
| 1448 | + "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", | ||
| 1449 | + "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.19.0" | ||
| 1450 | + }, | ||
| 1053 | "install-path": "../phpoffice/phpspreadsheet" | 1451 | "install-path": "../phpoffice/phpspreadsheet" |
| 1054 | }, | 1452 | }, |
| 1055 | { | 1453 | { |
| 1056 | "name": "pimple/pimple", | 1454 | "name": "pimple/pimple", |
| 1057 | "version": "v3.5.0", | 1455 | "version": "v3.5.0", |
| 1058 | "version_normalized": "3.5.0.0", | 1456 | "version_normalized": "3.5.0.0", |
| 1457 | + "source": { | ||
| 1458 | + "type": "git", | ||
| 1459 | + "url": "https://github.com/silexphp/Pimple.git", | ||
| 1460 | + "reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed" | ||
| 1461 | + }, | ||
| 1059 | "dist": { | 1462 | "dist": { |
| 1060 | "type": "zip", | 1463 | "type": "zip", |
| 1061 | - "url": "https://mirrors.tencent.com/repository/composer/pimple/pimple/v3.5.0/pimple-pimple-v3.5.0.zip", | 1464 | + "url": "https://api.github.com/repos/silexphp/Pimple/zipball/a94b3a4db7fb774b3d78dad2315ddc07629e1bed", |
| 1062 | "reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed", | 1465 | "reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed", |
| 1063 | - "shasum": "" | 1466 | + "shasum": "", |
| 1467 | + "mirrors": [ | ||
| 1468 | + { | ||
| 1469 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 1470 | + "preferred": true | ||
| 1471 | + } | ||
| 1472 | + ] | ||
| 1064 | }, | 1473 | }, |
| 1065 | "require": { | 1474 | "require": { |
| 1066 | "php": ">=7.2.5", | 1475 | "php": ">=7.2.5", |
| @@ -1082,6 +1491,7 @@ | @@ -1082,6 +1491,7 @@ | ||
| 1082 | "Pimple": "src/" | 1491 | "Pimple": "src/" |
| 1083 | } | 1492 | } |
| 1084 | }, | 1493 | }, |
| 1494 | + "notification-url": "https://packagist.org/downloads/", | ||
| 1085 | "license": [ | 1495 | "license": [ |
| 1086 | "MIT" | 1496 | "MIT" |
| 1087 | ], | 1497 | ], |
| @@ -1097,17 +1507,31 @@ | @@ -1097,17 +1507,31 @@ | ||
| 1097 | "container", | 1507 | "container", |
| 1098 | "dependency injection" | 1508 | "dependency injection" |
| 1099 | ], | 1509 | ], |
| 1510 | + "support": { | ||
| 1511 | + "source": "https://github.com/silexphp/Pimple/tree/v3.5.0" | ||
| 1512 | + }, | ||
| 1100 | "install-path": "../pimple/pimple" | 1513 | "install-path": "../pimple/pimple" |
| 1101 | }, | 1514 | }, |
| 1102 | { | 1515 | { |
| 1103 | "name": "psr/cache", | 1516 | "name": "psr/cache", |
| 1104 | "version": "1.0.1", | 1517 | "version": "1.0.1", |
| 1105 | "version_normalized": "1.0.1.0", | 1518 | "version_normalized": "1.0.1.0", |
| 1519 | + "source": { | ||
| 1520 | + "type": "git", | ||
| 1521 | + "url": "https://github.com/php-fig/cache.git", | ||
| 1522 | + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" | ||
| 1523 | + }, | ||
| 1106 | "dist": { | 1524 | "dist": { |
| 1107 | "type": "zip", | 1525 | "type": "zip", |
| 1108 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/psr/cache/1.0.1/psr-cache-1.0.1.zip", | 1526 | + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", |
| 1109 | "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", | 1527 | "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", |
| 1110 | - "shasum": "" | 1528 | + "shasum": "", |
| 1529 | + "mirrors": [ | ||
| 1530 | + { | ||
| 1531 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 1532 | + "preferred": true | ||
| 1533 | + } | ||
| 1534 | + ] | ||
| 1111 | }, | 1535 | }, |
| 1112 | "require": { | 1536 | "require": { |
| 1113 | "php": ">=5.3.0" | 1537 | "php": ">=5.3.0" |
| @@ -1125,6 +1549,7 @@ | @@ -1125,6 +1549,7 @@ | ||
| 1125 | "Psr\\Cache\\": "src/" | 1549 | "Psr\\Cache\\": "src/" |
| 1126 | } | 1550 | } |
| 1127 | }, | 1551 | }, |
| 1552 | + "notification-url": "https://packagist.org/downloads/", | ||
| 1128 | "license": [ | 1553 | "license": [ |
| 1129 | "MIT" | 1554 | "MIT" |
| 1130 | ], | 1555 | ], |
| @@ -1140,17 +1565,31 @@ | @@ -1140,17 +1565,31 @@ | ||
| 1140 | "psr", | 1565 | "psr", |
| 1141 | "psr-6" | 1566 | "psr-6" |
| 1142 | ], | 1567 | ], |
| 1568 | + "support": { | ||
| 1569 | + "source": "https://github.com/php-fig/cache/tree/master" | ||
| 1570 | + }, | ||
| 1143 | "install-path": "../psr/cache" | 1571 | "install-path": "../psr/cache" |
| 1144 | }, | 1572 | }, |
| 1145 | { | 1573 | { |
| 1146 | "name": "psr/container", | 1574 | "name": "psr/container", |
| 1147 | "version": "2.0.2", | 1575 | "version": "2.0.2", |
| 1148 | "version_normalized": "2.0.2.0", | 1576 | "version_normalized": "2.0.2.0", |
| 1577 | + "source": { | ||
| 1578 | + "type": "git", | ||
| 1579 | + "url": "https://github.com/php-fig/container.git", | ||
| 1580 | + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" | ||
| 1581 | + }, | ||
| 1149 | "dist": { | 1582 | "dist": { |
| 1150 | "type": "zip", | 1583 | "type": "zip", |
| 1151 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/psr/container/2.0.2/psr-container-2.0.2.zip", | 1584 | + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", |
| 1152 | "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", | 1585 | "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", |
| 1153 | - "shasum": "" | 1586 | + "shasum": "", |
| 1587 | + "mirrors": [ | ||
| 1588 | + { | ||
| 1589 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 1590 | + "preferred": true | ||
| 1591 | + } | ||
| 1592 | + ] | ||
| 1154 | }, | 1593 | }, |
| 1155 | "require": { | 1594 | "require": { |
| 1156 | "php": ">=7.4.0" | 1595 | "php": ">=7.4.0" |
| @@ -1168,6 +1607,7 @@ | @@ -1168,6 +1607,7 @@ | ||
| 1168 | "Psr\\Container\\": "src/" | 1607 | "Psr\\Container\\": "src/" |
| 1169 | } | 1608 | } |
| 1170 | }, | 1609 | }, |
| 1610 | + "notification-url": "https://packagist.org/downloads/", | ||
| 1171 | "license": [ | 1611 | "license": [ |
| 1172 | "MIT" | 1612 | "MIT" |
| 1173 | ], | 1613 | ], |
| @@ -1186,17 +1626,32 @@ | @@ -1186,17 +1626,32 @@ | ||
| 1186 | "container-interop", | 1626 | "container-interop", |
| 1187 | "psr" | 1627 | "psr" |
| 1188 | ], | 1628 | ], |
| 1629 | + "support": { | ||
| 1630 | + "issues": "https://github.com/php-fig/container/issues", | ||
| 1631 | + "source": "https://github.com/php-fig/container/tree/2.0.2" | ||
| 1632 | + }, | ||
| 1189 | "install-path": "../psr/container" | 1633 | "install-path": "../psr/container" |
| 1190 | }, | 1634 | }, |
| 1191 | { | 1635 | { |
| 1192 | "name": "psr/event-dispatcher", | 1636 | "name": "psr/event-dispatcher", |
| 1193 | "version": "1.0.0", | 1637 | "version": "1.0.0", |
| 1194 | "version_normalized": "1.0.0.0", | 1638 | "version_normalized": "1.0.0.0", |
| 1639 | + "source": { | ||
| 1640 | + "type": "git", | ||
| 1641 | + "url": "https://github.com/php-fig/event-dispatcher.git", | ||
| 1642 | + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" | ||
| 1643 | + }, | ||
| 1195 | "dist": { | 1644 | "dist": { |
| 1196 | "type": "zip", | 1645 | "type": "zip", |
| 1197 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/psr/event-dispatcher/1.0.0/psr-event-dispatcher-1.0.0.zip", | 1646 | + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", |
| 1198 | "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", | 1647 | "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", |
| 1199 | - "shasum": "" | 1648 | + "shasum": "", |
| 1649 | + "mirrors": [ | ||
| 1650 | + { | ||
| 1651 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 1652 | + "preferred": true | ||
| 1653 | + } | ||
| 1654 | + ] | ||
| 1200 | }, | 1655 | }, |
| 1201 | "require": { | 1656 | "require": { |
| 1202 | "php": ">=7.2.0" | 1657 | "php": ">=7.2.0" |
| @@ -1214,6 +1669,7 @@ | @@ -1214,6 +1669,7 @@ | ||
| 1214 | "Psr\\EventDispatcher\\": "src/" | 1669 | "Psr\\EventDispatcher\\": "src/" |
| 1215 | } | 1670 | } |
| 1216 | }, | 1671 | }, |
| 1672 | + "notification-url": "https://packagist.org/downloads/", | ||
| 1217 | "license": [ | 1673 | "license": [ |
| 1218 | "MIT" | 1674 | "MIT" |
| 1219 | ], | 1675 | ], |
| @@ -1229,17 +1685,32 @@ | @@ -1229,17 +1685,32 @@ | ||
| 1229 | "psr", | 1685 | "psr", |
| 1230 | "psr-14" | 1686 | "psr-14" |
| 1231 | ], | 1687 | ], |
| 1688 | + "support": { | ||
| 1689 | + "issues": "https://github.com/php-fig/event-dispatcher/issues", | ||
| 1690 | + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" | ||
| 1691 | + }, | ||
| 1232 | "install-path": "../psr/event-dispatcher" | 1692 | "install-path": "../psr/event-dispatcher" |
| 1233 | }, | 1693 | }, |
| 1234 | { | 1694 | { |
| 1235 | "name": "psr/http-client", | 1695 | "name": "psr/http-client", |
| 1236 | "version": "1.0.1", | 1696 | "version": "1.0.1", |
| 1237 | "version_normalized": "1.0.1.0", | 1697 | "version_normalized": "1.0.1.0", |
| 1698 | + "source": { | ||
| 1699 | + "type": "git", | ||
| 1700 | + "url": "https://github.com/php-fig/http-client.git", | ||
| 1701 | + "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" | ||
| 1702 | + }, | ||
| 1238 | "dist": { | 1703 | "dist": { |
| 1239 | "type": "zip", | 1704 | "type": "zip", |
| 1240 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/psr/http-client/1.0.1/psr-http-client-1.0.1.zip", | 1705 | + "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", |
| 1241 | "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", | 1706 | "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", |
| 1242 | - "shasum": "" | 1707 | + "shasum": "", |
| 1708 | + "mirrors": [ | ||
| 1709 | + { | ||
| 1710 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 1711 | + "preferred": true | ||
| 1712 | + } | ||
| 1713 | + ] | ||
| 1243 | }, | 1714 | }, |
| 1244 | "require": { | 1715 | "require": { |
| 1245 | "php": "^7.0 || ^8.0", | 1716 | "php": "^7.0 || ^8.0", |
| @@ -1258,6 +1729,7 @@ | @@ -1258,6 +1729,7 @@ | ||
| 1258 | "Psr\\Http\\Client\\": "src/" | 1729 | "Psr\\Http\\Client\\": "src/" |
| 1259 | } | 1730 | } |
| 1260 | }, | 1731 | }, |
| 1732 | + "notification-url": "https://packagist.org/downloads/", | ||
| 1261 | "license": [ | 1733 | "license": [ |
| 1262 | "MIT" | 1734 | "MIT" |
| 1263 | ], | 1735 | ], |
| @@ -1275,23 +1747,37 @@ | @@ -1275,23 +1747,37 @@ | ||
| 1275 | "psr", | 1747 | "psr", |
| 1276 | "psr-18" | 1748 | "psr-18" |
| 1277 | ], | 1749 | ], |
| 1750 | + "support": { | ||
| 1751 | + "source": "https://github.com/php-fig/http-client/tree/master" | ||
| 1752 | + }, | ||
| 1278 | "install-path": "../psr/http-client" | 1753 | "install-path": "../psr/http-client" |
| 1279 | }, | 1754 | }, |
| 1280 | { | 1755 | { |
| 1281 | "name": "psr/http-factory", | 1756 | "name": "psr/http-factory", |
| 1282 | - "version": "1.0.1", | ||
| 1283 | - "version_normalized": "1.0.1.0", | 1757 | + "version": "1.0.2", |
| 1758 | + "version_normalized": "1.0.2.0", | ||
| 1759 | + "source": { | ||
| 1760 | + "type": "git", | ||
| 1761 | + "url": "https://github.com/php-fig/http-factory.git", | ||
| 1762 | + "reference": "e616d01114759c4c489f93b099585439f795fe35" | ||
| 1763 | + }, | ||
| 1284 | "dist": { | 1764 | "dist": { |
| 1285 | "type": "zip", | 1765 | "type": "zip", |
| 1286 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/psr/http-factory/1.0.1/psr-http-factory-1.0.1.zip", | ||
| 1287 | - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", | ||
| 1288 | - "shasum": "" | 1766 | + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", |
| 1767 | + "reference": "e616d01114759c4c489f93b099585439f795fe35", | ||
| 1768 | + "shasum": "", | ||
| 1769 | + "mirrors": [ | ||
| 1770 | + { | ||
| 1771 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 1772 | + "preferred": true | ||
| 1773 | + } | ||
| 1774 | + ] | ||
| 1289 | }, | 1775 | }, |
| 1290 | "require": { | 1776 | "require": { |
| 1291 | "php": ">=7.0.0", | 1777 | "php": ">=7.0.0", |
| 1292 | - "psr/http-message": "^1.0" | 1778 | + "psr/http-message": "^1.0 || ^2.0" |
| 1293 | }, | 1779 | }, |
| 1294 | - "time": "2019-04-30T12:38:16+00:00", | 1780 | + "time": "2023-04-10T20:10:41+00:00", |
| 1295 | "type": "library", | 1781 | "type": "library", |
| 1296 | "extra": { | 1782 | "extra": { |
| 1297 | "branch-alias": { | 1783 | "branch-alias": { |
| @@ -1304,13 +1790,14 @@ | @@ -1304,13 +1790,14 @@ | ||
| 1304 | "Psr\\Http\\Message\\": "src/" | 1790 | "Psr\\Http\\Message\\": "src/" |
| 1305 | } | 1791 | } |
| 1306 | }, | 1792 | }, |
| 1793 | + "notification-url": "https://packagist.org/downloads/", | ||
| 1307 | "license": [ | 1794 | "license": [ |
| 1308 | "MIT" | 1795 | "MIT" |
| 1309 | ], | 1796 | ], |
| 1310 | "authors": [ | 1797 | "authors": [ |
| 1311 | { | 1798 | { |
| 1312 | "name": "PHP-FIG", | 1799 | "name": "PHP-FIG", |
| 1313 | - "homepage": "http://www.php-fig.org/" | 1800 | + "homepage": "https://www.php-fig.org/" |
| 1314 | } | 1801 | } |
| 1315 | ], | 1802 | ], |
| 1316 | "description": "Common interfaces for PSR-7 HTTP message factories", | 1803 | "description": "Common interfaces for PSR-7 HTTP message factories", |
| @@ -1324,26 +1811,40 @@ | @@ -1324,26 +1811,40 @@ | ||
| 1324 | "request", | 1811 | "request", |
| 1325 | "response" | 1812 | "response" |
| 1326 | ], | 1813 | ], |
| 1814 | + "support": { | ||
| 1815 | + "source": "https://github.com/php-fig/http-factory/tree/1.0.2" | ||
| 1816 | + }, | ||
| 1327 | "install-path": "../psr/http-factory" | 1817 | "install-path": "../psr/http-factory" |
| 1328 | }, | 1818 | }, |
| 1329 | { | 1819 | { |
| 1330 | "name": "psr/http-message", | 1820 | "name": "psr/http-message", |
| 1331 | - "version": "1.0.1", | ||
| 1332 | - "version_normalized": "1.0.1.0", | 1821 | + "version": "1.1", |
| 1822 | + "version_normalized": "1.1.0.0", | ||
| 1823 | + "source": { | ||
| 1824 | + "type": "git", | ||
| 1825 | + "url": "https://github.com/php-fig/http-message.git", | ||
| 1826 | + "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba" | ||
| 1827 | + }, | ||
| 1333 | "dist": { | 1828 | "dist": { |
| 1334 | "type": "zip", | 1829 | "type": "zip", |
| 1335 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/psr/http-message/1.0.1/psr-http-message-1.0.1.zip", | ||
| 1336 | - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", | ||
| 1337 | - "shasum": "" | 1830 | + "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba", |
| 1831 | + "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba", | ||
| 1832 | + "shasum": "", | ||
| 1833 | + "mirrors": [ | ||
| 1834 | + { | ||
| 1835 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 1836 | + "preferred": true | ||
| 1837 | + } | ||
| 1838 | + ] | ||
| 1338 | }, | 1839 | }, |
| 1339 | "require": { | 1840 | "require": { |
| 1340 | - "php": ">=5.3.0" | 1841 | + "php": "^7.2 || ^8.0" |
| 1341 | }, | 1842 | }, |
| 1342 | - "time": "2016-08-06T14:39:51+00:00", | 1843 | + "time": "2023-04-04T09:50:52+00:00", |
| 1343 | "type": "library", | 1844 | "type": "library", |
| 1344 | "extra": { | 1845 | "extra": { |
| 1345 | "branch-alias": { | 1846 | "branch-alias": { |
| 1346 | - "dev-master": "1.0.x-dev" | 1847 | + "dev-master": "1.1.x-dev" |
| 1347 | } | 1848 | } |
| 1348 | }, | 1849 | }, |
| 1349 | "installation-source": "dist", | 1850 | "installation-source": "dist", |
| @@ -1352,6 +1853,7 @@ | @@ -1352,6 +1853,7 @@ | ||
| 1352 | "Psr\\Http\\Message\\": "src/" | 1853 | "Psr\\Http\\Message\\": "src/" |
| 1353 | } | 1854 | } |
| 1354 | }, | 1855 | }, |
| 1856 | + "notification-url": "https://packagist.org/downloads/", | ||
| 1355 | "license": [ | 1857 | "license": [ |
| 1356 | "MIT" | 1858 | "MIT" |
| 1357 | ], | 1859 | ], |
| @@ -1371,17 +1873,31 @@ | @@ -1371,17 +1873,31 @@ | ||
| 1371 | "request", | 1873 | "request", |
| 1372 | "response" | 1874 | "response" |
| 1373 | ], | 1875 | ], |
| 1876 | + "support": { | ||
| 1877 | + "source": "https://github.com/php-fig/http-message/tree/1.1" | ||
| 1878 | + }, | ||
| 1374 | "install-path": "../psr/http-message" | 1879 | "install-path": "../psr/http-message" |
| 1375 | }, | 1880 | }, |
| 1376 | { | 1881 | { |
| 1377 | "name": "psr/log", | 1882 | "name": "psr/log", |
| 1378 | "version": "1.1.4", | 1883 | "version": "1.1.4", |
| 1379 | "version_normalized": "1.1.4.0", | 1884 | "version_normalized": "1.1.4.0", |
| 1885 | + "source": { | ||
| 1886 | + "type": "git", | ||
| 1887 | + "url": "https://github.com/php-fig/log.git", | ||
| 1888 | + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" | ||
| 1889 | + }, | ||
| 1380 | "dist": { | 1890 | "dist": { |
| 1381 | "type": "zip", | 1891 | "type": "zip", |
| 1382 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/psr/log/1.1.4/psr-log-1.1.4.zip", | 1892 | + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", |
| 1383 | "reference": "d49695b909c3b7628b6289db5479a1c204601f11", | 1893 | "reference": "d49695b909c3b7628b6289db5479a1c204601f11", |
| 1384 | - "shasum": "" | 1894 | + "shasum": "", |
| 1895 | + "mirrors": [ | ||
| 1896 | + { | ||
| 1897 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 1898 | + "preferred": true | ||
| 1899 | + } | ||
| 1900 | + ] | ||
| 1385 | }, | 1901 | }, |
| 1386 | "require": { | 1902 | "require": { |
| 1387 | "php": ">=5.3.0" | 1903 | "php": ">=5.3.0" |
| @@ -1399,6 +1915,7 @@ | @@ -1399,6 +1915,7 @@ | ||
| 1399 | "Psr\\Log\\": "Psr/Log/" | 1915 | "Psr\\Log\\": "Psr/Log/" |
| 1400 | } | 1916 | } |
| 1401 | }, | 1917 | }, |
| 1918 | + "notification-url": "https://packagist.org/downloads/", | ||
| 1402 | "license": [ | 1919 | "license": [ |
| 1403 | "MIT" | 1920 | "MIT" |
| 1404 | ], | 1921 | ], |
| @@ -1415,17 +1932,31 @@ | @@ -1415,17 +1932,31 @@ | ||
| 1415 | "psr", | 1932 | "psr", |
| 1416 | "psr-3" | 1933 | "psr-3" |
| 1417 | ], | 1934 | ], |
| 1935 | + "support": { | ||
| 1936 | + "source": "https://github.com/php-fig/log/tree/1.1.4" | ||
| 1937 | + }, | ||
| 1418 | "install-path": "../psr/log" | 1938 | "install-path": "../psr/log" |
| 1419 | }, | 1939 | }, |
| 1420 | { | 1940 | { |
| 1421 | "name": "psr/simple-cache", | 1941 | "name": "psr/simple-cache", |
| 1422 | "version": "1.0.1", | 1942 | "version": "1.0.1", |
| 1423 | "version_normalized": "1.0.1.0", | 1943 | "version_normalized": "1.0.1.0", |
| 1944 | + "source": { | ||
| 1945 | + "type": "git", | ||
| 1946 | + "url": "https://github.com/php-fig/simple-cache.git", | ||
| 1947 | + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" | ||
| 1948 | + }, | ||
| 1424 | "dist": { | 1949 | "dist": { |
| 1425 | "type": "zip", | 1950 | "type": "zip", |
| 1426 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/psr/simple-cache/1.0.1/psr-simple-cache-1.0.1.zip", | 1951 | + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", |
| 1427 | "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", | 1952 | "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", |
| 1428 | - "shasum": "" | 1953 | + "shasum": "", |
| 1954 | + "mirrors": [ | ||
| 1955 | + { | ||
| 1956 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 1957 | + "preferred": true | ||
| 1958 | + } | ||
| 1959 | + ] | ||
| 1429 | }, | 1960 | }, |
| 1430 | "require": { | 1961 | "require": { |
| 1431 | "php": ">=5.3.0" | 1962 | "php": ">=5.3.0" |
| @@ -1443,6 +1974,7 @@ | @@ -1443,6 +1974,7 @@ | ||
| 1443 | "Psr\\SimpleCache\\": "src/" | 1974 | "Psr\\SimpleCache\\": "src/" |
| 1444 | } | 1975 | } |
| 1445 | }, | 1976 | }, |
| 1977 | + "notification-url": "https://packagist.org/downloads/", | ||
| 1446 | "license": [ | 1978 | "license": [ |
| 1447 | "MIT" | 1979 | "MIT" |
| 1448 | ], | 1980 | ], |
| @@ -1460,17 +1992,31 @@ | @@ -1460,17 +1992,31 @@ | ||
| 1460 | "psr-16", | 1992 | "psr-16", |
| 1461 | "simple-cache" | 1993 | "simple-cache" |
| 1462 | ], | 1994 | ], |
| 1995 | + "support": { | ||
| 1996 | + "source": "https://github.com/php-fig/simple-cache/tree/master" | ||
| 1997 | + }, | ||
| 1463 | "install-path": "../psr/simple-cache" | 1998 | "install-path": "../psr/simple-cache" |
| 1464 | }, | 1999 | }, |
| 1465 | { | 2000 | { |
| 1466 | "name": "ralouphie/getallheaders", | 2001 | "name": "ralouphie/getallheaders", |
| 1467 | "version": "3.0.3", | 2002 | "version": "3.0.3", |
| 1468 | "version_normalized": "3.0.3.0", | 2003 | "version_normalized": "3.0.3.0", |
| 2004 | + "source": { | ||
| 2005 | + "type": "git", | ||
| 2006 | + "url": "https://github.com/ralouphie/getallheaders.git", | ||
| 2007 | + "reference": "120b605dfeb996808c31b6477290a714d356e822" | ||
| 2008 | + }, | ||
| 1469 | "dist": { | 2009 | "dist": { |
| 1470 | "type": "zip", | 2010 | "type": "zip", |
| 1471 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/ralouphie/getallheaders/3.0.3/ralouphie-getallheaders-3.0.3.zip", | 2011 | + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", |
| 1472 | "reference": "120b605dfeb996808c31b6477290a714d356e822", | 2012 | "reference": "120b605dfeb996808c31b6477290a714d356e822", |
| 1473 | - "shasum": "" | 2013 | + "shasum": "", |
| 2014 | + "mirrors": [ | ||
| 2015 | + { | ||
| 2016 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 2017 | + "preferred": true | ||
| 2018 | + } | ||
| 2019 | + ] | ||
| 1474 | }, | 2020 | }, |
| 1475 | "require": { | 2021 | "require": { |
| 1476 | "php": ">=5.6" | 2022 | "php": ">=5.6" |
| @@ -1487,6 +2033,7 @@ | @@ -1487,6 +2033,7 @@ | ||
| 1487 | "src/getallheaders.php" | 2033 | "src/getallheaders.php" |
| 1488 | ] | 2034 | ] |
| 1489 | }, | 2035 | }, |
| 2036 | + "notification-url": "https://packagist.org/downloads/", | ||
| 1490 | "license": [ | 2037 | "license": [ |
| 1491 | "MIT" | 2038 | "MIT" |
| 1492 | ], | 2039 | ], |
| @@ -1497,17 +2044,32 @@ | @@ -1497,17 +2044,32 @@ | ||
| 1497 | } | 2044 | } |
| 1498 | ], | 2045 | ], |
| 1499 | "description": "A polyfill for getallheaders.", | 2046 | "description": "A polyfill for getallheaders.", |
| 2047 | + "support": { | ||
| 2048 | + "issues": "https://github.com/ralouphie/getallheaders/issues", | ||
| 2049 | + "source": "https://github.com/ralouphie/getallheaders/tree/develop" | ||
| 2050 | + }, | ||
| 1500 | "install-path": "../ralouphie/getallheaders" | 2051 | "install-path": "../ralouphie/getallheaders" |
| 1501 | }, | 2052 | }, |
| 1502 | { | 2053 | { |
| 1503 | "name": "symfony/cache", | 2054 | "name": "symfony/cache", |
| 1504 | - "version": "v5.4.15", | ||
| 1505 | - "version_normalized": "5.4.15.0", | 2055 | + "version": "v5.4.23", |
| 2056 | + "version_normalized": "5.4.23.0", | ||
| 2057 | + "source": { | ||
| 2058 | + "type": "git", | ||
| 2059 | + "url": "https://github.com/symfony/cache.git", | ||
| 2060 | + "reference": "983c79ff28612cdfd66d8e44e1a06e5afc87e107" | ||
| 2061 | + }, | ||
| 1506 | "dist": { | 2062 | "dist": { |
| 1507 | "type": "zip", | 2063 | "type": "zip", |
| 1508 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/symfony/cache/v5.4.15/symfony-cache-v5.4.15.zip", | ||
| 1509 | - "reference": "60e87188abbacd29ccde44d69c5392a33e888e98", | ||
| 1510 | - "shasum": "" | 2064 | + "url": "https://api.github.com/repos/symfony/cache/zipball/983c79ff28612cdfd66d8e44e1a06e5afc87e107", |
| 2065 | + "reference": "983c79ff28612cdfd66d8e44e1a06e5afc87e107", | ||
| 2066 | + "shasum": "", | ||
| 2067 | + "mirrors": [ | ||
| 2068 | + { | ||
| 2069 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 2070 | + "preferred": true | ||
| 2071 | + } | ||
| 2072 | + ] | ||
| 1511 | }, | 2073 | }, |
| 1512 | "require": { | 2074 | "require": { |
| 1513 | "php": ">=7.2.5", | 2075 | "php": ">=7.2.5", |
| @@ -1544,7 +2106,7 @@ | @@ -1544,7 +2106,7 @@ | ||
| 1544 | "symfony/messenger": "^4.4|^5.0|^6.0", | 2106 | "symfony/messenger": "^4.4|^5.0|^6.0", |
| 1545 | "symfony/var-dumper": "^4.4|^5.0|^6.0" | 2107 | "symfony/var-dumper": "^4.4|^5.0|^6.0" |
| 1546 | }, | 2108 | }, |
| 1547 | - "time": "2022-10-27T07:55:40+00:00", | 2109 | + "time": "2023-04-21T15:38:51+00:00", |
| 1548 | "type": "library", | 2110 | "type": "library", |
| 1549 | "installation-source": "dist", | 2111 | "installation-source": "dist", |
| 1550 | "autoload": { | 2112 | "autoload": { |
| @@ -1555,6 +2117,7 @@ | @@ -1555,6 +2117,7 @@ | ||
| 1555 | "/Tests/" | 2117 | "/Tests/" |
| 1556 | ] | 2118 | ] |
| 1557 | }, | 2119 | }, |
| 2120 | + "notification-url": "https://packagist.org/downloads/", | ||
| 1558 | "license": [ | 2121 | "license": [ |
| 1559 | "MIT" | 2122 | "MIT" |
| 1560 | ], | 2123 | ], |
| @@ -1574,17 +2137,45 @@ | @@ -1574,17 +2137,45 @@ | ||
| 1574 | "caching", | 2137 | "caching", |
| 1575 | "psr6" | 2138 | "psr6" |
| 1576 | ], | 2139 | ], |
| 2140 | + "support": { | ||
| 2141 | + "source": "https://github.com/symfony/cache/tree/v5.4.23" | ||
| 2142 | + }, | ||
| 2143 | + "funding": [ | ||
| 2144 | + { | ||
| 2145 | + "url": "https://symfony.com/sponsor", | ||
| 2146 | + "type": "custom" | ||
| 2147 | + }, | ||
| 2148 | + { | ||
| 2149 | + "url": "https://github.com/fabpot", | ||
| 2150 | + "type": "github" | ||
| 2151 | + }, | ||
| 2152 | + { | ||
| 2153 | + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", | ||
| 2154 | + "type": "tidelift" | ||
| 2155 | + } | ||
| 2156 | + ], | ||
| 1577 | "install-path": "../symfony/cache" | 2157 | "install-path": "../symfony/cache" |
| 1578 | }, | 2158 | }, |
| 1579 | { | 2159 | { |
| 1580 | "name": "symfony/cache-contracts", | 2160 | "name": "symfony/cache-contracts", |
| 1581 | "version": "v2.5.2", | 2161 | "version": "v2.5.2", |
| 1582 | "version_normalized": "2.5.2.0", | 2162 | "version_normalized": "2.5.2.0", |
| 2163 | + "source": { | ||
| 2164 | + "type": "git", | ||
| 2165 | + "url": "https://github.com/symfony/cache-contracts.git", | ||
| 2166 | + "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc" | ||
| 2167 | + }, | ||
| 1583 | "dist": { | 2168 | "dist": { |
| 1584 | "type": "zip", | 2169 | "type": "zip", |
| 1585 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/symfony/cache-contracts/v2.5.2/symfony-cache-contracts-v2.5.2.zip", | 2170 | + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", |
| 1586 | "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", | 2171 | "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", |
| 1587 | - "shasum": "" | 2172 | + "shasum": "", |
| 2173 | + "mirrors": [ | ||
| 2174 | + { | ||
| 2175 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 2176 | + "preferred": true | ||
| 2177 | + } | ||
| 2178 | + ] | ||
| 1588 | }, | 2179 | }, |
| 1589 | "require": { | 2180 | "require": { |
| 1590 | "php": ">=7.2.5", | 2181 | "php": ">=7.2.5", |
| @@ -1610,6 +2201,7 @@ | @@ -1610,6 +2201,7 @@ | ||
| 1610 | "Symfony\\Contracts\\Cache\\": "" | 2201 | "Symfony\\Contracts\\Cache\\": "" |
| 1611 | } | 2202 | } |
| 1612 | }, | 2203 | }, |
| 2204 | + "notification-url": "https://packagist.org/downloads/", | ||
| 1613 | "license": [ | 2205 | "license": [ |
| 1614 | "MIT" | 2206 | "MIT" |
| 1615 | ], | 2207 | ], |
| @@ -1633,17 +2225,45 @@ | @@ -1633,17 +2225,45 @@ | ||
| 1633 | "interoperability", | 2225 | "interoperability", |
| 1634 | "standards" | 2226 | "standards" |
| 1635 | ], | 2227 | ], |
| 2228 | + "support": { | ||
| 2229 | + "source": "https://github.com/symfony/cache-contracts/tree/v2.5.2" | ||
| 2230 | + }, | ||
| 2231 | + "funding": [ | ||
| 2232 | + { | ||
| 2233 | + "url": "https://symfony.com/sponsor", | ||
| 2234 | + "type": "custom" | ||
| 2235 | + }, | ||
| 2236 | + { | ||
| 2237 | + "url": "https://github.com/fabpot", | ||
| 2238 | + "type": "github" | ||
| 2239 | + }, | ||
| 2240 | + { | ||
| 2241 | + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", | ||
| 2242 | + "type": "tidelift" | ||
| 2243 | + } | ||
| 2244 | + ], | ||
| 1636 | "install-path": "../symfony/cache-contracts" | 2245 | "install-path": "../symfony/cache-contracts" |
| 1637 | }, | 2246 | }, |
| 1638 | { | 2247 | { |
| 1639 | "name": "symfony/deprecation-contracts", | 2248 | "name": "symfony/deprecation-contracts", |
| 1640 | "version": "v2.5.2", | 2249 | "version": "v2.5.2", |
| 1641 | "version_normalized": "2.5.2.0", | 2250 | "version_normalized": "2.5.2.0", |
| 2251 | + "source": { | ||
| 2252 | + "type": "git", | ||
| 2253 | + "url": "https://github.com/symfony/deprecation-contracts.git", | ||
| 2254 | + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" | ||
| 2255 | + }, | ||
| 1642 | "dist": { | 2256 | "dist": { |
| 1643 | "type": "zip", | 2257 | "type": "zip", |
| 1644 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/symfony/deprecation-contracts/v2.5.2/symfony-deprecation-contracts-v2.5.2.zip", | 2258 | + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", |
| 1645 | "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", | 2259 | "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", |
| 1646 | - "shasum": "" | 2260 | + "shasum": "", |
| 2261 | + "mirrors": [ | ||
| 2262 | + { | ||
| 2263 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 2264 | + "preferred": true | ||
| 2265 | + } | ||
| 2266 | + ] | ||
| 1647 | }, | 2267 | }, |
| 1648 | "require": { | 2268 | "require": { |
| 1649 | "php": ">=7.1" | 2269 | "php": ">=7.1" |
| @@ -1665,6 +2285,7 @@ | @@ -1665,6 +2285,7 @@ | ||
| 1665 | "function.php" | 2285 | "function.php" |
| 1666 | ] | 2286 | ] |
| 1667 | }, | 2287 | }, |
| 2288 | + "notification-url": "https://packagist.org/downloads/", | ||
| 1668 | "license": [ | 2289 | "license": [ |
| 1669 | "MIT" | 2290 | "MIT" |
| 1670 | ], | 2291 | ], |
| @@ -1680,17 +2301,45 @@ | @@ -1680,17 +2301,45 @@ | ||
| 1680 | ], | 2301 | ], |
| 1681 | "description": "A generic function and convention to trigger deprecation notices", | 2302 | "description": "A generic function and convention to trigger deprecation notices", |
| 1682 | "homepage": "https://symfony.com", | 2303 | "homepage": "https://symfony.com", |
| 2304 | + "support": { | ||
| 2305 | + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" | ||
| 2306 | + }, | ||
| 2307 | + "funding": [ | ||
| 2308 | + { | ||
| 2309 | + "url": "https://symfony.com/sponsor", | ||
| 2310 | + "type": "custom" | ||
| 2311 | + }, | ||
| 2312 | + { | ||
| 2313 | + "url": "https://github.com/fabpot", | ||
| 2314 | + "type": "github" | ||
| 2315 | + }, | ||
| 2316 | + { | ||
| 2317 | + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", | ||
| 2318 | + "type": "tidelift" | ||
| 2319 | + } | ||
| 2320 | + ], | ||
| 1683 | "install-path": "../symfony/deprecation-contracts" | 2321 | "install-path": "../symfony/deprecation-contracts" |
| 1684 | }, | 2322 | }, |
| 1685 | { | 2323 | { |
| 1686 | "name": "symfony/event-dispatcher", | 2324 | "name": "symfony/event-dispatcher", |
| 1687 | - "version": "v5.4.9", | ||
| 1688 | - "version_normalized": "5.4.9.0", | 2325 | + "version": "v5.4.22", |
| 2326 | + "version_normalized": "5.4.22.0", | ||
| 2327 | + "source": { | ||
| 2328 | + "type": "git", | ||
| 2329 | + "url": "https://github.com/symfony/event-dispatcher.git", | ||
| 2330 | + "reference": "1df20e45d56da29a4b1d8259dd6e950acbf1b13f" | ||
| 2331 | + }, | ||
| 1689 | "dist": { | 2332 | "dist": { |
| 1690 | "type": "zip", | 2333 | "type": "zip", |
| 1691 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/symfony/event-dispatcher/v5.4.9/symfony-event-dispatcher-v5.4.9.zip", | ||
| 1692 | - "reference": "8e6ce1cc0279e3ff3c8ff0f43813bc88d21ca1bc", | ||
| 1693 | - "shasum": "" | 2334 | + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/1df20e45d56da29a4b1d8259dd6e950acbf1b13f", |
| 2335 | + "reference": "1df20e45d56da29a4b1d8259dd6e950acbf1b13f", | ||
| 2336 | + "shasum": "", | ||
| 2337 | + "mirrors": [ | ||
| 2338 | + { | ||
| 2339 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 2340 | + "preferred": true | ||
| 2341 | + } | ||
| 2342 | + ] | ||
| 1694 | }, | 2343 | }, |
| 1695 | "require": { | 2344 | "require": { |
| 1696 | "php": ">=7.2.5", | 2345 | "php": ">=7.2.5", |
| @@ -1719,7 +2368,7 @@ | @@ -1719,7 +2368,7 @@ | ||
| 1719 | "symfony/dependency-injection": "", | 2368 | "symfony/dependency-injection": "", |
| 1720 | "symfony/http-kernel": "" | 2369 | "symfony/http-kernel": "" |
| 1721 | }, | 2370 | }, |
| 1722 | - "time": "2022-05-05T16:45:39+00:00", | 2371 | + "time": "2023-03-17T11:31:58+00:00", |
| 1723 | "type": "library", | 2372 | "type": "library", |
| 1724 | "installation-source": "dist", | 2373 | "installation-source": "dist", |
| 1725 | "autoload": { | 2374 | "autoload": { |
| @@ -1730,6 +2379,7 @@ | @@ -1730,6 +2379,7 @@ | ||
| 1730 | "/Tests/" | 2379 | "/Tests/" |
| 1731 | ] | 2380 | ] |
| 1732 | }, | 2381 | }, |
| 2382 | + "notification-url": "https://packagist.org/downloads/", | ||
| 1733 | "license": [ | 2383 | "license": [ |
| 1734 | "MIT" | 2384 | "MIT" |
| 1735 | ], | 2385 | ], |
| @@ -1745,17 +2395,45 @@ | @@ -1745,17 +2395,45 @@ | ||
| 1745 | ], | 2395 | ], |
| 1746 | "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", | 2396 | "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", |
| 1747 | "homepage": "https://symfony.com", | 2397 | "homepage": "https://symfony.com", |
| 2398 | + "support": { | ||
| 2399 | + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.22" | ||
| 2400 | + }, | ||
| 2401 | + "funding": [ | ||
| 2402 | + { | ||
| 2403 | + "url": "https://symfony.com/sponsor", | ||
| 2404 | + "type": "custom" | ||
| 2405 | + }, | ||
| 2406 | + { | ||
| 2407 | + "url": "https://github.com/fabpot", | ||
| 2408 | + "type": "github" | ||
| 2409 | + }, | ||
| 2410 | + { | ||
| 2411 | + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", | ||
| 2412 | + "type": "tidelift" | ||
| 2413 | + } | ||
| 2414 | + ], | ||
| 1748 | "install-path": "../symfony/event-dispatcher" | 2415 | "install-path": "../symfony/event-dispatcher" |
| 1749 | }, | 2416 | }, |
| 1750 | { | 2417 | { |
| 1751 | "name": "symfony/event-dispatcher-contracts", | 2418 | "name": "symfony/event-dispatcher-contracts", |
| 1752 | "version": "v2.5.2", | 2419 | "version": "v2.5.2", |
| 1753 | "version_normalized": "2.5.2.0", | 2420 | "version_normalized": "2.5.2.0", |
| 2421 | + "source": { | ||
| 2422 | + "type": "git", | ||
| 2423 | + "url": "https://github.com/symfony/event-dispatcher-contracts.git", | ||
| 2424 | + "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1" | ||
| 2425 | + }, | ||
| 1754 | "dist": { | 2426 | "dist": { |
| 1755 | "type": "zip", | 2427 | "type": "zip", |
| 1756 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/symfony/event-dispatcher-contracts/v2.5.2/symfony-event-dispatcher-contracts-v2.5.2.zip", | 2428 | + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/f98b54df6ad059855739db6fcbc2d36995283fe1", |
| 1757 | "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1", | 2429 | "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1", |
| 1758 | - "shasum": "" | 2430 | + "shasum": "", |
| 2431 | + "mirrors": [ | ||
| 2432 | + { | ||
| 2433 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 2434 | + "preferred": true | ||
| 2435 | + } | ||
| 2436 | + ] | ||
| 1759 | }, | 2437 | }, |
| 1760 | "require": { | 2438 | "require": { |
| 1761 | "php": ">=7.2.5", | 2439 | "php": ">=7.2.5", |
| @@ -1781,6 +2459,7 @@ | @@ -1781,6 +2459,7 @@ | ||
| 1781 | "Symfony\\Contracts\\EventDispatcher\\": "" | 2459 | "Symfony\\Contracts\\EventDispatcher\\": "" |
| 1782 | } | 2460 | } |
| 1783 | }, | 2461 | }, |
| 2462 | + "notification-url": "https://packagist.org/downloads/", | ||
| 1784 | "license": [ | 2463 | "license": [ |
| 1785 | "MIT" | 2464 | "MIT" |
| 1786 | ], | 2465 | ], |
| @@ -1804,24 +2483,52 @@ | @@ -1804,24 +2483,52 @@ | ||
| 1804 | "interoperability", | 2483 | "interoperability", |
| 1805 | "standards" | 2484 | "standards" |
| 1806 | ], | 2485 | ], |
| 2486 | + "support": { | ||
| 2487 | + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.5.2" | ||
| 2488 | + }, | ||
| 2489 | + "funding": [ | ||
| 2490 | + { | ||
| 2491 | + "url": "https://symfony.com/sponsor", | ||
| 2492 | + "type": "custom" | ||
| 2493 | + }, | ||
| 2494 | + { | ||
| 2495 | + "url": "https://github.com/fabpot", | ||
| 2496 | + "type": "github" | ||
| 2497 | + }, | ||
| 2498 | + { | ||
| 2499 | + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", | ||
| 2500 | + "type": "tidelift" | ||
| 2501 | + } | ||
| 2502 | + ], | ||
| 1807 | "install-path": "../symfony/event-dispatcher-contracts" | 2503 | "install-path": "../symfony/event-dispatcher-contracts" |
| 1808 | }, | 2504 | }, |
| 1809 | { | 2505 | { |
| 1810 | "name": "symfony/finder", | 2506 | "name": "symfony/finder", |
| 1811 | - "version": "v5.4.11", | ||
| 1812 | - "version_normalized": "5.4.11.0", | 2507 | + "version": "v5.4.21", |
| 2508 | + "version_normalized": "5.4.21.0", | ||
| 2509 | + "source": { | ||
| 2510 | + "type": "git", | ||
| 2511 | + "url": "https://github.com/symfony/finder.git", | ||
| 2512 | + "reference": "078e9a5e1871fcfe6a5ce421b539344c21afef19" | ||
| 2513 | + }, | ||
| 1813 | "dist": { | 2514 | "dist": { |
| 1814 | "type": "zip", | 2515 | "type": "zip", |
| 1815 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/symfony/finder/v5.4.11/symfony-finder-v5.4.11.zip", | ||
| 1816 | - "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c", | ||
| 1817 | - "shasum": "" | 2516 | + "url": "https://api.github.com/repos/symfony/finder/zipball/078e9a5e1871fcfe6a5ce421b539344c21afef19", |
| 2517 | + "reference": "078e9a5e1871fcfe6a5ce421b539344c21afef19", | ||
| 2518 | + "shasum": "", | ||
| 2519 | + "mirrors": [ | ||
| 2520 | + { | ||
| 2521 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 2522 | + "preferred": true | ||
| 2523 | + } | ||
| 2524 | + ] | ||
| 1818 | }, | 2525 | }, |
| 1819 | "require": { | 2526 | "require": { |
| 1820 | "php": ">=7.2.5", | 2527 | "php": ">=7.2.5", |
| 1821 | "symfony/deprecation-contracts": "^2.1|^3", | 2528 | "symfony/deprecation-contracts": "^2.1|^3", |
| 1822 | "symfony/polyfill-php80": "^1.16" | 2529 | "symfony/polyfill-php80": "^1.16" |
| 1823 | }, | 2530 | }, |
| 1824 | - "time": "2022-07-29T07:37:50+00:00", | 2531 | + "time": "2023-02-16T09:33:00+00:00", |
| 1825 | "type": "library", | 2532 | "type": "library", |
| 1826 | "installation-source": "dist", | 2533 | "installation-source": "dist", |
| 1827 | "autoload": { | 2534 | "autoload": { |
| @@ -1832,6 +2539,7 @@ | @@ -1832,6 +2539,7 @@ | ||
| 1832 | "/Tests/" | 2539 | "/Tests/" |
| 1833 | ] | 2540 | ] |
| 1834 | }, | 2541 | }, |
| 2542 | + "notification-url": "https://packagist.org/downloads/", | ||
| 1835 | "license": [ | 2543 | "license": [ |
| 1836 | "MIT" | 2544 | "MIT" |
| 1837 | ], | 2545 | ], |
| @@ -1847,17 +2555,45 @@ | @@ -1847,17 +2555,45 @@ | ||
| 1847 | ], | 2555 | ], |
| 1848 | "description": "Finds files and directories via an intuitive fluent interface", | 2556 | "description": "Finds files and directories via an intuitive fluent interface", |
| 1849 | "homepage": "https://symfony.com", | 2557 | "homepage": "https://symfony.com", |
| 2558 | + "support": { | ||
| 2559 | + "source": "https://github.com/symfony/finder/tree/v5.4.21" | ||
| 2560 | + }, | ||
| 2561 | + "funding": [ | ||
| 2562 | + { | ||
| 2563 | + "url": "https://symfony.com/sponsor", | ||
| 2564 | + "type": "custom" | ||
| 2565 | + }, | ||
| 2566 | + { | ||
| 2567 | + "url": "https://github.com/fabpot", | ||
| 2568 | + "type": "github" | ||
| 2569 | + }, | ||
| 2570 | + { | ||
| 2571 | + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", | ||
| 2572 | + "type": "tidelift" | ||
| 2573 | + } | ||
| 2574 | + ], | ||
| 1850 | "install-path": "../symfony/finder" | 2575 | "install-path": "../symfony/finder" |
| 1851 | }, | 2576 | }, |
| 1852 | { | 2577 | { |
| 1853 | "name": "symfony/http-foundation", | 2578 | "name": "symfony/http-foundation", |
| 1854 | - "version": "v5.4.16", | ||
| 1855 | - "version_normalized": "5.4.16.0", | 2579 | + "version": "v5.4.24", |
| 2580 | + "version_normalized": "5.4.24.0", | ||
| 2581 | + "source": { | ||
| 2582 | + "type": "git", | ||
| 2583 | + "url": "https://github.com/symfony/http-foundation.git", | ||
| 2584 | + "reference": "3c59f97f6249ce552a44f01b93bfcbd786a954f5" | ||
| 2585 | + }, | ||
| 1856 | "dist": { | 2586 | "dist": { |
| 1857 | "type": "zip", | 2587 | "type": "zip", |
| 1858 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/symfony/http-foundation/v5.4.16/symfony-http-foundation-v5.4.16.zip", | ||
| 1859 | - "reference": "5032c5849aef24741e1970cb03511b0dd131d838", | ||
| 1860 | - "shasum": "" | 2588 | + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/3c59f97f6249ce552a44f01b93bfcbd786a954f5", |
| 2589 | + "reference": "3c59f97f6249ce552a44f01b93bfcbd786a954f5", | ||
| 2590 | + "shasum": "", | ||
| 2591 | + "mirrors": [ | ||
| 2592 | + { | ||
| 2593 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 2594 | + "preferred": true | ||
| 2595 | + } | ||
| 2596 | + ] | ||
| 1861 | }, | 2597 | }, |
| 1862 | "require": { | 2598 | "require": { |
| 1863 | "php": ">=7.2.5", | 2599 | "php": ">=7.2.5", |
| @@ -1877,7 +2613,7 @@ | @@ -1877,7 +2613,7 @@ | ||
| 1877 | "suggest": { | 2613 | "suggest": { |
| 1878 | "symfony/mime": "To use the file extension guesser" | 2614 | "symfony/mime": "To use the file extension guesser" |
| 1879 | }, | 2615 | }, |
| 1880 | - "time": "2022-11-07T08:06:40+00:00", | 2616 | + "time": "2023-05-19T07:21:23+00:00", |
| 1881 | "type": "library", | 2617 | "type": "library", |
| 1882 | "installation-source": "dist", | 2618 | "installation-source": "dist", |
| 1883 | "autoload": { | 2619 | "autoload": { |
| @@ -1888,6 +2624,7 @@ | @@ -1888,6 +2624,7 @@ | ||
| 1888 | "/Tests/" | 2624 | "/Tests/" |
| 1889 | ] | 2625 | ] |
| 1890 | }, | 2626 | }, |
| 2627 | + "notification-url": "https://packagist.org/downloads/", | ||
| 1891 | "license": [ | 2628 | "license": [ |
| 1892 | "MIT" | 2629 | "MIT" |
| 1893 | ], | 2630 | ], |
| @@ -1903,17 +2640,45 @@ | @@ -1903,17 +2640,45 @@ | ||
| 1903 | ], | 2640 | ], |
| 1904 | "description": "Defines an object-oriented layer for the HTTP specification", | 2641 | "description": "Defines an object-oriented layer for the HTTP specification", |
| 1905 | "homepage": "https://symfony.com", | 2642 | "homepage": "https://symfony.com", |
| 2643 | + "support": { | ||
| 2644 | + "source": "https://github.com/symfony/http-foundation/tree/v5.4.24" | ||
| 2645 | + }, | ||
| 2646 | + "funding": [ | ||
| 2647 | + { | ||
| 2648 | + "url": "https://symfony.com/sponsor", | ||
| 2649 | + "type": "custom" | ||
| 2650 | + }, | ||
| 2651 | + { | ||
| 2652 | + "url": "https://github.com/fabpot", | ||
| 2653 | + "type": "github" | ||
| 2654 | + }, | ||
| 2655 | + { | ||
| 2656 | + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", | ||
| 2657 | + "type": "tidelift" | ||
| 2658 | + } | ||
| 2659 | + ], | ||
| 1906 | "install-path": "../symfony/http-foundation" | 2660 | "install-path": "../symfony/http-foundation" |
| 1907 | }, | 2661 | }, |
| 1908 | { | 2662 | { |
| 1909 | "name": "symfony/polyfill-mbstring", | 2663 | "name": "symfony/polyfill-mbstring", |
| 1910 | "version": "v1.27.0", | 2664 | "version": "v1.27.0", |
| 1911 | "version_normalized": "1.27.0.0", | 2665 | "version_normalized": "1.27.0.0", |
| 2666 | + "source": { | ||
| 2667 | + "type": "git", | ||
| 2668 | + "url": "https://github.com/symfony/polyfill-mbstring.git", | ||
| 2669 | + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" | ||
| 2670 | + }, | ||
| 1912 | "dist": { | 2671 | "dist": { |
| 1913 | "type": "zip", | 2672 | "type": "zip", |
| 1914 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/symfony/polyfill-mbstring/v1.27.0/symfony-polyfill-mbstring-v1.27.0.zip", | 2673 | + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", |
| 1915 | "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", | 2674 | "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", |
| 1916 | - "shasum": "" | 2675 | + "shasum": "", |
| 2676 | + "mirrors": [ | ||
| 2677 | + { | ||
| 2678 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 2679 | + "preferred": true | ||
| 2680 | + } | ||
| 2681 | + ] | ||
| 1917 | }, | 2682 | }, |
| 1918 | "require": { | 2683 | "require": { |
| 1919 | "php": ">=7.1" | 2684 | "php": ">=7.1" |
| @@ -1944,6 +2709,7 @@ | @@ -1944,6 +2709,7 @@ | ||
| 1944 | "Symfony\\Polyfill\\Mbstring\\": "" | 2709 | "Symfony\\Polyfill\\Mbstring\\": "" |
| 1945 | } | 2710 | } |
| 1946 | }, | 2711 | }, |
| 2712 | + "notification-url": "https://packagist.org/downloads/", | ||
| 1947 | "license": [ | 2713 | "license": [ |
| 1948 | "MIT" | 2714 | "MIT" |
| 1949 | ], | 2715 | ], |
| @@ -1966,17 +2732,45 @@ | @@ -1966,17 +2732,45 @@ | ||
| 1966 | "portable", | 2732 | "portable", |
| 1967 | "shim" | 2733 | "shim" |
| 1968 | ], | 2734 | ], |
| 2735 | + "support": { | ||
| 2736 | + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" | ||
| 2737 | + }, | ||
| 2738 | + "funding": [ | ||
| 2739 | + { | ||
| 2740 | + "url": "https://symfony.com/sponsor", | ||
| 2741 | + "type": "custom" | ||
| 2742 | + }, | ||
| 2743 | + { | ||
| 2744 | + "url": "https://github.com/fabpot", | ||
| 2745 | + "type": "github" | ||
| 2746 | + }, | ||
| 2747 | + { | ||
| 2748 | + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", | ||
| 2749 | + "type": "tidelift" | ||
| 2750 | + } | ||
| 2751 | + ], | ||
| 1969 | "install-path": "../symfony/polyfill-mbstring" | 2752 | "install-path": "../symfony/polyfill-mbstring" |
| 1970 | }, | 2753 | }, |
| 1971 | { | 2754 | { |
| 1972 | "name": "symfony/polyfill-php73", | 2755 | "name": "symfony/polyfill-php73", |
| 1973 | "version": "v1.27.0", | 2756 | "version": "v1.27.0", |
| 1974 | "version_normalized": "1.27.0.0", | 2757 | "version_normalized": "1.27.0.0", |
| 2758 | + "source": { | ||
| 2759 | + "type": "git", | ||
| 2760 | + "url": "https://github.com/symfony/polyfill-php73.git", | ||
| 2761 | + "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9" | ||
| 2762 | + }, | ||
| 1975 | "dist": { | 2763 | "dist": { |
| 1976 | "type": "zip", | 2764 | "type": "zip", |
| 1977 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/symfony/polyfill-php73/v1.27.0/symfony-polyfill-php73-v1.27.0.zip", | 2765 | + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9", |
| 1978 | "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9", | 2766 | "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9", |
| 1979 | - "shasum": "" | 2767 | + "shasum": "", |
| 2768 | + "mirrors": [ | ||
| 2769 | + { | ||
| 2770 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 2771 | + "preferred": true | ||
| 2772 | + } | ||
| 2773 | + ] | ||
| 1980 | }, | 2774 | }, |
| 1981 | "require": { | 2775 | "require": { |
| 1982 | "php": ">=7.1" | 2776 | "php": ">=7.1" |
| @@ -2004,6 +2798,7 @@ | @@ -2004,6 +2798,7 @@ | ||
| 2004 | "Resources/stubs" | 2798 | "Resources/stubs" |
| 2005 | ] | 2799 | ] |
| 2006 | }, | 2800 | }, |
| 2801 | + "notification-url": "https://packagist.org/downloads/", | ||
| 2007 | "license": [ | 2802 | "license": [ |
| 2008 | "MIT" | 2803 | "MIT" |
| 2009 | ], | 2804 | ], |
| @@ -2025,17 +2820,45 @@ | @@ -2025,17 +2820,45 @@ | ||
| 2025 | "portable", | 2820 | "portable", |
| 2026 | "shim" | 2821 | "shim" |
| 2027 | ], | 2822 | ], |
| 2823 | + "support": { | ||
| 2824 | + "source": "https://github.com/symfony/polyfill-php73/tree/v1.27.0" | ||
| 2825 | + }, | ||
| 2826 | + "funding": [ | ||
| 2827 | + { | ||
| 2828 | + "url": "https://symfony.com/sponsor", | ||
| 2829 | + "type": "custom" | ||
| 2830 | + }, | ||
| 2831 | + { | ||
| 2832 | + "url": "https://github.com/fabpot", | ||
| 2833 | + "type": "github" | ||
| 2834 | + }, | ||
| 2835 | + { | ||
| 2836 | + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", | ||
| 2837 | + "type": "tidelift" | ||
| 2838 | + } | ||
| 2839 | + ], | ||
| 2028 | "install-path": "../symfony/polyfill-php73" | 2840 | "install-path": "../symfony/polyfill-php73" |
| 2029 | }, | 2841 | }, |
| 2030 | { | 2842 | { |
| 2031 | "name": "symfony/polyfill-php80", | 2843 | "name": "symfony/polyfill-php80", |
| 2032 | "version": "v1.27.0", | 2844 | "version": "v1.27.0", |
| 2033 | "version_normalized": "1.27.0.0", | 2845 | "version_normalized": "1.27.0.0", |
| 2846 | + "source": { | ||
| 2847 | + "type": "git", | ||
| 2848 | + "url": "https://github.com/symfony/polyfill-php80.git", | ||
| 2849 | + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" | ||
| 2850 | + }, | ||
| 2034 | "dist": { | 2851 | "dist": { |
| 2035 | "type": "zip", | 2852 | "type": "zip", |
| 2036 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/symfony/polyfill-php80/v1.27.0/symfony-polyfill-php80-v1.27.0.zip", | 2853 | + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", |
| 2037 | "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", | 2854 | "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", |
| 2038 | - "shasum": "" | 2855 | + "shasum": "", |
| 2856 | + "mirrors": [ | ||
| 2857 | + { | ||
| 2858 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 2859 | + "preferred": true | ||
| 2860 | + } | ||
| 2861 | + ] | ||
| 2039 | }, | 2862 | }, |
| 2040 | "require": { | 2863 | "require": { |
| 2041 | "php": ">=7.1" | 2864 | "php": ">=7.1" |
| @@ -2063,6 +2886,7 @@ | @@ -2063,6 +2886,7 @@ | ||
| 2063 | "Resources/stubs" | 2886 | "Resources/stubs" |
| 2064 | ] | 2887 | ] |
| 2065 | }, | 2888 | }, |
| 2889 | + "notification-url": "https://packagist.org/downloads/", | ||
| 2066 | "license": [ | 2890 | "license": [ |
| 2067 | "MIT" | 2891 | "MIT" |
| 2068 | ], | 2892 | ], |
| @@ -2088,41 +2912,69 @@ | @@ -2088,41 +2912,69 @@ | ||
| 2088 | "portable", | 2912 | "portable", |
| 2089 | "shim" | 2913 | "shim" |
| 2090 | ], | 2914 | ], |
| 2915 | + "support": { | ||
| 2916 | + "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" | ||
| 2917 | + }, | ||
| 2918 | + "funding": [ | ||
| 2919 | + { | ||
| 2920 | + "url": "https://symfony.com/sponsor", | ||
| 2921 | + "type": "custom" | ||
| 2922 | + }, | ||
| 2923 | + { | ||
| 2924 | + "url": "https://github.com/fabpot", | ||
| 2925 | + "type": "github" | ||
| 2926 | + }, | ||
| 2927 | + { | ||
| 2928 | + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", | ||
| 2929 | + "type": "tidelift" | ||
| 2930 | + } | ||
| 2931 | + ], | ||
| 2091 | "install-path": "../symfony/polyfill-php80" | 2932 | "install-path": "../symfony/polyfill-php80" |
| 2092 | }, | 2933 | }, |
| 2093 | { | 2934 | { |
| 2094 | "name": "symfony/psr-http-message-bridge", | 2935 | "name": "symfony/psr-http-message-bridge", |
| 2095 | - "version": "v2.1.4", | ||
| 2096 | - "version_normalized": "2.1.4.0", | 2936 | + "version": "v2.2.0", |
| 2937 | + "version_normalized": "2.2.0.0", | ||
| 2938 | + "source": { | ||
| 2939 | + "type": "git", | ||
| 2940 | + "url": "https://github.com/symfony/psr-http-message-bridge.git", | ||
| 2941 | + "reference": "28a732c05bbad801304ad5a5c674cf2970508993" | ||
| 2942 | + }, | ||
| 2097 | "dist": { | 2943 | "dist": { |
| 2098 | "type": "zip", | 2944 | "type": "zip", |
| 2099 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/symfony/psr-http-message-bridge/v2.1.4/symfony-psr-http-message-bridge-v2.1.4.zip", | ||
| 2100 | - "reference": "a125b93ef378c492e274f217874906fb9babdebb", | ||
| 2101 | - "shasum": "" | 2945 | + "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/28a732c05bbad801304ad5a5c674cf2970508993", |
| 2946 | + "reference": "28a732c05bbad801304ad5a5c674cf2970508993", | ||
| 2947 | + "shasum": "", | ||
| 2948 | + "mirrors": [ | ||
| 2949 | + { | ||
| 2950 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 2951 | + "preferred": true | ||
| 2952 | + } | ||
| 2953 | + ] | ||
| 2102 | }, | 2954 | }, |
| 2103 | "require": { | 2955 | "require": { |
| 2104 | - "php": ">=7.1", | ||
| 2105 | - "psr/http-message": "^1.0", | ||
| 2106 | - "symfony/http-foundation": "^4.4 || ^5.0 || ^6.0" | 2956 | + "php": ">=7.2.5", |
| 2957 | + "psr/http-message": "^1.0 || ^2.0", | ||
| 2958 | + "symfony/http-foundation": "^5.4 || ^6.0" | ||
| 2107 | }, | 2959 | }, |
| 2108 | "require-dev": { | 2960 | "require-dev": { |
| 2109 | "nyholm/psr7": "^1.1", | 2961 | "nyholm/psr7": "^1.1", |
| 2110 | "psr/log": "^1.1 || ^2 || ^3", | 2962 | "psr/log": "^1.1 || ^2 || ^3", |
| 2111 | - "symfony/browser-kit": "^4.4 || ^5.0 || ^6.0", | ||
| 2112 | - "symfony/config": "^4.4 || ^5.0 || ^6.0", | ||
| 2113 | - "symfony/event-dispatcher": "^4.4 || ^5.0 || ^6.0", | ||
| 2114 | - "symfony/framework-bundle": "^4.4 || ^5.0 || ^6.0", | ||
| 2115 | - "symfony/http-kernel": "^4.4 || ^5.0 || ^6.0", | ||
| 2116 | - "symfony/phpunit-bridge": "^5.4@dev || ^6.0" | 2963 | + "symfony/browser-kit": "^5.4 || ^6.0", |
| 2964 | + "symfony/config": "^5.4 || ^6.0", | ||
| 2965 | + "symfony/event-dispatcher": "^5.4 || ^6.0", | ||
| 2966 | + "symfony/framework-bundle": "^5.4 || ^6.0", | ||
| 2967 | + "symfony/http-kernel": "^5.4 || ^6.0", | ||
| 2968 | + "symfony/phpunit-bridge": "^6.2" | ||
| 2117 | }, | 2969 | }, |
| 2118 | "suggest": { | 2970 | "suggest": { |
| 2119 | "nyholm/psr7": "For a super lightweight PSR-7/17 implementation" | 2971 | "nyholm/psr7": "For a super lightweight PSR-7/17 implementation" |
| 2120 | }, | 2972 | }, |
| 2121 | - "time": "2022-11-28T22:46:34+00:00", | 2973 | + "time": "2023-04-21T08:40:19+00:00", |
| 2122 | "type": "symfony-bridge", | 2974 | "type": "symfony-bridge", |
| 2123 | "extra": { | 2975 | "extra": { |
| 2124 | "branch-alias": { | 2976 | "branch-alias": { |
| 2125 | - "dev-main": "2.1-dev" | 2977 | + "dev-main": "2.2-dev" |
| 2126 | } | 2978 | } |
| 2127 | }, | 2979 | }, |
| 2128 | "installation-source": "dist", | 2980 | "installation-source": "dist", |
| @@ -2134,6 +2986,7 @@ | @@ -2134,6 +2986,7 @@ | ||
| 2134 | "/Tests/" | 2986 | "/Tests/" |
| 2135 | ] | 2987 | ] |
| 2136 | }, | 2988 | }, |
| 2989 | + "notification-url": "https://packagist.org/downloads/", | ||
| 2137 | "license": [ | 2990 | "license": [ |
| 2138 | "MIT" | 2991 | "MIT" |
| 2139 | ], | 2992 | ], |
| @@ -2155,17 +3008,46 @@ | @@ -2155,17 +3008,46 @@ | ||
| 2155 | "psr-17", | 3008 | "psr-17", |
| 2156 | "psr-7" | 3009 | "psr-7" |
| 2157 | ], | 3010 | ], |
| 3011 | + "support": { | ||
| 3012 | + "issues": "https://github.com/symfony/psr-http-message-bridge/issues", | ||
| 3013 | + "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.2.0" | ||
| 3014 | + }, | ||
| 3015 | + "funding": [ | ||
| 3016 | + { | ||
| 3017 | + "url": "https://symfony.com/sponsor", | ||
| 3018 | + "type": "custom" | ||
| 3019 | + }, | ||
| 3020 | + { | ||
| 3021 | + "url": "https://github.com/fabpot", | ||
| 3022 | + "type": "github" | ||
| 3023 | + }, | ||
| 3024 | + { | ||
| 3025 | + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", | ||
| 3026 | + "type": "tidelift" | ||
| 3027 | + } | ||
| 3028 | + ], | ||
| 2158 | "install-path": "../symfony/psr-http-message-bridge" | 3029 | "install-path": "../symfony/psr-http-message-bridge" |
| 2159 | }, | 3030 | }, |
| 2160 | { | 3031 | { |
| 2161 | "name": "symfony/service-contracts", | 3032 | "name": "symfony/service-contracts", |
| 2162 | "version": "v1.1.2", | 3033 | "version": "v1.1.2", |
| 2163 | "version_normalized": "1.1.2.0", | 3034 | "version_normalized": "1.1.2.0", |
| 3035 | + "source": { | ||
| 3036 | + "type": "git", | ||
| 3037 | + "url": "https://github.com/symfony/service-contracts.git", | ||
| 3038 | + "reference": "191afdcb5804db960d26d8566b7e9a2843cab3a0" | ||
| 3039 | + }, | ||
| 2164 | "dist": { | 3040 | "dist": { |
| 2165 | "type": "zip", | 3041 | "type": "zip", |
| 2166 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/symfony/service-contracts/v1.1.2/symfony-service-contracts-v1.1.2.zip", | 3042 | + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/191afdcb5804db960d26d8566b7e9a2843cab3a0", |
| 2167 | "reference": "191afdcb5804db960d26d8566b7e9a2843cab3a0", | 3043 | "reference": "191afdcb5804db960d26d8566b7e9a2843cab3a0", |
| 2168 | - "shasum": "" | 3044 | + "shasum": "", |
| 3045 | + "mirrors": [ | ||
| 3046 | + { | ||
| 3047 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 3048 | + "preferred": true | ||
| 3049 | + } | ||
| 3050 | + ] | ||
| 2169 | }, | 3051 | }, |
| 2170 | "require": { | 3052 | "require": { |
| 2171 | "php": "^7.1.3" | 3053 | "php": "^7.1.3" |
| @@ -2187,6 +3069,7 @@ | @@ -2187,6 +3069,7 @@ | ||
| 2187 | "Symfony\\Contracts\\Service\\": "" | 3069 | "Symfony\\Contracts\\Service\\": "" |
| 2188 | } | 3070 | } |
| 2189 | }, | 3071 | }, |
| 3072 | + "notification-url": "https://packagist.org/downloads/", | ||
| 2190 | "license": [ | 3073 | "license": [ |
| 2191 | "MIT" | 3074 | "MIT" |
| 2192 | ], | 3075 | ], |
| @@ -2210,17 +3093,31 @@ | @@ -2210,17 +3093,31 @@ | ||
| 2210 | "interoperability", | 3093 | "interoperability", |
| 2211 | "standards" | 3094 | "standards" |
| 2212 | ], | 3095 | ], |
| 3096 | + "support": { | ||
| 3097 | + "source": "https://github.com/symfony/service-contracts/tree/v1.1.2" | ||
| 3098 | + }, | ||
| 2213 | "install-path": "../symfony/service-contracts" | 3099 | "install-path": "../symfony/service-contracts" |
| 2214 | }, | 3100 | }, |
| 2215 | { | 3101 | { |
| 2216 | "name": "symfony/var-exporter", | 3102 | "name": "symfony/var-exporter", |
| 2217 | "version": "v4.4.43", | 3103 | "version": "v4.4.43", |
| 2218 | "version_normalized": "4.4.43.0", | 3104 | "version_normalized": "4.4.43.0", |
| 3105 | + "source": { | ||
| 3106 | + "type": "git", | ||
| 3107 | + "url": "https://github.com/symfony/var-exporter.git", | ||
| 3108 | + "reference": "4a7a3a3d55c471d396e6d28011368b7b83cb518b" | ||
| 3109 | + }, | ||
| 2219 | "dist": { | 3110 | "dist": { |
| 2220 | "type": "zip", | 3111 | "type": "zip", |
| 2221 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/symfony/var-exporter/v4.4.43/symfony-var-exporter-v4.4.43.zip", | 3112 | + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/4a7a3a3d55c471d396e6d28011368b7b83cb518b", |
| 2222 | "reference": "4a7a3a3d55c471d396e6d28011368b7b83cb518b", | 3113 | "reference": "4a7a3a3d55c471d396e6d28011368b7b83cb518b", |
| 2223 | - "shasum": "" | 3114 | + "shasum": "", |
| 3115 | + "mirrors": [ | ||
| 3116 | + { | ||
| 3117 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 3118 | + "preferred": true | ||
| 3119 | + } | ||
| 3120 | + ] | ||
| 2224 | }, | 3121 | }, |
| 2225 | "require": { | 3122 | "require": { |
| 2226 | "php": ">=7.1.3", | 3123 | "php": ">=7.1.3", |
| @@ -2240,6 +3137,7 @@ | @@ -2240,6 +3137,7 @@ | ||
| 2240 | "/Tests/" | 3137 | "/Tests/" |
| 2241 | ] | 3138 | ] |
| 2242 | }, | 3139 | }, |
| 3140 | + "notification-url": "https://packagist.org/downloads/", | ||
| 2243 | "license": [ | 3141 | "license": [ |
| 2244 | "MIT" | 3142 | "MIT" |
| 2245 | ], | 3143 | ], |
| @@ -2263,6 +3161,23 @@ | @@ -2263,6 +3161,23 @@ | ||
| 2263 | "instantiate", | 3161 | "instantiate", |
| 2264 | "serialize" | 3162 | "serialize" |
| 2265 | ], | 3163 | ], |
| 3164 | + "support": { | ||
| 3165 | + "source": "https://github.com/symfony/var-exporter/tree/v4.4.43" | ||
| 3166 | + }, | ||
| 3167 | + "funding": [ | ||
| 3168 | + { | ||
| 3169 | + "url": "https://symfony.com/sponsor", | ||
| 3170 | + "type": "custom" | ||
| 3171 | + }, | ||
| 3172 | + { | ||
| 3173 | + "url": "https://github.com/fabpot", | ||
| 3174 | + "type": "github" | ||
| 3175 | + }, | ||
| 3176 | + { | ||
| 3177 | + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", | ||
| 3178 | + "type": "tidelift" | ||
| 3179 | + } | ||
| 3180 | + ], | ||
| 2266 | "install-path": "../symfony/var-exporter" | 3181 | "install-path": "../symfony/var-exporter" |
| 2267 | }, | 3182 | }, |
| 2268 | { | 3183 | { |
| @@ -2272,7 +3187,7 @@ | @@ -2272,7 +3187,7 @@ | ||
| 2272 | "source": { | 3187 | "source": { |
| 2273 | "type": "git", | 3188 | "type": "git", |
| 2274 | "url": "https://gitee.com/fastadminnet/framework.git", | 3189 | "url": "https://gitee.com/fastadminnet/framework.git", |
| 2275 | - "reference": "a5f1cedf07bb3489f7e3b5254496afbf600d4e65" | 3190 | + "reference": "096811899433eb0eb0988f1fe1db56ebb521bf34" |
| 2276 | }, | 3191 | }, |
| 2277 | "require": { | 3192 | "require": { |
| 2278 | "php": ">=7.1.0", | 3193 | "php": ">=7.1.0", |
| @@ -2286,7 +3201,7 @@ | @@ -2286,7 +3201,7 @@ | ||
| 2286 | "phpunit/phpunit": "4.8.*", | 3201 | "phpunit/phpunit": "4.8.*", |
| 2287 | "sebastian/phpcpd": "2.*" | 3202 | "sebastian/phpcpd": "2.*" |
| 2288 | }, | 3203 | }, |
| 2289 | - "time": "2022-12-05T14:00:16+00:00", | 3204 | + "time": "2022-12-19T02:13:42+00:00", |
| 2290 | "default-branch": true, | 3205 | "default-branch": true, |
| 2291 | "type": "think-framework", | 3206 | "type": "think-framework", |
| 2292 | "installation-source": "source", | 3207 | "installation-source": "source", |
| @@ -2317,11 +3232,22 @@ | @@ -2317,11 +3232,22 @@ | ||
| 2317 | "name": "topthink/think-captcha", | 3232 | "name": "topthink/think-captcha", |
| 2318 | "version": "v1.0.7", | 3233 | "version": "v1.0.7", |
| 2319 | "version_normalized": "1.0.7.0", | 3234 | "version_normalized": "1.0.7.0", |
| 3235 | + "source": { | ||
| 3236 | + "type": "git", | ||
| 3237 | + "url": "https://github.com/top-think/think-captcha.git", | ||
| 3238 | + "reference": "0c55455df26a1626a60d0dc35d2d89002b741d44" | ||
| 3239 | + }, | ||
| 2320 | "dist": { | 3240 | "dist": { |
| 2321 | "type": "zip", | 3241 | "type": "zip", |
| 2322 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/topthink/think-captcha/v1.0.7/topthink-think-captcha-v1.0.7.zip", | 3242 | + "url": "https://api.github.com/repos/top-think/think-captcha/zipball/0c55455df26a1626a60d0dc35d2d89002b741d44", |
| 2323 | "reference": "0c55455df26a1626a60d0dc35d2d89002b741d44", | 3243 | "reference": "0c55455df26a1626a60d0dc35d2d89002b741d44", |
| 2324 | - "shasum": "" | 3244 | + "shasum": "", |
| 3245 | + "mirrors": [ | ||
| 3246 | + { | ||
| 3247 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 3248 | + "preferred": true | ||
| 3249 | + } | ||
| 3250 | + ] | ||
| 2325 | }, | 3251 | }, |
| 2326 | "time": "2016-07-06T01:47:11+00:00", | 3252 | "time": "2016-07-06T01:47:11+00:00", |
| 2327 | "type": "library", | 3253 | "type": "library", |
| @@ -2334,6 +3260,7 @@ | @@ -2334,6 +3260,7 @@ | ||
| 2334 | "think\\captcha\\": "src/" | 3260 | "think\\captcha\\": "src/" |
| 2335 | } | 3261 | } |
| 2336 | }, | 3262 | }, |
| 3263 | + "notification-url": "https://packagist.org/downloads/", | ||
| 2337 | "license": [ | 3264 | "license": [ |
| 2338 | "Apache-2.0" | 3265 | "Apache-2.0" |
| 2339 | ], | 3266 | ], |
| @@ -2344,17 +3271,32 @@ | @@ -2344,17 +3271,32 @@ | ||
| 2344 | } | 3271 | } |
| 2345 | ], | 3272 | ], |
| 2346 | "description": "captcha package for thinkphp5", | 3273 | "description": "captcha package for thinkphp5", |
| 3274 | + "support": { | ||
| 3275 | + "issues": "https://github.com/top-think/think-captcha/issues", | ||
| 3276 | + "source": "https://github.com/top-think/think-captcha/tree/master" | ||
| 3277 | + }, | ||
| 2347 | "install-path": "../topthink/think-captcha" | 3278 | "install-path": "../topthink/think-captcha" |
| 2348 | }, | 3279 | }, |
| 2349 | { | 3280 | { |
| 2350 | "name": "topthink/think-helper", | 3281 | "name": "topthink/think-helper", |
| 2351 | "version": "v1.0.7", | 3282 | "version": "v1.0.7", |
| 2352 | "version_normalized": "1.0.7.0", | 3283 | "version_normalized": "1.0.7.0", |
| 3284 | + "source": { | ||
| 3285 | + "type": "git", | ||
| 3286 | + "url": "https://github.com/top-think/think-helper.git", | ||
| 3287 | + "reference": "5f92178606c8ce131d36b37a57c58eb71e55f019" | ||
| 3288 | + }, | ||
| 2353 | "dist": { | 3289 | "dist": { |
| 2354 | "type": "zip", | 3290 | "type": "zip", |
| 2355 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/topthink/think-helper/v1.0.7/topthink-think-helper-v1.0.7.zip", | 3291 | + "url": "https://api.github.com/repos/top-think/think-helper/zipball/5f92178606c8ce131d36b37a57c58eb71e55f019", |
| 2356 | "reference": "5f92178606c8ce131d36b37a57c58eb71e55f019", | 3292 | "reference": "5f92178606c8ce131d36b37a57c58eb71e55f019", |
| 2357 | - "shasum": "" | 3293 | + "shasum": "", |
| 3294 | + "mirrors": [ | ||
| 3295 | + { | ||
| 3296 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 3297 | + "preferred": true | ||
| 3298 | + } | ||
| 3299 | + ] | ||
| 2358 | }, | 3300 | }, |
| 2359 | "time": "2018-10-05T00:43:21+00:00", | 3301 | "time": "2018-10-05T00:43:21+00:00", |
| 2360 | "type": "library", | 3302 | "type": "library", |
| @@ -2367,6 +3309,7 @@ | @@ -2367,6 +3309,7 @@ | ||
| 2367 | "think\\helper\\": "src" | 3309 | "think\\helper\\": "src" |
| 2368 | } | 3310 | } |
| 2369 | }, | 3311 | }, |
| 3312 | + "notification-url": "https://packagist.org/downloads/", | ||
| 2370 | "license": [ | 3313 | "license": [ |
| 2371 | "Apache-2.0" | 3314 | "Apache-2.0" |
| 2372 | ], | 3315 | ], |
| @@ -2377,17 +3320,32 @@ | @@ -2377,17 +3320,32 @@ | ||
| 2377 | } | 3320 | } |
| 2378 | ], | 3321 | ], |
| 2379 | "description": "The ThinkPHP5 Helper Package", | 3322 | "description": "The ThinkPHP5 Helper Package", |
| 3323 | + "support": { | ||
| 3324 | + "issues": "https://github.com/top-think/think-helper/issues", | ||
| 3325 | + "source": "https://github.com/top-think/think-helper/tree/master" | ||
| 3326 | + }, | ||
| 2380 | "install-path": "../topthink/think-helper" | 3327 | "install-path": "../topthink/think-helper" |
| 2381 | }, | 3328 | }, |
| 2382 | { | 3329 | { |
| 2383 | "name": "topthink/think-installer", | 3330 | "name": "topthink/think-installer", |
| 2384 | "version": "v1.0.14", | 3331 | "version": "v1.0.14", |
| 2385 | "version_normalized": "1.0.14.0", | 3332 | "version_normalized": "1.0.14.0", |
| 3333 | + "source": { | ||
| 3334 | + "type": "git", | ||
| 3335 | + "url": "https://github.com/top-think/think-installer.git", | ||
| 3336 | + "reference": "eae1740ac264a55c06134b6685dfb9f837d004d1" | ||
| 3337 | + }, | ||
| 2386 | "dist": { | 3338 | "dist": { |
| 2387 | "type": "zip", | 3339 | "type": "zip", |
| 2388 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/topthink/think-installer/v1.0.14/topthink-think-installer-v1.0.14.zip", | 3340 | + "url": "https://api.github.com/repos/top-think/think-installer/zipball/eae1740ac264a55c06134b6685dfb9f837d004d1", |
| 2389 | "reference": "eae1740ac264a55c06134b6685dfb9f837d004d1", | 3341 | "reference": "eae1740ac264a55c06134b6685dfb9f837d004d1", |
| 2390 | - "shasum": "" | 3342 | + "shasum": "", |
| 3343 | + "mirrors": [ | ||
| 3344 | + { | ||
| 3345 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 3346 | + "preferred": true | ||
| 3347 | + } | ||
| 3348 | + ] | ||
| 2391 | }, | 3349 | }, |
| 2392 | "require": { | 3350 | "require": { |
| 2393 | "composer-plugin-api": "^1.0||^2.0" | 3351 | "composer-plugin-api": "^1.0||^2.0" |
| @@ -2406,6 +3364,7 @@ | @@ -2406,6 +3364,7 @@ | ||
| 2406 | "think\\composer\\": "src" | 3364 | "think\\composer\\": "src" |
| 2407 | } | 3365 | } |
| 2408 | }, | 3366 | }, |
| 3367 | + "notification-url": "https://packagist.org/downloads/", | ||
| 2409 | "license": [ | 3368 | "license": [ |
| 2410 | "Apache-2.0" | 3369 | "Apache-2.0" |
| 2411 | ], | 3370 | ], |
| @@ -2415,17 +3374,32 @@ | @@ -2415,17 +3374,32 @@ | ||
| 2415 | "email": "448901948@qq.com" | 3374 | "email": "448901948@qq.com" |
| 2416 | } | 3375 | } |
| 2417 | ], | 3376 | ], |
| 3377 | + "support": { | ||
| 3378 | + "issues": "https://github.com/top-think/think-installer/issues", | ||
| 3379 | + "source": "https://github.com/top-think/think-installer/tree/v1.0.14" | ||
| 3380 | + }, | ||
| 2418 | "install-path": "../topthink/think-installer" | 3381 | "install-path": "../topthink/think-installer" |
| 2419 | }, | 3382 | }, |
| 2420 | { | 3383 | { |
| 2421 | "name": "topthink/think-queue", | 3384 | "name": "topthink/think-queue", |
| 2422 | "version": "v1.1.6", | 3385 | "version": "v1.1.6", |
| 2423 | "version_normalized": "1.1.6.0", | 3386 | "version_normalized": "1.1.6.0", |
| 3387 | + "source": { | ||
| 3388 | + "type": "git", | ||
| 3389 | + "url": "https://github.com/top-think/think-queue.git", | ||
| 3390 | + "reference": "250650eb0e8ea5af4cfdc7ae46f3f4e0a24ac245" | ||
| 3391 | + }, | ||
| 2424 | "dist": { | 3392 | "dist": { |
| 2425 | "type": "zip", | 3393 | "type": "zip", |
| 2426 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/topthink/think-queue/v1.1.6/topthink-think-queue-v1.1.6.zip", | 3394 | + "url": "https://api.github.com/repos/top-think/think-queue/zipball/250650eb0e8ea5af4cfdc7ae46f3f4e0a24ac245", |
| 2427 | "reference": "250650eb0e8ea5af4cfdc7ae46f3f4e0a24ac245", | 3395 | "reference": "250650eb0e8ea5af4cfdc7ae46f3f4e0a24ac245", |
| 2428 | - "shasum": "" | 3396 | + "shasum": "", |
| 3397 | + "mirrors": [ | ||
| 3398 | + { | ||
| 3399 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 3400 | + "preferred": true | ||
| 3401 | + } | ||
| 3402 | + ] | ||
| 2429 | }, | 3403 | }, |
| 2430 | "require": { | 3404 | "require": { |
| 2431 | "topthink/think-helper": ">=1.0.4", | 3405 | "topthink/think-helper": ">=1.0.4", |
| @@ -2450,6 +3424,7 @@ | @@ -2450,6 +3424,7 @@ | ||
| 2450 | "think\\": "src" | 3424 | "think\\": "src" |
| 2451 | } | 3425 | } |
| 2452 | }, | 3426 | }, |
| 3427 | + "notification-url": "https://packagist.org/downloads/", | ||
| 2453 | "license": [ | 3428 | "license": [ |
| 2454 | "Apache-2.0" | 3429 | "Apache-2.0" |
| 2455 | ], | 3430 | ], |
| @@ -2460,17 +3435,32 @@ | @@ -2460,17 +3435,32 @@ | ||
| 2460 | } | 3435 | } |
| 2461 | ], | 3436 | ], |
| 2462 | "description": "The ThinkPHP5 Queue Package", | 3437 | "description": "The ThinkPHP5 Queue Package", |
| 3438 | + "support": { | ||
| 3439 | + "issues": "https://github.com/top-think/think-queue/issues", | ||
| 3440 | + "source": "https://github.com/top-think/think-queue/tree/master" | ||
| 3441 | + }, | ||
| 2463 | "install-path": "../topthink/think-queue" | 3442 | "install-path": "../topthink/think-queue" |
| 2464 | }, | 3443 | }, |
| 2465 | { | 3444 | { |
| 2466 | "name": "txthinking/mailer", | 3445 | "name": "txthinking/mailer", |
| 2467 | "version": "v2.0.1", | 3446 | "version": "v2.0.1", |
| 2468 | "version_normalized": "2.0.1.0", | 3447 | "version_normalized": "2.0.1.0", |
| 3448 | + "source": { | ||
| 3449 | + "type": "git", | ||
| 3450 | + "url": "https://github.com/txthinking/Mailer.git", | ||
| 3451 | + "reference": "09013cf9dad3aac195f66ae5309e8c3343c018e9" | ||
| 3452 | + }, | ||
| 2469 | "dist": { | 3453 | "dist": { |
| 2470 | "type": "zip", | 3454 | "type": "zip", |
| 2471 | - "url": "https://mirrors.cloud.tencent.com/repository/composer/txthinking/mailer/v2.0.1/txthinking-mailer-v2.0.1.zip", | 3455 | + "url": "https://api.github.com/repos/txthinking/Mailer/zipball/09013cf9dad3aac195f66ae5309e8c3343c018e9", |
| 2472 | "reference": "09013cf9dad3aac195f66ae5309e8c3343c018e9", | 3456 | "reference": "09013cf9dad3aac195f66ae5309e8c3343c018e9", |
| 2473 | - "shasum": "" | 3457 | + "shasum": "", |
| 3458 | + "mirrors": [ | ||
| 3459 | + { | ||
| 3460 | + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", | ||
| 3461 | + "preferred": true | ||
| 3462 | + } | ||
| 3463 | + ] | ||
| 2474 | }, | 3464 | }, |
| 2475 | "require": { | 3465 | "require": { |
| 2476 | "php": ">=5.3.2", | 3466 | "php": ">=5.3.2", |
| @@ -2488,6 +3478,7 @@ | @@ -2488,6 +3478,7 @@ | ||
| 2488 | "Tx\\": "src/" | 3478 | "Tx\\": "src/" |
| 2489 | } | 3479 | } |
| 2490 | }, | 3480 | }, |
| 3481 | + "notification-url": "https://packagist.org/downloads/", | ||
| 2491 | "license": [ | 3482 | "license": [ |
| 2492 | "MIT" | 3483 | "MIT" |
| 2493 | ], | 3484 | ], |
| @@ -2509,6 +3500,10 @@ | @@ -2509,6 +3500,10 @@ | ||
| 2509 | "mail", | 3500 | "mail", |
| 2510 | "smtp" | 3501 | "smtp" |
| 2511 | ], | 3502 | ], |
| 3503 | + "support": { | ||
| 3504 | + "issues": "https://github.com/txthinking/Mailer/issues", | ||
| 3505 | + "source": "https://github.com/txthinking/Mailer/tree/master" | ||
| 3506 | + }, | ||
| 2512 | "install-path": "../txthinking/mailer" | 3507 | "install-path": "../txthinking/mailer" |
| 2513 | } | 3508 | } |
| 2514 | ], | 3509 | ], |
| 1 | <?php return array( | 1 | <?php return array( |
| 2 | 'root' => array( | 2 | 'root' => array( |
| 3 | 'name' => 'karsonzhang/fastadmin', | 3 | 'name' => 'karsonzhang/fastadmin', |
| 4 | - 'pretty_version' => '1.3.5.x-dev', | ||
| 5 | - 'version' => '1.3.5.9999999-dev', | ||
| 6 | - 'reference' => 'f8292a8813201872005173b7d2ec3ca556a25cfd', | 4 | + 'pretty_version' => 'dev-master', |
| 5 | + 'version' => 'dev-master', | ||
| 6 | + 'reference' => 'fe2e4869d9e522858b92133ebd57217ba709c0fc', | ||
| 7 | 'type' => 'project', | 7 | 'type' => 'project', |
| 8 | 'install_path' => __DIR__ . '/../../', | 8 | 'install_path' => __DIR__ . '/../../', |
| 9 | 'aliases' => array(), | 9 | 'aliases' => array(), |
| @@ -29,36 +29,36 @@ | @@ -29,36 +29,36 @@ | ||
| 29 | 'dev_requirement' => false, | 29 | 'dev_requirement' => false, |
| 30 | ), | 30 | ), |
| 31 | 'guzzlehttp/guzzle' => array( | 31 | 'guzzlehttp/guzzle' => array( |
| 32 | - 'pretty_version' => '7.5.0', | ||
| 33 | - 'version' => '7.5.0.0', | ||
| 34 | - 'reference' => 'b50a2a1251152e43f6a37f0fa053e730a67d25ba', | 32 | + 'pretty_version' => '7.7.0', |
| 33 | + 'version' => '7.7.0.0', | ||
| 34 | + 'reference' => 'fb7566caccf22d74d1ab270de3551f72a58399f5', | ||
| 35 | 'type' => 'library', | 35 | 'type' => 'library', |
| 36 | 'install_path' => __DIR__ . '/../guzzlehttp/guzzle', | 36 | 'install_path' => __DIR__ . '/../guzzlehttp/guzzle', |
| 37 | 'aliases' => array(), | 37 | 'aliases' => array(), |
| 38 | 'dev_requirement' => false, | 38 | 'dev_requirement' => false, |
| 39 | ), | 39 | ), |
| 40 | 'guzzlehttp/promises' => array( | 40 | 'guzzlehttp/promises' => array( |
| 41 | - 'pretty_version' => '1.5.2', | ||
| 42 | - 'version' => '1.5.2.0', | ||
| 43 | - 'reference' => 'b94b2807d85443f9719887892882d0329d1e2598', | 41 | + 'pretty_version' => '1.5.3', |
| 42 | + 'version' => '1.5.3.0', | ||
| 43 | + 'reference' => '67ab6e18aaa14d753cc148911d273f6e6cb6721e', | ||
| 44 | 'type' => 'library', | 44 | 'type' => 'library', |
| 45 | 'install_path' => __DIR__ . '/../guzzlehttp/promises', | 45 | 'install_path' => __DIR__ . '/../guzzlehttp/promises', |
| 46 | 'aliases' => array(), | 46 | 'aliases' => array(), |
| 47 | 'dev_requirement' => false, | 47 | 'dev_requirement' => false, |
| 48 | ), | 48 | ), |
| 49 | 'guzzlehttp/psr7' => array( | 49 | 'guzzlehttp/psr7' => array( |
| 50 | - 'pretty_version' => '2.4.3', | ||
| 51 | - 'version' => '2.4.3.0', | ||
| 52 | - 'reference' => '67c26b443f348a51926030c83481b85718457d3d', | 50 | + 'pretty_version' => '2.5.0', |
| 51 | + 'version' => '2.5.0.0', | ||
| 52 | + 'reference' => 'b635f279edd83fc275f822a1188157ffea568ff6', | ||
| 53 | 'type' => 'library', | 53 | 'type' => 'library', |
| 54 | 'install_path' => __DIR__ . '/../guzzlehttp/psr7', | 54 | 'install_path' => __DIR__ . '/../guzzlehttp/psr7', |
| 55 | 'aliases' => array(), | 55 | 'aliases' => array(), |
| 56 | 'dev_requirement' => false, | 56 | 'dev_requirement' => false, |
| 57 | ), | 57 | ), |
| 58 | 'karsonzhang/fastadmin' => array( | 58 | 'karsonzhang/fastadmin' => array( |
| 59 | - 'pretty_version' => '1.3.5.x-dev', | ||
| 60 | - 'version' => '1.3.5.9999999-dev', | ||
| 61 | - 'reference' => 'f8292a8813201872005173b7d2ec3ca556a25cfd', | 59 | + 'pretty_version' => 'dev-master', |
| 60 | + 'version' => 'dev-master', | ||
| 61 | + 'reference' => 'fe2e4869d9e522858b92133ebd57217ba709c0fc', | ||
| 62 | 'type' => 'project', | 62 | 'type' => 'project', |
| 63 | 'install_path' => __DIR__ . '/../../', | 63 | 'install_path' => __DIR__ . '/../../', |
| 64 | 'aliases' => array(), | 64 | 'aliases' => array(), |
| @@ -73,6 +73,15 @@ | @@ -73,6 +73,15 @@ | ||
| 73 | 'aliases' => array(), | 73 | 'aliases' => array(), |
| 74 | 'dev_requirement' => false, | 74 | 'dev_requirement' => false, |
| 75 | ), | 75 | ), |
| 76 | + 'kkokk/poster' => array( | ||
| 77 | + 'pretty_version' => 'v2.0.6', | ||
| 78 | + 'version' => '2.0.6.0', | ||
| 79 | + 'reference' => 'a657ab240330b2d667416431fd7454dff73bebdf', | ||
| 80 | + 'type' => 'project', | ||
| 81 | + 'install_path' => __DIR__ . '/../kkokk/poster', | ||
| 82 | + 'aliases' => array(), | ||
| 83 | + 'dev_requirement' => false, | ||
| 84 | + ), | ||
| 76 | 'maennchen/zipstream-php' => array( | 85 | 'maennchen/zipstream-php' => array( |
| 77 | 'pretty_version' => '2.2.6', | 86 | 'pretty_version' => '2.2.6', |
| 78 | 'version' => '2.2.6.0', | 87 | 'version' => '2.2.6.0', |
| @@ -101,18 +110,18 @@ | @@ -101,18 +110,18 @@ | ||
| 101 | 'dev_requirement' => false, | 110 | 'dev_requirement' => false, |
| 102 | ), | 111 | ), |
| 103 | 'monolog/monolog' => array( | 112 | 'monolog/monolog' => array( |
| 104 | - 'pretty_version' => '2.8.0', | ||
| 105 | - 'version' => '2.8.0.0', | ||
| 106 | - 'reference' => '720488632c590286b88b80e62aa3d3d551ad4a50', | 113 | + 'pretty_version' => '2.9.0', |
| 114 | + 'version' => '2.9.0.0', | ||
| 115 | + 'reference' => 'e1c0ae1528ce313a450e5e1ad782765c4a8dd3cb', | ||
| 107 | 'type' => 'library', | 116 | 'type' => 'library', |
| 108 | 'install_path' => __DIR__ . '/../monolog/monolog', | 117 | 'install_path' => __DIR__ . '/../monolog/monolog', |
| 109 | 'aliases' => array(), | 118 | 'aliases' => array(), |
| 110 | 'dev_requirement' => false, | 119 | 'dev_requirement' => false, |
| 111 | ), | 120 | ), |
| 112 | 'myclabs/php-enum' => array( | 121 | 'myclabs/php-enum' => array( |
| 113 | - 'pretty_version' => '1.8.4', | ||
| 114 | - 'version' => '1.8.4.0', | ||
| 115 | - 'reference' => 'a867478eae49c9f59ece437ae7f9506bfaa27483', | 122 | + 'pretty_version' => '1.8.3', |
| 123 | + 'version' => '1.8.3.0', | ||
| 124 | + 'reference' => 'b942d263c641ddb5190929ff840c68f78713e937', | ||
| 116 | 'type' => 'library', | 125 | 'type' => 'library', |
| 117 | 'install_path' => __DIR__ . '/../myclabs/php-enum', | 126 | 'install_path' => __DIR__ . '/../myclabs/php-enum', |
| 118 | 'aliases' => array(), | 127 | 'aliases' => array(), |
| @@ -146,9 +155,9 @@ | @@ -146,9 +155,9 @@ | ||
| 146 | 'dev_requirement' => false, | 155 | 'dev_requirement' => false, |
| 147 | ), | 156 | ), |
| 148 | 'overtrue/wechat' => array( | 157 | 'overtrue/wechat' => array( |
| 149 | - 'pretty_version' => '4.7.0', | ||
| 150 | - 'version' => '4.7.0.0', | ||
| 151 | - 'reference' => '4accb0627803ffb6e45d2988898a0293d2a48e68', | 158 | + 'pretty_version' => '4.6.0', |
| 159 | + 'version' => '4.6.0.0', | ||
| 160 | + 'reference' => '52af4cbe777cd4aea307beafa0a4518c347467b1', | ||
| 152 | 'type' => 'library', | 161 | 'type' => 'library', |
| 153 | 'install_path' => __DIR__ . '/../overtrue/wechat', | 162 | 'install_path' => __DIR__ . '/../overtrue/wechat', |
| 154 | 'aliases' => array(), | 163 | 'aliases' => array(), |
| @@ -236,9 +245,9 @@ | @@ -236,9 +245,9 @@ | ||
| 236 | ), | 245 | ), |
| 237 | ), | 246 | ), |
| 238 | 'psr/http-factory' => array( | 247 | 'psr/http-factory' => array( |
| 239 | - 'pretty_version' => '1.0.1', | ||
| 240 | - 'version' => '1.0.1.0', | ||
| 241 | - 'reference' => '12ac7fcd07e5b077433f5f2bee95b3a771bf61be', | 248 | + 'pretty_version' => '1.0.2', |
| 249 | + 'version' => '1.0.2.0', | ||
| 250 | + 'reference' => 'e616d01114759c4c489f93b099585439f795fe35', | ||
| 242 | 'type' => 'library', | 251 | 'type' => 'library', |
| 243 | 'install_path' => __DIR__ . '/../psr/http-factory', | 252 | 'install_path' => __DIR__ . '/../psr/http-factory', |
| 244 | 'aliases' => array(), | 253 | 'aliases' => array(), |
| @@ -251,9 +260,9 @@ | @@ -251,9 +260,9 @@ | ||
| 251 | ), | 260 | ), |
| 252 | ), | 261 | ), |
| 253 | 'psr/http-message' => array( | 262 | 'psr/http-message' => array( |
| 254 | - 'pretty_version' => '1.0.1', | ||
| 255 | - 'version' => '1.0.1.0', | ||
| 256 | - 'reference' => 'f6561bf28d520154e4b0ec72be95418abe6d9363', | 263 | + 'pretty_version' => '1.1', |
| 264 | + 'version' => '1.1.0.0', | ||
| 265 | + 'reference' => 'cb6ce4845ce34a8ad9e68117c10ee90a29919eba', | ||
| 257 | 'type' => 'library', | 266 | 'type' => 'library', |
| 258 | 'install_path' => __DIR__ . '/../psr/http-message', | 267 | 'install_path' => __DIR__ . '/../psr/http-message', |
| 259 | 'aliases' => array(), | 268 | 'aliases' => array(), |
| @@ -305,9 +314,9 @@ | @@ -305,9 +314,9 @@ | ||
| 305 | 'dev_requirement' => false, | 314 | 'dev_requirement' => false, |
| 306 | ), | 315 | ), |
| 307 | 'symfony/cache' => array( | 316 | 'symfony/cache' => array( |
| 308 | - 'pretty_version' => 'v5.4.15', | ||
| 309 | - 'version' => '5.4.15.0', | ||
| 310 | - 'reference' => '60e87188abbacd29ccde44d69c5392a33e888e98', | 317 | + 'pretty_version' => 'v5.4.23', |
| 318 | + 'version' => '5.4.23.0', | ||
| 319 | + 'reference' => '983c79ff28612cdfd66d8e44e1a06e5afc87e107', | ||
| 311 | 'type' => 'library', | 320 | 'type' => 'library', |
| 312 | 'install_path' => __DIR__ . '/../symfony/cache', | 321 | 'install_path' => __DIR__ . '/../symfony/cache', |
| 313 | 'aliases' => array(), | 322 | 'aliases' => array(), |
| @@ -338,9 +347,9 @@ | @@ -338,9 +347,9 @@ | ||
| 338 | 'dev_requirement' => false, | 347 | 'dev_requirement' => false, |
| 339 | ), | 348 | ), |
| 340 | 'symfony/event-dispatcher' => array( | 349 | 'symfony/event-dispatcher' => array( |
| 341 | - 'pretty_version' => 'v5.4.9', | ||
| 342 | - 'version' => '5.4.9.0', | ||
| 343 | - 'reference' => '8e6ce1cc0279e3ff3c8ff0f43813bc88d21ca1bc', | 350 | + 'pretty_version' => 'v5.4.22', |
| 351 | + 'version' => '5.4.22.0', | ||
| 352 | + 'reference' => '1df20e45d56da29a4b1d8259dd6e950acbf1b13f', | ||
| 344 | 'type' => 'library', | 353 | 'type' => 'library', |
| 345 | 'install_path' => __DIR__ . '/../symfony/event-dispatcher', | 354 | 'install_path' => __DIR__ . '/../symfony/event-dispatcher', |
| 346 | 'aliases' => array(), | 355 | 'aliases' => array(), |
| @@ -362,18 +371,18 @@ | @@ -362,18 +371,18 @@ | ||
| 362 | ), | 371 | ), |
| 363 | ), | 372 | ), |
| 364 | 'symfony/finder' => array( | 373 | 'symfony/finder' => array( |
| 365 | - 'pretty_version' => 'v5.4.11', | ||
| 366 | - 'version' => '5.4.11.0', | ||
| 367 | - 'reference' => '7872a66f57caffa2916a584db1aa7f12adc76f8c', | 374 | + 'pretty_version' => 'v5.4.21', |
| 375 | + 'version' => '5.4.21.0', | ||
| 376 | + 'reference' => '078e9a5e1871fcfe6a5ce421b539344c21afef19', | ||
| 368 | 'type' => 'library', | 377 | 'type' => 'library', |
| 369 | 'install_path' => __DIR__ . '/../symfony/finder', | 378 | 'install_path' => __DIR__ . '/../symfony/finder', |
| 370 | 'aliases' => array(), | 379 | 'aliases' => array(), |
| 371 | 'dev_requirement' => false, | 380 | 'dev_requirement' => false, |
| 372 | ), | 381 | ), |
| 373 | 'symfony/http-foundation' => array( | 382 | 'symfony/http-foundation' => array( |
| 374 | - 'pretty_version' => 'v5.4.16', | ||
| 375 | - 'version' => '5.4.16.0', | ||
| 376 | - 'reference' => '5032c5849aef24741e1970cb03511b0dd131d838', | 383 | + 'pretty_version' => 'v5.4.24', |
| 384 | + 'version' => '5.4.24.0', | ||
| 385 | + 'reference' => '3c59f97f6249ce552a44f01b93bfcbd786a954f5', | ||
| 377 | 'type' => 'library', | 386 | 'type' => 'library', |
| 378 | 'install_path' => __DIR__ . '/../symfony/http-foundation', | 387 | 'install_path' => __DIR__ . '/../symfony/http-foundation', |
| 379 | 'aliases' => array(), | 388 | 'aliases' => array(), |
| @@ -407,9 +416,9 @@ | @@ -407,9 +416,9 @@ | ||
| 407 | 'dev_requirement' => false, | 416 | 'dev_requirement' => false, |
| 408 | ), | 417 | ), |
| 409 | 'symfony/psr-http-message-bridge' => array( | 418 | 'symfony/psr-http-message-bridge' => array( |
| 410 | - 'pretty_version' => 'v2.1.4', | ||
| 411 | - 'version' => '2.1.4.0', | ||
| 412 | - 'reference' => 'a125b93ef378c492e274f217874906fb9babdebb', | 419 | + 'pretty_version' => 'v2.2.0', |
| 420 | + 'version' => '2.2.0.0', | ||
| 421 | + 'reference' => '28a732c05bbad801304ad5a5c674cf2970508993', | ||
| 413 | 'type' => 'symfony-bridge', | 422 | 'type' => 'symfony-bridge', |
| 414 | 'install_path' => __DIR__ . '/../symfony/psr-http-message-bridge', | 423 | 'install_path' => __DIR__ . '/../symfony/psr-http-message-bridge', |
| 415 | 'aliases' => array(), | 424 | 'aliases' => array(), |
| @@ -436,7 +445,7 @@ | @@ -436,7 +445,7 @@ | ||
| 436 | 'topthink/framework' => array( | 445 | 'topthink/framework' => array( |
| 437 | 'pretty_version' => 'dev-master', | 446 | 'pretty_version' => 'dev-master', |
| 438 | 'version' => 'dev-master', | 447 | 'version' => 'dev-master', |
| 439 | - 'reference' => 'a5f1cedf07bb3489f7e3b5254496afbf600d4e65', | 448 | + 'reference' => '096811899433eb0eb0988f1fe1db56ebb521bf34', |
| 440 | 'type' => 'think-framework', | 449 | 'type' => 'think-framework', |
| 441 | 'install_path' => __DIR__ . '/../../thinkphp', | 450 | 'install_path' => __DIR__ . '/../../thinkphp', |
| 442 | 'aliases' => array( | 451 | 'aliases' => array( |
| @@ -2,6 +2,52 @@ | @@ -2,6 +2,52 @@ | ||
| 2 | 2 | ||
| 3 | Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version. | 3 | Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version. |
| 4 | 4 | ||
| 5 | + | ||
| 6 | +## 7.7.0 - 2023-05-21 | ||
| 7 | + | ||
| 8 | +### Added | ||
| 9 | + | ||
| 10 | +- Support `guzzlehttp/promises` v2 | ||
| 11 | + | ||
| 12 | + | ||
| 13 | +## 7.6.1 - 2023-05-15 | ||
| 14 | + | ||
| 15 | +### Fixed | ||
| 16 | + | ||
| 17 | +- Fix `SetCookie::fromString` MaxAge deprecation warning and skip invalid MaxAge values | ||
| 18 | + | ||
| 19 | + | ||
| 20 | +## 7.6.0 - 2023-05-14 | ||
| 21 | + | ||
| 22 | +### Added | ||
| 23 | + | ||
| 24 | +- Support for setting the minimum TLS version in a unified way | ||
| 25 | +- Apply on request the version set in options parameters | ||
| 26 | + | ||
| 27 | + | ||
| 28 | +## 7.5.2 - 2023-05-14 | ||
| 29 | + | ||
| 30 | +### Fixed | ||
| 31 | + | ||
| 32 | +- Fixed set cookie constructor validation | ||
| 33 | +- Fixed handling of files with `'0'` body | ||
| 34 | + | ||
| 35 | +### Changed | ||
| 36 | + | ||
| 37 | +- Corrected docs and default connect timeout value to 300 seconds | ||
| 38 | + | ||
| 39 | + | ||
| 40 | +## 7.5.1 - 2023-04-17 | ||
| 41 | + | ||
| 42 | +### Fixed | ||
| 43 | + | ||
| 44 | +- Fixed `NO_PROXY` settings so that setting the `proxy` option to `no` overrides the env variable | ||
| 45 | + | ||
| 46 | +### Changed | ||
| 47 | + | ||
| 48 | +- Adjusted `guzzlehttp/psr7` version constraint to `^1.9.1 || ^2.4.5` | ||
| 49 | + | ||
| 50 | + | ||
| 5 | ## 7.5.0 - 2022-08-28 | 51 | ## 7.5.0 - 2022-08-28 |
| 6 | 52 | ||
| 7 | ### Added | 53 | ### Added |
| @@ -9,20 +55,30 @@ Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version | @@ -9,20 +55,30 @@ Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version | ||
| 9 | - Support PHP 8.2 | 55 | - Support PHP 8.2 |
| 10 | - Add request to delay closure params | 56 | - Add request to delay closure params |
| 11 | 57 | ||
| 58 | + | ||
| 12 | ## 7.4.5 - 2022-06-20 | 59 | ## 7.4.5 - 2022-06-20 |
| 13 | 60 | ||
| 61 | +### Fixed | ||
| 62 | + | ||
| 14 | * Fix change in port should be considered a change in origin | 63 | * Fix change in port should be considered a change in origin |
| 15 | * Fix `CURLOPT_HTTPAUTH` option not cleared on change of origin | 64 | * Fix `CURLOPT_HTTPAUTH` option not cleared on change of origin |
| 16 | 65 | ||
| 66 | + | ||
| 17 | ## 7.4.4 - 2022-06-09 | 67 | ## 7.4.4 - 2022-06-09 |
| 18 | 68 | ||
| 69 | +### Fixed | ||
| 70 | + | ||
| 19 | * Fix failure to strip Authorization header on HTTP downgrade | 71 | * Fix failure to strip Authorization header on HTTP downgrade |
| 20 | * Fix failure to strip the Cookie header on change in host or HTTP downgrade | 72 | * Fix failure to strip the Cookie header on change in host or HTTP downgrade |
| 21 | 73 | ||
| 74 | + | ||
| 22 | ## 7.4.3 - 2022-05-25 | 75 | ## 7.4.3 - 2022-05-25 |
| 23 | 76 | ||
| 77 | +### Fixed | ||
| 78 | + | ||
| 24 | * Fix cross-domain cookie leakage | 79 | * Fix cross-domain cookie leakage |
| 25 | 80 | ||
| 81 | + | ||
| 26 | ## 7.4.2 - 2022-03-20 | 82 | ## 7.4.2 - 2022-03-20 |
| 27 | 83 | ||
| 28 | ### Fixed | 84 | ### Fixed |
| @@ -31,6 +87,7 @@ Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version | @@ -31,6 +87,7 @@ Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version | ||
| 31 | - Reject non-HTTP schemes in StreamHandler | 87 | - Reject non-HTTP schemes in StreamHandler |
| 32 | - Set a default ssl.peer_name context in StreamHandler to allow `force_ip_resolve` | 88 | - Set a default ssl.peer_name context in StreamHandler to allow `force_ip_resolve` |
| 33 | 89 | ||
| 90 | + | ||
| 34 | ## 7.4.1 - 2021-12-06 | 91 | ## 7.4.1 - 2021-12-06 |
| 35 | 92 | ||
| 36 | ### Changed | 93 | ### Changed |
| @@ -42,6 +99,7 @@ Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version | @@ -42,6 +99,7 @@ Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version | ||
| 42 | 99 | ||
| 43 | - Only close curl handle if it's done [#2950](https://github.com/guzzle/guzzle/pull/2950) | 100 | - Only close curl handle if it's done [#2950](https://github.com/guzzle/guzzle/pull/2950) |
| 44 | 101 | ||
| 102 | + | ||
| 45 | ## 7.4.0 - 2021-10-18 | 103 | ## 7.4.0 - 2021-10-18 |
| 46 | 104 | ||
| 47 | ### Added | 105 | ### Added |
| @@ -59,6 +117,7 @@ Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version | @@ -59,6 +117,7 @@ Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version | ||
| 59 | 117 | ||
| 60 | - Be more strict with types [#2914](https://github.com/guzzle/guzzle/pull/2914), [#2917](https://github.com/guzzle/guzzle/pull/2917), [#2919](https://github.com/guzzle/guzzle/pull/2919), [#2945](https://github.com/guzzle/guzzle/pull/2945) | 118 | - Be more strict with types [#2914](https://github.com/guzzle/guzzle/pull/2914), [#2917](https://github.com/guzzle/guzzle/pull/2917), [#2919](https://github.com/guzzle/guzzle/pull/2919), [#2945](https://github.com/guzzle/guzzle/pull/2945) |
| 61 | 119 | ||
| 120 | + | ||
| 62 | ## 7.3.0 - 2021-03-23 | 121 | ## 7.3.0 - 2021-03-23 |
| 63 | 122 | ||
| 64 | ### Added | 123 | ### Added |
| @@ -71,6 +130,7 @@ Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version | @@ -71,6 +130,7 @@ Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version | ||
| 71 | 130 | ||
| 72 | - Handle exceptions on invalid header consistently between PHP versions and handlers [#2872](https://github.com/guzzle/guzzle/pull/2872) | 131 | - Handle exceptions on invalid header consistently between PHP versions and handlers [#2872](https://github.com/guzzle/guzzle/pull/2872) |
| 73 | 132 | ||
| 133 | + | ||
| 74 | ## 7.2.0 - 2020-10-10 | 134 | ## 7.2.0 - 2020-10-10 |
| 75 | 135 | ||
| 76 | ### Added | 136 | ### Added |
| @@ -93,6 +153,7 @@ Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version | @@ -93,6 +153,7 @@ Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version | ||
| 93 | 153 | ||
| 94 | - Using environment variable GUZZLE_CURL_SELECT_TIMEOUT [#2786](https://github.com/guzzle/guzzle/pull/2786) | 154 | - Using environment variable GUZZLE_CURL_SELECT_TIMEOUT [#2786](https://github.com/guzzle/guzzle/pull/2786) |
| 95 | 155 | ||
| 156 | + | ||
| 96 | ## 7.1.1 - 2020-09-30 | 157 | ## 7.1.1 - 2020-09-30 |
| 97 | 158 | ||
| 98 | ### Fixed | 159 | ### Fixed |
| @@ -104,6 +165,7 @@ Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version | @@ -104,6 +165,7 @@ Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version | ||
| 104 | - We dont connect curl `sink` on HEAD requests. | 165 | - We dont connect curl `sink` on HEAD requests. |
| 105 | - Removed some PHP 5 workarounds | 166 | - Removed some PHP 5 workarounds |
| 106 | 167 | ||
| 168 | + | ||
| 107 | ## 7.1.0 - 2020-09-22 | 169 | ## 7.1.0 - 2020-09-22 |
| 108 | 170 | ||
| 109 | ### Added | 171 | ### Added |
| @@ -126,14 +188,17 @@ Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version | @@ -126,14 +188,17 @@ Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version | ||
| 126 | - `Utils::defaultCaBundle()` | 188 | - `Utils::defaultCaBundle()` |
| 127 | - `CurlFactory::LOW_CURL_VERSION_NUMBER` | 189 | - `CurlFactory::LOW_CURL_VERSION_NUMBER` |
| 128 | 190 | ||
| 191 | + | ||
| 129 | ## 7.0.1 - 2020-06-27 | 192 | ## 7.0.1 - 2020-06-27 |
| 130 | 193 | ||
| 131 | * Fix multiply defined functions fatal error [#2699](https://github.com/guzzle/guzzle/pull/2699) | 194 | * Fix multiply defined functions fatal error [#2699](https://github.com/guzzle/guzzle/pull/2699) |
| 132 | 195 | ||
| 196 | + | ||
| 133 | ## 7.0.0 - 2020-06-27 | 197 | ## 7.0.0 - 2020-06-27 |
| 134 | 198 | ||
| 135 | No changes since 7.0.0-rc1. | 199 | No changes since 7.0.0-rc1. |
| 136 | 200 | ||
| 201 | + | ||
| 137 | ## 7.0.0-rc1 - 2020-06-15 | 202 | ## 7.0.0-rc1 - 2020-06-15 |
| 138 | 203 | ||
| 139 | ### Changed | 204 | ### Changed |
| @@ -141,6 +206,7 @@ No changes since 7.0.0-rc1. | @@ -141,6 +206,7 @@ No changes since 7.0.0-rc1. | ||
| 141 | * Use error level for logging errors in Middleware [#2629](https://github.com/guzzle/guzzle/pull/2629) | 206 | * Use error level for logging errors in Middleware [#2629](https://github.com/guzzle/guzzle/pull/2629) |
| 142 | * Disabled IDN support by default and require ext-intl to use it [#2675](https://github.com/guzzle/guzzle/pull/2675) | 207 | * Disabled IDN support by default and require ext-intl to use it [#2675](https://github.com/guzzle/guzzle/pull/2675) |
| 143 | 208 | ||
| 209 | + | ||
| 144 | ## 7.0.0-beta2 - 2020-05-25 | 210 | ## 7.0.0-beta2 - 2020-05-25 |
| 145 | 211 | ||
| 146 | ### Added | 212 | ### Added |
| @@ -166,6 +232,7 @@ No changes since 7.0.0-rc1. | @@ -166,6 +232,7 @@ No changes since 7.0.0-rc1. | ||
| 166 | 232 | ||
| 167 | * Pool option `pool_size` [#2528](https://github.com/guzzle/guzzle/pull/2528) | 233 | * Pool option `pool_size` [#2528](https://github.com/guzzle/guzzle/pull/2528) |
| 168 | 234 | ||
| 235 | + | ||
| 169 | ## 7.0.0-beta1 - 2019-12-30 | 236 | ## 7.0.0-beta1 - 2019-12-30 |
| 170 | 237 | ||
| 171 | The diff might look very big but 95% of Guzzle users will be able to upgrade without modification. | 238 | The diff might look very big but 95% of Guzzle users will be able to upgrade without modification. |
| @@ -199,15 +266,18 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c | @@ -199,15 +266,18 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c | ||
| 199 | * `uri_template()` and `UriTemplate` [#2440](https://github.com/guzzle/guzzle/pull/2440) | 266 | * `uri_template()` and `UriTemplate` [#2440](https://github.com/guzzle/guzzle/pull/2440) |
| 200 | * Request options `save_to` and `exceptions` [#2464](https://github.com/guzzle/guzzle/pull/2464) | 267 | * Request options `save_to` and `exceptions` [#2464](https://github.com/guzzle/guzzle/pull/2464) |
| 201 | 268 | ||
| 269 | + | ||
| 202 | ## 6.5.2 - 2019-12-23 | 270 | ## 6.5.2 - 2019-12-23 |
| 203 | 271 | ||
| 204 | * idn_to_ascii() fix for old PHP versions [#2489](https://github.com/guzzle/guzzle/pull/2489) | 272 | * idn_to_ascii() fix for old PHP versions [#2489](https://github.com/guzzle/guzzle/pull/2489) |
| 205 | 273 | ||
| 274 | + | ||
| 206 | ## 6.5.1 - 2019-12-21 | 275 | ## 6.5.1 - 2019-12-21 |
| 207 | 276 | ||
| 208 | * Better defaults for PHP installations with old ICU lib [#2454](https://github.com/guzzle/guzzle/pull/2454) | 277 | * Better defaults for PHP installations with old ICU lib [#2454](https://github.com/guzzle/guzzle/pull/2454) |
| 209 | * IDN support for redirects [#2424](https://github.com/guzzle/guzzle/pull/2424) | 278 | * IDN support for redirects [#2424](https://github.com/guzzle/guzzle/pull/2424) |
| 210 | 279 | ||
| 280 | + | ||
| 211 | ## 6.5.0 - 2019-12-07 | 281 | ## 6.5.0 - 2019-12-07 |
| 212 | 282 | ||
| 213 | * Improvement: Added support for reset internal queue in MockHandler. [#2143](https://github.com/guzzle/guzzle/pull/2143) | 283 | * Improvement: Added support for reset internal queue in MockHandler. [#2143](https://github.com/guzzle/guzzle/pull/2143) |
| @@ -217,11 +287,13 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c | @@ -217,11 +287,13 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c | ||
| 217 | * Fix: Prevent undefined offset when using array for ssl_key options. [#2348](https://github.com/guzzle/guzzle/pull/2348) | 287 | * Fix: Prevent undefined offset when using array for ssl_key options. [#2348](https://github.com/guzzle/guzzle/pull/2348) |
| 218 | * Deprecated `ClientInterface::VERSION` | 288 | * Deprecated `ClientInterface::VERSION` |
| 219 | 289 | ||
| 290 | + | ||
| 220 | ## 6.4.1 - 2019-10-23 | 291 | ## 6.4.1 - 2019-10-23 |
| 221 | 292 | ||
| 222 | * No `guzzle.phar` was created in 6.4.0 due expired API token. This release will fix that | 293 | * No `guzzle.phar` was created in 6.4.0 due expired API token. This release will fix that |
| 223 | * Added `parent::__construct()` to `FileCookieJar` and `SessionCookieJar` | 294 | * Added `parent::__construct()` to `FileCookieJar` and `SessionCookieJar` |
| 224 | 295 | ||
| 296 | + | ||
| 225 | ## 6.4.0 - 2019-10-23 | 297 | ## 6.4.0 - 2019-10-23 |
| 226 | 298 | ||
| 227 | * Improvement: Improved error messages when using curl < 7.21.2 [#2108](https://github.com/guzzle/guzzle/pull/2108) | 299 | * Improvement: Improved error messages when using curl < 7.21.2 [#2108](https://github.com/guzzle/guzzle/pull/2108) |
| @@ -234,6 +306,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c | @@ -234,6 +306,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c | ||
| 234 | * Fix: Prevent concurrent writes to file when saving `CookieJar` [#2335](https://github.com/guzzle/guzzle/pull/2335) | 306 | * Fix: Prevent concurrent writes to file when saving `CookieJar` [#2335](https://github.com/guzzle/guzzle/pull/2335) |
| 235 | * Improvement: Update `MockHandler` so we can test transfer time [#2362](https://github.com/guzzle/guzzle/pull/2362) | 307 | * Improvement: Update `MockHandler` so we can test transfer time [#2362](https://github.com/guzzle/guzzle/pull/2362) |
| 236 | 308 | ||
| 309 | + | ||
| 237 | ## 6.3.3 - 2018-04-22 | 310 | ## 6.3.3 - 2018-04-22 |
| 238 | 311 | ||
| 239 | * Fix: Default headers when decode_content is specified | 312 | * Fix: Default headers when decode_content is specified |
| @@ -275,13 +348,14 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c | @@ -275,13 +348,14 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c | ||
| 275 | * Bug fix: Fill `CURLOPT_CAPATH` and `CURLOPT_CAINFO` properly [#1684](https://github.com/guzzle/guzzle/pull/1684) | 348 | * Bug fix: Fill `CURLOPT_CAPATH` and `CURLOPT_CAINFO` properly [#1684](https://github.com/guzzle/guzzle/pull/1684) |
| 276 | * Improvement: Use `\GuzzleHttp\Promise\rejection_for` function instead of object init [#1827](https://github.com/guzzle/guzzle/pull/1827) | 349 | * Improvement: Use `\GuzzleHttp\Promise\rejection_for` function instead of object init [#1827](https://github.com/guzzle/guzzle/pull/1827) |
| 277 | 350 | ||
| 278 | - | ||
| 279 | + Minor code cleanups, documentation fixes and clarifications. | 351 | + Minor code cleanups, documentation fixes and clarifications. |
| 280 | 352 | ||
| 353 | + | ||
| 281 | ## 6.2.3 - 2017-02-28 | 354 | ## 6.2.3 - 2017-02-28 |
| 282 | 355 | ||
| 283 | * Fix deprecations with guzzle/psr7 version 1.4 | 356 | * Fix deprecations with guzzle/psr7 version 1.4 |
| 284 | 357 | ||
| 358 | + | ||
| 285 | ## 6.2.2 - 2016-10-08 | 359 | ## 6.2.2 - 2016-10-08 |
| 286 | 360 | ||
| 287 | * Allow to pass nullable Response to delay callable | 361 | * Allow to pass nullable Response to delay callable |
| @@ -289,6 +363,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c | @@ -289,6 +363,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c | ||
| 289 | * Fix drain case where content-length is the literal string zero | 363 | * Fix drain case where content-length is the literal string zero |
| 290 | * Obfuscate in-URL credentials in exceptions | 364 | * Obfuscate in-URL credentials in exceptions |
| 291 | 365 | ||
| 366 | + | ||
| 292 | ## 6.2.1 - 2016-07-18 | 367 | ## 6.2.1 - 2016-07-18 |
| 293 | 368 | ||
| 294 | * Address HTTP_PROXY security vulnerability, CVE-2016-5385: | 369 | * Address HTTP_PROXY security vulnerability, CVE-2016-5385: |
| @@ -299,6 +374,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c | @@ -299,6 +374,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c | ||
| 299 | a server does not honor `Connection: close`. | 374 | a server does not honor `Connection: close`. |
| 300 | * Ignore URI fragment when sending requests. | 375 | * Ignore URI fragment when sending requests. |
| 301 | 376 | ||
| 377 | + | ||
| 302 | ## 6.2.0 - 2016-03-21 | 378 | ## 6.2.0 - 2016-03-21 |
| 303 | 379 | ||
| 304 | * Feature: added `GuzzleHttp\json_encode` and `GuzzleHttp\json_decode`. | 380 | * Feature: added `GuzzleHttp\json_encode` and `GuzzleHttp\json_decode`. |
| @@ -318,6 +394,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c | @@ -318,6 +394,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c | ||
| 318 | * Bug fix: provide an empty string to `http_build_query` for HHVM workaround. | 394 | * Bug fix: provide an empty string to `http_build_query` for HHVM workaround. |
| 319 | https://github.com/guzzle/guzzle/pull/1367 | 395 | https://github.com/guzzle/guzzle/pull/1367 |
| 320 | 396 | ||
| 397 | + | ||
| 321 | ## 6.1.1 - 2015-11-22 | 398 | ## 6.1.1 - 2015-11-22 |
| 322 | 399 | ||
| 323 | * Bug fix: Proxy::wrapSync() now correctly proxies to the appropriate handler | 400 | * Bug fix: Proxy::wrapSync() now correctly proxies to the appropriate handler |
| @@ -333,6 +410,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c | @@ -333,6 +410,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c | ||
| 333 | * Bug fix: fixed regression where MockHandler was not using `sink`. | 410 | * Bug fix: fixed regression where MockHandler was not using `sink`. |
| 334 | https://github.com/guzzle/guzzle/pull/1292 | 411 | https://github.com/guzzle/guzzle/pull/1292 |
| 335 | 412 | ||
| 413 | + | ||
| 336 | ## 6.1.0 - 2015-09-08 | 414 | ## 6.1.0 - 2015-09-08 |
| 337 | 415 | ||
| 338 | * Feature: Added the `on_stats` request option to provide access to transfer | 416 | * Feature: Added the `on_stats` request option to provide access to transfer |
| @@ -367,6 +445,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c | @@ -367,6 +445,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c | ||
| 367 | * Bug fix: Adding a Content-Length to PHP stream wrapper requests if not set. | 445 | * Bug fix: Adding a Content-Length to PHP stream wrapper requests if not set. |
| 368 | https://github.com/guzzle/guzzle/pull/1189 | 446 | https://github.com/guzzle/guzzle/pull/1189 |
| 369 | 447 | ||
| 448 | + | ||
| 370 | ## 6.0.2 - 2015-07-04 | 449 | ## 6.0.2 - 2015-07-04 |
| 371 | 450 | ||
| 372 | * Fixed a memory leak in the curl handlers in which references to callbacks | 451 | * Fixed a memory leak in the curl handlers in which references to callbacks |
| @@ -384,6 +463,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c | @@ -384,6 +463,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c | ||
| 384 | * Functions are now conditionally required using an additional level of | 463 | * Functions are now conditionally required using an additional level of |
| 385 | indirection to help with global Composer installations. | 464 | indirection to help with global Composer installations. |
| 386 | 465 | ||
| 466 | + | ||
| 387 | ## 6.0.1 - 2015-05-27 | 467 | ## 6.0.1 - 2015-05-27 |
| 388 | 468 | ||
| 389 | * Fixed a bug with serializing the `query` request option where the `&` | 469 | * Fixed a bug with serializing the `query` request option where the `&` |
| @@ -392,6 +472,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c | @@ -392,6 +472,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c | ||
| 392 | use `form_params` or `multipart` instead. | 472 | use `form_params` or `multipart` instead. |
| 393 | * Various doc fixes. | 473 | * Various doc fixes. |
| 394 | 474 | ||
| 475 | + | ||
| 395 | ## 6.0.0 - 2015-05-26 | 476 | ## 6.0.0 - 2015-05-26 |
| 396 | 477 | ||
| 397 | * See the UPGRADING.md document for more information. | 478 | * See the UPGRADING.md document for more information. |
| @@ -416,6 +497,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c | @@ -416,6 +497,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c | ||
| 416 | * `$maxHandles` has been removed from CurlMultiHandler. | 497 | * `$maxHandles` has been removed from CurlMultiHandler. |
| 417 | * `MultipartPostBody` is now part of the `guzzlehttp/psr7` package. | 498 | * `MultipartPostBody` is now part of the `guzzlehttp/psr7` package. |
| 418 | 499 | ||
| 500 | + | ||
| 419 | ## 5.3.0 - 2015-05-19 | 501 | ## 5.3.0 - 2015-05-19 |
| 420 | 502 | ||
| 421 | * Mock now supports `save_to` | 503 | * Mock now supports `save_to` |
| @@ -426,6 +508,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c | @@ -426,6 +508,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c | ||
| 426 | * Marked `GuzzleHttp\Client::getDefaultUserAgent` as deprecated. | 508 | * Marked `GuzzleHttp\Client::getDefaultUserAgent` as deprecated. |
| 427 | * URL scheme is now always lowercased. | 509 | * URL scheme is now always lowercased. |
| 428 | 510 | ||
| 511 | + | ||
| 429 | ## 6.0.0-beta.1 | 512 | ## 6.0.0-beta.1 |
| 430 | 513 | ||
| 431 | * Requires PHP >= 5.5 | 514 | * Requires PHP >= 5.5 |
| @@ -478,6 +561,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c | @@ -478,6 +561,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c | ||
| 478 | * `GuzzleHttp\QueryParser` has been replaced with the | 561 | * `GuzzleHttp\QueryParser` has been replaced with the |
| 479 | `GuzzleHttp\Psr7\parse_query`. | 562 | `GuzzleHttp\Psr7\parse_query`. |
| 480 | 563 | ||
| 564 | + | ||
| 481 | ## 5.2.0 - 2015-01-27 | 565 | ## 5.2.0 - 2015-01-27 |
| 482 | 566 | ||
| 483 | * Added `AppliesHeadersInterface` to make applying headers to a request based | 567 | * Added `AppliesHeadersInterface` to make applying headers to a request based |
| @@ -488,6 +572,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c | @@ -488,6 +572,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c | ||
| 488 | RingBridge. | 572 | RingBridge. |
| 489 | * Added a guard in the Pool class to not use recursion for request retries. | 573 | * Added a guard in the Pool class to not use recursion for request retries. |
| 490 | 574 | ||
| 575 | + | ||
| 491 | ## 5.1.0 - 2014-12-19 | 576 | ## 5.1.0 - 2014-12-19 |
| 492 | 577 | ||
| 493 | * Pool class no longer uses recursion when a request is intercepted. | 578 | * Pool class no longer uses recursion when a request is intercepted. |
| @@ -508,6 +593,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c | @@ -508,6 +593,7 @@ Please see [the upgrade document](UPGRADING.md) that describes all BC breaking c | ||
| 508 | * Exceptions thrown in the `end` event are now correctly wrapped with Guzzle | 593 | * Exceptions thrown in the `end` event are now correctly wrapped with Guzzle |
| 509 | specific exceptions if necessary. | 594 | specific exceptions if necessary. |
| 510 | 595 | ||
| 596 | + | ||
| 511 | ## 5.0.3 - 2014-11-03 | 597 | ## 5.0.3 - 2014-11-03 |
| 512 | 598 | ||
| 513 | This change updates query strings so that they are treated as un-encoded values | 599 | This change updates query strings so that they are treated as un-encoded values |
| @@ -522,6 +608,7 @@ string that should not be parsed or encoded (unless a call to getQuery() is | @@ -522,6 +608,7 @@ string that should not be parsed or encoded (unless a call to getQuery() is | ||
| 522 | subsequently made, forcing the query-string to be converted into a Query | 608 | subsequently made, forcing the query-string to be converted into a Query |
| 523 | object). | 609 | object). |
| 524 | 610 | ||
| 611 | + | ||
| 525 | ## 5.0.2 - 2014-10-30 | 612 | ## 5.0.2 - 2014-10-30 |
| 526 | 613 | ||
| 527 | * Added a trailing `\r\n` to multipart/form-data payloads. See | 614 | * Added a trailing `\r\n` to multipart/form-data payloads. See |
| @@ -543,6 +630,7 @@ object). | @@ -543,6 +630,7 @@ object). | ||
| 543 | string on a URL: Now allowing many more characters to be present in the | 630 | string on a URL: Now allowing many more characters to be present in the |
| 544 | query string without being percent encoded. See https://tools.ietf.org/html/rfc3986#appendix-A | 631 | query string without being percent encoded. See https://tools.ietf.org/html/rfc3986#appendix-A |
| 545 | 632 | ||
| 633 | + | ||
| 546 | ## 5.0.1 - 2014-10-16 | 634 | ## 5.0.1 - 2014-10-16 |
| 547 | 635 | ||
| 548 | Bugfix release. | 636 | Bugfix release. |
| @@ -554,6 +642,7 @@ Bugfix release. | @@ -554,6 +642,7 @@ Bugfix release. | ||
| 554 | * Fixed an issue where transfer statistics were not being populated in the | 642 | * Fixed an issue where transfer statistics were not being populated in the |
| 555 | RingBridge. https://github.com/guzzle/guzzle/issues/866 | 643 | RingBridge. https://github.com/guzzle/guzzle/issues/866 |
| 556 | 644 | ||
| 645 | + | ||
| 557 | ## 5.0.0 - 2014-10-12 | 646 | ## 5.0.0 - 2014-10-12 |
| 558 | 647 | ||
| 559 | Adding support for non-blocking responses and some minor API cleanup. | 648 | Adding support for non-blocking responses and some minor API cleanup. |
| @@ -635,6 +724,7 @@ interfaces. | @@ -635,6 +724,7 @@ interfaces. | ||
| 635 | argument. They now accept an associative array of options, including the | 724 | argument. They now accept an associative array of options, including the |
| 636 | "size" key and "metadata" key which can be used to provide custom metadata. | 725 | "size" key and "metadata" key which can be used to provide custom metadata. |
| 637 | 726 | ||
| 727 | + | ||
| 638 | ## 4.2.2 - 2014-09-08 | 728 | ## 4.2.2 - 2014-09-08 |
| 639 | 729 | ||
| 640 | * Fixed a memory leak in the CurlAdapter when reusing cURL handles. | 730 | * Fixed a memory leak in the CurlAdapter when reusing cURL handles. |
| @@ -61,12 +61,12 @@ composer require guzzlehttp/guzzle | @@ -61,12 +61,12 @@ composer require guzzlehttp/guzzle | ||
| 61 | ## Version Guidance | 61 | ## Version Guidance |
| 62 | 62 | ||
| 63 | | Version | Status | Packagist | Namespace | Repo | Docs | PSR-7 | PHP Version | | 63 | | Version | Status | Packagist | Namespace | Repo | Docs | PSR-7 | PHP Version | |
| 64 | -|---------|----------------|---------------------|--------------|---------------------|---------------------|-------|--------------| | 64 | +|---------|---------------------|---------------------|--------------|---------------------|---------------------|-------|--------------| |
| 65 | | 3.x | EOL | `guzzle/guzzle` | `Guzzle` | [v3][guzzle-3-repo] | [v3][guzzle-3-docs] | No | >=5.3.3,<7.0 | | 65 | | 3.x | EOL | `guzzle/guzzle` | `Guzzle` | [v3][guzzle-3-repo] | [v3][guzzle-3-docs] | No | >=5.3.3,<7.0 | |
| 66 | | 4.x | EOL | `guzzlehttp/guzzle` | `GuzzleHttp` | [v4][guzzle-4-repo] | N/A | No | >=5.4,<7.0 | | 66 | | 4.x | EOL | `guzzlehttp/guzzle` | `GuzzleHttp` | [v4][guzzle-4-repo] | N/A | No | >=5.4,<7.0 | |
| 67 | | 5.x | EOL | `guzzlehttp/guzzle` | `GuzzleHttp` | [v5][guzzle-5-repo] | [v5][guzzle-5-docs] | No | >=5.4,<7.4 | | 67 | | 5.x | EOL | `guzzlehttp/guzzle` | `GuzzleHttp` | [v5][guzzle-5-repo] | [v5][guzzle-5-docs] | No | >=5.4,<7.4 | |
| 68 | -| 6.x | Security fixes | `guzzlehttp/guzzle` | `GuzzleHttp` | [v6][guzzle-6-repo] | [v6][guzzle-6-docs] | Yes | >=5.5,<8.0 | | ||
| 69 | -| 7.x | Latest | `guzzlehttp/guzzle` | `GuzzleHttp` | [v7][guzzle-7-repo] | [v7][guzzle-7-docs] | Yes | >=7.2.5,<8.2 | | 68 | +| 6.x | Security fixes only | `guzzlehttp/guzzle` | `GuzzleHttp` | [v6][guzzle-6-repo] | [v6][guzzle-6-docs] | Yes | >=5.5,<8.0 | |
| 69 | +| 7.x | Latest | `guzzlehttp/guzzle` | `GuzzleHttp` | [v7][guzzle-7-repo] | [v7][guzzle-7-docs] | Yes | >=7.2.5,<8.3 | | ||
| 70 | 70 | ||
| 71 | [guzzle-3-repo]: https://github.com/guzzle/guzzle3 | 71 | [guzzle-3-repo]: https://github.com/guzzle/guzzle3 |
| 72 | [guzzle-4-repo]: https://github.com/guzzle/guzzle/tree/4.x | 72 | [guzzle-4-repo]: https://github.com/guzzle/guzzle/tree/4.x |
| @@ -53,8 +53,8 @@ | @@ -53,8 +53,8 @@ | ||
| 53 | "require": { | 53 | "require": { |
| 54 | "php": "^7.2.5 || ^8.0", | 54 | "php": "^7.2.5 || ^8.0", |
| 55 | "ext-json": "*", | 55 | "ext-json": "*", |
| 56 | - "guzzlehttp/promises": "^1.5", | ||
| 57 | - "guzzlehttp/psr7": "^1.9 || ^2.4", | 56 | + "guzzlehttp/promises": "^1.5.3 || ^2.0", |
| 57 | + "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", | ||
| 58 | "psr/http-client": "^1.0", | 58 | "psr/http-client": "^1.0", |
| 59 | "symfony/deprecation-contracts": "^2.2 || ^3.0" | 59 | "symfony/deprecation-contracts": "^2.2 || ^3.0" |
| 60 | }, | 60 | }, |
| @@ -64,7 +64,8 @@ | @@ -64,7 +64,8 @@ | ||
| 64 | "require-dev": { | 64 | "require-dev": { |
| 65 | "ext-curl": "*", | 65 | "ext-curl": "*", |
| 66 | "bamarni/composer-bin-plugin": "^1.8.1", | 66 | "bamarni/composer-bin-plugin": "^1.8.1", |
| 67 | - "php-http/client-integration-tests": "^3.0", | 67 | + "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", |
| 68 | + "php-http/message-factory": "^1.1", | ||
| 68 | "phpunit/phpunit": "^8.5.29 || ^9.5.23", | 69 | "phpunit/phpunit": "^8.5.29 || ^9.5.23", |
| 69 | "psr/log": "^1.1 || ^2.0 || ^3.0" | 70 | "psr/log": "^1.1 || ^2.0 || ^3.0" |
| 70 | }, | 71 | }, |
| @@ -84,9 +85,6 @@ | @@ -84,9 +85,6 @@ | ||
| 84 | "bamarni-bin": { | 85 | "bamarni-bin": { |
| 85 | "bin-links": true, | 86 | "bin-links": true, |
| 86 | "forward-command": false | 87 | "forward-command": false |
| 87 | - }, | ||
| 88 | - "branch-alias": { | ||
| 89 | - "dev-master": "7.5-dev" | ||
| 90 | } | 88 | } |
| 91 | }, | 89 | }, |
| 92 | "autoload": { | 90 | "autoload": { |
| @@ -120,13 +120,14 @@ class Client implements ClientInterface, \Psr\Http\Client\ClientInterface | @@ -120,13 +120,14 @@ class Client implements ClientInterface, \Psr\Http\Client\ClientInterface | ||
| 120 | public function send(RequestInterface $request, array $options = []): ResponseInterface | 120 | public function send(RequestInterface $request, array $options = []): ResponseInterface |
| 121 | { | 121 | { |
| 122 | $options[RequestOptions::SYNCHRONOUS] = true; | 122 | $options[RequestOptions::SYNCHRONOUS] = true; |
| 123 | + | ||
| 123 | return $this->sendAsync($request, $options)->wait(); | 124 | return $this->sendAsync($request, $options)->wait(); |
| 124 | } | 125 | } |
| 125 | 126 | ||
| 126 | /** | 127 | /** |
| 127 | * The HttpClient PSR (PSR-18) specify this method. | 128 | * The HttpClient PSR (PSR-18) specify this method. |
| 128 | * | 129 | * |
| 129 | - * @inheritDoc | 130 | + * {@inheritDoc} |
| 130 | */ | 131 | */ |
| 131 | public function sendRequest(RequestInterface $request): ResponseInterface | 132 | public function sendRequest(RequestInterface $request): ResponseInterface |
| 132 | { | 133 | { |
| @@ -184,6 +185,7 @@ class Client implements ClientInterface, \Psr\Http\Client\ClientInterface | @@ -184,6 +185,7 @@ class Client implements ClientInterface, \Psr\Http\Client\ClientInterface | ||
| 184 | public function request(string $method, $uri = '', array $options = []): ResponseInterface | 185 | public function request(string $method, $uri = '', array $options = []): ResponseInterface |
| 185 | { | 186 | { |
| 186 | $options[RequestOptions::SYNCHRONOUS] = true; | 187 | $options[RequestOptions::SYNCHRONOUS] = true; |
| 188 | + | ||
| 187 | return $this->requestAsync($method, $uri, $options)->wait(); | 189 | return $this->requestAsync($method, $uri, $options)->wait(); |
| 188 | } | 190 | } |
| 189 | 191 | ||
| @@ -354,10 +356,10 @@ class Client implements ClientInterface, \Psr\Http\Client\ClientInterface | @@ -354,10 +356,10 @@ class Client implements ClientInterface, \Psr\Http\Client\ClientInterface | ||
| 354 | if (isset($options['form_params'])) { | 356 | if (isset($options['form_params'])) { |
| 355 | if (isset($options['multipart'])) { | 357 | if (isset($options['multipart'])) { |
| 356 | throw new InvalidArgumentException('You cannot use ' | 358 | throw new InvalidArgumentException('You cannot use ' |
| 357 | - . 'form_params and multipart at the same time. Use the ' | ||
| 358 | - . 'form_params option if you want to send application/' | ||
| 359 | - . 'x-www-form-urlencoded requests, and the multipart ' | ||
| 360 | - . 'option to send multipart/form-data requests.'); | 359 | + .'form_params and multipart at the same time. Use the ' |
| 360 | + .'form_params option if you want to send application/' | ||
| 361 | + .'x-www-form-urlencoded requests, and the multipart ' | ||
| 362 | + .'option to send multipart/form-data requests.'); | ||
| 361 | } | 363 | } |
| 362 | $options['body'] = \http_build_query($options['form_params'], '', '&'); | 364 | $options['body'] = \http_build_query($options['form_params'], '', '&'); |
| 363 | unset($options['form_params']); | 365 | unset($options['form_params']); |
| @@ -403,7 +405,7 @@ class Client implements ClientInterface, \Psr\Http\Client\ClientInterface | @@ -403,7 +405,7 @@ class Client implements ClientInterface, \Psr\Http\Client\ClientInterface | ||
| 403 | // Ensure that we don't have the header in different case and set the new value. | 405 | // Ensure that we don't have the header in different case and set the new value. |
| 404 | $modify['set_headers'] = Psr7\Utils::caselessRemove(['Authorization'], $modify['set_headers']); | 406 | $modify['set_headers'] = Psr7\Utils::caselessRemove(['Authorization'], $modify['set_headers']); |
| 405 | $modify['set_headers']['Authorization'] = 'Basic ' | 407 | $modify['set_headers']['Authorization'] = 'Basic ' |
| 406 | - . \base64_encode("$value[0]:$value[1]"); | 408 | + .\base64_encode("$value[0]:$value[1]"); |
| 407 | break; | 409 | break; |
| 408 | case 'digest': | 410 | case 'digest': |
| 409 | // @todo: Do not rely on curl | 411 | // @todo: Do not rely on curl |
| @@ -437,13 +439,17 @@ class Client implements ClientInterface, \Psr\Http\Client\ClientInterface | @@ -437,13 +439,17 @@ class Client implements ClientInterface, \Psr\Http\Client\ClientInterface | ||
| 437 | } | 439 | } |
| 438 | } | 440 | } |
| 439 | 441 | ||
| 442 | + if (isset($options['version'])) { | ||
| 443 | + $modify['version'] = $options['version']; | ||
| 444 | + } | ||
| 445 | + | ||
| 440 | $request = Psr7\Utils::modifyRequest($request, $modify); | 446 | $request = Psr7\Utils::modifyRequest($request, $modify); |
| 441 | if ($request->getBody() instanceof Psr7\MultipartStream) { | 447 | if ($request->getBody() instanceof Psr7\MultipartStream) { |
| 442 | // Use a multipart/form-data POST if a Content-Type is not set. | 448 | // Use a multipart/form-data POST if a Content-Type is not set. |
| 443 | // Ensure that we don't have the header in different case and set the new value. | 449 | // Ensure that we don't have the header in different case and set the new value. |
| 444 | $options['_conditional'] = Psr7\Utils::caselessRemove(['Content-Type'], $options['_conditional']); | 450 | $options['_conditional'] = Psr7\Utils::caselessRemove(['Content-Type'], $options['_conditional']); |
| 445 | $options['_conditional']['Content-Type'] = 'multipart/form-data; boundary=' | 451 | $options['_conditional']['Content-Type'] = 'multipart/form-data; boundary=' |
| 446 | - . $request->getBody()->getBoundary(); | 452 | + .$request->getBody()->getBoundary(); |
| 447 | } | 453 | } |
| 448 | 454 | ||
| 449 | // Merge in conditional headers if they are not present. | 455 | // Merge in conditional headers if they are not present. |
| @@ -469,9 +475,9 @@ class Client implements ClientInterface, \Psr\Http\Client\ClientInterface | @@ -469,9 +475,9 @@ class Client implements ClientInterface, \Psr\Http\Client\ClientInterface | ||
| 469 | private function invalidBody(): InvalidArgumentException | 475 | private function invalidBody(): InvalidArgumentException |
| 470 | { | 476 | { |
| 471 | return new InvalidArgumentException('Passing in the "body" request ' | 477 | return new InvalidArgumentException('Passing in the "body" request ' |
| 472 | - . 'option as an array to send a request is not supported. ' | ||
| 473 | - . 'Please use the "form_params" request option to send a ' | ||
| 474 | - . 'application/x-www-form-urlencoded request, or the "multipart" ' | ||
| 475 | - . 'request option to send a multipart/form-data request.'); | 478 | + .'option as an array to send a request is not supported. ' |
| 479 | + .'Please use the "form_params" request option to send a ' | ||
| 480 | + .'application/x-www-form-urlencoded request, or the "multipart" ' | ||
| 481 | + .'request option to send a multipart/form-data request.'); | ||
| 476 | } | 482 | } |
| 477 | } | 483 | } |
| @@ -53,7 +53,7 @@ class CookieJar implements CookieJarInterface | @@ -53,7 +53,7 @@ class CookieJar implements CookieJarInterface | ||
| 53 | 'Domain' => $domain, | 53 | 'Domain' => $domain, |
| 54 | 'Name' => $name, | 54 | 'Name' => $name, |
| 55 | 'Value' => $value, | 55 | 'Value' => $value, |
| 56 | - 'Discard' => true | 56 | + 'Discard' => true, |
| 57 | ])); | 57 | ])); |
| 58 | } | 58 | } |
| 59 | 59 | ||
| @@ -97,7 +97,7 @@ class CookieJar implements CookieJarInterface | @@ -97,7 +97,7 @@ class CookieJar implements CookieJarInterface | ||
| 97 | } | 97 | } |
| 98 | 98 | ||
| 99 | /** | 99 | /** |
| 100 | - * @inheritDoc | 100 | + * {@inheritDoc} |
| 101 | */ | 101 | */ |
| 102 | public function toArray(): array | 102 | public function toArray(): array |
| 103 | { | 103 | { |
| @@ -107,12 +107,13 @@ class CookieJar implements CookieJarInterface | @@ -107,12 +107,13 @@ class CookieJar implements CookieJarInterface | ||
| 107 | } | 107 | } |
| 108 | 108 | ||
| 109 | /** | 109 | /** |
| 110 | - * @inheritDoc | 110 | + * {@inheritDoc} |
| 111 | */ | 111 | */ |
| 112 | public function clear(?string $domain = null, ?string $path = null, ?string $name = null): void | 112 | public function clear(?string $domain = null, ?string $path = null, ?string $name = null): void |
| 113 | { | 113 | { |
| 114 | if (!$domain) { | 114 | if (!$domain) { |
| 115 | $this->cookies = []; | 115 | $this->cookies = []; |
| 116 | + | ||
| 116 | return; | 117 | return; |
| 117 | } elseif (!$path) { | 118 | } elseif (!$path) { |
| 118 | $this->cookies = \array_filter( | 119 | $this->cookies = \array_filter( |
| @@ -142,7 +143,7 @@ class CookieJar implements CookieJarInterface | @@ -142,7 +143,7 @@ class CookieJar implements CookieJarInterface | ||
| 142 | } | 143 | } |
| 143 | 144 | ||
| 144 | /** | 145 | /** |
| 145 | - * @inheritDoc | 146 | + * {@inheritDoc} |
| 146 | */ | 147 | */ |
| 147 | public function clearSessionCookies(): void | 148 | public function clearSessionCookies(): void |
| 148 | { | 149 | { |
| @@ -155,7 +156,7 @@ class CookieJar implements CookieJarInterface | @@ -155,7 +156,7 @@ class CookieJar implements CookieJarInterface | ||
| 155 | } | 156 | } |
| 156 | 157 | ||
| 157 | /** | 158 | /** |
| 158 | - * @inheritDoc | 159 | + * {@inheritDoc} |
| 159 | */ | 160 | */ |
| 160 | public function setCookie(SetCookie $cookie): bool | 161 | public function setCookie(SetCookie $cookie): bool |
| 161 | { | 162 | { |
| @@ -170,9 +171,10 @@ class CookieJar implements CookieJarInterface | @@ -170,9 +171,10 @@ class CookieJar implements CookieJarInterface | ||
| 170 | $result = $cookie->validate(); | 171 | $result = $cookie->validate(); |
| 171 | if ($result !== true) { | 172 | if ($result !== true) { |
| 172 | if ($this->strictMode) { | 173 | if ($this->strictMode) { |
| 173 | - throw new \RuntimeException('Invalid cookie: ' . $result); | 174 | + throw new \RuntimeException('Invalid cookie: '.$result); |
| 174 | } | 175 | } |
| 175 | $this->removeCookieIfEmpty($cookie); | 176 | $this->removeCookieIfEmpty($cookie); |
| 177 | + | ||
| 176 | return false; | 178 | return false; |
| 177 | } | 179 | } |
| 178 | 180 | ||
| @@ -253,7 +255,7 @@ class CookieJar implements CookieJarInterface | @@ -253,7 +255,7 @@ class CookieJar implements CookieJarInterface | ||
| 253 | /** | 255 | /** |
| 254 | * Computes cookie path following RFC 6265 section 5.1.4 | 256 | * Computes cookie path following RFC 6265 section 5.1.4 |
| 255 | * | 257 | * |
| 256 | - * @link https://tools.ietf.org/html/rfc6265#section-5.1.4 | 258 | + * @see https://tools.ietf.org/html/rfc6265#section-5.1.4 |
| 257 | */ | 259 | */ |
| 258 | private function getCookiePathFromRequest(RequestInterface $request): string | 260 | private function getCookiePathFromRequest(RequestInterface $request): string |
| 259 | { | 261 | { |
| @@ -289,8 +291,8 @@ class CookieJar implements CookieJarInterface | @@ -289,8 +291,8 @@ class CookieJar implements CookieJarInterface | ||
| 289 | !$cookie->isExpired() && | 291 | !$cookie->isExpired() && |
| 290 | (!$cookie->getSecure() || $scheme === 'https') | 292 | (!$cookie->getSecure() || $scheme === 'https') |
| 291 | ) { | 293 | ) { |
| 292 | - $values[] = $cookie->getName() . '=' | ||
| 293 | - . $cookie->getValue(); | 294 | + $values[] = $cookie->getName().'=' |
| 295 | + .$cookie->getValue(); | ||
| 294 | } | 296 | } |
| 295 | } | 297 | } |
| 296 | 298 |
| @@ -13,7 +13,7 @@ use Psr\Http\Message\ResponseInterface; | @@ -13,7 +13,7 @@ use Psr\Http\Message\ResponseInterface; | ||
| 13 | * necessary. Subclasses are also responsible for storing and retrieving | 13 | * necessary. Subclasses are also responsible for storing and retrieving |
| 14 | * cookies from a file, database, etc. | 14 | * cookies from a file, database, etc. |
| 15 | * | 15 | * |
| 16 | - * @link https://docs.python.org/2/library/cookielib.html Inspiration | 16 | + * @see https://docs.python.org/2/library/cookielib.html Inspiration |
| 17 | * @extends \IteratorAggregate<SetCookie> | 17 | * @extends \IteratorAggregate<SetCookie> |
| 18 | */ | 18 | */ |
| 19 | interface CookieJarInterface extends \Countable, \IteratorAggregate | 19 | interface CookieJarInterface extends \Countable, \IteratorAggregate |
| @@ -71,7 +71,7 @@ class SessionCookieJar extends CookieJar | @@ -71,7 +71,7 @@ class SessionCookieJar extends CookieJar | ||
| 71 | $this->setCookie(new SetCookie($cookie)); | 71 | $this->setCookie(new SetCookie($cookie)); |
| 72 | } | 72 | } |
| 73 | } elseif (\strlen($data)) { | 73 | } elseif (\strlen($data)) { |
| 74 | - throw new \RuntimeException("Invalid cookie data"); | 74 | + throw new \RuntimeException('Invalid cookie data'); |
| 75 | } | 75 | } |
| 76 | } | 76 | } |
| 77 | } | 77 | } |
| @@ -19,7 +19,7 @@ class SetCookie | @@ -19,7 +19,7 @@ class SetCookie | ||
| 19 | 'Expires' => null, | 19 | 'Expires' => null, |
| 20 | 'Secure' => false, | 20 | 'Secure' => false, |
| 21 | 'Discard' => false, | 21 | 'Discard' => false, |
| 22 | - 'HttpOnly' => false | 22 | + 'HttpOnly' => false, |
| 23 | ]; | 23 | ]; |
| 24 | 24 | ||
| 25 | /** | 25 | /** |
| @@ -58,7 +58,13 @@ class SetCookie | @@ -58,7 +58,13 @@ class SetCookie | ||
| 58 | } else { | 58 | } else { |
| 59 | foreach (\array_keys(self::$defaults) as $search) { | 59 | foreach (\array_keys(self::$defaults) as $search) { |
| 60 | if (!\strcasecmp($search, $key)) { | 60 | if (!\strcasecmp($search, $key)) { |
| 61 | + if ($search === 'Max-Age') { | ||
| 62 | + if (is_numeric($value)) { | ||
| 63 | + $data[$search] = (int) $value; | ||
| 64 | + } | ||
| 65 | + } else { | ||
| 61 | $data[$search] = $value; | 66 | $data[$search] = $value; |
| 67 | + } | ||
| 62 | continue 2; | 68 | continue 2; |
| 63 | } | 69 | } |
| 64 | } | 70 | } |
| @@ -74,13 +80,49 @@ class SetCookie | @@ -74,13 +80,49 @@ class SetCookie | ||
| 74 | */ | 80 | */ |
| 75 | public function __construct(array $data = []) | 81 | public function __construct(array $data = []) |
| 76 | { | 82 | { |
| 77 | - /** @var array|null $replaced will be null in case of replace error */ | ||
| 78 | - $replaced = \array_replace(self::$defaults, $data); | ||
| 79 | - if ($replaced === null) { | ||
| 80 | - throw new \InvalidArgumentException('Unable to replace the default values for the Cookie.'); | 83 | + $this->data = self::$defaults; |
| 84 | + | ||
| 85 | + if (isset($data['Name'])) { | ||
| 86 | + $this->setName($data['Name']); | ||
| 87 | + } | ||
| 88 | + | ||
| 89 | + if (isset($data['Value'])) { | ||
| 90 | + $this->setValue($data['Value']); | ||
| 91 | + } | ||
| 92 | + | ||
| 93 | + if (isset($data['Domain'])) { | ||
| 94 | + $this->setDomain($data['Domain']); | ||
| 95 | + } | ||
| 96 | + | ||
| 97 | + if (isset($data['Path'])) { | ||
| 98 | + $this->setPath($data['Path']); | ||
| 99 | + } | ||
| 100 | + | ||
| 101 | + if (isset($data['Max-Age'])) { | ||
| 102 | + $this->setMaxAge($data['Max-Age']); | ||
| 103 | + } | ||
| 104 | + | ||
| 105 | + if (isset($data['Expires'])) { | ||
| 106 | + $this->setExpires($data['Expires']); | ||
| 107 | + } | ||
| 108 | + | ||
| 109 | + if (isset($data['Secure'])) { | ||
| 110 | + $this->setSecure($data['Secure']); | ||
| 111 | + } | ||
| 112 | + | ||
| 113 | + if (isset($data['Discard'])) { | ||
| 114 | + $this->setDiscard($data['Discard']); | ||
| 115 | + } | ||
| 116 | + | ||
| 117 | + if (isset($data['HttpOnly'])) { | ||
| 118 | + $this->setHttpOnly($data['HttpOnly']); | ||
| 119 | + } | ||
| 120 | + | ||
| 121 | + // Set the remaining values that don't have extra validation logic | ||
| 122 | + foreach (array_diff(array_keys($data), array_keys(self::$defaults)) as $key) { | ||
| 123 | + $this->data[$key] = $data[$key]; | ||
| 81 | } | 124 | } |
| 82 | 125 | ||
| 83 | - $this->data = $replaced; | ||
| 84 | // Extract the Expires value and turn it into a UNIX timestamp if needed | 126 | // Extract the Expires value and turn it into a UNIX timestamp if needed |
| 85 | if (!$this->getExpires() && $this->getMaxAge()) { | 127 | if (!$this->getExpires() && $this->getMaxAge()) { |
| 86 | // Calculate the Expires date | 128 | // Calculate the Expires date |
| @@ -92,13 +134,13 @@ class SetCookie | @@ -92,13 +134,13 @@ class SetCookie | ||
| 92 | 134 | ||
| 93 | public function __toString() | 135 | public function __toString() |
| 94 | { | 136 | { |
| 95 | - $str = $this->data['Name'] . '=' . ($this->data['Value'] ?? '') . '; '; | 137 | + $str = $this->data['Name'].'='.($this->data['Value'] ?? '').'; '; |
| 96 | foreach ($this->data as $k => $v) { | 138 | foreach ($this->data as $k => $v) { |
| 97 | if ($k !== 'Name' && $k !== 'Value' && $v !== null && $v !== false) { | 139 | if ($k !== 'Name' && $k !== 'Value' && $v !== null && $v !== false) { |
| 98 | if ($k === 'Expires') { | 140 | if ($k === 'Expires') { |
| 99 | - $str .= 'Expires=' . \gmdate('D, d M Y H:i:s \G\M\T', $v) . '; '; | 141 | + $str .= 'Expires='.\gmdate('D, d M Y H:i:s \G\M\T', $v).'; '; |
| 100 | } else { | 142 | } else { |
| 101 | - $str .= ($v === true ? $k : "{$k}={$v}") . '; '; | 143 | + $str .= ($v === true ? $k : "{$k}={$v}").'; '; |
| 102 | } | 144 | } |
| 103 | } | 145 | } |
| 104 | } | 146 | } |
| @@ -394,7 +436,7 @@ class SetCookie | @@ -394,7 +436,7 @@ class SetCookie | ||
| 394 | return false; | 436 | return false; |
| 395 | } | 437 | } |
| 396 | 438 | ||
| 397 | - return (bool) \preg_match('/\.' . \preg_quote($cookieDomain, '/') . '$/', $domain); | 439 | + return (bool) \preg_match('/\.'.\preg_quote($cookieDomain, '/').'$/', $domain); |
| 398 | } | 440 | } |
| 399 | 441 | ||
| 400 | /** | 442 | /** |
| @@ -423,8 +465,8 @@ class SetCookie | @@ -423,8 +465,8 @@ class SetCookie | ||
| 423 | $name | 465 | $name |
| 424 | )) { | 466 | )) { |
| 425 | return 'Cookie name must not contain invalid characters: ASCII ' | 467 | return 'Cookie name must not contain invalid characters: ASCII ' |
| 426 | - . 'Control characters (0-31;127), space, tab and the ' | ||
| 427 | - . 'following characters: ()<>@,;:\"/?={}'; | 468 | + .'Control characters (0-31;127), space, tab and the ' |
| 469 | + .'following characters: ()<>@,;:\"/?={}'; | ||
| 428 | } | 470 | } |
| 429 | 471 | ||
| 430 | // Value must not be null. 0 and empty string are valid. Empty strings | 472 | // Value must not be null. 0 and empty string are valid. Empty strings |
| @@ -51,7 +51,7 @@ class CurlFactory implements CurlFactoryInterface | @@ -51,7 +51,7 @@ class CurlFactory implements CurlFactoryInterface | ||
| 51 | unset($options['curl']['body_as_string']); | 51 | unset($options['curl']['body_as_string']); |
| 52 | } | 52 | } |
| 53 | 53 | ||
| 54 | - $easy = new EasyHandle; | 54 | + $easy = new EasyHandle(); |
| 55 | $easy->request = $request; | 55 | $easy->request = $request; |
| 56 | $easy->options = $options; | 56 | $easy->options = $options; |
| 57 | $conf = $this->getDefaultConf($easy); | 57 | $conf = $this->getDefaultConf($easy); |
| @@ -224,7 +224,7 @@ class CurlFactory implements CurlFactoryInterface | @@ -224,7 +224,7 @@ class CurlFactory implements CurlFactoryInterface | ||
| 224 | \CURLOPT_URL => (string) $easy->request->getUri()->withFragment(''), | 224 | \CURLOPT_URL => (string) $easy->request->getUri()->withFragment(''), |
| 225 | \CURLOPT_RETURNTRANSFER => false, | 225 | \CURLOPT_RETURNTRANSFER => false, |
| 226 | \CURLOPT_HEADER => false, | 226 | \CURLOPT_HEADER => false, |
| 227 | - \CURLOPT_CONNECTTIMEOUT => 150, | 227 | + \CURLOPT_CONNECTTIMEOUT => 300, |
| 228 | ]; | 228 | ]; |
| 229 | 229 | ||
| 230 | if (\defined('CURLOPT_PROTOCOLS')) { | 230 | if (\defined('CURLOPT_PROTOCOLS')) { |
| @@ -250,6 +250,7 @@ class CurlFactory implements CurlFactoryInterface | @@ -250,6 +250,7 @@ class CurlFactory implements CurlFactoryInterface | ||
| 250 | 250 | ||
| 251 | if ($size === null || $size > 0) { | 251 | if ($size === null || $size > 0) { |
| 252 | $this->applyBody($easy->request, $easy->options, $conf); | 252 | $this->applyBody($easy->request, $easy->options, $conf); |
| 253 | + | ||
| 253 | return; | 254 | return; |
| 254 | } | 255 | } |
| 255 | 256 | ||
| @@ -341,6 +342,7 @@ class CurlFactory implements CurlFactoryInterface | @@ -341,6 +342,7 @@ class CurlFactory implements CurlFactoryInterface | ||
| 341 | foreach (\array_keys($options['_headers']) as $key) { | 342 | foreach (\array_keys($options['_headers']) as $key) { |
| 342 | if (!\strcasecmp($key, $name)) { | 343 | if (!\strcasecmp($key, $name)) { |
| 343 | unset($options['_headers'][$key]); | 344 | unset($options['_headers'][$key]); |
| 345 | + | ||
| 344 | return; | 346 | return; |
| 345 | } | 347 | } |
| 346 | } | 348 | } |
| @@ -443,13 +445,41 @@ class CurlFactory implements CurlFactoryInterface | @@ -443,13 +445,41 @@ class CurlFactory implements CurlFactoryInterface | ||
| 443 | $scheme = $easy->request->getUri()->getScheme(); | 445 | $scheme = $easy->request->getUri()->getScheme(); |
| 444 | if (isset($options['proxy'][$scheme])) { | 446 | if (isset($options['proxy'][$scheme])) { |
| 445 | $host = $easy->request->getUri()->getHost(); | 447 | $host = $easy->request->getUri()->getHost(); |
| 446 | - if (!isset($options['proxy']['no']) || !Utils::isHostInNoProxy($host, $options['proxy']['no'])) { | 448 | + if (isset($options['proxy']['no']) && Utils::isHostInNoProxy($host, $options['proxy']['no'])) { |
| 449 | + unset($conf[\CURLOPT_PROXY]); | ||
| 450 | + } else { | ||
| 447 | $conf[\CURLOPT_PROXY] = $options['proxy'][$scheme]; | 451 | $conf[\CURLOPT_PROXY] = $options['proxy'][$scheme]; |
| 448 | } | 452 | } |
| 449 | } | 453 | } |
| 450 | } | 454 | } |
| 451 | } | 455 | } |
| 452 | 456 | ||
| 457 | + 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 | + } | ||
| 462 | + $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_0; | ||
| 463 | + } 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 | + } | ||
| 467 | + $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_1; | ||
| 468 | + } elseif (\STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT === $options['crypto_method']) { | ||
| 469 | + if (!defined('CURL_SSLVERSION_TLSv1_2')) { | ||
| 470 | + throw new \InvalidArgumentException('Invalid crypto_method request option: TLS 1.2 not supported by your version of cURL'); | ||
| 471 | + } | ||
| 472 | + $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_2; | ||
| 473 | + } elseif (defined('STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT') && \STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT === $options['crypto_method']) { | ||
| 474 | + if (!defined('CURL_SSLVERSION_TLSv1_3')) { | ||
| 475 | + throw new \InvalidArgumentException('Invalid crypto_method request option: TLS 1.3 not supported by your version of cURL'); | ||
| 476 | + } | ||
| 477 | + $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_3; | ||
| 478 | + } else { | ||
| 479 | + throw new \InvalidArgumentException('Invalid crypto_method request option: unknown version provided'); | ||
| 480 | + } | ||
| 481 | + } | ||
| 482 | + | ||
| 453 | if (isset($options['cert'])) { | 483 | if (isset($options['cert'])) { |
| 454 | $cert = $options['cert']; | 484 | $cert = $options['cert']; |
| 455 | if (\is_array($cert)) { | 485 | if (\is_array($cert)) { |
| @@ -459,8 +489,8 @@ class CurlFactory implements CurlFactoryInterface | @@ -459,8 +489,8 @@ class CurlFactory implements CurlFactoryInterface | ||
| 459 | if (!\file_exists($cert)) { | 489 | if (!\file_exists($cert)) { |
| 460 | throw new \InvalidArgumentException("SSL certificate not found: {$cert}"); | 490 | throw new \InvalidArgumentException("SSL certificate not found: {$cert}"); |
| 461 | } | 491 | } |
| 462 | - # OpenSSL (versions 0.9.3 and later) also support "P12" for PKCS#12-encoded files. | ||
| 463 | - # see https://curl.se/libcurl/c/CURLOPT_SSLCERTTYPE.html | 492 | + // OpenSSL (versions 0.9.3 and later) also support "P12" for PKCS#12-encoded files. |
| 493 | + // see https://curl.se/libcurl/c/CURLOPT_SSLCERTTYPE.html | ||
| 464 | $ext = pathinfo($cert, \PATHINFO_EXTENSION); | 494 | $ext = pathinfo($cert, \PATHINFO_EXTENSION); |
| 465 | if (preg_match('#^(der|p12)$#i', $ext)) { | 495 | if (preg_match('#^(der|p12)$#i', $ext)) { |
| 466 | $conf[\CURLOPT_SSLCERTTYPE] = strtoupper($ext); | 496 | $conf[\CURLOPT_SSLCERTTYPE] = strtoupper($ext); |
| @@ -523,9 +553,10 @@ class CurlFactory implements CurlFactoryInterface | @@ -523,9 +553,10 @@ class CurlFactory implements CurlFactoryInterface | ||
| 523 | } | 553 | } |
| 524 | } catch (\RuntimeException $e) { | 554 | } catch (\RuntimeException $e) { |
| 525 | $ctx['error'] = 'The connection unexpectedly failed without ' | 555 | $ctx['error'] = 'The connection unexpectedly failed without ' |
| 526 | - . 'providing an error. The request would have been retried, ' | ||
| 527 | - . 'but attempting to rewind the request body failed. ' | ||
| 528 | - . 'Exception: ' . $e; | 556 | + .'providing an error. The request would have been retried, ' |
| 557 | + .'but attempting to rewind the request body failed. ' | ||
| 558 | + .'Exception: '.$e; | ||
| 559 | + | ||
| 529 | return self::createRejection($easy, $ctx); | 560 | return self::createRejection($easy, $ctx); |
| 530 | } | 561 | } |
| 531 | 562 | ||
| @@ -534,14 +565,15 @@ class CurlFactory implements CurlFactoryInterface | @@ -534,14 +565,15 @@ class CurlFactory implements CurlFactoryInterface | ||
| 534 | $easy->options['_curl_retries'] = 1; | 565 | $easy->options['_curl_retries'] = 1; |
| 535 | } elseif ($easy->options['_curl_retries'] == 2) { | 566 | } elseif ($easy->options['_curl_retries'] == 2) { |
| 536 | $ctx['error'] = 'The cURL request was retried 3 times ' | 567 | $ctx['error'] = 'The cURL request was retried 3 times ' |
| 537 | - . 'and did not succeed. The most likely reason for the failure ' | ||
| 538 | - . 'is that cURL was unable to rewind the body of the request ' | ||
| 539 | - . 'and subsequent retries resulted in the same error. Turn on ' | ||
| 540 | - . 'the debug option to see what went wrong. See ' | ||
| 541 | - . 'https://bugs.php.net/bug.php?id=47204 for more information.'; | 568 | + .'and did not succeed. The most likely reason for the failure ' |
| 569 | + .'is that cURL was unable to rewind the body of the request ' | ||
| 570 | + .'and subsequent retries resulted in the same error. Turn on ' | ||
| 571 | + .'the debug option to see what went wrong. See ' | ||
| 572 | + .'https://bugs.php.net/bug.php?id=47204 for more information.'; | ||
| 573 | + | ||
| 542 | return self::createRejection($easy, $ctx); | 574 | return self::createRejection($easy, $ctx); |
| 543 | } else { | 575 | } else { |
| 544 | - $easy->options['_curl_retries']++; | 576 | + ++$easy->options['_curl_retries']; |
| 545 | } | 577 | } |
| 546 | 578 | ||
| 547 | return $handler($easy->request, $easy->options); | 579 | return $handler($easy->request, $easy->options); |
| @@ -571,6 +603,7 @@ class CurlFactory implements CurlFactoryInterface | @@ -571,6 +603,7 @@ class CurlFactory implements CurlFactoryInterface | ||
| 571 | $easy->createResponse(); | 603 | $easy->createResponse(); |
| 572 | } catch (\Exception $e) { | 604 | } catch (\Exception $e) { |
| 573 | $easy->createResponseException = $e; | 605 | $easy->createResponseException = $e; |
| 606 | + | ||
| 574 | return -1; | 607 | return -1; |
| 575 | } | 608 | } |
| 576 | if ($onHeaders !== null) { | 609 | if ($onHeaders !== null) { |
| @@ -580,6 +613,7 @@ class CurlFactory implements CurlFactoryInterface | @@ -580,6 +613,7 @@ class CurlFactory implements CurlFactoryInterface | ||
| 580 | // Associate the exception with the handle and trigger | 613 | // Associate the exception with the handle and trigger |
| 581 | // a curl header write error by returning 0. | 614 | // a curl header write error by returning 0. |
| 582 | $easy->onHeadersException = $e; | 615 | $easy->onHeadersException = $e; |
| 616 | + | ||
| 583 | return -1; | 617 | return -1; |
| 584 | } | 618 | } |
| 585 | } | 619 | } |
| @@ -589,6 +623,7 @@ class CurlFactory implements CurlFactoryInterface | @@ -589,6 +623,7 @@ class CurlFactory implements CurlFactoryInterface | ||
| 589 | } else { | 623 | } else { |
| 590 | $easy->headers[] = $value; | 624 | $easy->headers[] = $value; |
| 591 | } | 625 | } |
| 626 | + | ||
| 592 | return \strlen($h); | 627 | return \strlen($h); |
| 593 | }; | 628 | }; |
| 594 | } | 629 | } |
| @@ -164,7 +164,8 @@ class CurlMultiHandler | @@ -164,7 +164,8 @@ class CurlMultiHandler | ||
| 164 | \usleep(250); | 164 | \usleep(250); |
| 165 | } | 165 | } |
| 166 | 166 | ||
| 167 | - while (\curl_multi_exec($this->_mh, $this->active) === \CURLM_CALL_MULTI_PERFORM); | 167 | + while (\curl_multi_exec($this->_mh, $this->active) === \CURLM_CALL_MULTI_PERFORM) { |
| 168 | + } | ||
| 168 | 169 | ||
| 169 | $this->processMessages(); | 170 | $this->processMessages(); |
| 170 | } | 171 | } |
| @@ -106,7 +106,7 @@ final class EasyHandle | @@ -106,7 +106,7 @@ final class EasyHandle | ||
| 106 | */ | 106 | */ |
| 107 | public function __get($name) | 107 | public function __get($name) |
| 108 | { | 108 | { |
| 109 | - $msg = $name === 'handle' ? 'The EasyHandle has been released' : 'Invalid property: ' . $name; | 109 | + $msg = $name === 'handle' ? 'The EasyHandle has been released' : 'Invalid property: '.$name; |
| 110 | throw new \BadMethodCallException($msg); | 110 | throw new \BadMethodCallException($msg); |
| 111 | } | 111 | } |
| 112 | } | 112 | } |
| @@ -14,9 +14,9 @@ final class HeaderProcessor | @@ -14,9 +14,9 @@ final class HeaderProcessor | ||
| 14 | * | 14 | * |
| 15 | * @param string[] $headers | 15 | * @param string[] $headers |
| 16 | * | 16 | * |
| 17 | - * @throws \RuntimeException | ||
| 18 | - * | ||
| 19 | * @return array{0:string, 1:int, 2:?string, 3:array} | 17 | * @return array{0:string, 1:int, 2:?string, 3:array} |
| 18 | + * | ||
| 19 | + * @throws \RuntimeException | ||
| 20 | */ | 20 | */ |
| 21 | public static function parseHeaders(array $headers): array | 21 | public static function parseHeaders(array $headers): array |
| 22 | { | 22 | { |
| @@ -138,6 +138,7 @@ class MockHandler implements \Countable | @@ -138,6 +138,7 @@ class MockHandler implements \Countable | ||
| 138 | if ($this->onRejected) { | 138 | if ($this->onRejected) { |
| 139 | ($this->onRejected)($reason); | 139 | ($this->onRejected)($reason); |
| 140 | } | 140 | } |
| 141 | + | ||
| 141 | return P\Create::rejectionFor($reason); | 142 | return P\Create::rejectionFor($reason); |
| 142 | } | 143 | } |
| 143 | ); | 144 | ); |
| @@ -159,7 +160,7 @@ class MockHandler implements \Countable | @@ -159,7 +160,7 @@ class MockHandler implements \Countable | ||
| 159 | ) { | 160 | ) { |
| 160 | $this->queue[] = $value; | 161 | $this->queue[] = $value; |
| 161 | } else { | 162 | } else { |
| 162 | - throw new \TypeError('Expected a Response, Promise, Throwable or callable. Found ' . Utils::describeType($value)); | 163 | + throw new \TypeError('Expected a Response, Promise, Throwable or callable. Found '.Utils::describeType($value)); |
| 163 | } | 164 | } |
| 164 | } | 165 | } |
| 165 | } | 166 | } |
| @@ -67,7 +67,7 @@ class StreamHandler | @@ -67,7 +67,7 @@ class StreamHandler | ||
| 67 | if (false !== \strpos($message, 'getaddrinfo') // DNS lookup failed | 67 | if (false !== \strpos($message, 'getaddrinfo') // DNS lookup failed |
| 68 | || false !== \strpos($message, 'Connection refused') | 68 | || false !== \strpos($message, 'Connection refused') |
| 69 | || false !== \strpos($message, "couldn't connect to host") // error on HHVM | 69 | || false !== \strpos($message, "couldn't connect to host") // error on HHVM |
| 70 | - || false !== \strpos($message, "connection attempt failed") | 70 | + || false !== \strpos($message, 'connection attempt failed') |
| 71 | ) { | 71 | ) { |
| 72 | $e = new ConnectException($e->getMessage(), $request, $e); | 72 | $e = new ConnectException($e->getMessage(), $request, $e); |
| 73 | } else { | 73 | } else { |
| @@ -232,8 +232,9 @@ class StreamHandler | @@ -232,8 +232,9 @@ class StreamHandler | ||
| 232 | $errors[] = [ | 232 | $errors[] = [ |
| 233 | 'message' => $msg, | 233 | 'message' => $msg, |
| 234 | 'file' => $file, | 234 | 'file' => $file, |
| 235 | - 'line' => $line | 235 | + 'line' => $line, |
| 236 | ]; | 236 | ]; |
| 237 | + | ||
| 237 | return true; | 238 | return true; |
| 238 | }); | 239 | }); |
| 239 | 240 | ||
| @@ -247,7 +248,7 @@ class StreamHandler | @@ -247,7 +248,7 @@ class StreamHandler | ||
| 247 | $message = 'Error creating resource: '; | 248 | $message = 'Error creating resource: '; |
| 248 | foreach ($errors as $err) { | 249 | foreach ($errors as $err) { |
| 249 | foreach ($err as $key => $value) { | 250 | foreach ($err as $key => $value) { |
| 250 | - $message .= "[$key] $value" . \PHP_EOL; | 251 | + $message .= "[$key] $value".\PHP_EOL; |
| 251 | } | 252 | } |
| 252 | } | 253 | } |
| 253 | throw new \RuntimeException(\trim($message)); | 254 | throw new \RuntimeException(\trim($message)); |
| @@ -350,6 +351,7 @@ class StreamHandler | @@ -350,6 +351,7 @@ class StreamHandler | ||
| 350 | if (false === $records || !isset($records[0]['ip'])) { | 351 | if (false === $records || !isset($records[0]['ip'])) { |
| 351 | throw new ConnectException(\sprintf("Could not resolve IPv4 address for host '%s'", $uri->getHost()), $request); | 352 | throw new ConnectException(\sprintf("Could not resolve IPv4 address for host '%s'", $uri->getHost()), $request); |
| 352 | } | 353 | } |
| 354 | + | ||
| 353 | return $uri->withHost($records[0]['ip']); | 355 | return $uri->withHost($records[0]['ip']); |
| 354 | } | 356 | } |
| 355 | if ('v6' === $options['force_ip_resolve']) { | 357 | if ('v6' === $options['force_ip_resolve']) { |
| @@ -357,7 +359,8 @@ class StreamHandler | @@ -357,7 +359,8 @@ class StreamHandler | ||
| 357 | if (false === $records || !isset($records[0]['ipv6'])) { | 359 | if (false === $records || !isset($records[0]['ipv6'])) { |
| 358 | throw new ConnectException(\sprintf("Could not resolve IPv6 address for host '%s'", $uri->getHost()), $request); | 360 | throw new ConnectException(\sprintf("Could not resolve IPv6 address for host '%s'", $uri->getHost()), $request); |
| 359 | } | 361 | } |
| 360 | - return $uri->withHost('[' . $records[0]['ipv6'] . ']'); | 362 | + |
| 363 | + return $uri->withHost('['.$records[0]['ipv6'].']'); | ||
| 361 | } | 364 | } |
| 362 | } | 365 | } |
| 363 | 366 | ||
| @@ -388,7 +391,7 @@ class StreamHandler | @@ -388,7 +391,7 @@ class StreamHandler | ||
| 388 | 391 | ||
| 389 | $body = (string) $request->getBody(); | 392 | $body = (string) $request->getBody(); |
| 390 | 393 | ||
| 391 | - if (!empty($body)) { | 394 | + if ('' !== $body) { |
| 392 | $context['http']['content'] = $body; | 395 | $context['http']['content'] = $body; |
| 393 | // Prevent the HTTP handler from adding a Content-Type header. | 396 | // Prevent the HTTP handler from adding a Content-Type header. |
| 394 | if (!$request->hasHeader('Content-Type')) { | 397 | if (!$request->hasHeader('Content-Type')) { |
| @@ -475,6 +478,25 @@ class StreamHandler | @@ -475,6 +478,25 @@ class StreamHandler | ||
| 475 | /** | 478 | /** |
| 476 | * @param mixed $value as passed via Request transfer options. | 479 | * @param mixed $value as passed via Request transfer options. |
| 477 | */ | 480 | */ |
| 481 | + private function add_crypto_method(RequestInterface $request, array &$options, $value, array &$params): void | ||
| 482 | + { | ||
| 483 | + if ( | ||
| 484 | + $value === \STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT | ||
| 485 | + || $value === \STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT | ||
| 486 | + || $value === \STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT | ||
| 487 | + || (defined('STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT') && $value === \STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT) | ||
| 488 | + ) { | ||
| 489 | + $options['http']['crypto_method'] = $value; | ||
| 490 | + | ||
| 491 | + return; | ||
| 492 | + } | ||
| 493 | + | ||
| 494 | + throw new \InvalidArgumentException('Invalid crypto_method request option: unknown version provided'); | ||
| 495 | + } | ||
| 496 | + | ||
| 497 | + /** | ||
| 498 | + * @param mixed $value as passed via Request transfer options. | ||
| 499 | + */ | ||
| 478 | private function add_verify(RequestInterface $request, array &$options, $value, array &$params): void | 500 | private function add_verify(RequestInterface $request, array &$options, $value, array &$params): void |
| 479 | { | 501 | { |
| 480 | if ($value === false) { | 502 | if ($value === false) { |
| @@ -556,13 +578,13 @@ class StreamHandler | @@ -556,13 +578,13 @@ class StreamHandler | ||
| 556 | static $args = ['severity', 'message', 'message_code', 'bytes_transferred', 'bytes_max']; | 578 | static $args = ['severity', 'message', 'message_code', 'bytes_transferred', 'bytes_max']; |
| 557 | 579 | ||
| 558 | $value = Utils::debugResource($value); | 580 | $value = Utils::debugResource($value); |
| 559 | - $ident = $request->getMethod() . ' ' . $request->getUri()->withFragment(''); | 581 | + $ident = $request->getMethod().' '.$request->getUri()->withFragment(''); |
| 560 | self::addNotification( | 582 | self::addNotification( |
| 561 | $params, | 583 | $params, |
| 562 | static function (int $code, ...$passed) use ($ident, $value, $map, $args): void { | 584 | static function (int $code, ...$passed) use ($ident, $value, $map, $args): void { |
| 563 | \fprintf($value, '<%s> [%s] ', $ident, $map[$code]); | 585 | \fprintf($value, '<%s> [%s] ', $ident, $map[$code]); |
| 564 | foreach (\array_filter($passed) as $i => $v) { | 586 | foreach (\array_filter($passed) as $i => $v) { |
| 565 | - \fwrite($value, $args[$i] . ': "' . $v . '" '); | 587 | + \fwrite($value, $args[$i].': "'.$v.'" '); |
| 566 | } | 588 | } |
| 567 | \fwrite($value, "\n"); | 589 | \fwrite($value, "\n"); |
| 568 | } | 590 | } |
| @@ -577,7 +599,7 @@ class StreamHandler | @@ -577,7 +599,7 @@ class StreamHandler | ||
| 577 | } else { | 599 | } else { |
| 578 | $params['notification'] = self::callArray([ | 600 | $params['notification'] = self::callArray([ |
| 579 | $params['notification'], | 601 | $params['notification'], |
| 580 | - $notify | 602 | + $notify, |
| 581 | ]); | 603 | ]); |
| 582 | } | 604 | } |
| 583 | } | 605 | } |
| @@ -86,14 +86,14 @@ class HandlerStack | @@ -86,14 +86,14 @@ class HandlerStack | ||
| 86 | $stack = []; | 86 | $stack = []; |
| 87 | 87 | ||
| 88 | if ($this->handler !== null) { | 88 | if ($this->handler !== null) { |
| 89 | - $stack[] = "0) Handler: " . $this->debugCallable($this->handler); | 89 | + $stack[] = '0) Handler: '.$this->debugCallable($this->handler); |
| 90 | } | 90 | } |
| 91 | 91 | ||
| 92 | $result = ''; | 92 | $result = ''; |
| 93 | foreach (\array_reverse($this->stack) as $tuple) { | 93 | foreach (\array_reverse($this->stack) as $tuple) { |
| 94 | - $depth++; | 94 | + ++$depth; |
| 95 | $str = "{$depth}) Name: '{$tuple[1]}', "; | 95 | $str = "{$depth}) Name: '{$tuple[1]}', "; |
| 96 | - $str .= "Function: " . $this->debugCallable($tuple[0]); | 96 | + $str .= 'Function: '.$this->debugCallable($tuple[0]); |
| 97 | $result = "> {$str}\n{$result}"; | 97 | $result = "> {$str}\n{$result}"; |
| 98 | $stack[] = $str; | 98 | $stack[] = $str; |
| 99 | } | 99 | } |
| @@ -122,7 +122,7 @@ class HandlerStack | @@ -122,7 +122,7 @@ class HandlerStack | ||
| 122 | */ | 122 | */ |
| 123 | public function hasHandler(): bool | 123 | public function hasHandler(): bool |
| 124 | { | 124 | { |
| 125 | - return $this->handler !== null ; | 125 | + return $this->handler !== null; |
| 126 | } | 126 | } |
| 127 | 127 | ||
| 128 | /** | 128 | /** |
| @@ -266,10 +266,10 @@ class HandlerStack | @@ -266,10 +266,10 @@ class HandlerStack | ||
| 266 | if (\is_array($fn)) { | 266 | if (\is_array($fn)) { |
| 267 | return \is_string($fn[0]) | 267 | return \is_string($fn[0]) |
| 268 | ? "callable({$fn[0]}::{$fn[1]})" | 268 | ? "callable({$fn[0]}::{$fn[1]})" |
| 269 | - : "callable(['" . \get_class($fn[0]) . "', '{$fn[1]}'])"; | 269 | + : "callable(['".\get_class($fn[0])."', '{$fn[1]}'])"; |
| 270 | } | 270 | } |
| 271 | 271 | ||
| 272 | /** @var object $fn */ | 272 | /** @var object $fn */ |
| 273 | - return 'callable(' . \spl_object_hash($fn) . ')'; | 273 | + return 'callable('.\spl_object_hash($fn).')'; |
| 274 | } | 274 | } |
| 275 | } | 275 | } |
| @@ -40,11 +40,11 @@ class MessageFormatter implements MessageFormatterInterface | @@ -40,11 +40,11 @@ class MessageFormatter implements MessageFormatterInterface | ||
| 40 | /** | 40 | /** |
| 41 | * Apache Common Log Format. | 41 | * Apache Common Log Format. |
| 42 | * | 42 | * |
| 43 | - * @link https://httpd.apache.org/docs/2.4/logs.html#common | 43 | + * @see https://httpd.apache.org/docs/2.4/logs.html#common |
| 44 | * | 44 | * |
| 45 | * @var string | 45 | * @var string |
| 46 | */ | 46 | */ |
| 47 | - public const CLF = "{hostname} {req_header_User-Agent} - [{date_common_log}] \"{method} {target} HTTP/{version}\" {code} {res_header_Content-Length}"; | 47 | + public const CLF = '{hostname} {req_header_User-Agent} - [{date_common_log}] "{method} {target} HTTP/{version}" {code} {res_header_Content-Length}'; |
| 48 | public const DEBUG = ">>>>>>>>\n{request}\n<<<<<<<<\n{response}\n--------\n{error}"; | 48 | public const DEBUG = ">>>>>>>>\n{request}\n<<<<<<<<\n{response}\n--------\n{error}"; |
| 49 | public const SHORT = '[{ts}] "{method} {target} HTTP/{version}" {code}'; | 49 | public const SHORT = '[{ts}] "{method} {target} HTTP/{version}" {code}'; |
| 50 | 50 | ||
| @@ -90,9 +90,9 @@ class MessageFormatter implements MessageFormatterInterface | @@ -90,9 +90,9 @@ class MessageFormatter implements MessageFormatterInterface | ||
| 90 | break; | 90 | break; |
| 91 | case 'req_headers': | 91 | case 'req_headers': |
| 92 | $result = \trim($request->getMethod() | 92 | $result = \trim($request->getMethod() |
| 93 | - . ' ' . $request->getRequestTarget()) | ||
| 94 | - . ' HTTP/' . $request->getProtocolVersion() . "\r\n" | ||
| 95 | - . $this->headers($request); | 93 | + .' '.$request->getRequestTarget()) |
| 94 | + .' HTTP/'.$request->getProtocolVersion()."\r\n" | ||
| 95 | + .$this->headers($request); | ||
| 96 | break; | 96 | break; |
| 97 | case 'res_headers': | 97 | case 'res_headers': |
| 98 | $result = $response ? | 98 | $result = $response ? |
| @@ -101,7 +101,7 @@ class MessageFormatter implements MessageFormatterInterface | @@ -101,7 +101,7 @@ class MessageFormatter implements MessageFormatterInterface | ||
| 101 | $response->getProtocolVersion(), | 101 | $response->getProtocolVersion(), |
| 102 | $response->getStatusCode(), | 102 | $response->getStatusCode(), |
| 103 | $response->getReasonPhrase() | 103 | $response->getReasonPhrase() |
| 104 | - ) . "\r\n" . $this->headers($response) | 104 | + )."\r\n".$this->headers($response) |
| 105 | : 'NULL'; | 105 | : 'NULL'; |
| 106 | break; | 106 | break; |
| 107 | case 'req_body': | 107 | case 'req_body': |
| @@ -177,6 +177,7 @@ class MessageFormatter implements MessageFormatterInterface | @@ -177,6 +177,7 @@ class MessageFormatter implements MessageFormatterInterface | ||
| 177 | } | 177 | } |
| 178 | 178 | ||
| 179 | $cache[$matches[1]] = $result; | 179 | $cache[$matches[1]] = $result; |
| 180 | + | ||
| 180 | return $result; | 181 | return $result; |
| 181 | }, | 182 | }, |
| 182 | $this->template | 183 | $this->template |
| @@ -190,7 +191,7 @@ class MessageFormatter implements MessageFormatterInterface | @@ -190,7 +191,7 @@ class MessageFormatter implements MessageFormatterInterface | ||
| 190 | { | 191 | { |
| 191 | $result = ''; | 192 | $result = ''; |
| 192 | foreach ($message->getHeaders() as $name => $values) { | 193 | foreach ($message->getHeaders() as $name => $values) { |
| 193 | - $result .= $name . ': ' . \implode(', ', $values) . "\r\n"; | 194 | + $result .= $name.': '.\implode(', ', $values)."\r\n"; |
| 194 | } | 195 | } |
| 195 | 196 | ||
| 196 | return \trim($result); | 197 | return \trim($result); |
| @@ -34,10 +34,12 @@ final class Middleware | @@ -34,10 +34,12 @@ final class Middleware | ||
| 34 | } | 34 | } |
| 35 | $cookieJar = $options['cookies']; | 35 | $cookieJar = $options['cookies']; |
| 36 | $request = $cookieJar->withCookieHeader($request); | 36 | $request = $cookieJar->withCookieHeader($request); |
| 37 | + | ||
| 37 | return $handler($request, $options) | 38 | return $handler($request, $options) |
| 38 | ->then( | 39 | ->then( |
| 39 | static function (ResponseInterface $response) use ($cookieJar, $request): ResponseInterface { | 40 | static function (ResponseInterface $response) use ($cookieJar, $request): ResponseInterface { |
| 40 | $cookieJar->extractCookies($request, $response); | 41 | $cookieJar->extractCookies($request, $response); |
| 42 | + | ||
| 41 | return $response; | 43 | return $response; |
| 42 | } | 44 | } |
| 43 | ); | 45 | ); |
| @@ -60,6 +62,7 @@ final class Middleware | @@ -60,6 +62,7 @@ final class Middleware | ||
| 60 | if (empty($options['http_errors'])) { | 62 | if (empty($options['http_errors'])) { |
| 61 | return $handler($request, $options); | 63 | return $handler($request, $options); |
| 62 | } | 64 | } |
| 65 | + | ||
| 63 | return $handler($request, $options)->then( | 66 | return $handler($request, $options)->then( |
| 64 | static function (ResponseInterface $response) use ($request, $bodySummarizer) { | 67 | static function (ResponseInterface $response) use ($request, $bodySummarizer) { |
| 65 | $code = $response->getStatusCode(); | 68 | $code = $response->getStatusCode(); |
| @@ -96,8 +99,9 @@ final class Middleware | @@ -96,8 +99,9 @@ final class Middleware | ||
| 96 | 'request' => $request, | 99 | 'request' => $request, |
| 97 | 'response' => $value, | 100 | 'response' => $value, |
| 98 | 'error' => null, | 101 | 'error' => null, |
| 99 | - 'options' => $options | 102 | + 'options' => $options, |
| 100 | ]; | 103 | ]; |
| 104 | + | ||
| 101 | return $value; | 105 | return $value; |
| 102 | }, | 106 | }, |
| 103 | static function ($reason) use ($request, &$container, $options) { | 107 | static function ($reason) use ($request, &$container, $options) { |
| @@ -105,8 +109,9 @@ final class Middleware | @@ -105,8 +109,9 @@ final class Middleware | ||
| 105 | 'request' => $request, | 109 | 'request' => $request, |
| 106 | 'response' => null, | 110 | 'response' => null, |
| 107 | 'error' => $reason, | 111 | 'error' => $reason, |
| 108 | - 'options' => $options | 112 | + 'options' => $options, |
| 109 | ]; | 113 | ]; |
| 114 | + | ||
| 110 | return P\Create::rejectionFor($reason); | 115 | return P\Create::rejectionFor($reason); |
| 111 | } | 116 | } |
| 112 | ); | 117 | ); |
| @@ -138,6 +143,7 @@ final class Middleware | @@ -138,6 +143,7 @@ final class Middleware | ||
| 138 | if ($after) { | 143 | if ($after) { |
| 139 | $after($request, $options, $response); | 144 | $after($request, $options, $response); |
| 140 | } | 145 | } |
| 146 | + | ||
| 141 | return $response; | 147 | return $response; |
| 142 | }; | 148 | }; |
| 143 | }; | 149 | }; |
| @@ -202,12 +208,14 @@ final class Middleware | @@ -202,12 +208,14 @@ final class Middleware | ||
| 202 | static function ($response) use ($logger, $request, $formatter, $logLevel): ResponseInterface { | 208 | static function ($response) use ($logger, $request, $formatter, $logLevel): ResponseInterface { |
| 203 | $message = $formatter->format($request, $response); | 209 | $message = $formatter->format($request, $response); |
| 204 | $logger->log($logLevel, $message); | 210 | $logger->log($logLevel, $message); |
| 211 | + | ||
| 205 | return $response; | 212 | return $response; |
| 206 | }, | 213 | }, |
| 207 | static function ($reason) use ($logger, $request, $formatter): PromiseInterface { | 214 | static function ($reason) use ($logger, $request, $formatter): PromiseInterface { |
| 208 | $response = $reason instanceof RequestException ? $reason->getResponse() : null; | 215 | $response = $reason instanceof RequestException ? $reason->getResponse() : null; |
| 209 | $message = $formatter->format($request, $response, P\Create::exceptionFor($reason)); | 216 | $message = $formatter->format($request, $response, P\Create::exceptionFor($reason)); |
| 210 | $logger->error($message); | 217 | $logger->error($message); |
| 218 | + | ||
| 211 | return P\Create::rejectionFor($reason); | 219 | return P\Create::rejectionFor($reason); |
| 212 | } | 220 | } |
| 213 | ); | 221 | ); |
| @@ -84,6 +84,7 @@ class PrepareBodyMiddleware | @@ -84,6 +84,7 @@ class PrepareBodyMiddleware | ||
| 84 | // The expect header is unconditionally enabled | 84 | // The expect header is unconditionally enabled |
| 85 | if ($expect === true) { | 85 | if ($expect === true) { |
| 86 | $modify['set_headers']['Expect'] = '100-Continue'; | 86 | $modify['set_headers']['Expect'] = '100-Continue'; |
| 87 | + | ||
| 87 | return; | 88 | return; |
| 88 | } | 89 | } |
| 89 | 90 |
| @@ -7,7 +7,7 @@ namespace GuzzleHttp; | @@ -7,7 +7,7 @@ namespace GuzzleHttp; | ||
| 7 | * | 7 | * |
| 8 | * More documentation for each option can be found at http://guzzlephp.org/. | 8 | * More documentation for each option can be found at http://guzzlephp.org/. |
| 9 | * | 9 | * |
| 10 | - * @link http://docs.guzzlephp.org/en/v6/request-options.html | 10 | + * @see http://docs.guzzlephp.org/en/v6/request-options.html |
| 11 | */ | 11 | */ |
| 12 | final class RequestOptions | 12 | final class RequestOptions |
| 13 | { | 13 | { |
| @@ -70,11 +70,23 @@ final class RequestOptions | @@ -70,11 +70,23 @@ final class RequestOptions | ||
| 70 | /** | 70 | /** |
| 71 | * connect_timeout: (float, default=0) Float describing the number of | 71 | * connect_timeout: (float, default=0) Float describing the number of |
| 72 | * seconds to wait while trying to connect to a server. Use 0 to wait | 72 | * seconds to wait while trying to connect to a server. Use 0 to wait |
| 73 | - * indefinitely (the default behavior). | 73 | + * 300 seconds (the default behavior). |
| 74 | */ | 74 | */ |
| 75 | public const CONNECT_TIMEOUT = 'connect_timeout'; | 75 | public const CONNECT_TIMEOUT = 'connect_timeout'; |
| 76 | 76 | ||
| 77 | /** | 77 | /** |
| 78 | + * crypto_method: (int) A value describing the minimum TLS protocol | ||
| 79 | + * version to use. | ||
| 80 | + * | ||
| 81 | + * This setting must be set to one of the | ||
| 82 | + * ``STREAM_CRYPTO_METHOD_TLS*_CLIENT`` constants. PHP 7.4 or higher is | ||
| 83 | + * required in order to use TLS 1.3, and cURL 7.34.0 or higher is required | ||
| 84 | + * in order to specify a crypto method, with cURL 7.52.0 or higher being | ||
| 85 | + * required to use TLS 1.3. | ||
| 86 | + */ | ||
| 87 | + public const CRYPTO_METHOD = 'crypto_method'; | ||
| 88 | + | ||
| 89 | + /** | ||
| 78 | * debug: (bool|resource) Set to true or set to a PHP stream returned by | 90 | * debug: (bool|resource) Set to true or set to a PHP stream returned by |
| 79 | * fopen() enable debug output with the HTTP handler used to send a | 91 | * fopen() enable debug output with the HTTP handler used to send a |
| 80 | * request. | 92 | * request. |
| @@ -44,7 +44,7 @@ class RetryMiddleware | @@ -44,7 +44,7 @@ class RetryMiddleware | ||
| 44 | { | 44 | { |
| 45 | $this->decider = $decider; | 45 | $this->decider = $decider; |
| 46 | $this->nextHandler = $nextHandler; | 46 | $this->nextHandler = $nextHandler; |
| 47 | - $this->delay = $delay ?: __CLASS__ . '::exponentialDelay'; | 47 | + $this->delay = $delay ?: __CLASS__.'::exponentialDelay'; |
| 48 | } | 48 | } |
| 49 | 49 | ||
| 50 | /** | 50 | /** |
| @@ -54,7 +54,7 @@ class RetryMiddleware | @@ -54,7 +54,7 @@ class RetryMiddleware | ||
| 54 | */ | 54 | */ |
| 55 | public static function exponentialDelay(int $retries): int | 55 | public static function exponentialDelay(int $retries): int |
| 56 | { | 56 | { |
| 57 | - return (int) \pow(2, $retries - 1) * 1000; | 57 | + return (int) 2 ** ($retries - 1) * 1000; |
| 58 | } | 58 | } |
| 59 | 59 | ||
| 60 | public function __invoke(RequestInterface $request, array $options): PromiseInterface | 60 | public function __invoke(RequestInterface $request, array $options): PromiseInterface |
| @@ -64,6 +64,7 @@ class RetryMiddleware | @@ -64,6 +64,7 @@ class RetryMiddleware | ||
| 64 | } | 64 | } |
| 65 | 65 | ||
| 66 | $fn = $this->nextHandler; | 66 | $fn = $this->nextHandler; |
| 67 | + | ||
| 67 | return $fn($request, $options) | 68 | return $fn($request, $options) |
| 68 | ->then( | 69 | ->then( |
| 69 | $this->onFulfilled($request, $options), | 70 | $this->onFulfilled($request, $options), |
| @@ -85,6 +86,7 @@ class RetryMiddleware | @@ -85,6 +86,7 @@ class RetryMiddleware | ||
| 85 | )) { | 86 | )) { |
| 86 | return $value; | 87 | return $value; |
| 87 | } | 88 | } |
| 89 | + | ||
| 88 | return $this->doRetry($request, $options, $value); | 90 | return $this->doRetry($request, $options, $value); |
| 89 | }; | 91 | }; |
| 90 | } | 92 | } |
| @@ -103,6 +105,7 @@ class RetryMiddleware | @@ -103,6 +105,7 @@ class RetryMiddleware | ||
| 103 | )) { | 105 | )) { |
| 104 | return P\Create::rejectionFor($reason); | 106 | return P\Create::rejectionFor($reason); |
| 105 | } | 107 | } |
| 108 | + | ||
| 106 | return $this->doRetry($req, $options); | 109 | return $this->doRetry($req, $options); |
| 107 | }; | 110 | }; |
| 108 | } | 111 | } |
| @@ -23,9 +23,9 @@ final class Utils | @@ -23,9 +23,9 @@ final class Utils | ||
| 23 | { | 23 | { |
| 24 | switch (\gettype($input)) { | 24 | switch (\gettype($input)) { |
| 25 | case 'object': | 25 | case 'object': |
| 26 | - return 'object(' . \get_class($input) . ')'; | 26 | + return 'object('.\get_class($input).')'; |
| 27 | case 'array': | 27 | case 'array': |
| 28 | - return 'array(' . \count($input) . ')'; | 28 | + return 'array('.\count($input).')'; |
| 29 | default: | 29 | default: |
| 30 | \ob_start(); | 30 | \ob_start(); |
| 31 | \var_dump($input); | 31 | \var_dump($input); |
| @@ -79,9 +79,9 @@ final class Utils | @@ -79,9 +79,9 @@ final class Utils | ||
| 79 | * | 79 | * |
| 80 | * The returned handler is not wrapped by any default middlewares. | 80 | * The returned handler is not wrapped by any default middlewares. |
| 81 | * | 81 | * |
| 82 | - * @throws \RuntimeException if no viable Handler is available. | ||
| 83 | - * | ||
| 84 | * @return callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface Returns the best handler for the given system. | 82 | * @return callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface Returns the best handler for the given system. |
| 83 | + * | ||
| 84 | + * @throws \RuntimeException if no viable Handler is available. | ||
| 85 | */ | 85 | */ |
| 86 | public static function chooseHandler(): callable | 86 | public static function chooseHandler(): callable |
| 87 | { | 87 | { |
| @@ -247,8 +247,8 @@ EOT | @@ -247,8 +247,8 @@ EOT | ||
| 247 | } | 247 | } |
| 248 | // Special match if the area when prefixed with ".". Remove any | 248 | // Special match if the area when prefixed with ".". Remove any |
| 249 | // existing leading "." and add a new leading ".". | 249 | // existing leading "." and add a new leading ".". |
| 250 | - $area = '.' . \ltrim($area, '.'); | ||
| 251 | - if (\substr($host, -(\strlen($area))) === $area) { | 250 | + $area = '.'.\ltrim($area, '.'); |
| 251 | + if (\substr($host, -\strlen($area)) === $area) { | ||
| 252 | return true; | 252 | return true; |
| 253 | } | 253 | } |
| 254 | } | 254 | } |
| @@ -269,13 +269,13 @@ EOT | @@ -269,13 +269,13 @@ EOT | ||
| 269 | * | 269 | * |
| 270 | * @throws InvalidArgumentException if the JSON cannot be decoded. | 270 | * @throws InvalidArgumentException if the JSON cannot be decoded. |
| 271 | * | 271 | * |
| 272 | - * @link https://www.php.net/manual/en/function.json-decode.php | 272 | + * @see https://www.php.net/manual/en/function.json-decode.php |
| 273 | */ | 273 | */ |
| 274 | public static function jsonDecode(string $json, bool $assoc = false, int $depth = 512, int $options = 0) | 274 | public static function jsonDecode(string $json, bool $assoc = false, int $depth = 512, int $options = 0) |
| 275 | { | 275 | { |
| 276 | $data = \json_decode($json, $assoc, $depth, $options); | 276 | $data = \json_decode($json, $assoc, $depth, $options); |
| 277 | if (\JSON_ERROR_NONE !== \json_last_error()) { | 277 | if (\JSON_ERROR_NONE !== \json_last_error()) { |
| 278 | - throw new InvalidArgumentException('json_decode error: ' . \json_last_error_msg()); | 278 | + throw new InvalidArgumentException('json_decode error: '.\json_last_error_msg()); |
| 279 | } | 279 | } |
| 280 | 280 | ||
| 281 | return $data; | 281 | return $data; |
| @@ -290,13 +290,13 @@ EOT | @@ -290,13 +290,13 @@ EOT | ||
| 290 | * | 290 | * |
| 291 | * @throws InvalidArgumentException if the JSON cannot be encoded. | 291 | * @throws InvalidArgumentException if the JSON cannot be encoded. |
| 292 | * | 292 | * |
| 293 | - * @link https://www.php.net/manual/en/function.json-encode.php | 293 | + * @see https://www.php.net/manual/en/function.json-encode.php |
| 294 | */ | 294 | */ |
| 295 | public static function jsonEncode($value, int $options = 0, int $depth = 512): string | 295 | public static function jsonEncode($value, int $options = 0, int $depth = 512): string |
| 296 | { | 296 | { |
| 297 | $json = \json_encode($value, $options, $depth); | 297 | $json = \json_encode($value, $options, $depth); |
| 298 | if (\JSON_ERROR_NONE !== \json_last_error()) { | 298 | if (\JSON_ERROR_NONE !== \json_last_error()) { |
| 299 | - throw new InvalidArgumentException('json_encode error: ' . \json_last_error_msg()); | 299 | + throw new InvalidArgumentException('json_encode error: '.\json_last_error_msg()); |
| 300 | } | 300 | } |
| 301 | 301 | ||
| 302 | /** @var string */ | 302 | /** @var string */ |
| @@ -341,7 +341,7 @@ EOT | @@ -341,7 +341,7 @@ EOT | ||
| 341 | 341 | ||
| 342 | $errorMessage = 'IDN conversion failed'; | 342 | $errorMessage = 'IDN conversion failed'; |
| 343 | if ($errors) { | 343 | if ($errors) { |
| 344 | - $errorMessage .= ' (errors: ' . implode(', ', $errors) . ')'; | 344 | + $errorMessage .= ' (errors: '.implode(', ', $errors).')'; |
| 345 | } | 345 | } |
| 346 | 346 | ||
| 347 | throw new InvalidArgumentException($errorMessage); | 347 | throw new InvalidArgumentException($errorMessage); |
| @@ -50,10 +50,10 @@ function debug_resource($value = null) | @@ -50,10 +50,10 @@ function debug_resource($value = null) | ||
| 50 | * | 50 | * |
| 51 | * The returned handler is not wrapped by any default middlewares. | 51 | * The returned handler is not wrapped by any default middlewares. |
| 52 | * | 52 | * |
| 53 | - * @throws \RuntimeException if no viable Handler is available. | ||
| 54 | - * | ||
| 55 | * @return callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface Returns the best handler for the given system. | 53 | * @return callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface Returns the best handler for the given system. |
| 56 | * | 54 | * |
| 55 | + * @throws \RuntimeException if no viable Handler is available. | ||
| 56 | + * | ||
| 57 | * @deprecated choose_handler will be removed in guzzlehttp/guzzle:8.0. Use Utils::chooseHandler instead. | 57 | * @deprecated choose_handler will be removed in guzzlehttp/guzzle:8.0. Use Utils::chooseHandler instead. |
| 58 | */ | 58 | */ |
| 59 | function choose_handler(): callable | 59 | function choose_handler(): callable |
| @@ -141,7 +141,7 @@ function is_host_in_noproxy(string $host, array $noProxyArray): bool | @@ -141,7 +141,7 @@ function is_host_in_noproxy(string $host, array $noProxyArray): bool | ||
| 141 | * | 141 | * |
| 142 | * @throws Exception\InvalidArgumentException if the JSON cannot be decoded. | 142 | * @throws Exception\InvalidArgumentException if the JSON cannot be decoded. |
| 143 | * | 143 | * |
| 144 | - * @link https://www.php.net/manual/en/function.json-decode.php | 144 | + * @see https://www.php.net/manual/en/function.json-decode.php |
| 145 | * @deprecated json_decode will be removed in guzzlehttp/guzzle:8.0. Use Utils::jsonDecode instead. | 145 | * @deprecated json_decode will be removed in guzzlehttp/guzzle:8.0. Use Utils::jsonDecode instead. |
| 146 | */ | 146 | */ |
| 147 | function json_decode(string $json, bool $assoc = false, int $depth = 512, int $options = 0) | 147 | function json_decode(string $json, bool $assoc = false, int $depth = 512, int $options = 0) |
| @@ -158,7 +158,7 @@ function json_decode(string $json, bool $assoc = false, int $depth = 512, int $o | @@ -158,7 +158,7 @@ function json_decode(string $json, bool $assoc = false, int $depth = 512, int $o | ||
| 158 | * | 158 | * |
| 159 | * @throws Exception\InvalidArgumentException if the JSON cannot be encoded. | 159 | * @throws Exception\InvalidArgumentException if the JSON cannot be encoded. |
| 160 | * | 160 | * |
| 161 | - * @link https://www.php.net/manual/en/function.json-encode.php | 161 | + * @see https://www.php.net/manual/en/function.json-encode.php |
| 162 | * @deprecated json_encode will be removed in guzzlehttp/guzzle:8.0. Use Utils::jsonEncode instead. | 162 | * @deprecated json_encode will be removed in guzzlehttp/guzzle:8.0. Use Utils::jsonEncode instead. |
| 163 | */ | 163 | */ |
| 164 | function json_encode($value, int $options = 0, int $depth = 512): string | 164 | function json_encode($value, int $options = 0, int $depth = 512): string |
| @@ -2,5 +2,5 @@ | @@ -2,5 +2,5 @@ | ||
| 2 | 2 | ||
| 3 | // Don't redefine the functions if included multiple times. | 3 | // Don't redefine the functions if included multiple times. |
| 4 | if (!\function_exists('GuzzleHttp\describe_type')) { | 4 | if (!\function_exists('GuzzleHttp\describe_type')) { |
| 5 | - require __DIR__ . '/functions.php'; | 5 | + require __DIR__.'/functions.php'; |
| 6 | } | 6 | } |
| @@ -46,11 +46,6 @@ | @@ -46,11 +46,6 @@ | ||
| 46 | "test": "vendor/bin/simple-phpunit", | 46 | "test": "vendor/bin/simple-phpunit", |
| 47 | "test-ci": "vendor/bin/simple-phpunit --coverage-text" | 47 | "test-ci": "vendor/bin/simple-phpunit --coverage-text" |
| 48 | }, | 48 | }, |
| 49 | - "extra": { | ||
| 50 | - "branch-alias": { | ||
| 51 | - "dev-master": "1.5-dev" | ||
| 52 | - } | ||
| 53 | - }, | ||
| 54 | "config": { | 49 | "config": { |
| 55 | "preferred-install": "dist", | 50 | "preferred-install": "dist", |
| 56 | "sort-packages": true | 51 | "sort-packages": true |
| @@ -78,7 +78,7 @@ final class Each | @@ -78,7 +78,7 @@ final class Each | ||
| 78 | $concurrency, | 78 | $concurrency, |
| 79 | callable $onFulfilled = null | 79 | callable $onFulfilled = null |
| 80 | ) { | 80 | ) { |
| 81 | - return each_limit( | 81 | + return self::ofLimit( |
| 82 | $iterable, | 82 | $iterable, |
| 83 | $concurrency, | 83 | $concurrency, |
| 84 | $onFulfilled, | 84 | $onFulfilled, |
| @@ -107,7 +107,7 @@ final class Utils | @@ -107,7 +107,7 @@ final class Utils | ||
| 107 | { | 107 | { |
| 108 | $results = []; | 108 | $results = []; |
| 109 | foreach ($promises as $key => $promise) { | 109 | foreach ($promises as $key => $promise) { |
| 110 | - $results[$key] = inspect($promise); | 110 | + $results[$key] = self::inspect($promise); |
| 111 | } | 111 | } |
| 112 | 112 | ||
| 113 | return $results; | 113 | return $results; |
| @@ -7,6 +7,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | @@ -7,6 +7,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | ||
| 7 | 7 | ||
| 8 | ## Unreleased | 8 | ## Unreleased |
| 9 | 9 | ||
| 10 | +## 2.5.0 - 2023-04-17 | ||
| 11 | + | ||
| 12 | +### Changed | ||
| 13 | + | ||
| 14 | +- Adjusted `psr/http-message` version constraint to `^1.1 || ^2.0` | ||
| 15 | + | ||
| 16 | +## 2.4.5 - 2023-04-17 | ||
| 17 | + | ||
| 18 | +### Fixed | ||
| 19 | + | ||
| 20 | +- Prevent possible warnings on unset variables in `ServerRequest::normalizeNestedFileSpec` | ||
| 21 | +- Fixed `Message::bodySummary` when `preg_match` fails | ||
| 22 | +- Fixed header validation issue | ||
| 23 | + | ||
| 24 | +## 2.4.4 - 2023-03-09 | ||
| 25 | + | ||
| 26 | +### Changed | ||
| 27 | + | ||
| 28 | +- Removed the need for `AllowDynamicProperties` in `LazyOpenStream` | ||
| 29 | + | ||
| 10 | ## 2.4.3 - 2022-10-26 | 30 | ## 2.4.3 - 2022-10-26 |
| 11 | 31 | ||
| 12 | ### Changed | 32 | ### Changed |
| @@ -8,6 +8,12 @@ functionality like query string parsing. | @@ -8,6 +8,12 @@ functionality like query string parsing. | ||
| 8 |  | 8 |  |
| 9 | 9 | ||
| 10 | 10 | ||
| 11 | +# Installation | ||
| 12 | + | ||
| 13 | +```shell | ||
| 14 | +composer require guzzlehttp/psr7 | ||
| 15 | +``` | ||
| 16 | + | ||
| 11 | # Stream implementation | 17 | # Stream implementation |
| 12 | 18 | ||
| 13 | This package comes with a number of stream implementations and stream | 19 | This package comes with a number of stream implementations and stream |
| @@ -245,6 +251,8 @@ class EofCallbackStream implements StreamInterface | @@ -245,6 +251,8 @@ class EofCallbackStream implements StreamInterface | ||
| 245 | 251 | ||
| 246 | private $callback; | 252 | private $callback; |
| 247 | 253 | ||
| 254 | + private $stream; | ||
| 255 | + | ||
| 248 | public function __construct(StreamInterface $stream, callable $cb) | 256 | public function __construct(StreamInterface $stream, callable $cb) |
| 249 | { | 257 | { |
| 250 | $this->stream = $stream; | 258 | $this->stream = $stream; |
| @@ -52,7 +52,7 @@ | @@ -52,7 +52,7 @@ | ||
| 52 | "require": { | 52 | "require": { |
| 53 | "php": "^7.2.5 || ^8.0", | 53 | "php": "^7.2.5 || ^8.0", |
| 54 | "psr/http-factory": "^1.0", | 54 | "psr/http-factory": "^1.0", |
| 55 | - "psr/http-message": "^1.0", | 55 | + "psr/http-message": "^1.1 || ^2.0", |
| 56 | "ralouphie/getallheaders": "^3.0" | 56 | "ralouphie/getallheaders": "^3.0" |
| 57 | }, | 57 | }, |
| 58 | "provide": { | 58 | "provide": { |
| @@ -81,9 +81,6 @@ | @@ -81,9 +81,6 @@ | ||
| 81 | "bamarni-bin": { | 81 | "bamarni-bin": { |
| 82 | "bin-links": true, | 82 | "bin-links": true, |
| 83 | "forward-command": false | 83 | "forward-command": false |
| 84 | - }, | ||
| 85 | - "branch-alias": { | ||
| 86 | - "dev-master": "2.4-dev" | ||
| 87 | } | 84 | } |
| 88 | }, | 85 | }, |
| 89 | "config": { | 86 | "config": { |
| @@ -10,7 +10,6 @@ use Psr\Http\Message\StreamInterface; | @@ -10,7 +10,6 @@ use Psr\Http\Message\StreamInterface; | ||
| 10 | * Lazily reads or writes to a file that is opened only after an IO operation | 10 | * Lazily reads or writes to a file that is opened only after an IO operation |
| 11 | * take place on the stream. | 11 | * take place on the stream. |
| 12 | */ | 12 | */ |
| 13 | -#[\AllowDynamicProperties] | ||
| 14 | final class LazyOpenStream implements StreamInterface | 13 | final class LazyOpenStream implements StreamInterface |
| 15 | { | 14 | { |
| 16 | use StreamDecoratorTrait; | 15 | use StreamDecoratorTrait; |
| @@ -22,6 +21,11 @@ final class LazyOpenStream implements StreamInterface | @@ -22,6 +21,11 @@ final class LazyOpenStream implements StreamInterface | ||
| 22 | private $mode; | 21 | private $mode; |
| 23 | 22 | ||
| 24 | /** | 23 | /** |
| 24 | + * @var StreamInterface | ||
| 25 | + */ | ||
| 26 | + private $stream; | ||
| 27 | + | ||
| 28 | + /** | ||
| 25 | * @param string $filename File to lazily open | 29 | * @param string $filename File to lazily open |
| 26 | * @param string $mode fopen mode to use when opening the stream | 30 | * @param string $mode fopen mode to use when opening the stream |
| 27 | */ | 31 | */ |
| @@ -29,6 +33,10 @@ final class LazyOpenStream implements StreamInterface | @@ -29,6 +33,10 @@ final class LazyOpenStream implements StreamInterface | ||
| 29 | { | 33 | { |
| 30 | $this->filename = $filename; | 34 | $this->filename = $filename; |
| 31 | $this->mode = $mode; | 35 | $this->mode = $mode; |
| 36 | + | ||
| 37 | + // unsetting the property forces the first access to go through | ||
| 38 | + // __get(). | ||
| 39 | + unset($this->stream); | ||
| 32 | } | 40 | } |
| 33 | 41 | ||
| 34 | /** | 42 | /** |
| @@ -77,7 +77,7 @@ final class Message | @@ -77,7 +77,7 @@ final class Message | ||
| 77 | 77 | ||
| 78 | // Matches any printable character, including unicode characters: | 78 | // Matches any printable character, including unicode characters: |
| 79 | // letters, marks, numbers, punctuation, spacing, and separators. | 79 | // letters, marks, numbers, punctuation, spacing, and separators. |
| 80 | - if (preg_match('/[^\pL\pM\pN\pP\pS\pZ\n\r\t]/u', $summary)) { | 80 | + if (preg_match('/[^\pL\pM\pN\pP\pS\pZ\n\r\t]/u', $summary) !== 0) { |
| 81 | return null; | 81 | return null; |
| 82 | } | 82 | } |
| 83 | 83 |
| @@ -224,12 +224,9 @@ trait MessageTrait | @@ -224,12 +224,9 @@ trait MessageTrait | ||
| 224 | )); | 224 | )); |
| 225 | } | 225 | } |
| 226 | 226 | ||
| 227 | - if (! preg_match('/^[a-zA-Z0-9\'`#$%&*+.^_|~!-]+$/', $header)) { | 227 | + if (! preg_match('/^[a-zA-Z0-9\'`#$%&*+.^_|~!-]+$/D', $header)) { |
| 228 | throw new \InvalidArgumentException( | 228 | throw new \InvalidArgumentException( |
| 229 | - sprintf( | ||
| 230 | - '"%s" is not valid header name', | ||
| 231 | - $header | ||
| 232 | - ) | 229 | + sprintf('"%s" is not valid header name.', $header) |
| 233 | ); | 230 | ); |
| 234 | } | 231 | } |
| 235 | } | 232 | } |
| @@ -257,8 +254,10 @@ trait MessageTrait | @@ -257,8 +254,10 @@ trait MessageTrait | ||
| 257 | // Clients must not send a request with line folding and a server sending folded headers is | 254 | // Clients must not send a request with line folding and a server sending folded headers is |
| 258 | // likely very rare. Line folding is a fairly obscure feature of HTTP/1.1 and thus not accepting | 255 | // likely very rare. Line folding is a fairly obscure feature of HTTP/1.1 and thus not accepting |
| 259 | // folding is not likely to break any legitimate use case. | 256 | // folding is not likely to break any legitimate use case. |
| 260 | - if (! preg_match('/^[\x20\x09\x21-\x7E\x80-\xFF]*$/', $value)) { | ||
| 261 | - throw new \InvalidArgumentException(sprintf('"%s" is not valid header value', $value)); | 257 | + if (! preg_match('/^[\x20\x09\x21-\x7E\x80-\xFF]*$/D', $value)) { |
| 258 | + throw new \InvalidArgumentException( | ||
| 259 | + sprintf('"%s" is not valid header value.', $value) | ||
| 260 | + ); | ||
| 262 | } | 261 | } |
| 263 | } | 262 | } |
| 264 | } | 263 | } |
| @@ -144,10 +144,10 @@ class ServerRequest extends Request implements ServerRequestInterface | @@ -144,10 +144,10 @@ class ServerRequest extends Request implements ServerRequestInterface | ||
| 144 | foreach (array_keys($files['tmp_name']) as $key) { | 144 | foreach (array_keys($files['tmp_name']) as $key) { |
| 145 | $spec = [ | 145 | $spec = [ |
| 146 | 'tmp_name' => $files['tmp_name'][$key], | 146 | 'tmp_name' => $files['tmp_name'][$key], |
| 147 | - 'size' => $files['size'][$key], | ||
| 148 | - 'error' => $files['error'][$key], | ||
| 149 | - 'name' => $files['name'][$key], | ||
| 150 | - 'type' => $files['type'][$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, | ||
| 151 | ]; | 151 | ]; |
| 152 | $normalizedFiles[$key] = self::createUploadedFileFromSpec($spec); | 152 | $normalizedFiles[$key] = self::createUploadedFileFromSpec($spec); |
| 153 | } | 153 | } |
vendor/kkokk/poster/LICENSE
0 → 100644
| 1 | + Apache License | ||
| 2 | + Version 2.0, January 2004 | ||
| 3 | + http://www.apache.org/licenses/ | ||
| 4 | + | ||
| 5 | + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION | ||
| 6 | + | ||
| 7 | + 1. Definitions. | ||
| 8 | + | ||
| 9 | + "License" shall mean the terms and conditions for use, reproduction, | ||
| 10 | + and distribution as defined by Sections 1 through 9 of this document. | ||
| 11 | + | ||
| 12 | + "Licensor" shall mean the copyright owner or entity authorized by | ||
| 13 | + the copyright owner that is granting the License. | ||
| 14 | + | ||
| 15 | + "Legal Entity" shall mean the union of the acting entity and all | ||
| 16 | + other entities that control, are controlled by, or are under common | ||
| 17 | + control with that entity. For the purposes of this definition, | ||
| 18 | + "control" means (i) the power, direct or indirect, to cause the | ||
| 19 | + direction or management of such entity, whether by contract or | ||
| 20 | + otherwise, or (ii) ownership of fifty percent (50%) or more of the | ||
| 21 | + outstanding shares, or (iii) beneficial ownership of such entity. | ||
| 22 | + | ||
| 23 | + "You" (or "Your") shall mean an individual or Legal Entity | ||
| 24 | + exercising permissions granted by this License. | ||
| 25 | + | ||
| 26 | + "Source" form shall mean the preferred form for making modifications, | ||
| 27 | + including but not limited to software source code, documentation | ||
| 28 | + source, and configuration files. | ||
| 29 | + | ||
| 30 | + "Object" form shall mean any form resulting from mechanical | ||
| 31 | + transformation or translation of a Source form, including but | ||
| 32 | + not limited to compiled object code, generated documentation, | ||
| 33 | + and conversions to other media types. | ||
| 34 | + | ||
| 35 | + "Work" shall mean the work of authorship, whether in Source or | ||
| 36 | + Object form, made available under the License, as indicated by a | ||
| 37 | + copyright notice that is included in or attached to the work | ||
| 38 | + (an example is provided in the Appendix below). | ||
| 39 | + | ||
| 40 | + "Derivative Works" shall mean any work, whether in Source or Object | ||
| 41 | + form, that is based on (or derived from) the Work and for which the | ||
| 42 | + editorial revisions, annotations, elaborations, or other modifications | ||
| 43 | + represent, as a whole, an original work of authorship. For the purposes | ||
| 44 | + of this License, Derivative Works shall not include works that remain | ||
| 45 | + separable from, or merely link (or bind by name) to the interfaces of, | ||
| 46 | + the Work and Derivative Works thereof. | ||
| 47 | + | ||
| 48 | + "Contribution" shall mean any work of authorship, including | ||
| 49 | + the original version of the Work and any modifications or additions | ||
| 50 | + to that Work or Derivative Works thereof, that is intentionally | ||
| 51 | + submitted to Licensor for inclusion in the Work by the copyright owner | ||
| 52 | + or by an individual or Legal Entity authorized to submit on behalf of | ||
| 53 | + the copyright owner. For the purposes of this definition, "submitted" | ||
| 54 | + means any form of electronic, verbal, or written communication sent | ||
| 55 | + to the Licensor or its representatives, including but not limited to | ||
| 56 | + communication on electronic mailing lists, source code control systems, | ||
| 57 | + and issue tracking systems that are managed by, or on behalf of, the | ||
| 58 | + Licensor for the purpose of discussing and improving the Work, but | ||
| 59 | + excluding communication that is conspicuously marked or otherwise | ||
| 60 | + designated in writing by the copyright owner as "Not a Contribution." | ||
| 61 | + | ||
| 62 | + "Contributor" shall mean Licensor and any individual or Legal Entity | ||
| 63 | + on behalf of whom a Contribution has been received by Licensor and | ||
| 64 | + subsequently incorporated within the Work. | ||
| 65 | + | ||
| 66 | + 2. Grant of Copyright License. Subject to the terms and conditions of | ||
| 67 | + this License, each Contributor hereby grants to You a perpetual, | ||
| 68 | + worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||
| 69 | + copyright license to reproduce, prepare Derivative Works of, | ||
| 70 | + publicly display, publicly perform, sublicense, and distribute the | ||
| 71 | + Work and such Derivative Works in Source or Object form. | ||
| 72 | + | ||
| 73 | + 3. Grant of Patent License. Subject to the terms and conditions of | ||
| 74 | + this License, each Contributor hereby grants to You a perpetual, | ||
| 75 | + worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||
| 76 | + (except as stated in this section) patent license to make, have made, | ||
| 77 | + use, offer to sell, sell, import, and otherwise transfer the Work, | ||
| 78 | + where such license applies only to those patent claims licensable | ||
| 79 | + by such Contributor that are necessarily infringed by their | ||
| 80 | + Contribution(s) alone or by combination of their Contribution(s) | ||
| 81 | + with the Work to which such Contribution(s) was submitted. If You | ||
| 82 | + institute patent litigation against any entity (including a | ||
| 83 | + cross-claim or counterclaim in a lawsuit) alleging that the Work | ||
| 84 | + or a Contribution incorporated within the Work constitutes direct | ||
| 85 | + or contributory patent infringement, then any patent licenses | ||
| 86 | + granted to You under this License for that Work shall terminate | ||
| 87 | + as of the date such litigation is filed. | ||
| 88 | + | ||
| 89 | + 4. Redistribution. You may reproduce and distribute copies of the | ||
| 90 | + Work or Derivative Works thereof in any medium, with or without | ||
| 91 | + modifications, and in Source or Object form, provided that You | ||
| 92 | + meet the following conditions: | ||
| 93 | + | ||
| 94 | + (a) You must give any other recipients of the Work or | ||
| 95 | + Derivative Works a copy of this License; and | ||
| 96 | + | ||
| 97 | + (b) You must cause any modified files to carry prominent notices | ||
| 98 | + stating that You changed the files; and | ||
| 99 | + | ||
| 100 | + (c) You must retain, in the Source form of any Derivative Works | ||
| 101 | + that You distribute, all copyright, patent, trademark, and | ||
| 102 | + attribution notices from the Source form of the Work, | ||
| 103 | + excluding those notices that do not pertain to any part of | ||
| 104 | + the Derivative Works; and | ||
| 105 | + | ||
| 106 | + (d) If the Work includes a "NOTICE" text file as part of its | ||
| 107 | + distribution, then any Derivative Works that You distribute must | ||
| 108 | + include a readable copy of the attribution notices contained | ||
| 109 | + within such NOTICE file, excluding those notices that do not | ||
| 110 | + pertain to any part of the Derivative Works, in at least one | ||
| 111 | + of the following places: within a NOTICE text file distributed | ||
| 112 | + as part of the Derivative Works; within the Source form or | ||
| 113 | + documentation, if provided along with the Derivative Works; or, | ||
| 114 | + within a display generated by the Derivative Works, if and | ||
| 115 | + wherever such third-party notices normally appear. The contents | ||
| 116 | + of the NOTICE file are for informational purposes only and | ||
| 117 | + do not modify the License. You may add Your own attribution | ||
| 118 | + notices within Derivative Works that You distribute, alongside | ||
| 119 | + or as an addendum to the NOTICE text from the Work, provided | ||
| 120 | + that such additional attribution notices cannot be construed | ||
| 121 | + as modifying the License. | ||
| 122 | + | ||
| 123 | + You may add Your own copyright statement to Your modifications and | ||
| 124 | + may provide additional or different license terms and conditions | ||
| 125 | + for use, reproduction, or distribution of Your modifications, or | ||
| 126 | + for any such Derivative Works as a whole, provided Your use, | ||
| 127 | + reproduction, and distribution of the Work otherwise complies with | ||
| 128 | + the conditions stated in this License. | ||
| 129 | + | ||
| 130 | + 5. Submission of Contributions. Unless You explicitly state otherwise, | ||
| 131 | + any Contribution intentionally submitted for inclusion in the Work | ||
| 132 | + by You to the Licensor shall be under the terms and conditions of | ||
| 133 | + this License, without any additional terms or conditions. | ||
| 134 | + Notwithstanding the above, nothing herein shall supersede or modify | ||
| 135 | + the terms of any separate license agreement you may have executed | ||
| 136 | + with Licensor regarding such Contributions. | ||
| 137 | + | ||
| 138 | + 6. Trademarks. This License does not grant permission to use the trade | ||
| 139 | + names, trademarks, service marks, or product names of the Licensor, | ||
| 140 | + except as required for reasonable and customary use in describing the | ||
| 141 | + origin of the Work and reproducing the content of the NOTICE file. | ||
| 142 | + | ||
| 143 | + 7. Disclaimer of Warranty. Unless required by applicable law or | ||
| 144 | + agreed to in writing, Licensor provides the Work (and each | ||
| 145 | + Contributor provides its Contributions) on an "AS IS" BASIS, | ||
| 146 | + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | ||
| 147 | + implied, including, without limitation, any warranties or conditions | ||
| 148 | + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A | ||
| 149 | + PARTICULAR PURPOSE. You are solely responsible for determining the | ||
| 150 | + appropriateness of using or redistributing the Work and assume any | ||
| 151 | + risks associated with Your exercise of permissions under this License. | ||
| 152 | + | ||
| 153 | + 8. Limitation of Liability. In no event and under no legal theory, | ||
| 154 | + whether in tort (including negligence), contract, or otherwise, | ||
| 155 | + unless required by applicable law (such as deliberate and grossly | ||
| 156 | + negligent acts) or agreed to in writing, shall any Contributor be | ||
| 157 | + liable to You for damages, including any direct, indirect, special, | ||
| 158 | + incidental, or consequential damages of any character arising as a | ||
| 159 | + result of this License or out of the use or inability to use the | ||
| 160 | + Work (including but not limited to damages for loss of goodwill, | ||
| 161 | + work stoppage, computer failure or malfunction, or any and all | ||
| 162 | + other commercial damages or losses), even if such Contributor | ||
| 163 | + has been advised of the possibility of such damages. | ||
| 164 | + | ||
| 165 | + 9. Accepting Warranty or Additional Liability. While redistributing | ||
| 166 | + the Work or Derivative Works thereof, You may choose to offer, | ||
| 167 | + and charge a fee for, acceptance of support, warranty, indemnity, | ||
| 168 | + or other liability obligations and/or rights consistent with this | ||
| 169 | + License. However, in accepting such obligations, You may act only | ||
| 170 | + on Your own behalf and on Your sole responsibility, not on behalf | ||
| 171 | + of any other Contributor, and only if You agree to indemnify, | ||
| 172 | + defend, and hold each Contributor harmless for any liability | ||
| 173 | + incurred by, or claims asserted against, such Contributor by reason | ||
| 174 | + of your accepting any such warranty or additional liability. | ||
| 175 | + | ||
| 176 | + END OF TERMS AND CONDITIONS | ||
| 177 | + | ||
| 178 | + APPENDIX: How to apply the Apache License to your work. | ||
| 179 | + | ||
| 180 | + To apply the Apache License to your work, attach the following | ||
| 181 | + boilerplate notice, with the fields enclosed by brackets "[]" | ||
| 182 | + replaced with your own identifying information. (Don't include | ||
| 183 | + the brackets!) The text should be enclosed in the appropriate | ||
| 184 | + comment syntax for the file format. We also recommend that a | ||
| 185 | + file or class name and description of purpose be included on the | ||
| 186 | + same "printed page" as the copyright notice for easier | ||
| 187 | + identification within third-party archives. | ||
| 188 | + | ||
| 189 | + Copyright [yyyy] [name of copyright owner] | ||
| 190 | + | ||
| 191 | + Licensed under the Apache License, Version 2.0 (the "License"); | ||
| 192 | + you may not use this file except in compliance with the License. | ||
| 193 | + You may obtain a copy of the License at | ||
| 194 | + | ||
| 195 | + http://www.apache.org/licenses/LICENSE-2.0 | ||
| 196 | + | ||
| 197 | + Unless required by applicable law or agreed to in writing, software | ||
| 198 | + distributed under the License is distributed on an "AS IS" BASIS, | ||
| 199 | + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| 200 | + See the License for the specific language governing permissions and | ||
| 201 | + limitations under the License. |
-
请 注册 或 登录 后发表评论