正在显示
48 个修改的文件
包含
1926 行增加
和
445 行删除
@@ -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); |
@@ -263,9 +265,13 @@ class Index extends Api | @@ -263,9 +265,13 @@ class Index extends Api | ||
263 | $code_path="/uploads/qrcode/".$code_name; | 265 | $code_path="/uploads/qrcode/".$code_name; |
264 | } | 266 | } |
265 | 267 | ||
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,8 +178,7 @@ class Wechat extends Api | @@ -177,8 +178,7 @@ 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(); |
184 | //登录成功 存储服务器本地 | 184 | //登录成功 存储服务器本地 |
@@ -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/" |
678 | - }, | ||
679 | - "classmap": [ | ||
680 | - "stubs/Stringable.php" | ||
681 | - ] | 954 | + } |
682 | }, | 955 | }, |
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. |
@@ -60,13 +60,13 @@ composer require guzzlehttp/guzzle | @@ -60,13 +60,13 @@ composer require guzzlehttp/guzzle | ||
60 | 60 | ||
61 | ## Version Guidance | 61 | ## Version Guidance |
62 | 62 | ||
63 | -| Version | Status | Packagist | Namespace | Repo | Docs | PSR-7 | PHP Version | | ||
64 | -|---------|----------------|---------------------|--------------|---------------------|---------------------|-------|--------------| | ||
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 | | ||
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 | | 63 | +| Version | Status | Packagist | Namespace | Repo | Docs | PSR-7 | PHP Version | |
64 | +|---------|---------------------|---------------------|--------------|---------------------|---------------------|-------|--------------| | ||
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 | | ||
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 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 | ||
@@ -228,11 +230,11 @@ class Client implements ClientInterface, \Psr\Http\Client\ClientInterface | @@ -228,11 +230,11 @@ class Client implements ClientInterface, \Psr\Http\Client\ClientInterface | ||
228 | { | 230 | { |
229 | $defaults = [ | 231 | $defaults = [ |
230 | 'allow_redirects' => RedirectMiddleware::$defaultSettings, | 232 | 'allow_redirects' => RedirectMiddleware::$defaultSettings, |
231 | - 'http_errors' => true, | ||
232 | - 'decode_content' => true, | ||
233 | - 'verify' => true, | ||
234 | - 'cookies' => false, | ||
235 | - 'idn_conversion' => false, | 233 | + 'http_errors' => true, |
234 | + 'decode_content' => true, | ||
235 | + 'verify' => true, | ||
236 | + 'cookies' => false, | ||
237 | + 'idn_conversion' => false, | ||
236 | ]; | 238 | ]; |
237 | 239 | ||
238 | // Use the standard Linux HTTP_PROXY and HTTPS_PROXY if set. | 240 | // Use the standard Linux HTTP_PROXY and HTTPS_PROXY if set. |
@@ -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 | } |
@@ -50,10 +50,10 @@ class CookieJar implements CookieJarInterface | @@ -50,10 +50,10 @@ class CookieJar implements CookieJarInterface | ||
50 | $cookieJar = new self(); | 50 | $cookieJar = new self(); |
51 | foreach ($cookies as $name => $value) { | 51 | foreach ($cookies as $name => $value) { |
52 | $cookieJar->setCookie(new SetCookie([ | 52 | $cookieJar->setCookie(new SetCookie([ |
53 | - 'Domain' => $domain, | ||
54 | - 'Name' => $name, | ||
55 | - 'Value' => $value, | ||
56 | - 'Discard' => true | 53 | + 'Domain' => $domain, |
54 | + 'Name' => $name, | ||
55 | + 'Value' => $value, | ||
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 | } |
@@ -11,15 +11,15 @@ class SetCookie | @@ -11,15 +11,15 @@ class SetCookie | ||
11 | * @var array | 11 | * @var array |
12 | */ | 12 | */ |
13 | private static $defaults = [ | 13 | private static $defaults = [ |
14 | - 'Name' => null, | ||
15 | - 'Value' => null, | ||
16 | - 'Domain' => null, | ||
17 | - 'Path' => '/', | ||
18 | - 'Max-Age' => null, | ||
19 | - 'Expires' => null, | ||
20 | - 'Secure' => false, | ||
21 | - 'Discard' => false, | ||
22 | - 'HttpOnly' => false | 14 | + 'Name' => null, |
15 | + 'Value' => null, | ||
16 | + 'Domain' => null, | ||
17 | + 'Path' => '/', | ||
18 | + 'Max-Age' => null, | ||
19 | + 'Expires' => null, | ||
20 | + 'Secure' => false, | ||
21 | + 'Discard' => 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 | - $data[$search] = $value; | 61 | + if ($search === 'Max-Age') { |
62 | + if (is_numeric($value)) { | ||
63 | + $data[$search] = (int) $value; | ||
64 | + } | ||
65 | + } else { | ||
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); |
@@ -161,11 +161,11 @@ class CurlFactory implements CurlFactoryInterface | @@ -161,11 +161,11 @@ class CurlFactory implements CurlFactoryInterface | ||
161 | private static function createRejection(EasyHandle $easy, array $ctx): PromiseInterface | 161 | private static function createRejection(EasyHandle $easy, array $ctx): PromiseInterface |
162 | { | 162 | { |
163 | static $connectionErrors = [ | 163 | static $connectionErrors = [ |
164 | - \CURLE_OPERATION_TIMEOUTED => true, | 164 | + \CURLE_OPERATION_TIMEOUTED => true, |
165 | \CURLE_COULDNT_RESOLVE_HOST => true, | 165 | \CURLE_COULDNT_RESOLVE_HOST => true, |
166 | - \CURLE_COULDNT_CONNECT => true, | ||
167 | - \CURLE_SSL_CONNECT_ERROR => true, | ||
168 | - \CURLE_GOT_NOTHING => true, | 166 | + \CURLE_COULDNT_CONNECT => true, |
167 | + \CURLE_SSL_CONNECT_ERROR => true, | ||
168 | + \CURLE_GOT_NOTHING => true, | ||
169 | ]; | 169 | ]; |
170 | 170 | ||
171 | if ($easy->createResponseException) { | 171 | if ($easy->createResponseException) { |
@@ -219,12 +219,12 @@ class CurlFactory implements CurlFactoryInterface | @@ -219,12 +219,12 @@ class CurlFactory implements CurlFactoryInterface | ||
219 | private function getDefaultConf(EasyHandle $easy): array | 219 | private function getDefaultConf(EasyHandle $easy): array |
220 | { | 220 | { |
221 | $conf = [ | 221 | $conf = [ |
222 | - '_headers' => $easy->request->getHeaders(), | ||
223 | - \CURLOPT_CUSTOMREQUEST => $easy->request->getMethod(), | ||
224 | - \CURLOPT_URL => (string) $easy->request->getUri()->withFragment(''), | 222 | + '_headers' => $easy->request->getHeaders(), |
223 | + \CURLOPT_CUSTOMREQUEST => $easy->request->getMethod(), | ||
224 | + \CURLOPT_URL => (string) $easy->request->getUri()->withFragment(''), | ||
225 | \CURLOPT_RETURNTRANSFER => false, | 225 | \CURLOPT_RETURNTRANSFER => false, |
226 | - \CURLOPT_HEADER => false, | ||
227 | - \CURLOPT_CONNECTTIMEOUT => 150, | 226 | + \CURLOPT_HEADER => false, |
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 { |
@@ -231,9 +231,10 @@ class StreamHandler | @@ -231,9 +231,10 @@ class StreamHandler | ||
231 | \set_error_handler(static function ($_, $msg, $file, $line) use (&$errors): bool { | 231 | \set_error_handler(static function ($_, $msg, $file, $line) use (&$errors): bool { |
232 | $errors[] = [ | 232 | $errors[] = [ |
233 | 'message' => $msg, | 233 | 'message' => $msg, |
234 | - 'file' => $file, | ||
235 | - 'line' => $line | 234 | + 'file' => $file, |
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 | ||
@@ -375,11 +378,11 @@ class StreamHandler | @@ -375,11 +378,11 @@ class StreamHandler | ||
375 | 378 | ||
376 | $context = [ | 379 | $context = [ |
377 | 'http' => [ | 380 | 'http' => [ |
378 | - 'method' => $request->getMethod(), | ||
379 | - 'header' => $headers, | 381 | + 'method' => $request->getMethod(), |
382 | + 'header' => $headers, | ||
380 | 'protocol_version' => $request->getProtocolVersion(), | 383 | 'protocol_version' => $request->getProtocolVersion(), |
381 | - 'ignore_errors' => true, | ||
382 | - 'follow_location' => 0, | 384 | + 'ignore_errors' => true, |
385 | + 'follow_location' => 0, | ||
383 | ], | 386 | ], |
384 | 'ssl' => [ | 387 | 'ssl' => [ |
385 | 'peer_name' => $request->getUri()->getHost(), | 388 | 'peer_name' => $request->getUri()->getHost(), |
@@ -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) { |
@@ -542,27 +564,27 @@ class StreamHandler | @@ -542,27 +564,27 @@ class StreamHandler | ||
542 | } | 564 | } |
543 | 565 | ||
544 | static $map = [ | 566 | static $map = [ |
545 | - \STREAM_NOTIFY_CONNECT => 'CONNECT', | 567 | + \STREAM_NOTIFY_CONNECT => 'CONNECT', |
546 | \STREAM_NOTIFY_AUTH_REQUIRED => 'AUTH_REQUIRED', | 568 | \STREAM_NOTIFY_AUTH_REQUIRED => 'AUTH_REQUIRED', |
547 | - \STREAM_NOTIFY_AUTH_RESULT => 'AUTH_RESULT', | ||
548 | - \STREAM_NOTIFY_MIME_TYPE_IS => 'MIME_TYPE_IS', | ||
549 | - \STREAM_NOTIFY_FILE_SIZE_IS => 'FILE_SIZE_IS', | ||
550 | - \STREAM_NOTIFY_REDIRECTED => 'REDIRECTED', | ||
551 | - \STREAM_NOTIFY_PROGRESS => 'PROGRESS', | ||
552 | - \STREAM_NOTIFY_FAILURE => 'FAILURE', | ||
553 | - \STREAM_NOTIFY_COMPLETED => 'COMPLETED', | ||
554 | - \STREAM_NOTIFY_RESOLVE => 'RESOLVE', | 569 | + \STREAM_NOTIFY_AUTH_RESULT => 'AUTH_RESULT', |
570 | + \STREAM_NOTIFY_MIME_TYPE_IS => 'MIME_TYPE_IS', | ||
571 | + \STREAM_NOTIFY_FILE_SIZE_IS => 'FILE_SIZE_IS', | ||
572 | + \STREAM_NOTIFY_REDIRECTED => 'REDIRECTED', | ||
573 | + \STREAM_NOTIFY_PROGRESS => 'PROGRESS', | ||
574 | + \STREAM_NOTIFY_FAILURE => 'FAILURE', | ||
575 | + \STREAM_NOTIFY_COMPLETED => 'COMPLETED', | ||
576 | + \STREAM_NOTIFY_RESOLVE => 'RESOLVE', | ||
555 | ]; | 577 | ]; |
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(); |
@@ -93,20 +96,22 @@ final class Middleware | @@ -93,20 +96,22 @@ final class Middleware | ||
93 | return $handler($request, $options)->then( | 96 | return $handler($request, $options)->then( |
94 | static function ($value) use ($request, &$container, $options) { | 97 | static function ($value) use ($request, &$container, $options) { |
95 | $container[] = [ | 98 | $container[] = [ |
96 | - 'request' => $request, | 99 | + 'request' => $request, |
97 | 'response' => $value, | 100 | 'response' => $value, |
98 | - 'error' => null, | ||
99 | - 'options' => $options | 101 | + 'error' => null, |
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) { |
104 | $container[] = [ | 108 | $container[] = [ |
105 | - 'request' => $request, | 109 | + 'request' => $request, |
106 | 'response' => null, | 110 | 'response' => null, |
107 | - 'error' => $reason, | ||
108 | - 'options' => $options | 111 | + 'error' => $reason, |
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 |
@@ -27,10 +27,10 @@ class RedirectMiddleware | @@ -27,10 +27,10 @@ class RedirectMiddleware | ||
27 | * @var array | 27 | * @var array |
28 | */ | 28 | */ |
29 | public static $defaultSettings = [ | 29 | public static $defaultSettings = [ |
30 | - 'max' => 5, | ||
31 | - 'protocols' => ['http', 'https'], | ||
32 | - 'strict' => false, | ||
33 | - 'referer' => false, | 30 | + 'max' => 5, |
31 | + 'protocols' => ['http', 'https'], | ||
32 | + 'strict' => false, | ||
33 | + 'referer' => false, | ||
34 | 'track_redirects' => false, | 34 | 'track_redirects' => false, |
35 | ]; | 35 | ]; |
36 | 36 |
@@ -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. |
-
请 注册 或 登录 后发表评论